Atualmente, existem dois tipos principais de rollups:
- Rollups baseadosonde a ordem das transações no rollup é determinada por um L1: um bloco de rollup é uma transação L1, e a ordem dos blocos é a mesma ordem em que essas transações aparecem em L1.
- Rollups sequenciadosonde a ordem das transações é determinada por um mecanismo offchain, por exemplo. um sequenciador centralizado ou consenso BFT. O hibestory rollup é regularmente empenhado para L1, mas encomendar as decisões são claramente tomadas pelo mecanismo offchain.
Rollups sequenciados têm a principal vantagem de poder oferecer latência muito menor do que o Ethereum L1. Os rollups baseados têm a principal vantagem que podem oferecer composição síncrona com o Ethereum L1. Uma transação poderá realizar ações que utilizem liquidez L1 e L2, contendo diretamente um bloco L2 inteiro e executando ações antes e depois dele, incluindo pós-afirmações que revertem tudo (incluindo o bloco L2), se falharem.
Este post vai demonstrar que é possível combinar os dois, com alguns limites.
O projeto
Existem três tipos de blocos L2:
- Blocos sequenciados regulares: requerem um certificado de sequenciador (por exemplo, assinatura do servidor central, votos do comitê 2/3…) para serem válidos e vêm com frequência
- Blocos sequenciados de finalização de slot: requerem um certificado de sequenciador e vêm com uma mensagem especial de que é válido construir um bloco baseado em cima deles e incluí-lo no L1, apenas durante o slot atual (e também se o bloco pai L1 corresponder)
- Blocos baseados: qualquer um pode construí-los e incluí-los, mas apenas no topo de um bloco sequencial de final de slot (ou, potencialmente, no topo de outro bloco baseado)
A função do sequenciador L2 é jogar um jogo de cronometragem. Normalmente, eles liberam blocos rollup sequenciados com latência muito baixa. Então, perto do final do slot, eles liberam um bloco sequenciado de final de slot – cedo o suficiente para que um construtor possa criar um bloco baseado e incluí-lo, mas tarde o suficiente para que o período sem latência muito baixa seja minimizado. Finalmente, eles começam a fazer blocos sequenciais para o próximo slot assim que tiverem certeza de que o bloco L1 foi confirmado.
Se, em um determinado slot, um bloco baseado não for incluído (ou porque ninguém aparece para construir a tempo, ou porque o proponente está ausente ou com defeito), então o sequenciador inicia o próximo slot construindo diretamente sobre o bloco de final de slot do slot anterior.
Propriedades
- Este design só é compatível com L2s que estão dispostos a reverter se o L1 for revertido. Isso ocorre porque se um bloco baseado for revertido, quaisquer blocos sequenciados construídos sobre ele também serão revertidos. Aguardando até que o bloco L1 contenha o bloco baseado finaliza será um atraso excessivamente longo, mesmo sob mecanismos de finalidade L1 teoricamente ideais.
- Em circunstâncias normais, o atraso em torno do tempo de publicação do bloco L1 deve ser bastante curto. O L2 publica seu bloco de finalização de slot, imediatamente os construtores constroem blocos baseados nele, logo o proponente faz seu bloco L1 incluindo-os, e então os atestadores fazem atestados imediatamente após o proponente propor, abrindo caminho para novos blocos sequenciados entrarem.
- Observe que não há risco de segurança em publicar um bloco de finalização de slot tarde demais: o pior que acontece é simplesmente que ninguém constrói sobre ele. No entanto, há um risco de segurança ao publicar o primeiro bloco sequenciado do próximo slot muito cedo, porque se o sequenciador construir sobre um bloco que foi reorganizado, seu bloco também será reorganizado.
- O maior atraso ocorre no caso de um proponente ausente, porque os atestadores esperarão para garantir que nenhum proponente esteja presente e só então publicarão os atestados
- Este desenho faz não obtenha os benefícios de não permissão dos rollups baseados, porque a construção de um bloco baseado requer o certificado do sequenciador de um bloco sequenciado de final de slot. Para conseguir a ausência de permissão, o caminho mais fácil é introduzir um canal de inclusão forçada em L1. Os construtores de blocos baseados podem ser responsáveis por incluir todas as transações na caixa de entrada de inclusão forçada.
Fontesethresear



