Gostaria de fazer duas afirmações:
Isso representa um desafio para as visões modular e monolítica da escalabilidade do blockchain. (1) é um desafio para a visão monolítica, que sustenta que uma única cadeia de alto rendimento é a melhor maneira de escalonar. (2) é um desafio para a visão modular, pois significa que um ecossistema de várias cadeias ou vários rolos não é suficiente para o dimensionamento em um sentido significativo: aumentar o acesso ao estado compartilhado e à liquidez...
Se (1) e (2) forem verdadeiras, então a solução do problema de escalabilidade exige o escalonamento do acesso ao estado compartilhado e à liquidez em muitas cadeias. A solução da Polygon é a Camada de Agregação, ou "AggLayer". O AggLayer oferece segurança para transações quase instantâneas entre cadeias e permite o estado unificado e a liquidez entre cadeias.
Esta postagem abordará o que é o AggLayer, como ele funciona e como ele é diferente de um sequenciador ou provador compartilhado.
Há um problema com as L2s: a liquidez e o estado estão fragmentados entre os rollups e a L1.
Isso é ruim do ponto de vista da usabilidade porque introduz complexidade, mas também é caro. A liquidez fragmentada significa maior slippage e pior execução. Os Optimistic Rollups (ORs) exigem que os usuários paguem pontes caras de terceiros para evitar o atraso de retirada de sete dias. Até mesmo os ZK Rollups (ZKRs) exigem que os usuários façam uma viagem de ida e volta para a Ethereum para transações sem confiança entre cadeias.
Veja por que as transações de baixa latência e sem confiança entre cadeias não são possíveis no momento.
Suponha que haja dois rollups, Cadeia A e Cadeia B, que compartilham uma ponte para L1. Alice na Cadeia A gostaria de pagar Bob na Cadeia B, então Alice bloqueia ou queima tokens na Cadeia A para transferir para a Cadeia B.
Duas coisas são necessárias para que a Cadeia B credite com segurança esses tokens a Bob.
Se o lote que contém as transações de Alice não for finalizado no Ethereum, a Cadeia A poderá equivocar-se para a Cadeia B e gastar duas vezes, mantendo os fundos de Alice na Cadeia A e cunhando os fundos de Bob na Cadeia B. Da mesma forma, se a Cadeia B não verificar uma prova de validade para A, a Cadeia A poderá incluir uma transação inválida e roubar fundos de B.
(1) e (2) significam que as transações entre cadeias sem confiança não podem ter baixa latência. Atualmente, (1) requer 12 minutos, enquanto (2) requer aguardar a duração do período de desafio em ORs e alguns minutos para a geração de provas em ZKRs.
Uma boa experiência do usuário é incompatível com uma latência de 20 minutos. A camada de agregação foi projetada para resolver esse problema.
O Polygon é um ecossistema de L2s alimentados por ZK que são liquidados com Ethereum. A Camada de Agregação é um protocolo descentralizado operado por nós em estacas que garante segurança para transações de baixa latência e entre cadeias e uma ponte unificada [1].
Neste contexto, "segurança" significa o seguinte:
É impossível que o estado de um rollup seja finalizado/liquidado no Ethereum se o estado dessa cadeia depender de um estado inválido ou não finalizado de outra cadeia, ou se incluir uma transação de um pacote atômico [2] que não tenha sido executado com sucesso em todas as outras cadeias.
Em outras palavras, um estado da Cadeia B não pode ser finalizado no Ethereum se depender de um estado inválido ou não finalizado da Cadeia A.
Essa garantia é importante. Ele permite que a Cadeia B interaja com segurança com a Cadeia A em latência superbaixa, antes que o estado da Cadeia A seja finalizado no Ethereum ou que uma prova seja gerada.
A camada de agregação funciona em três fases. Suponha que a cadeia A seja uma cadeia alimentada por ZK em execução no ecossistema Polygon.
As cadeias podem navegar no espaço de troca entre latência e garantias de vivacidade por conta própria. Uma cadeia pode optar por interoperar com outra cadeia após a etapa de pré-confirmação para transações de latência superbaixa entre cadeias, mas, fundamentalmente, esse modelo é compatível com cadeias que aguardam a confirmação ou mesmo a finalização.
A garantia de segurança para transações entre cadeias é aplicada na terceira etapa. Vamos nos aprofundar em como esse design permite uma interação segura entre cadeias.
Veja o primeiro exemplo de uma transferência entre cadeias. Alice na Cadeia A quer bloquear ou queimar alguns tokens no bloco A1 para cunhar e transferir tokens para Bob na Cadeia B. Se a Cadeia B não esperar até que A1 seja finalizado no Ethereum com uma prova válida, então a Cadeia A poderia se equivocar ou dar à Cadeia B um estado inválido.
A camada de agregação resolve isso de forma simples. A cadeia B pode assumir temporariamente que A1 é válida e será finalizada no Ethereum, sem sequer esperar por uma prova. O sequenciador da Cadeia B se compromete com a raiz do estado da Cadeia A reivindicada A1 como uma dependência no cabeçalho de B1 (como B1A1 ) antes de enviar para a camada de agregação. A latência necessária para a Cadeia B construir B1 diminui de 20 minutos para, no máximo, alguns segundos.
Na etapa de confirmação, a camada de agregação cria um gráfico de dependência para cada bloco/lote enviado. Por exemplo, se A1 depende de B1, que, por sua vez, depende de B1, C1 é confirmado assim que uma prova πC1 é apresentada. Mas, mesmo que πA1 seja recebida, πA1 só é confirmada com πC1 e πB1. O aspecto crítico desse projeto é que o circuito de agregação de provas reforça a consistência entre as dependências. Se B1A1 for inconsistente com o bloco A1 que a cadeia A envia, ou se faltar uma prova para A1′, então B1 não poderá ser incluído no lote agregado finalizado no Ethereum.
Esse mecanismo garante que, se a cadeia A equivocar ou enviar um bloco inválido, por exemplo, A1′, qualquer lote que dependa de uma raiz de estado inválida ou equivocada para a cadeia A não poderá ser finalizado/liquidado na Ethereum. Mesmo que o próprio AggLayer se equivoque, as cadeias têm uma garantia criptográfica de que qualquer bloco que dependa de um bloco inválido ou equivocado não pode ser finalizado, pois duas provas para estados de cadeia que sejam inconsistentes ou inválidas não podem ser agregadas no circuito de agregação de provas. Isso garante que a propriedade de segurança descrita acima seja preservada.
O mecanismo de segurança pode ser estendido para o caso atômico. Suponha que um usuário envie um pacote atômico de transações para várias cadeias. Esse pacote é ordenado, de modo que o resultado da execução da transação na cadeia A é passado para a cadeia B e, da mesma forma, o estado atualizado da cadeia B é passado para a cadeia C, etc. Se todas as transações forem executadas com êxito em todas as cadeias, o pacote será incluído; caso contrário, será rejeitado.
Seria ideal oferecer a possibilidade de incluir transações atômicas sem:
Isso gera um problema de segurança semelhante ao do caso assíncrono: A cadeia A pode cometer um equívoco e enviar um lote que não inclua o pacote atômico ou enviar um resultado inválido para a cadeia B.
Felizmente, o mesmo mecanismo do caso assíncrono pode ser reutilizado para o caso atômico. A cadeia B faz commits em pacotes e recebe resultados de transações de outras cadeias. A camada de agregação (e o circuito de agregação de provas) verifica se os pacotes são consistentes entre as cadeias. Um lote contendo um pacote da cadeia B só pode ser finalizado/liquidado no Ethereum se todas as transações no pacote forem executadas com êxito.
A camada de agregação permite a composição entre cadeias com latência superbaixa por meio de chamadas assíncronas entre cadeias. Essa é uma primitiva incrivelmente poderosa: os contratos podem chamar com segurança contratos em outras cadeias com latência muito baixa, sem esperar pela finalidade do Ethereum. Um usuário poderia fazer o onramp por meio da cadeia OKX no Polygon e depositar imediatamente em um mercado de empréstimos de alta liquidez na Aave em uma cadeia diferente com apenas um clique, sem precisar trocar de um ativo sintético envolvido.
A AggregationLayer garante que as interações quase instantâneas entre cadeias sejam seguras [3]. Mas isso é apenas metade da batalha. Como os operadores da cadeia compartilham e confiam nos estados da cadeia uns dos outros? Como eles coordenam a produção de feixes atômicos?
Um objetivo do projeto para o AggLayer é que ele seja mínimo. Seu objetivo é garantir a segurança e fornecer uma base que permita a qualquer pessoa criar uma infraestrutura de coordenação que ofereça vivacidade em uma variedade de configurações diferentes.
Os operadores de cadeias podem escolher livremente entre os mecanismos de coordenação emergentes, dependendo de suas premissas de confiança - que podem incluir relés, infraestrutura de provadores compartilhados ou clusters de sequenciadores de validade compartilhados [4]. Eles protegem as cadeias contra problemas de vivacidade quando dependem de outros estados ou pacotes de cadeias.
O ecossistema Polygon prioriza a escolha e a soberania das cadeias. As cadeias podem executar seus próprios ambientes de execução modificados, usar seus próprios tokens para taxas de staking e gás, escolher seus próprios mecanismos de disponibilidade de dados, etc. Da mesma forma, as cadeias devem decidir como lidar com as compensações entre a interoperabilidade e o risco de falhas de vivacidade. Há várias opções:
Um aspecto importante a ser observado é que os usuários não podem causar falhas de vivacidade, apenas cadeias com comportamento inadequado ou mau funcionamento. A equívoca e o envio de um bloco inválido podem ser fortemente penalizados, seja por meio de cortes ou pela ejeção de cadeias da AggLayer, impedindo sua capacidade de interoperar sem problemas. Portanto, uma falha de vivacidade deve ser extremamente rara.
As cadeias podem tomar precauções adicionais para minimizar o risco de problemas de liveness, mantendo listas brancas ou negras de outras cadeias com as quais interoperam e definindo limites para o número de cadeias que podem estar coletivamente envolvidas em qualquer lote. Eles poderiam contar com terceiros executando nós completos para garantir que, se uma cadeia ficar off-line antes de produzir uma prova, haverá um provador de backup.
O mecanismo pelo qual as cadeias se coordenam para aceitar feixes atômicos também é flexível. Por exemplo, um subconjunto de cadeias poderia interoperar em um cluster de sequenciamento de validade compartilhada para obter uma latência extremamente baixa, ou poderia contar com relés.
Um relayer com segurança criptoeconômica poderia permitir a interoperabilidade entre as cadeias A e B executando um nó completo para ambas as cadeias e atestando que os estados de cada cadeia são válidos. Mesmo que a cadeia A ou B pré-confirme um novo lote e depois fique off-line, a infraestrutura compartilhada do provador pode intervir para gerar uma prova.
O senhor pode imaginar uma nova infraestrutura de coordenação surgindo sobre a base de segurança fornecida pela AggLayer, permitindo novas e melhores formas de interoperabilidade e liquidez compartilhada. O mais importante é que todo o ecossistema do Polygon não precisa compartilhar a mesma infraestrutura nem as mesmas premissas de confiança. Ele não precisa operar em um único sequenciador ou provador de validade compartilhado. Essa é uma vantagem extremamente importante em relação às salas de cirurgia.
A camada de agregação nos permite, fundamentalmente, criar um ecossistema de várias cadeias que nos dá a sensação de usar uma única cadeia. É a síntese das teses monolíticas e modulares: estado unificado, liquidez e capacidade de composição, com a escalabilidade ilimitada de um ecossistema de várias cadeias.
Essa é uma visão que, fundamentalmente, só está disponível para sistemas baseados em ZK. Vou falar mais sobre esse ponto em um post futuro, mas os ecossistemas otimistas que desejam permitir a interoperabilidade rápida devem contar com sequenciadores de validade compartilhados. Esse é um mau negócio para as cadeias: ele as restringe de redistribuir as taxas do sequenciador e do MEV, os sequenciadores de validade compartilhada forçam as cadeias a aceitarem restrições em seus ambientes de execução e a interoperabilidade em sistemas baseados em OR força as cadeias a aceitarem suposições de confiança adicionais em troca de baixa latência.
Além disso, a interoperabilidade entre cadeias quebra uma propriedade importante para os RUPs. Com os ORs de cadeia única, qualquer pessoa pode executar um nó completo para um OR e confirmar imediatamente que as transações são válidas e finalizadas assim que são postadas nos L1s. Isso não é mais verdade no caso de várias cadeias - agora é necessário executar um nó completo para cada cadeia com a qual o OR interopera.
Por outro lado, a visão da Polygon é aquela em que as cadeias são soberanas. Eles podem usar qualquer ambiente de execução, podem contar com qualquer sequenciador centralizado ou descentralizado e podem navegar por si mesmos nas compensações entre latência e vivacidade entre cadeias.
Essa é uma visão que reflete a Internet existente. A Internet é um ambiente elasticamente dimensionável, sem permissões e unificado. Da mesma forma, o AggLayer é escalonável e sem permissões - não impõe restrições às cadeias participantes - e permite que os usuários movimentem ativos e estados de forma contínua pelo ecossistema, apresentando uma interface unificada para a camada de valor da Internet.
Esse é o futuro do Polygon: não monolítico, não totalmente modular, mas agregado.
[1] Parte da garantia de liquidez unificada é a eliminação da péssima experiência de usuário dos tokens sintéticos embrulhados em pontes. Os usuários da ponte LxLy da Polygon podem transferir ativos entre cadeias sem problemas, preservando a fungibilidade. No entanto, para fazer isso com segurança, precisamos nos proteger contra a segurança do link mais fraco, ou seja, um invasor que corrompe uma única cadeia e drena todos os fundos de todas as cadeias da ponte. Discutirei como fazer isso em um post futuro, mas o AggLayer pode aproveitar a etapa de agregação de provas para impor a contabilidade em nível de cadeia, evitando a segurança do link mais fraco.
[2] Quando me refiro a transações atômicas entre cadeias, o que quero dizer é a capacidade de um usuário enviar um "pacote" ou conjunto de transações em várias cadeias. O pacote atômico tem a propriedade de que suas transações são incluídas em cada cadeia relevante se e somente se todas as transações forem executadas com êxito. Se uma única transação falhar, o pacote não poderá ser incluído em nenhuma cadeia.
O exemplo mais básico é novamente nossa transferência entre cadeias. Digamos que Alice queira enviar 1 ETH para Bob, mas Alice está na Cadeia A e Bob está na Cadeia B. Supondo uma ponte nativa compartilhada para ambos os rollups, Alice pode queimar sua ETH na Cadeia A e cunhar ETH na Cadeia B, que é transferida para Bob. Mas é fundamental garantir que ela não possa cunhar ETH sem queimá-la ou vice-versa - ou ela pode perder sua ETH ou subgarantir a ponte.
É por isso que as transações atômicas são tão importantes. Para permitir interações de baixa latência entre as cadeias e fazer com que o uso do ecossistema Polygon pareça o uso de uma única cadeia, são necessárias garantias atômicas.
[3] Esse é um ponto sutil, mas, do ponto de vista do ecossistema, o AggLayer oferece segurança, mas, do ponto de vista de uma única cadeia, esse design prioriza a vivacidade em detrimento da segurança, pois a cadeia B pode depender de um estado de cadeia da cadeia A que seja inválido. Nesse caso, a cadeia B não será aceita pela AggLayer (imposta pelo circuito de agregação de provas) e precisará construir um novo bloco sem a dependência de A.
[4] Nossa abordagem como um todo deve muito ao projeto de Sequenciamento de Validade Compartilhada da Umbra Research.
9/2/24 - Atualizei este rascunho para esclarecer algumas comparações entre agregação e sequenciamento compartilhado. A tese agregada depende de mecanismos como sequenciadores compartilhados, relés e construtores para facilitar a coordenação entre as cadeias. Por sua vez, a camada de agg garante a segurança.
Gostaria de fazer duas afirmações:
Isso representa um desafio para as visões modular e monolítica da escalabilidade do blockchain. (1) é um desafio para a visão monolítica, que sustenta que uma única cadeia de alto rendimento é a melhor maneira de escalonar. (2) é um desafio para a visão modular, pois significa que um ecossistema de várias cadeias ou vários rolos não é suficiente para o dimensionamento em um sentido significativo: aumentar o acesso ao estado compartilhado e à liquidez...
Se (1) e (2) forem verdadeiras, então a solução do problema de escalabilidade exige o escalonamento do acesso ao estado compartilhado e à liquidez em muitas cadeias. A solução da Polygon é a Camada de Agregação, ou "AggLayer". O AggLayer oferece segurança para transações quase instantâneas entre cadeias e permite o estado unificado e a liquidez entre cadeias.
Esta postagem abordará o que é o AggLayer, como ele funciona e como ele é diferente de um sequenciador ou provador compartilhado.
Há um problema com as L2s: a liquidez e o estado estão fragmentados entre os rollups e a L1.
Isso é ruim do ponto de vista da usabilidade porque introduz complexidade, mas também é caro. A liquidez fragmentada significa maior slippage e pior execução. Os Optimistic Rollups (ORs) exigem que os usuários paguem pontes caras de terceiros para evitar o atraso de retirada de sete dias. Até mesmo os ZK Rollups (ZKRs) exigem que os usuários façam uma viagem de ida e volta para a Ethereum para transações sem confiança entre cadeias.
Veja por que as transações de baixa latência e sem confiança entre cadeias não são possíveis no momento.
Suponha que haja dois rollups, Cadeia A e Cadeia B, que compartilham uma ponte para L1. Alice na Cadeia A gostaria de pagar Bob na Cadeia B, então Alice bloqueia ou queima tokens na Cadeia A para transferir para a Cadeia B.
Duas coisas são necessárias para que a Cadeia B credite com segurança esses tokens a Bob.
Se o lote que contém as transações de Alice não for finalizado no Ethereum, a Cadeia A poderá equivocar-se para a Cadeia B e gastar duas vezes, mantendo os fundos de Alice na Cadeia A e cunhando os fundos de Bob na Cadeia B. Da mesma forma, se a Cadeia B não verificar uma prova de validade para A, a Cadeia A poderá incluir uma transação inválida e roubar fundos de B.
(1) e (2) significam que as transações entre cadeias sem confiança não podem ter baixa latência. Atualmente, (1) requer 12 minutos, enquanto (2) requer aguardar a duração do período de desafio em ORs e alguns minutos para a geração de provas em ZKRs.
Uma boa experiência do usuário é incompatível com uma latência de 20 minutos. A camada de agregação foi projetada para resolver esse problema.
O Polygon é um ecossistema de L2s alimentados por ZK que são liquidados com Ethereum. A Camada de Agregação é um protocolo descentralizado operado por nós em estacas que garante segurança para transações de baixa latência e entre cadeias e uma ponte unificada [1].
Neste contexto, "segurança" significa o seguinte:
É impossível que o estado de um rollup seja finalizado/liquidado no Ethereum se o estado dessa cadeia depender de um estado inválido ou não finalizado de outra cadeia, ou se incluir uma transação de um pacote atômico [2] que não tenha sido executado com sucesso em todas as outras cadeias.
Em outras palavras, um estado da Cadeia B não pode ser finalizado no Ethereum se depender de um estado inválido ou não finalizado da Cadeia A.
Essa garantia é importante. Ele permite que a Cadeia B interaja com segurança com a Cadeia A em latência superbaixa, antes que o estado da Cadeia A seja finalizado no Ethereum ou que uma prova seja gerada.
A camada de agregação funciona em três fases. Suponha que a cadeia A seja uma cadeia alimentada por ZK em execução no ecossistema Polygon.
As cadeias podem navegar no espaço de troca entre latência e garantias de vivacidade por conta própria. Uma cadeia pode optar por interoperar com outra cadeia após a etapa de pré-confirmação para transações de latência superbaixa entre cadeias, mas, fundamentalmente, esse modelo é compatível com cadeias que aguardam a confirmação ou mesmo a finalização.
A garantia de segurança para transações entre cadeias é aplicada na terceira etapa. Vamos nos aprofundar em como esse design permite uma interação segura entre cadeias.
Veja o primeiro exemplo de uma transferência entre cadeias. Alice na Cadeia A quer bloquear ou queimar alguns tokens no bloco A1 para cunhar e transferir tokens para Bob na Cadeia B. Se a Cadeia B não esperar até que A1 seja finalizado no Ethereum com uma prova válida, então a Cadeia A poderia se equivocar ou dar à Cadeia B um estado inválido.
A camada de agregação resolve isso de forma simples. A cadeia B pode assumir temporariamente que A1 é válida e será finalizada no Ethereum, sem sequer esperar por uma prova. O sequenciador da Cadeia B se compromete com a raiz do estado da Cadeia A reivindicada A1 como uma dependência no cabeçalho de B1 (como B1A1 ) antes de enviar para a camada de agregação. A latência necessária para a Cadeia B construir B1 diminui de 20 minutos para, no máximo, alguns segundos.
Na etapa de confirmação, a camada de agregação cria um gráfico de dependência para cada bloco/lote enviado. Por exemplo, se A1 depende de B1, que, por sua vez, depende de B1, C1 é confirmado assim que uma prova πC1 é apresentada. Mas, mesmo que πA1 seja recebida, πA1 só é confirmada com πC1 e πB1. O aspecto crítico desse projeto é que o circuito de agregação de provas reforça a consistência entre as dependências. Se B1A1 for inconsistente com o bloco A1 que a cadeia A envia, ou se faltar uma prova para A1′, então B1 não poderá ser incluído no lote agregado finalizado no Ethereum.
Esse mecanismo garante que, se a cadeia A equivocar ou enviar um bloco inválido, por exemplo, A1′, qualquer lote que dependa de uma raiz de estado inválida ou equivocada para a cadeia A não poderá ser finalizado/liquidado na Ethereum. Mesmo que o próprio AggLayer se equivoque, as cadeias têm uma garantia criptográfica de que qualquer bloco que dependa de um bloco inválido ou equivocado não pode ser finalizado, pois duas provas para estados de cadeia que sejam inconsistentes ou inválidas não podem ser agregadas no circuito de agregação de provas. Isso garante que a propriedade de segurança descrita acima seja preservada.
O mecanismo de segurança pode ser estendido para o caso atômico. Suponha que um usuário envie um pacote atômico de transações para várias cadeias. Esse pacote é ordenado, de modo que o resultado da execução da transação na cadeia A é passado para a cadeia B e, da mesma forma, o estado atualizado da cadeia B é passado para a cadeia C, etc. Se todas as transações forem executadas com êxito em todas as cadeias, o pacote será incluído; caso contrário, será rejeitado.
Seria ideal oferecer a possibilidade de incluir transações atômicas sem:
Isso gera um problema de segurança semelhante ao do caso assíncrono: A cadeia A pode cometer um equívoco e enviar um lote que não inclua o pacote atômico ou enviar um resultado inválido para a cadeia B.
Felizmente, o mesmo mecanismo do caso assíncrono pode ser reutilizado para o caso atômico. A cadeia B faz commits em pacotes e recebe resultados de transações de outras cadeias. A camada de agregação (e o circuito de agregação de provas) verifica se os pacotes são consistentes entre as cadeias. Um lote contendo um pacote da cadeia B só pode ser finalizado/liquidado no Ethereum se todas as transações no pacote forem executadas com êxito.
A camada de agregação permite a composição entre cadeias com latência superbaixa por meio de chamadas assíncronas entre cadeias. Essa é uma primitiva incrivelmente poderosa: os contratos podem chamar com segurança contratos em outras cadeias com latência muito baixa, sem esperar pela finalidade do Ethereum. Um usuário poderia fazer o onramp por meio da cadeia OKX no Polygon e depositar imediatamente em um mercado de empréstimos de alta liquidez na Aave em uma cadeia diferente com apenas um clique, sem precisar trocar de um ativo sintético envolvido.
A AggregationLayer garante que as interações quase instantâneas entre cadeias sejam seguras [3]. Mas isso é apenas metade da batalha. Como os operadores da cadeia compartilham e confiam nos estados da cadeia uns dos outros? Como eles coordenam a produção de feixes atômicos?
Um objetivo do projeto para o AggLayer é que ele seja mínimo. Seu objetivo é garantir a segurança e fornecer uma base que permita a qualquer pessoa criar uma infraestrutura de coordenação que ofereça vivacidade em uma variedade de configurações diferentes.
Os operadores de cadeias podem escolher livremente entre os mecanismos de coordenação emergentes, dependendo de suas premissas de confiança - que podem incluir relés, infraestrutura de provadores compartilhados ou clusters de sequenciadores de validade compartilhados [4]. Eles protegem as cadeias contra problemas de vivacidade quando dependem de outros estados ou pacotes de cadeias.
O ecossistema Polygon prioriza a escolha e a soberania das cadeias. As cadeias podem executar seus próprios ambientes de execução modificados, usar seus próprios tokens para taxas de staking e gás, escolher seus próprios mecanismos de disponibilidade de dados, etc. Da mesma forma, as cadeias devem decidir como lidar com as compensações entre a interoperabilidade e o risco de falhas de vivacidade. Há várias opções:
Um aspecto importante a ser observado é que os usuários não podem causar falhas de vivacidade, apenas cadeias com comportamento inadequado ou mau funcionamento. A equívoca e o envio de um bloco inválido podem ser fortemente penalizados, seja por meio de cortes ou pela ejeção de cadeias da AggLayer, impedindo sua capacidade de interoperar sem problemas. Portanto, uma falha de vivacidade deve ser extremamente rara.
As cadeias podem tomar precauções adicionais para minimizar o risco de problemas de liveness, mantendo listas brancas ou negras de outras cadeias com as quais interoperam e definindo limites para o número de cadeias que podem estar coletivamente envolvidas em qualquer lote. Eles poderiam contar com terceiros executando nós completos para garantir que, se uma cadeia ficar off-line antes de produzir uma prova, haverá um provador de backup.
O mecanismo pelo qual as cadeias se coordenam para aceitar feixes atômicos também é flexível. Por exemplo, um subconjunto de cadeias poderia interoperar em um cluster de sequenciamento de validade compartilhada para obter uma latência extremamente baixa, ou poderia contar com relés.
Um relayer com segurança criptoeconômica poderia permitir a interoperabilidade entre as cadeias A e B executando um nó completo para ambas as cadeias e atestando que os estados de cada cadeia são válidos. Mesmo que a cadeia A ou B pré-confirme um novo lote e depois fique off-line, a infraestrutura compartilhada do provador pode intervir para gerar uma prova.
O senhor pode imaginar uma nova infraestrutura de coordenação surgindo sobre a base de segurança fornecida pela AggLayer, permitindo novas e melhores formas de interoperabilidade e liquidez compartilhada. O mais importante é que todo o ecossistema do Polygon não precisa compartilhar a mesma infraestrutura nem as mesmas premissas de confiança. Ele não precisa operar em um único sequenciador ou provador de validade compartilhado. Essa é uma vantagem extremamente importante em relação às salas de cirurgia.
A camada de agregação nos permite, fundamentalmente, criar um ecossistema de várias cadeias que nos dá a sensação de usar uma única cadeia. É a síntese das teses monolíticas e modulares: estado unificado, liquidez e capacidade de composição, com a escalabilidade ilimitada de um ecossistema de várias cadeias.
Essa é uma visão que, fundamentalmente, só está disponível para sistemas baseados em ZK. Vou falar mais sobre esse ponto em um post futuro, mas os ecossistemas otimistas que desejam permitir a interoperabilidade rápida devem contar com sequenciadores de validade compartilhados. Esse é um mau negócio para as cadeias: ele as restringe de redistribuir as taxas do sequenciador e do MEV, os sequenciadores de validade compartilhada forçam as cadeias a aceitarem restrições em seus ambientes de execução e a interoperabilidade em sistemas baseados em OR força as cadeias a aceitarem suposições de confiança adicionais em troca de baixa latência.
Além disso, a interoperabilidade entre cadeias quebra uma propriedade importante para os RUPs. Com os ORs de cadeia única, qualquer pessoa pode executar um nó completo para um OR e confirmar imediatamente que as transações são válidas e finalizadas assim que são postadas nos L1s. Isso não é mais verdade no caso de várias cadeias - agora é necessário executar um nó completo para cada cadeia com a qual o OR interopera.
Por outro lado, a visão da Polygon é aquela em que as cadeias são soberanas. Eles podem usar qualquer ambiente de execução, podem contar com qualquer sequenciador centralizado ou descentralizado e podem navegar por si mesmos nas compensações entre latência e vivacidade entre cadeias.
Essa é uma visão que reflete a Internet existente. A Internet é um ambiente elasticamente dimensionável, sem permissões e unificado. Da mesma forma, o AggLayer é escalonável e sem permissões - não impõe restrições às cadeias participantes - e permite que os usuários movimentem ativos e estados de forma contínua pelo ecossistema, apresentando uma interface unificada para a camada de valor da Internet.
Esse é o futuro do Polygon: não monolítico, não totalmente modular, mas agregado.
[1] Parte da garantia de liquidez unificada é a eliminação da péssima experiência de usuário dos tokens sintéticos embrulhados em pontes. Os usuários da ponte LxLy da Polygon podem transferir ativos entre cadeias sem problemas, preservando a fungibilidade. No entanto, para fazer isso com segurança, precisamos nos proteger contra a segurança do link mais fraco, ou seja, um invasor que corrompe uma única cadeia e drena todos os fundos de todas as cadeias da ponte. Discutirei como fazer isso em um post futuro, mas o AggLayer pode aproveitar a etapa de agregação de provas para impor a contabilidade em nível de cadeia, evitando a segurança do link mais fraco.
[2] Quando me refiro a transações atômicas entre cadeias, o que quero dizer é a capacidade de um usuário enviar um "pacote" ou conjunto de transações em várias cadeias. O pacote atômico tem a propriedade de que suas transações são incluídas em cada cadeia relevante se e somente se todas as transações forem executadas com êxito. Se uma única transação falhar, o pacote não poderá ser incluído em nenhuma cadeia.
O exemplo mais básico é novamente nossa transferência entre cadeias. Digamos que Alice queira enviar 1 ETH para Bob, mas Alice está na Cadeia A e Bob está na Cadeia B. Supondo uma ponte nativa compartilhada para ambos os rollups, Alice pode queimar sua ETH na Cadeia A e cunhar ETH na Cadeia B, que é transferida para Bob. Mas é fundamental garantir que ela não possa cunhar ETH sem queimá-la ou vice-versa - ou ela pode perder sua ETH ou subgarantir a ponte.
É por isso que as transações atômicas são tão importantes. Para permitir interações de baixa latência entre as cadeias e fazer com que o uso do ecossistema Polygon pareça o uso de uma única cadeia, são necessárias garantias atômicas.
[3] Esse é um ponto sutil, mas, do ponto de vista do ecossistema, o AggLayer oferece segurança, mas, do ponto de vista de uma única cadeia, esse design prioriza a vivacidade em detrimento da segurança, pois a cadeia B pode depender de um estado de cadeia da cadeia A que seja inválido. Nesse caso, a cadeia B não será aceita pela AggLayer (imposta pelo circuito de agregação de provas) e precisará construir um novo bloco sem a dependência de A.
[4] Nossa abordagem como um todo deve muito ao projeto de Sequenciamento de Validade Compartilhada da Umbra Research.
9/2/24 - Atualizei este rascunho para esclarecer algumas comparações entre agregação e sequenciamento compartilhado. A tese agregada depende de mecanismos como sequenciadores compartilhados, relés e construtores para facilitar a coordenação entre as cadeias. Por sua vez, a camada de agg garante a segurança.