Web3js
使用 web3.js 的“txHash:未定義”錯誤
誰能幫我解決這個問題?我在終端中收到“txHash:未定義”錯誤
var Tx = require('ethereumjs-tx').Transaction const Web3 = require('web3') const web3 = new Web3('https://ropsten.infura.io/.....') const account1 = '0x4e8143b70aC257BC26......................' const account2 = '0x7184a5934B9B36E210......................' const privateKey1 = Buffer.from(process.env.PRIVATE_KEY_1, 'hex') const privateKey2 = Buffer.from(process.env.PRIVATE_KEY_2, 'hex') web3.eth.getTransactionCount(account2, (err, txCount) => { // Build a transaction const txObject = { nonce: web3.utils.toHex(txCount), to: account1, value: web3.utils.toHex(web3.utils.toWei('1', 'ether')), gasLimit: web3.utils.toHex(21000), gasPrice: web3.utils.toHex(web3.utils.toWei('10', 'gwei')) } // sign a transaction const tx = new Tx(txObject) tx.sign(privateKey2) const serializedTransaction = tx.serialize() const raw = '0x' + serializedTransaction.toString('hex') // Broadcast the transacation web3.eth.sendSignedTransaction(raw, (err, txHash) => { console.log('txHash:' , txHash) }) })
當您連接到 Ropsten 測試網時,您必須更改
const tx = new Tx(txObject)
為const tx = new Tx(txObject, { chain: 'ropsten' })
.如果沒有
{ chain: 'ropsten' }
,ethereumjs-tx 會簽署一個主網交易。您的程式碼不起作用,因為您基本上是在嘗試發送主網交易,而您的 web3 提供商連接到 Ropsten 測試網。請注意,交易簽名因網路而異,以防止重放攻擊(有關更多資訊,請參閱什麼是重放攻擊?)。