Ich versuche zu lernen, wie man eine signierte Transaktion mit web3 1.0 und Infura.io sendet. Ich habe node.js lokal zum Testen ausgeführt. Ich kann erfolgreich eine Adresse erstellen und Guthaben prüfen, bekomme aber TX nicht definiert, wenn ich sendSignedTransaction ausführe.
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);
});
Ich bekomme den folgenden Fehler -
(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.
Ich bin wirklich neu in diesem Bereich und versuche zu lernen, bin mir aber nicht sicher, wo ich falsch liege.
Sie vermissen höchstwahrscheinlich das ethereumjs-tx
Knotenmodul. Nachdem Sie npm install ethereumjs-tx --save
in Ihrem Projekt sind, fügen Sie dies am Anfang Ihres Skripts hinzu:
const TX = require("ethereumjs-tx");
Ein weiterer, unabhängiger möglicher Fehler ist, dass das to: "To Address",
sein sollteto: "Contract's Address",
Benutzer19510
TX
etwas namens eingegeben, aber nie definiertTX
. Dies könnte bei Stack Overflow themenbezogener sein. (Hinweis:TX
war wahrscheinlich ein Tippfehler fürTx
, aber möglicherweise fehlt Ihnen auch eine Bibliothek.)