¿Qué significa "fragmentación" en Ethereum?
Escrito delante del artículo: La versión en video y la versión en texto son ligeramente diferentes. Si quieres ver mi interpretación conmovedora, mira la versión en video (Meow Understand Blockchain Issue 22 | Sharding: Ethereum Too. lento, "disco"! ), pensamiento y lógica extraños, consulte la versión extendida de la copia.
Recientemente, Ethereum ha experimentado una tendencia abrumadoramente positiva debido a la actualización de Constantinopla. Sin embargo, el camino de actualización de Ethereum es como actualizar y luchar contra monstruos, cayendo en una madriguera de conejo. Nadie sabe qué tan profundo es el agujero. . Dado que "el camino es largo y difícil", es fundamental dar cada paso con cuidado y precisión. Después de superar esta dificultad, la siguiente dificultad técnica de Ethereum, Sharding, se ha vuelto a poner sobre la mesa. Esta edición de "Meow Understands Blockchain" lo llevará al arma mágica que hace que Ethereum crezca más rápido: la fragmentación.
¿Qué es la fragmentación?
La tecnología de fragmentación en realidad no es un concepto nuevo. Originalmente era una solución de optimización propuesta para grandes bases de datos centrales. Específicamente, divide los datos en bases de datos grandes en muchos fragmentos de datos (fragmentos) de acuerdo con ciertas reglas. Y luego almacene estos fragmentos de datos en diferentes servidores para reducir la presión de acceso a los datos en cada servidor, mejorando así el rendimiento de todo el sistema de base de datos.
Demos un ejemplo simple:
Por ejemplo, Meituan, Didi Taxi y otros programas que usamos con frecuencia se pueden fragmentar según la "ciudad", debido a que los datos de la ciudad son diferentes. Los datos de diferentes ciudades deben estar interconectados y se pueden almacenar en diferentes bases de datos. De esta manera, el servidor de la base de datos se puede implementar en el nodo más cercano a la ciudad correspondiente y se puede mejorar la velocidad de acceso. !
A partir del ejemplo anterior, todos deberíamos tener una comprensión preliminar del concepto de fragmentación. Entonces, ¿cómo se ve la fragmentación en un escenario de blockchain?
Tome la fragmentación de Ethereum como ejemplo. En el sistema de cadena única original, el rendimiento general de la cadena pública depende del rendimiento de un solo nodo. Después de la fragmentación, cada nodo solo necesita realizar una parte. En el trabajo de toda la red, cada fragmento funciona en paralelo. Según Vitalik, cada fragmento es como una galaxia separada, cada fragmento es como un pequeño universo independiente, por lo que la eficiencia mejora naturalmente. Originalmente, el TPS de toda la cadena Ethereum era de aproximadamente 20. Ahora, si el número de fragmentos se aumenta a 100, el TPS de toda la red se puede aumentar a 2000. De manera similar, la capacidad de toda la red también se aumentará a 100. veces.
"Cada nodo solo necesita realizar parte del trabajo de toda la red", lo que generará varias preguntas importantes: 1. ¿Cómo determinar de qué fragmento es responsable este nodo? 2. ¿Qué transacciones deberían clasificarse en qué fragmentos? 3. ¿Cada nodo solo necesita almacenar la información de transacciones (libro mayor) de su propio fragmento?
Dependiendo de si los problemas anteriores se realizan o no, podemos dividir la fragmentación en tres tipos: fragmentación de red, fragmentación de transacciones y fragmentación de estado.
Fragmentación de red: cómo dividir todos los nodos de la red en diferentes fragmentos.
Fragmentación de transacciones: cómo dividir las transacciones de toda la red en diferentes fragmentos.
State sharding: cómo permitir que cada nodo mantenga solo el libro mayor dentro de su propio fragmento sin afectar la seguridad de todo el sistema.
¿Cuáles son las diferencias y conexiones entre la cadena principal y la cadena de fragmentos?
Ya entendemos los tipos de fragmentos, entonces, ¿cuál es la diferencia entre la cadena principal y la cadena de fragmentos?
En la cadena principal, sabemos que las personas que llevan las cuentas se llaman mineros y los libros de contabilidad se almacenan en bloques. En correspondencia con la cadena de fragmentos, existen los correctores Collator y los bloques de corrección Collation.
De manera similar a la composición de un bloque, el bloque de Intercalación también contiene el encabezado de Intercalación y la información de transacción específica de la lista de transacciones.
En comparación, la cadena principal y la cadena de fragmentos siguen siendo similares, pero una vez conectadas, el problema se complica. Aquí damos una analogía simple:
Supongamos, <. /p>
Cadena principal de Ethereum = Banco Wenzhou
Cada fragmento = sucursal del Banco Wenzhou
Por ejemplo:
fragmento1 (fragmento 1) = Banco de Wenzhou (Sucursal de Hangzhou)
Fragmento2 (fragmento 2) = Banco de Wenzhou (Sucursal de Ningbo)
En este sistema, veremos claramente varios Problemas principales: 1. ¿Cómo resumir los libros de contabilidad de las sucursales principales en la oficina central? 2. ¿Cómo se interconectan los libros de contabilidad de las principales sucursales?
En correspondencia con los sistemas de cadena principal y cadena de fragmentos, se convierte en 1. ¿Cómo realizar enlaces cruzados entre las cadenas de fragmentos y las cadenas principales? 2. ¿Cómo interconectar fragmentos? ¿Qué hacer incluso en el caso de una bifurcación?
¿Cómo lograr enlaces cruzados entre las cadenas de fragmentos y la cadena principal?
Para agregar la cadena de fragmentos a la cadena principal, se requiere un contrato especial llamado Contrato de administrador de validación (VMC) en la cadena principal. Los detalles de VMC son los siguientes:
Todos los validadores depositan sus apuestas en VMC, y estos validadores se incluirán en el grupo de candidatos a validadores del grupo de validadores común de VMC. El sistema seleccionará aleatoriamente un validador para cada fragmento en función de la apuesta "a intervalos" y sincronizará la información del encabezado de intercalación de cada fragmento con la cadena principal.
Aquí necesitamos explicar el "intervalo de tiempo": "tiempo", también llamado período. ¿Cómo se determina? La respuesta es que depende principalmente de la implementación del desarrollador en el código final. Por ejemplo, si configuramos el ciclo en 5 bloques, significa que la cadena principal producirá 5 bloques y todas las cadenas de fragmentos producirán un bloque de clasificación. Determina indirectamente el tiempo de generación de bloques de la cadena de fragmentos.
Esta forma aleatoria hace imposible que los validadores predigan de antemano cuándo se convertirán en validadores o en qué fragmento se convertirán en validadores, evitando así la posibilidad de cometer actos malignos.
Si se descubre que nuestro validador de fragmentos ha hecho algo malo, se le privarán de sus derechos de participación.
¿Qué pasa con la comunicación entre fragmentos?
Por ejemplo, si la parte de la transferencia A está en el fragmento M y el beneficiario B está en el fragmento N, A puede completar la operación de deducción a través del puente de la cadena principal y crear una transacción con el recibo del ID. representa "He completado la operación de deducción". El beneficiario B puede crear una transacción de consumo que consume recibos en función de este ID de recibo. Después de que el "consumo" sea exitoso, el cobro también será exitoso.
¿Qué debo hacer si la cadena de fragmentos se bifurca? (regla de elección de bifurcación)
En bifurcaciones anteriores, la regla era "tomar la cadena más larga como cadena principal". En la fragmentación, la regla de la bifurcación es "tomar la cadena más larga como cadena principal". La cadena de fragmentos es la cadena de fragmentos válida más larga dentro de la cadena principal válida más larga."
¿Qué significa? Pongamos un ejemplo:
Una cadena principal tiene una bifurcación. Una bifurcación sigue dos bloques seguidos y dos bloques de intercalación. La otra es un bloque y una. Después de verificar el bloque, es obvio que la cadena principal tiene una bifurcación. La primera es la cadena válida.
A continuación, se agrega otro bloque a la segunda cadena, convirtiéndose en dos bloques y un bloque de intercalación. Aún es obvio que la primera cadena sigue siendo una cadena válida:
A continuación, otra. El bloque se agrega a la primera cadena. Aunque solo hay un bloque de clasificación en esta cadena, la longitud de su cadena principal ha excedido la primera, por lo que la segunda cadena ahora se ha convertido en la cadena efectiva, esta es la regla de bifurcación en el escenario de fragmentación. ¡Primero compare la longitud de la cadena principal y luego compare la longitud de la cadena de fragmentos!
La implementación de la fragmentación de Ethereum es un proceso largo. Incluso el propio Vitalik dijo que se implementará gradualmente en etapas. Todavía esperamos con ansias que la fragmentación pueda pasar de la teoría a la práctica.
Materiales de referencia:
/news/11390.html