Especificações de consenso de prova de aposta Ethereum
Para saber mais sobre prova de participação e fragmentação, consulte a documentação do PoS, a documentação de fragmentação e o compêndio de pesquisa.
Este repositório hospeda as especificações atuais de prova de participação do Ethereum. As discussões sobre a lógica do design e as mudanças propostas podem ser levantadas e discutidas como questões. Mudanças solidificadas e acordadas nas especificações podem ser feitas por meio de solicitações pull.
Especificações
As especificações básicas para clientes de prova de aposta Ethereum podem ser encontradas nas especificações. Eles são divididos em recursos. Os recursos são pesquisados e desenvolvidos em paralelo e depois consolidados em atualizações sequenciais quando estiverem prontos.
Especificações estáveis
Seq. | Nome de código | Época do garfo | Especificações |
---|
0 | Fase0 | 0 | - Essencial
- A cadeia de faróis
- Contrato de depósito
- Escolha de garfo de corrente de farol
- Adições
- Guia de validador honesto
- Rede P2P
- Subjetividade fraca
|
1 | Altair | 74240 | - Essencial
- Mudanças na cadeia de faróis
- Garfo Altair
- Adições
- Protocolo de sincronização de cliente leve (nó completo, cliente leve, rede)
- Mudanças honestas no guia do validador
- Rede P2P
|
2 | Belatriz ("A fusão") | 144896 | - Essencial
- Mudanças na cadeia de faróis
- Garfo Bellatriz
- Mudanças na escolha do garfo
- Adições
- Mudanças honestas no guia do validador
- Rede P2P
|
3 | Capela | 194048 | - Essencial
- Mudanças na cadeia de faróis
- Garfo de capela
- Adições
- Mudanças leves no protocolo de sincronização do cliente (fork, full node, rede)
- Adições de validador
- Rede P2P
|
4 | Deneb | 269568 | - Essencial
- Mudanças na cadeia de faróis
- Garfo Deneb
- Compromissos polinomiais
- Mudanças na escolha do garfo
- Adições
- Mudanças leves no protocolo de sincronização do cliente (fork, full node, rede)
- Mudanças honestas no guia do validador
- Rede P2P
|
Especificações em desenvolvimento
Seq. | Nome de código | Época do garfo | Especificações |
---|
5 | Eletra | A definir | - Essencial
- Mudanças na cadeia de faróis
- Garfo elétrico
- Adições
- Mudanças leves no protocolo de sincronização do cliente (fork, rede)
- Mudanças honestas no guia do validador
- Rede P2P
|
Especificações desatualizadas
Nome de código ou tópico | Especificações | Notas |
---|
Fragmentação | - Essencial
- Mudanças na cadeia de faróis
- Adições
| |
Jogo de Custódia | - Essencial
- Mudanças na cadeia de faróis
- Adições
- Mudanças honestas no guia do validador
| Dependente de fragmentação |
Amostragem de disponibilidade de dados | - Essencial
- Tipos e funções principais
- Mudanças na escolha do garfo
- Adições
- Rede P2P
- Processo de amostragem
| - Dependente de fragmentação
- Explicador técnico
|
Os documentos que acompanham podem ser encontrados nas especificações e incluem:
- Especificação SimpleSerialize (SSZ)
- Formatos à prova de Merkle
- Formato geral de teste
Especificações adicionais para implementadores de clientes
Especificações e padrões adicionais fora da funcionalidade necessária do cliente podem ser encontrados nos seguintes repositórios:
- APIs de farol
- APIs de mecanismo
- Métricas de farol
Objetivos de design
A seguir estão os objetivos gerais de design para as especificações de consenso de prova de aposta Ethereum:
- minimizar a complexidade, mesmo ao custo de algumas perdas de eficiência
- para permanecer ativo nas principais partições de rede e quando grandes porções de nós ficam off-line
- selecionar todos os componentes de modo que sejam quânticamente seguros ou possam ser facilmente trocados por contrapartes quânticas seguras, quando disponíveis
- utilizar técnicas de criptografia e design que permitam uma grande participação de validadores no total e por unidade de tempo
- para permitir que um laptop de consumidor típico com recursos
O(C)
processe/valide fragmentos O(1)
(incluindo qualquer validação em nível de sistema, como a cadeia de beacon)
Recursos externos úteis
- Justificativa do projeto
- Documento de integração da Fase 0
- Combinando papel GHOST e Casper
Para contribuidores de especificações
A documentação sobre os diferentes componentes usados durante a redação das especificações pode ser encontrada aqui:
- Geradores de teste YAML
- Especificação Python executável, com testes Py
Visualizador online da versão mais recente (ramificação master
mais recente)
Especificações de consenso Ethereum
Testes de especificações de consenso
Os testes de conformidade criados a partir da especificação python executável estão disponíveis no repositório Ethereum Proof-of-Stake Consensus Spec Tests. Tarballs compactados estão disponíveis em versões.
Instalação e uso
O repositório de especificações de consenso pode ser usado executando os testes localmente ou dentro de um contêiner docker.
Para executar os testes localmente:
- Clone o repositório com
git clone https://github.com/ethereum/consensus-specs.git
- Mude para o diretório
cd consensus-specs
- Instale as dependências com:
make install_test && make preinstallation && make pyspec
- Execute os testes com
make citest
Para executar os testes dentro de um contêiner docker:
- Mude para o diretório com
cd scripts
- Execute o script
./build_run_docker_tests.sh
- Encontre os resultados em uma pasta chamada
./testResults
- Encontre mais maneiras de personalizar o script com
./build_run_docker_tests.sh --h