Transactions

Web3.js 是否具有為一系列交易創建新帳戶和解鎖帳戶一段時間的功能?

  • September 28, 2018

我想通過我的 Dapp Web 界面創建新帳戶並解鎖特定帳戶以便處理交易。我在 web3.js 文件中沒有看到它,所以想知道這是否在 web3.js 路線圖上?

2018 年 1 月 4 日更新的答案

Web3.js 從 v1.0.0 開始全面支持帳戶管理,包括創建新帳戶。v1.0.0 仍處於測試階段,但已接近生產,並且已經是通過npm. 感謝Thom Ives指出這一點。

來自 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){...}
}

2016年的舊答案

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是一款旨在執行 DApp 和管理帳戶的瀏覽器。它mist.requestAccount似乎是 DApp 應該使用的預期 API。

Mist 而不是 web3.js 的主要原因可能是瀏覽器本身能夠提供比 Javascript 更高的安全性。例如,Mist 中提示使用者輸入帳戶和密碼的模式對話框比 HTML/CSS/JS 對話框更難欺騙、篡改或攔截。

引用自:https://ethereum.stackexchange.com/questions/780