Danksharding
Danksharding é como o Ethereum torna um blockchain verdadeiramente dimensionável, mas são necessárias diversas melhorias de protocolo para chegar a isso. Proto-Danksharding é uma etapa intermediária ao longo do caminho. Ambos têm como objetivo tornar as transações na Camada 2 o mais baratas possível para os usuários e devem dimensionar o Ethereum para >100.000 transações por segundo.
O que é Proto-Danksharding?
Proto-Danksharding, também conhecido como EIP-4844(opens in a new tab), é uma maneira para os rollups adicionarem dados mais baratos aos blocos. O nome vem dos dois pesquisadores que propuseram a ideia: Dankrad Feist e Protolambda. No passado, os rollups eram limitados à economia que podiam proporcionar às transações dos usuários, que registravam essas transações em CALLDATA
.
Isso é caro porque é processado por todos os nós Ethereum e permanece non-chain para sempre, embora os rollups só precisem dos dados por um curto período. Proto-Danksharding introduz blobs de dados que podem ser enviados e anexados aos blocos. Os dados nesses blobs não são acessíveis para a EVM e são automaticamente excluídos depois de um período fixo (configurado para 4.096 épocas, quanto este artigo estava sendo escrito, ou cerca de 18 dias). Isso significa que os rollups podem enviar os dados de uma maneira muito mais barata e repassar a economia aos usuários finais na forma de transações mais baratas.
Como os dados do blob são verificados?
Os rollups publicam as transações que executam em blobs de dados. Também publicam um "compromisso" com os dados. Isso é feito por meio do ajuste de uma função polinomial aos dados. Em seguida, essa função pode ser avaliada em diversos pontos. Por exemplo, se definirmos uma função extremamente simples f(x) = 2x-1
, poderemos avaliar essa função para x = 1
, x = 2
, x = 3
com os resultados 1, 3, 5
. Um provador aplica a mesma função aos dados e a avalia nos mesmos pontos. Se os dados originais forem alterados, a função não será idêntica e, portanto, os valores avaliados em cada ponto também não serão. Na realidade, o compromisso e a prova são mais complicados porque estão "envolvidos" em funções criptográficas.
O que é KZG?
KZG significa Kate-Zaverucha-Goldberg, os nomes dos três autores originais(opens in a new tab) de um esquema que reduz um blob de dados a um pequeno "compromisso" criptográfico(opens in a new tab). O blob de dados enviado por um rollup precisa ser verificado para garantir que o comportamento do rollup seja correto. Isso envolve um provador que reexecuta as transações no blob para verificar se o compromisso foi válido. Isso é conceitualmente idêntico à maneira como os clientes de execução verificam a validade das transações do Ethereum na camada 1 por meio de provas de Merkle. KZG é uma prova alternativa que ajusta uma equação polinomial aos dados. O compromisso avalia a equação polinomial em alguns pontos de dados secretos. Um provador ajustaria a mesma equação polinomial nos dados e a avaliaria com os mesmos valores, verificando se o resultado é o mesmo. Essa é uma maneira de verificar os dados que é compatível com as técnicas de conhecimento zero utilizadas por alguns rollups e, eventualmente, outras partes do protocolo Ethereum.
O que foi a cerimônia KZG?
A cerimônia KZG foi uma forma de muitas pessoas da comunidade Ethereum gerar coletivamente uma sequência secreta de números aleatórios que poderia ser usada para verificar alguns dados. É muito importante que essa sequência de números não seja conhecida e não possa ser recriada por ninguém. Para garantir isso, cada pessoa que participou da cerimônia recebeu uma sequência do participante anterior. Essas pessoas então criaram alguns valores aleatórios novos (por exemplo, permitindo o navegador Web medir o movimento do mouse) e combinaram esses valores com o valor anterior. O valor foi então enviado ao próximo participante e destruído na máquina local. Enquanto cada pessoa na cerimônia fizesse isso honestamente, o valor final ficaria desconhecido por um atacante.
A cerimônia KZG EIP-4844 foi aberta ao público e dezenas de milhares de pessoas participaram para adicionar sua própria entropia (aleatoriedade). No total foram mais de 140.000 contribuições, fazendo dela a maior cerimônia desse tipo. Para que a cerimônia fosse prejudicada, 100% dos participantes teriam que ser ativamente desonestos. Do ponto de vista dos participantes, se eles sabem que foram honestos, não há necessidade de confiar em mais ninguém, pois eles sabem que protegeram a cerimônia (eles atenderam individualmente ao requisito de 1 de N participantes honestos).
O que é Danksharding?
O Danksharding é a realização completa da escalabilidade do rollup que começou com o Proto-Danksharding. O Danksharding oferecerá enormes quantidades de espaço ao Ethereum para que os rollups "entreguem" os dados de transação compactados. Isso significa que o Ethereum poderá suportar centenas de rollups individuais com facilidade e permitir a realização de milhões de transações por segundo.
A maneira como isso funciona é expandindo os blobs anexados aos blocos de seis (6) no Proto-Danksharding para 64 no Danksharding completo. As demais alterações necessárias são melhorias na maneira como os clientes de consenso operam para que possam processar os novos blobs grandes. Diversas dessas alterações já estão no planejamento para outros fins, independentemente do Danksharding. Por exemplo, o Danksharding exige que a separação entre proponente e construtor tenha sido implementada. Essa é uma melhoria que separa as tarefas de construção e de proposição de blocos entre diferentes validadores. Da mesma forma, a amostragem de disponibilidade de dados é necessária para o Danksharding, mas também para o desenvolvimento de clientes muito leves que não armazenam muitos dados históricos ("clientes sem estado").
Progresso atual
A implementação completa do Danksharding ainda vai demorar alguns anos. Enqanto isso, a cerimônia KZG foi concluída com mais de 140.000 contribuições e houve avanços no EIP(opens in a new tab) para Proto-Danksharding. Essa proposta foi implementada em todas as redes de teste e foi posta em funcionamento na rede principal através da melhoria de rede Cancun-Deneb ("Dencun") em março de 2024.
Leitura adicional
- Observações sobre o Proto-Danksharding(opens in a new tab) - Vitalik Buterin
- Observações sobre Danksharding de Dankrad(opens in a new tab)
- Dankrad, Proto e Vitalik discutem sobre Danksharding(opens in a new tab)
- A cerimônia KZG(opens in a new tab)
- Palestra de Carl Beekhuizen na Devcon sobre configurações confiáveis(opens in a new tab)
- Mais informações sobre a amostragem de disponibilidade de dados para blobs(opens in a new tab)
- Dankrad Feist fala sobre compromissos e provas de KZG(opens in a new tab)
- Compromissos polinomiais KZG(opens in a new tab)