Creando carteras con Web3j

Genero un código para crear wallets para una cadena privada hecha con ethereum.

String password = unlockAccountParameter.getPass();
        ECKeyPair keyPair = Keys.createEcKeyPair();
        WalletFile wallet = Wallet.createStandard(password, keyPair);

        System.out.println("Private key: " + keyPair.getPrivateKey().toString(16));
        System.out.println("Account: " + wallet.getAddress());

        String fileName = WalletUtils.generateNewWalletFile(unlockAccountParameter.getPass(), new File("C:\\Users\\emendez\\Wallet"), true);

        System.out.println("File name: " + fileName);

Eso me devuelve esta salida:

Clave privada: 67f7a218d5d595dff19cafca9384b5a6e0693bc085d7c16468b8a8a44e20135a Cuenta: bf29892787a79bb66188f9c44ca9ffd9ccff37aa

Nombre de archivo: UTC--2018-11-15T12-26-51.672000000Z--252209a58e16be3c43776e38ff4bfaeb70660cfb.json

El archivo JSON está en la ruta que escribe en código (en la máquina real). Pero cuando voy a la consola geth para enumerar la cuenta que se crea en el nodo (máquina virtual), la cuenta que acabo de crear no aparece.

Así que creo que no puedo hacer transacciones entre ellos.

¿¿Alguna ayuda??

Respuestas (1)

El problema podría estar relacionado con la ubicación donde está guardando su billetera.

Para que se detecte automáticamente, el archivo de la billetera debe almacenarse en una carpeta llamada keystoredentro de la carpeta donde está instalado geth. Estos son los caminos más comunes:

– Mac: ~/Biblioteca/Ethereum

– Linux: ~/.etereum

– Windows: %PERFIL DE USUARIO%\AppData\Roaming\Ethereum

Si no puede acceder a esa carpeta, puede importar su cuenta usando este comando:

geth account import --datadir /fileWithOnlyPrivateKey --password /fileWithPasswordStringToEncryptThatKey ./key.prv

Y su solución final sería generar la transacción en su código y enviar la transacción ya firmada al nodo (este sería el enfoque más seguro si puede mantener segura su clave privada), busque en web3 para aprender cómo hacerlo

Y tiene sentido guardar mi billetera en la red?? Me refiero a mi billetera personal que guardo en mi bolsillo. Soy nuevo, así que probablemente sea una pregunta idiota. Gracias
Esto almacenaría su billetera en su nodo geth, no en la red, incluso puede hacer que la información solo sea accesible desde localhost. Dicho esto, en algunos casos, desea que su aplicación esté en un servidor diferente al de su nodo, en ese caso, no querrá mantener su billetera en el nodo, puede guardarla en cualquier lugar, leer la clave privada, firmar las transacciones localmente y enviarlas firmadas. Estas son las bibliotecas principales para eso: web3, ether.js o las bibliotecas ethereumjs (recomiendo web3)