1、准备阶段
部署以太坊geth
安装nodejs
npm install web3
npm install
npm install ethereumjs-tx
其中, web3是1.0.0.beta-36版本
2、在部署有geth的机器上,执行node命令, 就入控制台模式,然后逐行执行下面程序:
- const Web3 = require('web3')
- const EthereumTx = require('ethereumjs-tx')
- const web3 = new Web3( new Web3.providers.HttpProvider('http://47.254.215.233:8145') ) // 服务器RPC地址
- web3.eth.defaultAccount = 'af7574a21729d22e119df7456bf913194d73c209' // 发送方地址
-
- let details = {
- "to": '0x5cf83df52a32165a7f392168ac009b168c9e8915', // 接收方地址
- "value": 4052500000, // 转账多少wei
- "gas": 51000, // GAS
- "gasPrice": 2 * 1000000000, // GAS PRICE 需要一个比较合理的价格, 不然可能会报错(replacement transaction underpriced)
- "gasLimit": '0x420710',
- "nonce": 40, // 序号ID, 重要, 需要一个账号的交易序号,可以通过web3.eth.getTransactionCount(web3.eth.defaultAccount)获得
- "chainId": 11243575,
- "data":'0x40aabbccdd000011223344'
- } // 网络ID, 这是区别于具体在哪个网络上
-
- var tx = new EthereumTx(details)
- tx.sign( Buffer.from('FC1A5C66932BD7C93E05661A58FD534967739CE517D8695EBBE89135CEE78DA4', 'hex') )
- var serializedTx = tx.serialize();
- web3.eth.sendSignedTransaction('0x' + serializedTx.toString('hex')).on('receipt', console.log);
输出输出:
Promise { |
最终成功,输出(这里等待了很长时间):
{ blockHash: '0x7a0f412ba0b09dfcfacb826712f4b8e5089e8d1c6d35385d2e29d5dc4400ab37', |