Создание кошельков с помощью Web3j

Я генерирую код для создания кошельков для частной сети, созданной с помощью 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);

Это возвращает мне этот вывод:

Частный ключ: 67f7a218d5d595dff19cafca9384b5a6e0693bc085d7c16468b8a8a44e20135a Учетная запись: bf29892787a79bb66188f9c44ca9ffd9ccff37aa

Имя файла: UTC--2018-11-15T12-26-51.672000000Z--252209a58e16be3c43776e38ff4bfaeb70660cfb.json

Файл JSON находится по пути, указанному в коде (на реальной машине). Но когда я иду в консоль geth для списка учетной записи, созданной в узле (виртуальной машине), учетная запись, которую я только что создал, не появляется.

Поэтому я думаю, что я не могу совершить сделку между ними.

Любая помощь??

Ответы (1)

Проблема может быть связана с местом, где вы храните свой кошелек.

Для автоматического обнаружения файл кошелька должен храниться в папке с именем keystoreвнутри папки, в которой установлен geth. Вот самые распространенные пути:

– Mac: ~/Библиотека/Эфириум

– Linux: ~/.эфириум

– Windows: %USERPROFILE%\AppData\Roaming\Ethereum

Если вы не можете получить доступ к этой папке, вы можете импортировать свою учетную запись с помощью этой команды:

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

И вашим окончательным решением было бы сгенерировать транзакцию в вашем коде и отправить уже подписанную транзакцию на узел (это был бы самый безопасный подход, если вы можете сохранить свой закрытый ключ в безопасности), загляните в web3, чтобы узнать, как это сделать

А есть ли смысл сохранять мой кошелек в сети?? Я имею в виду мой личный кошелек, который я храню в кармане. Я новичок, так что это, вероятно, идиотский вопрос. Спасибо
Это будет хранить ваш кошелек на вашем узле geth, а не в сети, вы даже можете сделать так, чтобы информация была доступна только с локального хоста. Тем не менее, в некоторых случаях вы хотите, чтобы ваше приложение находилось на сервере, отличном от вашего узла, в этом случае вы не хотели бы хранить свой кошелек в узле, вы можете хранить его где угодно, читать закрытый ключ, подписывать транзакции локально и отправить их подписанными. Вот основные библиотеки для этого: web3, ether.js или библиотеки ethereumjs (рекомендую web3)