Я хочу создать новые учетные записи через свой веб-интерфейс Dapp и разблокировать конкретную учетную запись, чтобы можно было обрабатывать транзакции. Я не видел этого в документации по web3.js, поэтому интересно, есть ли это в дорожной карте web3.js?
Web3.js имеет полноценную поддержку управления учетными записями , начиная с версии 1.0.0, включая создание новой учетной записи . Версия 1.0.0 все еще находится в стадии бета-тестирования, но близка к производству и уже является версией, выпущенной через npm
. Спасибо Тому Айвзу за указание на это.
Полный пример взят из документации web3.js:
web3.eth.accounts.create();
> {
address: "0xb8CE9ab6943e0eCED004cDe8e3bBed6568B2Fa01",
privateKey: "0x348ce564d427a3311b6536bbcff9390d69395b06ed6c486954e971d960fe8709",
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
web3.eth.accounts.create('2435@#@#@±±±±!!!!678543213456764321§34567543213456785432134567');
> {
address: "0xF2CD2AA0c7926743B1D4310b2BC984a0a453c3d4",
privateKey: "0xd7325de5c2c1cf0009fac77d3d04a9c004b038883446b065871bc3e831dcd098",
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
web3.eth.accounts.create(web3.utils.randomHex(32));
> {
address: "0xe78150FaCD36E8EB00291e251424a0515AA1FF05",
privateKey: "0xcc505ee6067fba3f6fc2050643379e190e087aeffe5d958ab9f2f3ed3800fa4e",
signTransaction: function(tx){...},
sign: function(data){...},
encrypt: function(password){...}
}
Web3.js не имеет такой встроенной возможности и, скорее всего, никогда не будет. Однако есть специальные решения, такие как https://github.com/SilentCicero/ethereumjs-accounts/ .
ethereumjs-accounts
позволяет создавать учетные записи в браузере, а затем использовать эти адреса для web3.js
транзакций. Закрытые ключи хранятся внутри localStorage
и могут быть зашифрованы. Обязательно прочитайте предупреждения безопасности и поймите, что вы делаете.
https://metamask.io/ — это более широкий подход к тому, чтобы сделать DApp доступными через обычный браузер. Он также содержит управление идентификацией (например, учетными записями).
На мой взгляд, такие решения, как ethereumjs-accounts
Metamask, могут стать хорошим средством для того, чтобы сделать DApp доступными для широкой аудитории, для транзакций с низкой стоимостью или даже просто для доступа к DApp только для чтения.
Маловероятно, что функциональность, связанная с учетными записями, будет добавлена в web3.js.
Mist — это браузер, предназначенный для запуска DApps и управления учетными записями. Похоже, mist.requestAccount
что это ожидаемый API, который должны использовать DApps.
Вероятно, главная причина, по которой Mist, а не web3.js, заключается в том, что сам браузер способен обеспечить большую безопасность, чем Javascript. Например, модальное диалоговое окно в Mist, которое запрашивает у пользователя его учетную запись и пароль, труднее подделать, подделать или перехватить, чем диалоговое окно HTML/CSS/JS.
После запроса обновления в моих комментариях к ответу Арона я выполнил поиск, используя модификацию этого заголовка, и обнаружил, что web3.js теперь действительно позволяет вам создавать новые учетные записи. СМОТРИТЕ ЗДЕСЬ . Из чтения этих документов web3.js при создании создается впечатление, что учетные записи создаются таким же безопасным способом, как MetaMask.
Вы можете проверить ethers.js
Ethers.js имеет полное управление кошельком, отдельно от geth (как и должно быть, поскольку это просто криптовалюта). Затем вы можете подключить провайдера к своему кошельку (web3 делает это в основном наоборот). Затем вы прикрепляете этот кошелек + провайдер к артефакту контракта, и у вас есть экземпляр контракта, который вы можете вызвать.
Том Айвз
ланокс
web3.personal.newAccount
функции.