geth RPC API para verificar si geth se está ejecutando en testnet o mainnet?

Pregunta simple: ¿hay alguna forma de consultar gethpara saber si se lanzó con --testnetbandera o no?

Respuestas (2)

Actualización 9 de diciembre de 2016

Testnet se restableció a la fuente de red de Ropsten .

Utilice el siguiente comando para obtener el hash del bloque de génesis que identificará de forma única las dos redes separadas:

red principal

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

red de prueba

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



mi nueva respuesta

Puede obtener el hash del bloque de génesis sin usar la admin.nodeInfollamada que requiere habilitar la adminAPI a través de RPC, como se muestra en mi respuesta anterior.

Utilice el siguiente comando para obtener el hash del bloque de génesis que identificará de forma única las dos redes separadas:

red principal

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

red de prueba

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



Mi antigua respuesta a continuación

Puede usar la admin.nodeInfoinformación para determinar a qué red está conectado.

red principal

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

red de prueba

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


Si bien la adminAPI está disponible de forma predeterminada sobre el protocolo IPC, deberá habilitar específicamente la adminAPI sobre el protocolo RPC si desea utilizar JSON-RPC para acceder a esta información.

Solo tenga cuidado con las implicaciones de habilitar la adminAPI sobre el protocolo RPC.

Para habilitar la adminAPI sobre el protocolo RPC:

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

Para probar el acceso de su conexión RPC a la API de administración:

geth attach rpc:http://localhost:8545
> admin.nodeInfo.protocols.eth.genesis
"0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3"
¿ETH y ETC tienen el mismo bloque de génesis? Si es así, ¿hay alguna manera de distinguir entre cada cadena?
ETH y ETC tienen los mismos datos hasta el bloque 1.919.999. ETH tiene un marcador "dao-hard-fork" en el bloque 1,920,000 que ETC no tiene. Consulte ethereum.stackexchange.com/questions/7832/…
Esto probablemente debería actualizarse para tener en cuenta que en la nueva red de prueba (Ropsten), el hash del bloque de génesis es '0x41941023680923e0fe4d74a34bdac8141f2540e3ae90623718e47d66d1ca4a2d'
¿Puede ampliar un poco más esto: "Solo tenga cuidado con las implicaciones de habilitar la API de administración sobre el protocolo RPC". ¿O tal vez apuntar a más información? ¿Es esto un problema si uno deja el puerto en su valor predeterminado?

Desafortunadamente, no hay una manera fácil de hacer esto con las API JSON RPC. Sin embargo, una opción algo complicada es llamar eth_getTransactionCounta una cuenta existente; esto devolverá un valor <2^20 en la red principal y> 2^20 en la red de prueba.