NodeJS mit HDWalletProvider

Ich möchte signierte Ethereum-Transaktionen aus einem NodeJS-Programm ausführen. Ich erstelle einen web3_provider wie diesen

var contract = require("truffle-contract");

var provider = new HDWalletProvider("nemonic", "https://rinkeby.infura.io/xxxxx");
// if I change the above line to: var provider = new Web3.providers.HttpProvider("https://rinkeby.infura.io/xxxxx");
// Everything works fine
var web3 = new Web3(provider); 

var myContract = contract(myABI);
myContract.setProvider(web3.currentProvider);

Wenn ich versuche, Transaktionen mit HDWalletProvider auszuführen, erhalte ich die Fehlermeldung: "Konto nicht gefunden". Konnte jemand mit HDWalletProvider signierte Transaktionen erfolgreich ausführen? Oder benutze ich es falsch?

Antworten (2)

Stellen Sie sicher, dass var HDWalletProvider = require("truffle-hdwallet-provider");es korrekt installiert und erforderlich ist. npm install truffle-hdwallet-provider --savewird das Modul installieren.

Zweitens ist Ihre "nemonische" Phrase falsch formatiert. Eine Seed-Nemonic sollte so aussehen: retreat attack lift winter amazing noodle interest dutch craft old solve saveund ist wahrscheinlich die Ursache für Ihren Fehler.

Ich habe meine Ausgangsphrase durch das Wort „nemonic“ ersetzt, weil ich sie nicht öffentlich posten wollte. Und HDWalletProvider ist korrekt installiert.
Das ist schlau, das hätte ich erkennen müssen. Ich sehe das Problem. Sie können Provider nicht auf ein Vertragsobjekt setzen. Der Vertrag ist entweder bereits bereitgestellt, in diesem Fall geben Sie eine Adresse an. Oder Sie müssen den Vertrag bereitstellen.
Könnten Sie auch Ihre Version von web3js überprüfen? Danke
Das ist kein Vertragsgegenstand, sein Trüffelvertrag – npmjs.com/package/truffle-contract . Ich verwende: "truffle-contract":"^3.0.5", "truffle-hdwallet-provider": "0.0.3", "web3": "^1.0.0-beta.26",

Dies ist die Codesyntax, die ich immer in JS für HDWallet Provider verwende. Funktioniert jedes mal gut.

provider: () => new HDWalletProvider(secret, "http://IP_address:Port"),

Hinweis: Ich verwende http, nicht http(s)