构建交易对象
签署交易
广播交易
var Tx = require('ethereumjs-tx').Transaction const Web3 = require('web3') const web3 = new Web3('https://ropsten.infura.io/YOUR_INFURA_API_KEY') const account1 = '' // Your account address 1 const account2 = '' // Your account address 2 const privateKey1 = Buffer.from('YOUR_PRIVATE_KEY_1', 'hex') const privateKey2 = Buffer.from('YOUR_PRIVATE_KEY_2', 'hex')
const txObject = { nonce: web3.utils.toHex(txCount), gasLimit: web3.utils.toHex(800000), gasPrice: web3.utils.toHex(web3.utils.toWei('10', 'gwei')), to: contractAddress, data: data }
to – 此参数将是已部署智能合约的地址。可以从etherscan中获取。
data – 被调用的智能合约函数的十六进制表示。
const contractAddress = '0x30951343d6d80d2c94897f1a81c53cc030aef879' const contractABI = [ { "constant": false, "inputs": [ { "internalType": "string", "name": "_value", "type": "string" } ], "name": "set", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "get", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "inputs": [], "payable": false, "stateMutability": "nonpayable", "type": "constructor" } ] const contract = new web3.eth.Contract(contractABI, contractAddress)
const data = contract.methods.set("qikegu").encodeABI()
web3.js – 执行写函数调用