Я пытаюсь узнать, как отправить подписанную транзакцию с помощью web3 1.0 и Infura.io. У меня есть node.js, работающий локально для тестирования. Я могу успешно создать адрес и проверить баланс, но получаю неопределенный TX при запуске sendSignedTransaction.
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
модуль node. После того, как вы npm install ethereumjs-tx --save
в своем проекте, добавьте это в начало вашего скрипта:
const TX = require("ethereumjs-tx");
Другая возможная ошибка, не связанная с этим, заключается в том, что to: "To Address",
должно бытьto: "Contract's Address",
пользователь19510
TX
, но так и не определили ничего с именемTX
. Это может быть более актуально для Stack Overflow. (Подсказка:TX
вероятно, это опечатка дляTx
, но вам также может не хватать библиотеки.)