Das Bereitstellen von Smart Contracts mit Trüffel und Infura gibt mir einen Fehler

Ich habe Probleme beim Bereitstellen meines Smart-Vertrags im Ropsten-Netzwerk mit Infura und Truffle bekomme eine Fehlermeldung, die besagt

"var sig = secp256k1.sign(msgHash, privateKey);
                      ^
TypeError: private key should be a Buffer"
Können Sie einen Code / Link eines Tutorials teilen, das Sie verwendet haben?
Anscheinend übergeben Sie ein falsches Format für privateKey. Wenn Sie den hexadezimalen privaten Schlüssel haben, sollten Sie ihn stattdessen als Rohbytes übergebenconst privateKey = Buffer.from("ab1a..", "hex");

Antworten (3)

Wie Sie einen Vertrag mit Truffle und Infura bereitstellen, erfahren Sie in der Truffle-Dokumentation

Ich habe den Bereitstellungscode, den ich bereits besaß, unten kopiert,

// Allows us to use ES6 in our migrations and tests.
require('babel-register')

const HDWalletProvider = require("truffle-hdwallet-provider-privkey");

const privateKey = "PRIVATEKEYADDRESS"; // private keys

module.exports = {
  // See <http://truffleframework.com/docs/advanced/configuration>
  // for more about customizing your Truffle configuration!
  networks: {
    development: {
      host: "127.0.0.1",
      port: 8545,
      network_id: "*" // Match any network id
    },
    rinkeby: {
      provider: () => {
        return new HDWalletProvider(privateKey, "https://rinkeby.infura.io/INFURAAPIKEY")
      },
      network_id: 4
    }
  }
};

Hoffe es funktioniert auch bei dir

Mehmet Dogan Vielen Dank für die Hilfe, aber ich bekomme immer noch einen anderen Fehler, der ausgegeben wird Fehler aufgetreten, Kaution. Netzwerkstatus unbekannt. Überprüfen Sie erfolgreiche Transaktionen manuell. unzureichende Mittel für Gas * Preis + Wert
Sie teilen wenig mit uns und möchten eine vollständige Antwort erhalten. Aber soweit ich weiß, tritt dieser Fehler auf, wenn Sie versuchen, eine Schnittstelle bereitzustellen, die nicht implementierte Funktionen wie ERC20Interface enthält. Angenommen, Sie versuchen, einen Vertrag namens myContract bereitzustellen contract myContract is ERC20Interface { .. } , dann müssen Sie nur noch myContract in Ihre Datei 2_deploy_contracts.js aufnehmen

Sie müssen die „Von“-Adresse in Kleinbuchstaben verwenden, während Sie den Vertrag für das Testnetzwerk bereitstellen, um diesen Fehler zu vermeiden.

Ihre Antwort hat nichts mit der gestellten Frage zu tun.
Versuche es. Eigentlich hat es bei mir funktioniert und daher habe ich geantwortet !!
Die verwendete Funktion secp256k1.signakzeptiert keinen from-Parameter.
Wenn Sie Ihren Vertrag beispielsweise so bereitstellen: SampleContract.new(abcd, {from: '0xAD123EFG456...'}).then(function(){}); dann sollte die Absenderadresse in Kleinbuchstaben wie SampleContract.new(abcd, {from: '0xad123efg456...'}).then(function(){});

Stimmen Sie Ismael zu, dass die Funktion sepc256k1.sign keinen Parameter benötigt. funktionierte für mich ohne Deklaration privater Schlüssel und von Parameter