知乎专栏 | 多维度架构 |
目录
注意本章采用 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);