Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 74.6MB ·虚拟内存 1303.8MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
准备好了账号,就可以执行转账交易了。
交易可分为3个步骤:
const txObject = { nonce: web3.utils.toHex(txCount), to: account2, value: web3.utils.toHex(web3.utils.toWei('0.1', 'ether')), gasLimit: web3.utils.toHex(21000), gasPrice: web3.utils.toHex(web3.utils.toWei('10', 'gwei')) }
参数解释:
注意,这个交易对象中没有from字段。当使用account1的私钥签署这个交易时,它将被推算出来。
现在为nonce变量赋值,可以使用web3.eth.getTransactionCount()函数获取交易nonce。将构建交易对象的代码封装在一个回调函数中,如下所示:
web3.eth.getTransactionCount(account1, (err, txCount) => { const txObject = { nonce: web3.utils.toHex(txCount), to: account2, value: web3.utils.toHex(web3.utils.toWei('0.1', 'ether')), gasLimit: web3.utils.toHex(21000), gasPrice: web3.utils.toHex(web3.utils.toWei('10', 'gwei')) } })
接下来,需要签署交易:
const tx = new Tx(txObject) tx.sign(privateKey1) const serializedTx = tx.serialize() const raw = '0x' + serializedTx.toString('hex')
这里使用etheremjs-tx库来创建一个新的Tx对象,然后使用这个库与privateKey1签署交易。接着,序列化交易并转换为十六进制字符串,以便将其传递给Web3。
最后广播交易,可以使用web3.eth.sendSignedTransaction()函数将这个已签名的序列化交易发送到测试网络,如下所示:
web3.eth.sendSignedTransaction(raw, (err, txHash) => { console.log('txHash:', txHash) })
至此,我们完成了交易的执行。
app.js的完整内容,如下所示:var Tx = require('ethereumjs-tx').Transactionconst Web3 = require('web3')const web3 = ne ...