Web3js
在 ganache 中創建新帳戶
我正在創建一個為使用者提供個人帳戶的 Dapp。在開發過程中,當我創建一個帳戶時
const accounts = await web3.eth.personal.newAccount('test');
該帳戶是用 0 餘額創建的。所以我想將一些 eth 從現有的 ganache 帳戶轉移到新創建的帳戶。所以,我做到了
web3.eth.personal.unlockAccount(accounts, 'test', 10000) web3.eth.sendTransaction({to:accounts, from:0x1d28f28f0b9B27FeA2aCAd1428485334d1f7429E,value:web3.utils.toWei("5", "ether")})
where
accounts
包含新創建帳戶的地址from
包含 ganache 中的帳戶。當我執行它時,我得到這兩個錯誤Uncaught (in promise) Error: Returned error: sender account not recognized Uncaught (in promise) Error: Returned error: sender doesn't have enough funds to send tx. The upfront cost is: 1800000000000000 and the sender's account only has: 0
我要做的是,在使用者註冊時創建一個新帳戶並將一些乙太幣轉移到它,以便使用者可以向智能合約寫入一些東西。
有沒有最好的方法來為使用者創建一個帳戶並準備好(其中有一些乙太幣)向智能合約寫入一些東西。或在部署到測試網時如何管理此帳戶創建。
不應該直接通過ganache帳戶。
const accounts = await web3.eth.getAccounts(); const newAccount = await web3.eth.personal.newAccount('test'); console.log("newAccount", newAccount); await web3.eth.personal.unlockAccount(newAccount, 'test', 10000); await web3.eth.getBalance(accounts[0], (err, bal) => { console.log("Ganache balance", bal); } ); await web3.eth.sendTransaction({to:newAccount, from:accounts[0], value:web3.utils.toWei("5", "ether")}); await web3.eth.getBalance(newAccount, (err, bal) => { console.log("New Account balance", bal); } );
通過獲取帳戶
await web3.eth.getAccounts()
解決了問題。