Sincronización con Mainnet/Ropsten blockchain

Si usa gethel comando, entonces el nodo comienza a sincronizarse con Ethereum Mainnet de forma predeterminada. Si lo usa geth --testnet --networkid 3 --datadir <testnetdatapath>, entonces el nodo se conectará a Ropsten.

¿Cómo se establece esta conexión? ¿Cuáles son los pasos que se ejecutan en ese momento? ¿Conectarse a Blockchain, descargar génesis, descargar otros bloques? ¿Cómo se logra esta funcionalidad?

Respuestas (2)

A efectos de sincronización, no importa si se trata de la red principal o de una red de prueba como Ropsten. Así es como procedería el proceso:

  1. Su cliente Geth buscará compañeros en la red. Utiliza el protocolo de red p2p de ÐΞV para descubrir y conectarse con pares. Lea más aquí , es un repositorio de documentos, por lo que es posible que desee leer archivos de rebajas relevantes. Durante la inicialización, el concepto de bootnodes resulta útil. Lea más sobre cómo se descubren los pares aquí en el wiki de ethereum.

  2. Dependiendo de su modo de sincronización, su nodo buscará (y validará) bloques de otros pares en la red. En este momento, su eth.syncingparámetro devolverá verdadero. Cuando se completa la sincronización, significa que su nodo está actualizado con otros nodos en la red y técnicamente conoce el estado más reciente de la máquina virtual Ethereum e incluso puede extraer las nuevas transacciones, o simplemente validar a ellos.

  3. Desde el lanzamiento, el nodo Geth también tiene un servidor JSON-RPC en ejecución.

  4. Una vez que se completa la sincronización, su nodo también podrá transmitir y/o escuchar transmisiones de nuevas transacciones en la red.

ACTUALIZAR:

Olvidé mencionar el punto 0, que @Ishmael ha mencionado en su respuesta, que el bloque de génesis está 'codificado' en el código fuente mismo.

Geth tiene en su código fuente los bloques de génesis y los bootnodes de las redes que soportan: mainnet, rinkeby, ropsten, etc.

Al principio, geth se conectará a bootnodes y solicitará nuevos pares. Una vez conectado a nuevos pares, comenzará a descargar bloques y verificará que son descendientes del bloque de génesis en el código fuente.