Получение TX не определяется при попытке отправить подписанную транзакцию [закрыто]

Я пытаюсь узнать, как отправить подписанную транзакцию с помощью 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.

Я действительно новичок в этом и пытаюсь учиться, но не уверен, где я ошибаюсь.

Голосование на закрытие как не по теме. Вы напечатали TX, но так и не определили ничего с именем TX. Это может быть более актуально для Stack Overflow. (Подсказка: TXвероятно, это опечатка для Tx, но вам также может не хватать библиотеки.)

Ответы (1)

Скорее всего, вы пропустили ethereumjs-txмодуль node. После того, как вы npm install ethereumjs-tx --saveв своем проекте, добавьте это в начало вашего скрипта:

const TX = require("ethereumjs-tx");

Другая возможная ошибка, не связанная с этим, заключается в том, что to: "To Address",должно бытьto: "Contract's Address",

Большое спасибо, это решает мою проблему. Я ценю помощь! У меня есть еще одна проблема, которая не связана с этим, она говорит, что длина моего закрытого ключа недействительна. Но я посмотрю, что я делаю неправильно. Ура, приятель!