Web3js
使用 web3.eth.accounts.wallet.add 添加錢包
在 web3 0.20.1 上,我使用 Infura 將合約部署到 Rinkeby。這可能需要我添加一個錢包來
web3.accounts
提供所需的氣體。當我執行以下 nodejs 程式碼時,
Web3 = require('web3') var web3 = new Web3(new Web3.providers.HttpProvider("https://rinkeby.infura.io/nyxynyx-api-key")) var privateKey = 'nyxynyx-private-key' web3.eth.accounts.wallet.add("0x" + privateKey); var contractCode = '60606-contract-code-here'; var abi = [{"constant":false,"inputs":[{"name":"givenNumber","type":"uint8"}],"name":"setNumber","outputs":[],"type":"function"},{"constant":true,"inputs":[{"name":"givenNumber","type":"uint8"}],"name":"guessNumber","outputs":[{"name":"","type":"bool"}],"type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[],"name":"SetNumber","type":"event"}]; GuessNumber = web3.eth.contract(abi) var contractInstance = GuessNumber.new({from: web3.eth.accounts[0], gas: 200000, data: '0x' + contractCode});
遇到以下錯誤:
web3.eth.accounts.wallet.add("0x" + privateKey); ^ TypeError: Cannot read property 'add' of undefined
這是因為
web3.eth.accounts.wallet.add
是 web3 v1.0 功能嗎?如果是,v0.20.1 中需要的等效程式碼是什麼?
Web3 v1.0 在我的體驗中要優越得多,所以我建議在方便的時候切換。
您問題的另一種解決方案
我們也可以使用這種方法在我們的 eth.wallets 中添加錢包
看點:-
- 我們從另一個文件中獲取介面和字節碼的值,該文件中編譯了我們的合約程式碼。
- hdwalletprovider 輸入你的 12 字助記符和 rinkeby 地址
`const hdwalletprovider=require(’truffle-hdwallet-provider’); 常量 Web3=require(‘web3’); const {interface,bytecode}=require(’./compile’);
const provider=new hdwalletprovider( 'hello blue cat eng cook name version brave entire sail trumpet scrub', // 12 word mnemonic 'https://rinkeby.infura.io/v3/5d5eaf76b6a84578a245e058b870a8aa' ); const web3=new Web3(provider); const deploy=async() => { const accounts= await web3.eth.getAccounts(); console.log(accounts[0]); const result=await new web3.eth.Contract(JSON.parse(interface)) .deploy({data : bytecode}) .send({gas: '10000000', from: accounts[0] }); console.log(result.options.address); }; deploy();`