Я пытаюсь вызвать метод смарт-контракта (развернутый на удаленной учетной записи ethereum) из моего DAPP nodejs и получаю следующую ошибку:
Error: authentication needed: password or unlock
at Object.InvalidResponse (D:\dapp\node_modules\web3\lib\web3\errors.js:38:16)
Мой код DAPP web3 выглядит так:
var ABI = [abiinterface];
var contract = web3.eth.contract(ABI);
var contractInstance = contract.at(accAddress);
Я запустил код разблокировки на моей консоли geth, используя - personal.unlockAccount("address"), который вернул true, но по-прежнему получаю ошибку «требуется аутентификация: пароль или разблокировка» в dapp. Любая помощь или указатели очень ценятся. Спасибо.
Во-первых, убедитесь, что у вас есть учетная запись.
web3.personal.listAccounts
Если вы получите []
...
web3.personal.newAccount()
Попробуй снова.
Затем ...
web3.personal.unlockAccount(web3.personal.listAccounts[0],"<password>", 15000)
что означает разблокировать первую учетную запись с этим паролем на 15 000 секунд (не беспокойте меня некоторое время.)
Сторона DAPP должна перестать жаловаться на блокировку.
Надеюсь, это поможет.
Я сталкивался с подобной проблемой ранее. Убедитесь, что позаботились о следующих 3 вещах:
web3.personal.unlockAccount(web3.personal.listAccounts[0],"MyPassword", 15000)
В моем случае это была первая учетная запись.Эта ошибка связана с разблокировкой учетной записи на вашем узле ethereum. Трудность заключается в том, чтобы обнаружить скрытую причину. Некоторые ошибки в web3js могут вызвать ту же проблему:
Например
web3.eth.personal.unlockAccount(_senderAddress, password, 0).then(
...
)
выдаст эту проблему, так как не будет ждать разблокировки. Поэтому используйте обратный вызов или ожидание.
web3.eth.personal.unlockAccount(_senderAddress, password, 0).then(
isunlocked => {
}
})
Жанболат Нурутдин
Ричард Хоррокс
Жанболат Нурутдин
Мэлоун