Ir al contenido principal
Change page

Arquitectura del nodo

Última edición: @pamdany(opens in a new tab), 15 de agosto de 2023

Un nodo de Ethereum se compone de dos clientes: un cliente de ejecución y un cliente de consenso.

Cuando Ethereum utilizaba la prueba de trabajo, con un cliente de ejecución era suficiente para ejecutar un nodo de Ethereum completo. Sin embargo, desde que se implementa la prueba de participación, el cliente de ejecución debe utilizarse junto con otra pieza de software denominada «cliente de consenso».

El siguiente diagrama muestra la relación entre los dos clientes Ethereum. Los dos clientes se conectan a sus respectivas redes entre pares (P2P). Se necesitan redes P2P separadas, ya que los clientes de ejecución envían transacciones con protocolo de intercambio de información (o Gossip) a través de su red P2P, lo que les permite administrar su reserva de transacciones local, mientras que los clientes de consenso envían por Gossip bloques de su red P2P, lo que permite el consenso y el crecimiento de la cadena.

Esta imagen se ha tomado de geth.ethereum.org y utiliza el logotipo de Geth para representar a los clientes de ejecución: hay otras opciones para el cliente de ejecución que incluyen Erigon, Nethermind y Besu

Para que esta estructura de dos clientes funcione, los clientes de consenso deben poder pasar grupos de transacciones al cliente de ejecución. Para comprobar y validar que las transacciones no infringen ninguna norma de Ethereum y que la actualización propuesta del estado de Ethereum es correcta, el cliente ejecuta las transacciones localmente. Asimismo, cuando se selecciona el nodo para producir bloques, el cliente de consenso debe poder solicitar a Geth grupos de transacciones para incluirlos en el nuevo bloque y ejecutarlos para actualizar el estado global. Esta comunicación entre clientes se gestiona mediante una conexión RPC local que utiliza la Engine API(opens in a new tab).

¿Qué hace el cliente de ejecución?

El cliente de ejecución es responsable de la gestión de transacciones, el protocolo de intercambio de información de transacciones, la gestión de estados y el soporte de la máquina virtual de Ethereum (EVM). Sin embargo, no es responsable de la construcción de bloques, del intercambio de información entre bloques o del manejo de la lógica de consenso. Son competencia del cliente de consenso.

El cliente de ejecución crea cargas útiles de ejecución: la lista de transacciones, el trie de estado actualizado y otros datos relacionados con la ejecución. Los clientes de consenso incluyen la carga útil de ejecución en cada bloque. El cliente de ejecución también es responsable de volver a ejecutar las transacciones en nuevos bloques para asegurarse de que son válidas. La ejecución de las transacciones se realiza en el ordenador integrado del cliente de ejecución, conocido como la máquina virtual Ethereum (o EVM).

El cliente de ejecución también ofrece una interfaz de usuario a Ethereum a través de métodos RPC que permiten a los usuarios consultar la cadena de bloques de Ethereum, enviar transacciones y desplegar contratos inteligentes. Es normal que las reuniones RPC las controle una biblioteca como Web3js(opens in a new tab), Web3py(opens in a new tab), o una interfaz de usuario como la cartera de un navegador.

Resumiendo, el cliente de ejecución es:

  • una puerta de acceso de los usuarios a Ethereum
  • donde está la máquina virtual de Ethereum, el estado de Ethereum y el grupo de transacciones.

¿Qué hace el cliente de consenso?

El cliente de consenso se ocupa de toda la lógica que permite a un nodo mantenerse sincronizado con la red Ethereum. Esto incluye la recepción de bloques de pares y la ejecución de un algoritmo de elección de bifurcación para garantizar que el nodo siga siempre la cadena con mayor acumulación de certificaciones (ponderada por los saldos efectivos de los validadores). Al igual que el cliente de ejecución, los clientes de consenso tienen su propia red P2P a través de la cual comparten bloques y certificaciones.

El cliente de consenso no participa en la certificación ni en la propuesta de bloques; de ello se encarga un validador, un complemento opcional del cliente de consenso. Un cliente de consenso sin validador sólo se mantiene al día con la cabeza de la cadena, permitiendo que el nodo permanezca sincronizado. Esto permite a un usuario realizar transacciones con Ethereum utilizando su cliente de ejecución, con la seguridad de que se encuentre en la cadena correcta.

Validadores

Los operadores de nodos pueden añadir un validador a sus clientes de consenso depositando 32 ETH en el contrato de depósito. El cliente validador viene incluido con el cliente de consenso y puede añadirse a un nodo en cualquier momento. Los validadores se encargan de las certificaciones y las propuestas de bloques. Permiten a un nodo acumular recompensas o perder ETH mediante penalizaciones o recortes. La ejecución del software validador también hace que un nodo pueda seleccionarse para proponer un nuevo bloque.

Más información sobre las participaciones.

Componentes de una comparación de nodos

Cliente de ejecuciónCliente de consensoValidador
Transacciones de intercambio de información a través de su red P2PBloques de intercambio de información y certificaciones a través de su red P2PPropone bloques
Ejecuta/vuelve a ejecutar transaccionesEjecuta el algoritmo de elección de la bifurcaciónAcumula recompensas/penalizaciones
Verifica los cambios de estado entrantesHace un seguimiento de la cabeza de la cadenaHace certificaciones
Gestiona los intentos de estado y recibosGestiona el estado de la baliza (contiene información de consenso y ejecución)Requiere 32 ETH para iniciar una participación
Crea una carga útil de ejecuciónRealiza un seguimiento de la aleatoriedad acumulada en RANDAOSe puede recortar
Expone la API JSON-RPC para interactuar con EthereumRealiza un seguimiento de la justificación y la finalización

Más información

¿Le ha resultado útil este artículo?