*Encaminhar o título original:Explorando o sistema de prova e a ponte canônica Ethereum do Eclipse
O Eclipse é composto de três camadas:
O diagrama abaixo ilustra como esses módulos interagem:
O restante deste artigo se concentrará na ponte Ethereum do Eclipse, conforme mostrado no diagrama. O Blobstream retransmitirá atestados assinados pelo conjunto de validadores da Celestia para certificar a Ethereum de que os dados de um lote de slots do Eclipse foram publicados corretamente. Isso permite que a ponte do Eclipse verifique os dados fornecidos para provas de fraude em relação às raízes de dados assinados da Celestia. No restante desta seção, descreveremos os processos pelos quais:
O fluxo quando um usuário deposita no Eclipse por meio da ponte Ethereum nativa é resumido da seguinte forma:
O diagrama abaixo mostra as interações entre a Ethereum, a Celestia e o SVM Executor durante o fluxo de depósito descrito acima:
O fluxo para publicar lotes de slots do Eclipse no Celestia como blobs de dados está resumido abaixo:
O diagrama abaixo, da Celestia, explica como o compromisso dos dados em um determinado bloco da Celestia é armazenado no cabeçalho do bloco:
Da mesma forma que outras L2s que usam provas de fraude (Arbitrum, Fuel e muitas outras), as retiradas do Eclipse exigem um período de desafio durante o qual os verificadores podem enviar provas de fraude no caso de uma transição de estado inválida:
Nesta última seção, detalharemos o projeto do sistema de prova de fraude do Eclipse, inspirado por Anatoly Yakovenko e John Adler. Em geral, para qualquer prova de fraude, o verificador deve:
No caso do Eclipse, (1) o Celestia merkliza blobs de lotes de blocos que o executor SVM do Eclipse lança, permitindo provas de inclusão de transações por meio de testemunhas Merkle. Para (2), ao contrário dos L2s baseados em EVM, que postam uma raiz Merkle na árvore de estado global, por motivos de desempenho o Eclipse não atualiza uma árvore de estado global em uma base de transação por transação, mas explicaremos como garantimos a correção das entradas em mais detalhes abaixo. Por fim, no caso de (3), o verificador do Eclipse gera uma prova zk da(s) saída(s) para uma determinada transação, diferentemente da abordagem de jogo de verificação interativa comum nos L2s baseados em EVM.
Todas as transações do Eclipse podem ser representadas como a obtenção de uma lista de contas de entrada, a execução de uma transação e a produção de uma lista de contas de saída resultantes:
A observação fundamental para o nosso projeto de prova de fraude é que, para a execução da transação, é sempre o caso de que qualquer S_InputAccount deve ter sido a S_OutputAccount de alguma transação anterior. Isso nos permite fazer referência à última transação na cadeia que produziu uma determinada conta de entrada em vez de fornecer uma testemunha Merkle para uma árvore de estado global. Como resultado de nosso projeto, introduzimos tipos adicionais de acusação de fraude, como uma referência à transação anterior não ser válida ou a conta de entrada já ter sido "gasta" por alguma transação posterior. Descrevemos esse processo em mais detalhes a seguir:
Além disso, os lotes de dados de transações postados na Celestia têm seus compromissos retransmitidos para o contrato da Ethereum. Os compromissos consistem em:
Conforme explicado acima, há várias maneiras de se descobrir que um lote está incorreto:
Se algum lote de compromisso for considerado incorreto, o contrato de ponte do Eclipse reverterá a ponte para o último lote de compromisso comprovadamente correto. Observe que as transações nunca são removidas da cadeia, mesmo em caso de fraude, portanto, somente o compromisso precisa ser recalculado.
Este artigo tem como objetivo fornecer um guia de alto nível para a ponte de confiança minimizada do Eclipse no Ethereum e explicar alguns detalhes sobre nosso projeto de prova de fraude. Dada a natureza modular do nosso L2 e o início de nossa pilha de tecnologia, continuaremos a lançar artigos e documentação sobre vários aspectos do Eclipse nas próximas semanas.
Para se envolver com o Eclipse Testnet, siga nossas instruções aqui. O senhor pode entrar em contato conosco pelo Twitter ou pelo Discord com perguntas específicas sobre a Testnet, bridge ou questões técnicas.
[1]: O nó que calcula os resultados das transações SVM e aplica o resultado final ao novo estado do Eclipse
[2]: Um operador que passa eventos na cadeia entre o Ethereum e o Eclipse
[3]: Observe que o executor, e não o sequenciador, publica isso. Se fosse incluído nos dados postados pelo sequenciador, isso acrescentaria a complicação de que o sequenciador poderia ignorar uma contagem, impossibilitando que o executor fizesse seu trabalho corretamente. Isso poderia ser compensado no projeto à prova de fraude, mas isso acrescentaria uma complexidade extra. Uma segunda vantagem de fazer com que apenas o executor publique a contagem é que isso facilita permitir que as substituições de transações sejam publicadas no Celestia, se desejado.
[4]: As contas SVM podem ser representadas por um hash exclusivo. A única maneira de modificar esse hash é por meio de uma transação.
[5]: Para fazer isso sem uma quantidade excessiva de hashing, executaremos um rastreamento em cada programa executado para ver quais partes de cada sysvar usado são realmente acessadas. Isso é possível, mas exigirá a modificação do interpretador BPF do Solana.
[6]: Inclui dados de tentativas de transações que não foram executadas.
*Encaminhar o título original:Explorando o sistema de prova e a ponte canônica Ethereum do Eclipse
O Eclipse é composto de três camadas:
O diagrama abaixo ilustra como esses módulos interagem:
O restante deste artigo se concentrará na ponte Ethereum do Eclipse, conforme mostrado no diagrama. O Blobstream retransmitirá atestados assinados pelo conjunto de validadores da Celestia para certificar a Ethereum de que os dados de um lote de slots do Eclipse foram publicados corretamente. Isso permite que a ponte do Eclipse verifique os dados fornecidos para provas de fraude em relação às raízes de dados assinados da Celestia. No restante desta seção, descreveremos os processos pelos quais:
O fluxo quando um usuário deposita no Eclipse por meio da ponte Ethereum nativa é resumido da seguinte forma:
O diagrama abaixo mostra as interações entre a Ethereum, a Celestia e o SVM Executor durante o fluxo de depósito descrito acima:
O fluxo para publicar lotes de slots do Eclipse no Celestia como blobs de dados está resumido abaixo:
O diagrama abaixo, da Celestia, explica como o compromisso dos dados em um determinado bloco da Celestia é armazenado no cabeçalho do bloco:
Da mesma forma que outras L2s que usam provas de fraude (Arbitrum, Fuel e muitas outras), as retiradas do Eclipse exigem um período de desafio durante o qual os verificadores podem enviar provas de fraude no caso de uma transição de estado inválida:
Nesta última seção, detalharemos o projeto do sistema de prova de fraude do Eclipse, inspirado por Anatoly Yakovenko e John Adler. Em geral, para qualquer prova de fraude, o verificador deve:
No caso do Eclipse, (1) o Celestia merkliza blobs de lotes de blocos que o executor SVM do Eclipse lança, permitindo provas de inclusão de transações por meio de testemunhas Merkle. Para (2), ao contrário dos L2s baseados em EVM, que postam uma raiz Merkle na árvore de estado global, por motivos de desempenho o Eclipse não atualiza uma árvore de estado global em uma base de transação por transação, mas explicaremos como garantimos a correção das entradas em mais detalhes abaixo. Por fim, no caso de (3), o verificador do Eclipse gera uma prova zk da(s) saída(s) para uma determinada transação, diferentemente da abordagem de jogo de verificação interativa comum nos L2s baseados em EVM.
Todas as transações do Eclipse podem ser representadas como a obtenção de uma lista de contas de entrada, a execução de uma transação e a produção de uma lista de contas de saída resultantes:
A observação fundamental para o nosso projeto de prova de fraude é que, para a execução da transação, é sempre o caso de que qualquer S_InputAccount deve ter sido a S_OutputAccount de alguma transação anterior. Isso nos permite fazer referência à última transação na cadeia que produziu uma determinada conta de entrada em vez de fornecer uma testemunha Merkle para uma árvore de estado global. Como resultado de nosso projeto, introduzimos tipos adicionais de acusação de fraude, como uma referência à transação anterior não ser válida ou a conta de entrada já ter sido "gasta" por alguma transação posterior. Descrevemos esse processo em mais detalhes a seguir:
Além disso, os lotes de dados de transações postados na Celestia têm seus compromissos retransmitidos para o contrato da Ethereum. Os compromissos consistem em:
Conforme explicado acima, há várias maneiras de se descobrir que um lote está incorreto:
Se algum lote de compromisso for considerado incorreto, o contrato de ponte do Eclipse reverterá a ponte para o último lote de compromisso comprovadamente correto. Observe que as transações nunca são removidas da cadeia, mesmo em caso de fraude, portanto, somente o compromisso precisa ser recalculado.
Este artigo tem como objetivo fornecer um guia de alto nível para a ponte de confiança minimizada do Eclipse no Ethereum e explicar alguns detalhes sobre nosso projeto de prova de fraude. Dada a natureza modular do nosso L2 e o início de nossa pilha de tecnologia, continuaremos a lançar artigos e documentação sobre vários aspectos do Eclipse nas próximas semanas.
Para se envolver com o Eclipse Testnet, siga nossas instruções aqui. O senhor pode entrar em contato conosco pelo Twitter ou pelo Discord com perguntas específicas sobre a Testnet, bridge ou questões técnicas.
[1]: O nó que calcula os resultados das transações SVM e aplica o resultado final ao novo estado do Eclipse
[2]: Um operador que passa eventos na cadeia entre o Ethereum e o Eclipse
[3]: Observe que o executor, e não o sequenciador, publica isso. Se fosse incluído nos dados postados pelo sequenciador, isso acrescentaria a complicação de que o sequenciador poderia ignorar uma contagem, impossibilitando que o executor fizesse seu trabalho corretamente. Isso poderia ser compensado no projeto à prova de fraude, mas isso acrescentaria uma complexidade extra. Uma segunda vantagem de fazer com que apenas o executor publique a contagem é que isso facilita permitir que as substituições de transações sejam publicadas no Celestia, se desejado.
[4]: As contas SVM podem ser representadas por um hash exclusivo. A única maneira de modificar esse hash é por meio de uma transação.
[5]: Para fazer isso sem uma quantidade excessiva de hashing, executaremos um rastreamento em cada programa executado para ver quais partes de cada sysvar usado são realmente acessadas. Isso é possível, mas exigirá a modificação do interpretador BPF do Solana.
[6]: Inclui dados de tentativas de transações que não foram executadas.