*Reencaminhe o título original:Explorando o sistema de prova e a ponte Canonical Ethereum do Eclipse
O Eclipse é composto por três camadas:
O diagrama abaixo ilustra a forma como estes módulos interagem:
O resto deste artigo centrar-se-á na ponte Ethereum do Eclipse, tal como apresentado no diagrama. O Blobstream transmitirá atestados assinados pelo conjunto de validadores do Celestia para certificar ao Ethereum que os dados de um lote de slots do Eclipse foram publicados corretamente. Isto permite que a bridge do Eclipse verifique os dados fornecidos para as provas de fraude em relação às raízes de dados assinados do Celestia. No resto desta secção, descreveremos os processos pelos quais:
O fluxo quando um utilizador deposita no Eclipse através da ponte Ethereum nativa é resumido da seguinte forma:
O diagrama abaixo mostra as interacções entre Ethereum, Celestia e o executor SVM durante o fluxo de depósito descrito acima:
O fluxo para publicar lotes de slots do Eclipse no Celestia como blobs de dados é resumido abaixo:
O diagrama abaixo, da Celestia, explica como o compromisso dos dados dentro de um determinado bloco Celestia é armazenado no cabeçalho do bloco:
À semelhança de outras L2 que utilizam provas de fraude (Arbitrum, Fuel e muitas outras), os levantamentos da Eclipse requerem um período de contestação durante o qual os verificadores podem apresentar provas de fraude no caso de uma transição de estado inválida:
Nesta última secção, vamos detalhar a conceção do sistema de prova de fraude do Eclipse, inspirado por Anatoly Yakovenko e John Adler. Em geral, para qualquer prova de fraude, um 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 transacções através de testemunhas Merkle. Para (2), ao contrário dos L2s baseados em EVM, que colocam uma raiz Merkle na árvore de estado global, por razões de desempenho o Eclipse não actualiza uma árvore de estado global numa base transação a transação, mas explicaremos como garantimos a correção das entradas em mais detalhe abaixo. Por último, no caso de (3), o verificador Eclipse gera uma prova zk do(s) resultado(s) para uma determinada transação, ao contrário da abordagem de jogo de verificação interactiva comum nas L2 baseadas em EVM.
Todas as transacções Eclipse podem ser representadas como tendo uma lista de contas de entrada, executando uma transação e produzindo uma lista de contas de saída resultantes:
A observação crítica para a nossa conceção de prova de fraude é que, para a execução da transação, é sempre o caso de qualquer S_InputAccount ter sido a S_OutputAccount de alguma transação anterior. Isto permite-nos referenciar a última transação na cadeia que produziu uma determinada conta de entrada em vez de fornecer uma testemunha Merkle a uma árvore de estado global. Como resultado da nossa conceção, introduzimos tipos adicionais de acusação de fraude, tais como uma referência ao facto de a transação anterior não ser válida ou de a conta de entrada já ter sido "gasta" por uma transação posterior. Descrevemos este processo em mais pormenor abaixo:
Além disso, os lotes de dados de transação publicados na Celestia têm os seus compromissos transmitidos ao contrato Ethereum. As autorizações consistem em
Como já foi explicado, há várias formas de detetar a incorreção de um lote:
Se se verificar que algum lote de compromisso está incorreto, o contrato Eclipse bridge reverterá a ponte para o último lote de compromisso comprovadamente correto. Note que as transacções nunca são removidas da cadeia, mesmo em caso de fraude, pelo que apenas o compromisso tem de 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 o nosso design de prova de fraude. Dada a natureza modular do nosso L2 e a nascência da 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 as nossas instruções aqui. Pode contactar-nos no Twitter ou no Discord com perguntas específicas sobre a nossa Testnet, bridge ou questões técnicas.
[1]: O nó que calcula os resultados das transacções SVM e aplica o eventual resultado ao novo estado do Eclipse
[2]: Um operador que passa eventos na cadeia entre Ethereum e Eclipse
[3]: Repare que é o executor, e não o sequenciador, que lança isto. Se fosse incluída nos dados lançados pelo sequenciador, acrescentaria a complicação de o sequenciador poder saltar uma contagem, impossibilitando o executor de fazer o seu trabalho corretamente. Este facto poderia ser compensado na conceção da prova de fraude, mas acrescentaria uma complexidade suplementar. Uma segunda vantagem de ter apenas o executor a lançar a contagem é que torna mais fácil permitir que as substituições de transacções sejam lançadas no Celestia, se desejado.
[4]: As contas SVM podem ser representadas por um hash único. A única forma de este hash ser modificado é através de uma transação.
[5]: Para fazer isso sem uma quantidade excessiva de hashing, vamos executar um rastreamento em cada programa executado para ver quais partes de cada sysvar usada são realmente acessadas. Isto é possível, mas exigirá a modificação do interpretador BPF do Solana.
[6]: Inclui dados para tentativas de transacções que não foram executadas.
*Reencaminhe o título original:Explorando o sistema de prova e a ponte Canonical Ethereum do Eclipse
O Eclipse é composto por três camadas:
O diagrama abaixo ilustra a forma como estes módulos interagem:
O resto deste artigo centrar-se-á na ponte Ethereum do Eclipse, tal como apresentado no diagrama. O Blobstream transmitirá atestados assinados pelo conjunto de validadores do Celestia para certificar ao Ethereum que os dados de um lote de slots do Eclipse foram publicados corretamente. Isto permite que a bridge do Eclipse verifique os dados fornecidos para as provas de fraude em relação às raízes de dados assinados do Celestia. No resto desta secção, descreveremos os processos pelos quais:
O fluxo quando um utilizador deposita no Eclipse através da ponte Ethereum nativa é resumido da seguinte forma:
O diagrama abaixo mostra as interacções entre Ethereum, Celestia e o executor SVM durante o fluxo de depósito descrito acima:
O fluxo para publicar lotes de slots do Eclipse no Celestia como blobs de dados é resumido abaixo:
O diagrama abaixo, da Celestia, explica como o compromisso dos dados dentro de um determinado bloco Celestia é armazenado no cabeçalho do bloco:
À semelhança de outras L2 que utilizam provas de fraude (Arbitrum, Fuel e muitas outras), os levantamentos da Eclipse requerem um período de contestação durante o qual os verificadores podem apresentar provas de fraude no caso de uma transição de estado inválida:
Nesta última secção, vamos detalhar a conceção do sistema de prova de fraude do Eclipse, inspirado por Anatoly Yakovenko e John Adler. Em geral, para qualquer prova de fraude, um 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 transacções através de testemunhas Merkle. Para (2), ao contrário dos L2s baseados em EVM, que colocam uma raiz Merkle na árvore de estado global, por razões de desempenho o Eclipse não actualiza uma árvore de estado global numa base transação a transação, mas explicaremos como garantimos a correção das entradas em mais detalhe abaixo. Por último, no caso de (3), o verificador Eclipse gera uma prova zk do(s) resultado(s) para uma determinada transação, ao contrário da abordagem de jogo de verificação interactiva comum nas L2 baseadas em EVM.
Todas as transacções Eclipse podem ser representadas como tendo uma lista de contas de entrada, executando uma transação e produzindo uma lista de contas de saída resultantes:
A observação crítica para a nossa conceção de prova de fraude é que, para a execução da transação, é sempre o caso de qualquer S_InputAccount ter sido a S_OutputAccount de alguma transação anterior. Isto permite-nos referenciar a última transação na cadeia que produziu uma determinada conta de entrada em vez de fornecer uma testemunha Merkle a uma árvore de estado global. Como resultado da nossa conceção, introduzimos tipos adicionais de acusação de fraude, tais como uma referência ao facto de a transação anterior não ser válida ou de a conta de entrada já ter sido "gasta" por uma transação posterior. Descrevemos este processo em mais pormenor abaixo:
Além disso, os lotes de dados de transação publicados na Celestia têm os seus compromissos transmitidos ao contrato Ethereum. As autorizações consistem em
Como já foi explicado, há várias formas de detetar a incorreção de um lote:
Se se verificar que algum lote de compromisso está incorreto, o contrato Eclipse bridge reverterá a ponte para o último lote de compromisso comprovadamente correto. Note que as transacções nunca são removidas da cadeia, mesmo em caso de fraude, pelo que apenas o compromisso tem de 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 o nosso design de prova de fraude. Dada a natureza modular do nosso L2 e a nascência da 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 as nossas instruções aqui. Pode contactar-nos no Twitter ou no Discord com perguntas específicas sobre a nossa Testnet, bridge ou questões técnicas.
[1]: O nó que calcula os resultados das transacções SVM e aplica o eventual resultado ao novo estado do Eclipse
[2]: Um operador que passa eventos na cadeia entre Ethereum e Eclipse
[3]: Repare que é o executor, e não o sequenciador, que lança isto. Se fosse incluída nos dados lançados pelo sequenciador, acrescentaria a complicação de o sequenciador poder saltar uma contagem, impossibilitando o executor de fazer o seu trabalho corretamente. Este facto poderia ser compensado na conceção da prova de fraude, mas acrescentaria uma complexidade suplementar. Uma segunda vantagem de ter apenas o executor a lançar a contagem é que torna mais fácil permitir que as substituições de transacções sejam lançadas no Celestia, se desejado.
[4]: As contas SVM podem ser representadas por um hash único. A única forma de este hash ser modificado é através de uma transação.
[5]: Para fazer isso sem uma quantidade excessiva de hashing, vamos executar um rastreamento em cada programa executado para ver quais partes de cada sysvar usada são realmente acessadas. Isto é possível, mas exigirá a modificação do interpretador BPF do Solana.
[6]: Inclui dados para tentativas de transacções que não foram executadas.