Especificaciones del consenso de prueba de participación de Ethereum
Para obtener más información sobre la prueba de participación y la fragmentación, consulte la documentación de PoS, la documentación de fragmentación y el compendio de investigación.
Este repositorio alberga las especificaciones actuales de prueba de participación de Ethereum. Las discusiones sobre la justificación del diseño y los cambios propuestos se pueden plantear y discutir como temas. Se pueden realizar cambios solidificados y acordados en las especificaciones mediante solicitudes de extracción.
Especificaciones
Las especificaciones básicas para los clientes de prueba de participación de Ethereum se pueden encontrar en las especificaciones. Estos se dividen en características. Las funciones se investigan y desarrollan en paralelo y luego se consolidan en actualizaciones secuenciales cuando están listas.
Especificaciones estables
Sec. | Nombre del código | Época de la bifurcación | Especificaciones |
---|
0 | Fase0 | 0 | - Centro
- La cadena de balizas
- Contrato de deposito
- Elección de horquilla de cadena de baliza
- Adiciones
- Guía de validador honesto
- redes p2p
- Subjetividad débil
|
1 | Altaír | 74240 | - Centro
- Cambios en la cadena de balizas
- Tenedor Altair
- Adiciones
- Protocolo de sincronización de cliente ligero (nodo completo, cliente ligero, redes)
- Cambios en la guía del validador honesto
- redes p2p
|
2 | Bellatrix ("La fusión") | 144896 | - Centro
- Cambios en la cadena de balizas
- tenedor Bellatrix
- Cambios en la elección de la horquilla
- Adiciones
- Cambios en la guía del validador honesto
- redes p2p
|
3 | capella | 194048 | - Centro
- Cambios en la cadena de balizas
- tenedor capella
- Adiciones
- Cambios en el protocolo de sincronización del cliente ligero (bifurcación, nodo completo, redes)
- Adiciones del validador
- redes p2p
|
4 | deneb | 269568 | - Centro
- Cambios en la cadena de balizas
- tenedor deneb
- Compromisos polinomiales
- Cambios en la elección de la horquilla
- Adiciones
- Cambios en el protocolo de sincronización del cliente ligero (bifurcación, nodo completo, redes)
- Cambios en la guía del validador honesto
- redes p2p
|
Especificaciones en desarrollo
Sec. | Nombre del código | Época de la bifurcación | Especificaciones |
---|
5 | electra | Por determinar | - Centro
- Cambios en la cadena de balizas
- horquilla electra
- Adiciones
- Cambios en el protocolo de sincronización del cliente ligero (bifurcación, redes)
- Cambios en la guía del validador honesto
- redes p2p
|
Especificaciones obsoletas
Nombre del código o tema | Especificaciones | Notas |
---|
fragmentación | - Centro
- Cambios en la cadena de balizas
- Adiciones
| |
Juego de custodia | - Centro
- Cambios en la cadena de balizas
- Adiciones
- Cambios en la guía del validador honesto
| Dependiente de la fragmentación |
Muestreo de disponibilidad de datos | - Centro
- Tipos y funciones principales
- Cambios en la elección de la horquilla
- Adiciones
- Redes P2P
- Proceso de muestreo
| - Dependiente de la fragmentación
- explicador técnico
|
Los documentos adjuntos se pueden encontrar en las especificaciones e incluyen:
- Especificación SimpleSerialize (SSZ)
- Formatos de prueba de Merkle
- Formato de prueba general
Especificaciones adicionales para implementadores de clientes
Se pueden encontrar especificaciones y estándares adicionales fuera de la funcionalidad requerida del cliente en los siguientes repositorios:
- API de baliza
- API del motor
- Métricas de baliza
Objetivos de diseño
Los siguientes son los objetivos generales de diseño para las especificaciones de consenso de prueba de participación de Ethereum:
- Minimizar la complejidad, incluso a costa de algunas pérdidas en eficiencia.
- permanecer activo a través de las principales particiones de la red y cuando grandes porciones de nodos se desconectan
- seleccionar todos los componentes de modo que sean seguros cuánticamente o puedan intercambiarse fácilmente por homólogos seguros cuánticos cuando estén disponibles
- Utilizar técnicas de criptografía y diseño que permitan una gran participación de validadores en total y por unidad de tiempo.
- para permitir que una computadora portátil de consumo típica con recursos
O(C)
procese/valide fragmentos O(1)
(incluida cualquier validación a nivel del sistema, como la cadena de balizas)
Recursos externos útiles
- Justificación del diseño
- Documento de incorporación de la fase 0
- Combinando papel GHOST y Casper
Para contribuyentes de especificaciones
La documentación sobre los diferentes componentes utilizados durante la redacción de especificaciones se puede encontrar aquí:
- Generadores de pruebas YAML
- Especificaciones de Python ejecutables, con pruebas de Py
Visor en línea de la última versión (última rama master
)
Especificaciones del consenso de Ethereum
Pruebas de especificaciones de consenso
Las pruebas de conformidad creadas a partir de la especificación ejecutable de Python están disponibles en el repositorio de pruebas de especificación de consenso de prueba de participación de Ethereum. Los archivos tar comprimidos están disponibles en las versiones.
Instalación y uso
El repositorio de especificaciones de consenso se puede utilizar ejecutando las pruebas localmente o dentro de un contenedor acoplable.
Para ejecutar las pruebas localmente:
- Clona el repositorio con
git clone https://github.com/ethereum/consensus-specs.git
- Cambie al directorio
cd consensus-specs
- Instale las dependencias con:
make install_test && make preinstallation && make pyspec
- Ejecute las pruebas con
make citest
Para ejecutar las pruebas dentro de un contenedor acoplable:
- Cambie al directorio con
cd scripts
- Ejecute el script
./build_run_docker_tests.sh
- Busque los resultados en una carpeta llamada
./testResults
- Encuentre más formas de personalizar el script con
./build_run_docker_tests.sh --h