Web3js
嘗試發送簽名交易時未定義獲取 TX
我正在嘗試學習如何使用 web3 1.0 和 Infura.io 發送簽名交易。我在本地執行 node.js 進行測試。我可以成功創建地址並檢查餘額,但是在執行 sendSignedTransaction 時未定義 TX。
const Web3 = require('web3'); web3 = new Web3(new Web3.providers.HttpProvider("https://mainnet.infura.io/v3/My API Key")); // Get Contract ABI var abi = JSON.parse('[{"MY ABI"}]') // Define Variable for Contract ABI var AK = new web3.eth.Contract(abi); // Buffer PK var privateKey = new Buffer('Private Key') // create transaction - to address, amount var data = AK.methods.transfer("To Address", 10).encodeABI(); // object to hold the transaction data From Address web3.eth.getTransactionCount('From Address').then(count => { var txData = { nonce: web3.utils.toHex(count), gasLimit: web3.utils.toHex(25000), gasPrice: web3.utils.toHex(web3.eth.gasPrice), to: "To Address", from: "From Address", data: data } var transaction = new TX(txData); transaction.sign(privateKey); var serialisedTransaction = transaction.serialize().toString('hex'); web3.eth.sendSignedTransaction('0x' + serialisedTransaction); });
我收到以下錯誤 -
(node:16077) UnhandledPromiseRejectionWarning: ReferenceError: TX is not defined at web3.eth.getTransactionCount.then.count (/Users/ryan/Documents/KapAction/public/send.js:39:19) at <anonymous> at process._tickCallback (internal/process/next_tick.js:189:7) (node:16077) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1) (node:16077) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
我對此真的很陌生,並且正在努力學習,但不確定我哪裡出錯了。
您很可能會錯過
ethereumjs-tx
節點模組。在您npm install ethereumjs-tx --save
的項目中,將其添加到腳本的開頭:const TX = require("ethereumjs-tx");
另一個不相關的可能錯誤
to: "To Address",
是to: "Contract's Address",