Web3js

在 ganache 中創建新帳戶

  • March 16, 2021

我正在創建一個為使用者提供個人帳戶的 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")})

whereaccounts包含新創建帳戶的地址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()解決了問題。

在此處輸入圖像描述

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