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. Atualmente, os rollups são limitados quanto ao preço das transações aos usuários pelo fato de publicarem as transações em CALLDATA
. Isso é caro porque o processamento é feito por todos os nós do Ethereum e permanece na cadeia para sempre, embora os rollups só precisem dos dados por um breve 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 à EVM e são excluídos automaticamente após um período fixo (1 a 3 meses). 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 o mesmo que a 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 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 é a cerimônia KZG?
Uma cerimônia KZG é uma maneira para que muitas pessoas da comunidade Ethereum gerem, juntas, uma sequência secreta e aleatória de números que pode ser utilizada 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 participa da cerimônia recebe uma string (cadeia) do participante anterior. Em seguida, são criados alguns novos valores aleatórios (por exemplo, ao permitir que o navegador meça o movimento do mouse), que são combinados com o valor anterior. Depois, o valor é enviado ao próximo participante, que é eliminado do computador local anterior. Desde que cada pessoa na cerimônia faça isso de uma maneira honesta, nenhum invasor conhecerá o valor final. A cerimônia KZG EIP-4844 foi aberta ao público e dezenas de milhares de pessoas participaram para adicionar a respectiva entropia. 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 é por meio da expansão dos blobs anexados aos blocos de 1 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
Ainda demora muitos anos para alcançar o Danksharding completo. Entretanto, o Proto-Danksharding deve chegar relativamente em breve. No momento da redação deste artigo (fevereiro de 2023), a cerimônia do KZG ainda está aberta e, até o momento, atraiu mais de 50.000 contribuidores. O protocolo EIP(opens in a new tab) do Proto-Danksharding está desenvolvido, a especificação foi acordada e os clientes implementaram protótipos que atualmente estão sendo testados e preparados para produção. A próxima etapa é implementar as alterações em uma rede de testes pública. Você pode se manter atualizado usando a lista de verificação de prontidão do EIP 4844(opens in a new tab).
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)