Может разблокировать аккаунт, но не может отправить транзакцию

Я скомпилировал версию geth, в которой я изменил CalcDifficulty() в core/block_validator.go , чтобы сделать сложность майнинга постоянной, см . ссылку . Запуск частной сети, создание учетных записей и майнинг работают нормально.

Если я попытаюсь через консоль javascript разблокировать учетную запись, она сработает и вернет true .

personal.unlockAccount(eth.accounts[0])

Но когда я пытаюсь отправить транзакцию:

personal.sendTransaction({from:eth.accounts[0], to: eth.accounts[1], значение: 20000000})

Я получаю следующее:

Error: could not decrypt key with given passphrase
    at web3.js:3104:20
    at web3.js:6191:15
    at web3.js:5004:36
    at <anonymous>:1:1
могу подтвердить, я также вижу эту проблему. также в тестовой сети, без модификации моего клиента geth (Geth/v1.6.6-stable-10a45cb5/linux-amd64/go1.8.1)

Ответы (1)

Метод personal.sendTransactionожидает второй аргумент, пароль для эфемерной разблокировки учетной записи и отправки транзакции за один раз. Если вы не укажете пароль, эта конечная точка по умолчанию использует пустой пароль, что приводит к вашей проблеме.

Если вы хотите использовать уже разблокированную учетную запись для отправки транзакции (вместо эфемерной разблокировки и отправки), вы можете сделать это с помощью eth.sendTransaction.