Truffle-Migration Es konnte keine Verbindung zu Ihrem Ethereum-Client hergestellt werden

Problem: Ich kann eine private Ethereum-Kette auf einem Cloud-Server nicht migrieren (verbinden).

Tatsächliche Ergebnisse

Will:dragon zhuangweiming$ truffle migrate --network development
Using network 'development'.

Running migration: 1_initial_migration.js
Could not connect to your Ethereum client. Please check that your Ethereum client:
    - is running
    - is accepting RPC connections (i.e., "--rpc" option is used in geth)
    - is accessible over the network
    - is properly configured in your Truffle configuration file (truffle.js)

Umfeld

truffle.js

module.exports = {
    networks: {
        development: {
            host: "47.92.53.158",   //this is the IP of ethereum server running on cloud
            port: 8545,             //
            network_id: "15",       // test server.
            from: "0xbe2c0def75c0257f1a9968d2d373febf849d6603", // account created on ethereum 47.92.53.158.
            gas: 4712388,          //default 4712388
            gasPrice: 100000000000  //default 100000000000(100 Shannon)
        }
    }
};

1_initial_migration.js

var Migrations = artifacts.require("./Migrations.sol");
module.exports = function(deployer) {
    deployer.deploy(Migrations);
};

2_deploy_contracts.js

var Dragon = artifacts.require("./Dragon.sol");
module.exports = function(deployer) {
  deployer.deploy(Dragon);
};

Ich habe den geth-Befehl wie folgt ausprobiert:

geth --networkid 15 --datadir data --rpc --rpcapi 'web3,eth,net' --rpccorsdomain '*' --rpcaddr 0.0.0.0 --rpcport 8545 --port 30303 console
Ist der Port 8545 in Ihrem Server offen? Beachten Sie auch, dass jeder andere mit Ihrem Server interagieren kann, wenn Sie diesen Port dem Internet zugänglich machen. Ich würde empfehlen, einen SSH-Tunnel oder einen passwortgeschützten Proxy mit nginx oder ähnlichem zu verwenden.
Ja richtig. Ich muss 8545 in der Cloud öffnen, ich öffne auch 30303, bin mir aber nicht sicher, ob es notwendig ist. Vielen Dank! Könnten Sie es bitte in die Antwort einfügen?

Antworten (2)

In meinem Fall hat es nach dem Ändern von truffle.js funktioniert.

Die genauen Schritte waren:

Beim Starten des privaten Netzwerks:

geth --datadir=mychaindata\ --nodiscover --rpc

es zeigte den geöffneten Port bei 8545 (ich habe --rpccorsdomain dort nicht verwendet, weil die Truffle-Migration dann nicht funktioniert)

In truffle.js den Port auf 8545 geändert und danach einen Gaswert hinzugefügt:

port: 8545
gas: 3000000 // added because on truffle migrate, it showed exceed gas value error

Ich habe die Konten entsperrt und den Miner in einem separaten Schritt gestartet, geth attachdann versucht truffle migrate, die Migration erfolgreich abgeschlossen.

Außerdem wurde nach dem Ausführen npm run devein Fehler beim Zurücksetzen auf Port 9545 angezeigt.

Ich habe app.js geändert, indem ich den Port auf 8545 geändert habe. Beim Aktualisieren der Seite wurde ein Cross-Origin-Fehler angezeigt, also habe ich das Netzwerk angehalten und wie folgt neu gestartet:

geth --datadir=mychaindata\ --nodiscover --rpc --rpccorsdomain --unlock 0 --mine 1

Nachdem das Passwort akzeptiert wurde, startete das Netzwerk und alles funktionierte gut!

Ähnlicher Fehler für mich, aktualisiere einfach den Port in der truffle-config.js

Ich bin kein Experte für Trüffel/Geth, ... aber wenn Sie einen Vertrag im Netzwerk bereitstellen, müssen Sie Benzin dafür bezahlen. Vielleicht müssen Sie Ihr Konto also irgendwie entsperren.

Wenn dies das Problem sein sollte, können Sie versuchen, das Konto zu entsperren

0xbe2c0def75c0257f1a9968d2d373febf849d6603

wie hier beschrieben .

Ich hoffe es hilft.