Web3js

TypeError:EthereumTransaction 不是建構子

  • August 16, 2021
var EthereumTransaction = require("ethereumjs-tx")

var Web3 = require('web3')

var web3 = new Web3('http://127.0.0.1:7545')

//Setting Receiving and Sending Address

var sendingAddress = acc1

var receivingAddress = acc2

//Checking the balance of each account in ether

web3.eth.getBalance(sendingAddress).then(console.log(web3.utils.fromWei('1', 'ether')))

web3.eth.getBalance(receivingAddress).then(console.log(web3.utils.fromWei('1', 'ether')))

//Creating a transaction

var rawTransaction ={
   nounce:0,
   to:receivingAddress,
   gasPrice:20000000,
   gasLimit:30000,
   value:100,
   data:""
}

//Sign the Transaction

var privateKey = 'private key goes here'

var senderPrivateKeyHex = new Buffer(privateKey,'hex')

var transaction = new EthereumTransaction(rawTransaction)

transaction.sign(senderPrivateKeyHex)

//Send transaction to the network

var serializedTransaction = transaction.serialize()

web3.eth.sendSignedTransaction(serializedTransaction)

發生的錯誤是。

TypeError: EthereumTransaction is not a constructor

發生這種情況是因為ethereumjs-tx庫已更改其語法

這是您的程式碼的工作版本:

const EthereumTx = require('ethereumjs-tx').Transaction

var Web3 = require('web3')

var web3 = new Web3('http://127.0.0.1:7545')

//Setting Receiving and Sending Address

var sendingAddress = 'ADD SENDING ADDRESS HERE'

var receivingAddress = 'ADD RECEIVING ADDRESS HERE'

//Checking the balance of each account in ether

web3.eth.getBalance(sendingAddress).then(console.log(web3.utils.fromWei('1', 'ether')))

web3.eth.getBalance(receivingAddress).then(console.log(web3.utils.fromWei('1', 'ether')))

//Creating a transaction

var rawTransaction ={
   nonce: web3.utils.toHex(0),
   to: receivingAddress,
   gasPrice: web3.utils.toHex(20000000),
   gasLimit: web3.utils.toHex(30000),
   value: web3.utils.toHex(100),
   data: web3.utils.toHex("")
}

//Sign the Transaction

var privateKey = 'private key goes here'

var senderPrivateKeyHex = new Buffer.from(privateKey,'hex')

var transaction = new EthereumTx(rawTransaction)

transaction.sign(senderPrivateKeyHex)

//Send transaction to the network

var serializedTransaction = transaction.serialize()

web3.eth.sendSignedTransaction(serializedTransaction)

試試這個

  var transaction = new TX(rawTransaction); 

而不是這個

 var transaction = new EthereumTransaction(rawTransaction)

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