Web3js

使用 web3.js 的“txHash:未定義”錯誤

  • February 21, 2021

誰能幫我解決這個問題?我在終端中收到“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 測試網。

請注意,交易簽名因網路而異,以防止重放攻擊(有關更多資訊,請參閱什麼是重放攻擊?)。

引用自:https://ethereum.stackexchange.com/questions/93758