Geth-RPC-API, um zu prüfen, ob Geth im Testnet oder im Mainnet läuft?

Einfache Frage: Gibt es eine Möglichkeit abzufragen geth, ob es mit --testnetFlag gestartet wurde oder nicht?

Antworten (2)

Aktualisierung 9. Dezember 2016

Testnet wurde auf die Ropsten-Netzwerkquelle zurückgesetzt .

Verwenden Sie den folgenden Befehl, um den Hash des Genesis-Blocks abzurufen, der die beiden separaten Netzwerke eindeutig identifiziert:

Hauptnetz

> eth.getBlock(0).hash
"0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3"

Testnet

> eth.getBlock(0).hash
"0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d"



Meine neue Antwort

Sie können den Genesis-Block-Hash abrufen, ohne den admin.nodeInfoAufruf zu verwenden, der die Aktivierung der API über RPC erfordert admin, wie in meiner alten Antwort gezeigt.

Verwenden Sie den folgenden Befehl, um den Hash des Genesis-Blocks abzurufen, der die beiden separaten Netzwerke eindeutig identifiziert:

Hauptnetz

> eth.getBlock(0).hash
"0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3"

Testnet

> eth.getBlock(0).hash
"0x0cd786a2425d16f152c658316c423e6ce1181e15c3295826d7c9904cba9ce303"



Meine alte Antwort unten

Sie können die admin.nodeInfoInformationen verwenden, um festzustellen, mit welchem ​​Netzwerk Sie verbunden sind.

Hauptnetz

> admin.nodeInfo.protocols.eth.genesis
"0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3"

Testnet

> admin.nodeInfo.protocols.eth.genesis
"0x0cd786a2425d16f152c658316c423e6ce1181e15c3295826d7c9904cba9ce303"


Während die adminAPI standardmäßig über das IPC-Protokoll verfügbar ist, müssen Sie die adminAPI speziell über das RPC-Protokoll aktivieren, wenn Sie JSON-RPC verwenden möchten, um auf diese Informationen zuzugreifen.

Achten Sie nur auf die Auswirkungen der Aktivierung der adminAPI über das RPC-Protokoll.

So aktivieren Sie die adminAPI über das RPC-Protokoll:

geth --rpc --rpcaddr localhost --rpcapi "eth,net,web3,admin" console

So testen Sie den Zugriff Ihrer RPC-Verbindung auf die Admin-API:

geth attach rpc:http://localhost:8545
> admin.nodeInfo.protocols.eth.genesis
"0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3"
Haben ETH und ETC denselben Genesis-Block? Wenn ja, gibt es eine Möglichkeit, zwischen den einzelnen Ketten zu unterscheiden?
ETH und ETC haben die gleichen Daten bis Block 1.919.999. ETH hat einen "dao-hard-fork"-Marker in Block 1.920.000, den ETC nicht hat. Siehe ethereum.stackexchange.com/questions/7832/…
Dies sollte wahrscheinlich aktualisiert werden, um zu beachten, dass der Genesis-Block-Hash im neuen Testnetz (Ropsten) „0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d“ lautet.
Können Sie dies ein wenig erweitern: "Seien Sie vorsichtig mit den Auswirkungen der Aktivierung der Admin-API über das RPC-Protokoll." Oder vielleicht auf weiterführende Informationen hinweisen? Ist das ein Problem, wenn man den Port auf Standard belässt?

Leider ist dies mit den JSON-RPC-APIs nicht einfach möglich. eth_getTransactionCountEine etwas hackige Option ist jedoch, ein bestehendes Konto anzurufen ; Dies gibt einen Wert <2^20 im Hauptnetz und >2^20 im Testnetz zurück.