知乎專欄 | 多維度架構 | | | 微信號 netkiller-ebook | | | QQ群:128659835 請註明“讀者” |
目錄
注意本章採用 web3.js v1.0.0 版本,這個版本仍在beta階段,還沒有 release。
你看到網上很多實例,安照例子的步驟操作,發現無法成功,很可能跟版本有關。v1.0.0 與之前的版本還是有很大差異,所以選擇版本很重要。因為 v1.0.0 很快就會 release 所以本章不會在用早起版本舉例。
npm init npm install web3 --save npm install solc
geth --testnet --syncmode light --cache 1024 --ipcpath /Users/neo/Library/Ethereum/geth.ipc
Ropsten 測試網上轉賬的例子
fs = require('fs'); var net = require('net'); var Web3 = require('web3'); var web3 = new Web3('/Users/neo/Library/Ethereum/geth.ipc', net); console.log(web3.version) const abi = fs.readFileSync('output/TokenERC20.abi', 'utf-8'); const contractAddress = "0x70682386d0dE84B1e549DC3c4305CCB2D261b2a8"; const coinbase = "0xB94054c174995AE2A9E7fcf6c7924635FBa8ECF7"; const toAddress = "0xf56b81a2bcb964D2806071e9Be4289A5559BB0fA"; balanceWei = web3.eth.getBalance(coinbase); console.log(balanceWei); const contract = new web3.eth.Contract(JSON.parse(abi), contractAddress, { from: coinbase , gas: 100000}); web3.eth.personal.unlockAccount(coinbase, "netkiller").then(function(result){ console.log(result) contract.methods.balanceOf(coinbase).call().then(console.log).catch(console.error); contract.methods.balanceOf(toAddress).call().then(console.log).catch(console.error); }); contract.methods.transfer(toAddress, 10000).send().then(function(receipt){ console.log(receipt); }).catch(console.error); contract.methods.balanceOf(coinbase).call().then(console.log).catch(console.error); contract.methods.balanceOf(toAddress).call().then(console.log).catch(console.error);