Transactions
Web3.js 是否具有為一系列交易創建新帳戶和解鎖帳戶一段時間的功能?
我想通過我的 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 對話框更難欺騙、篡改或攔截。