Introducción al último código fuente de Ethereum en la arquitectura 2021-p2p

  El contenido de la parte anterior es una introducción al código fuente. Es posible que algunos amigos no tengan la paciencia para leer todo el código. Aquí utilizo la forma más sencilla posible para presentar lo que hace esta parte del código p2p.

1. Concepto

p2p es la abreviatura de peer-to-peer. La red Ethereum es una red descentralizada peer-to-peer. Por lo tanto, se necesita un mecanismo para realizar el descubrimiento mutuo de nodos entre redes, es decir, cuando se está ejecutando un nuevo nodo, cómo para unirte a la red? ? Después de unirse a la red, ¿cómo se comunican los nodos entre sí? La parte p2p utiliza el protocolo UDP para el descubrimiento de redes y el protocolo TCP para la comunicación entre nodos. Los procesos básicos de los dos protocolos se presentan brevemente a continuación.

2. Conexión TCP

El proceso de esta parte es el siguiente.

1. Active la escucha del puerto TCP. Esta es una opción, porque es posible que algunos nodos solo quieran sincronizar datos de otros nodos y no quieran escuchar en el puerto. Escuchar en el puerto significa que otros nodos están conectados al servidor, lo que consumirá el rendimiento del nodo y el tráfico de la red.

2. Ranura. Las ranuras son un concepto abstracto. Hay 50 ranuras por defecto. El servidor procesará nuevas conexiones entrantes sólo cuando las ranuras estén libres. Este diseño garantiza la seguridad del servidor y establece un límite superior para que el servidor maneje nuevas conexiones entrantes al mismo tiempo, de modo que el rendimiento del servidor no caiga drásticamente debido a la llegada de una gran cantidad de conexiones al mismo tiempo.

3.lista blanca de ip. Este también es un diseño relacionado con la seguridad: solo los nodos que cumplan con las políticas de red pueden establecer conexiones con el servidor.

4. Acuerdo de apretón de manos. Habrá dos apretones de manos. El primero es el protocolo RLPx común en las redes p2p (para este protocolo, por favor Baidu, no entraré en detalles). Este protocolo implementa comunicación cifrada; el segundo es el protocolo soportado por el nodo. apretón de manos, puede haber inconsistencias de versiones entre los nodos, por lo que los nodos comunican los nombres de los protocolos y las versiones correspondientes que admiten para garantizar que al menos un protocolo entre las dos partes sea el mismo; de lo contrario, no se puede lograr la comunicación.

5. Una vez completado todo, el servidor establece una conexión con el nodo par y continúa procesando el envío y la recepción de mensajes del nodo.

3. Conexión UDP

Esta parte del contenido involucra el algoritmo Kademlia. Si no lo comprende, busque y aprenda primero. La lógica general también es muy simple, como se muestra a continuación.

1. Inicie la escucha del puerto UDP

2. Inicialice la tabla de acuerdo con el nodo de arranque configurado. La tabla aquí es una implementación del depósito en el algoritmo kademlia.

3. Inicie una rutina independiente, actualice periódicamente los nodos en el depósito y conserve los nodos en la base de datos local.

4. Inicie una rutina independiente para responder a mensajes de otros nodos.

Supongo que te gusta

Origin blog.csdn.net/HardRedStone/article/details/118391184
Recomendado
Clasificación