Arquitetura Optimism
Optimism é um protocolo de rollup otimista, equivalente ao EVM, projetado para escalar o Ethereum. Escalar o Ethereum significa aumentar o número de transações úteis que a rede Ethereum pode processar. O optimistic rollup é uma técnica de escalabilidade de camada 2 que aumenta a capacidade de computação e armazenamento do Ethereum sem sacrificar a segurança ou a descentralização. EVM Equivalence é a conformidade total com a função de transição de estado descrita no yellow paper do Ethereum, a definição formal do protocolo.
Um rollup otimista funciona agrupando múltiplas transações em uma única transação, que é então verificada por um contrato inteligente na rede Ethereum. Esse processo é chamado de “rolling up” porque as transações individuais são combinadas em uma transação maior que é submetida à rede Ethereum. O termo “optimistic” refere‑se ao fato de que o sistema assume que as transações são válidas a menos que seja provado o contrário, o que permite um processamento mais rápido e eficiente das transações.
Arquitetura Geral
op-node + op-geth
O nó de rollup pode operar em modo validador ou sequenciador:
- validador (também conhecido como verificador): semelhante a executar um nó Ethereum, ele simula transações L2 localmente, sem limitação de taxa. Também permite que o validador verifique o trabalho do sequenciador, re‑derivando raízes de saída e comparando‑as com as enviadas pelo sequenciador. Em caso de divergência, o validador pode executar uma prova de falha.
- sequenciador: o sequenciador é um ator privilegiado, que recebe transações L2 de usuários L2, cria blocos L2 de acordo e, em seguida, os envia ao provedor de disponibilidade de dados (via um batcher). Ele também submete raízes de saída para L1. Atualmente há apenas um sequenciador em toda a pilha, e é nesse ponto que críticos apontam que a stack OP não é descentralizada.
op-batcher
O submetedor de lotes, também chamado de batcher, é a entidade que envia os dados do L2 do sequenciador para L1, tornando‑os disponíveis para os verificadores.
op-proposer
O proponente gera e submete checkpoints de saída L2 para o contrato oráculo de saída L2 no Ethereum. Após o período de finalização ter passado, esses dados permitem retiradas.
Tanto o batcher quanto o proponente enviam estados para L1. Por que eles são separados? O batcher coleta e envia os dados das transações para L1 em lotes, enquanto o proponente envia os compromissos (raízes de saída) ao estado L2, que finaliza a visão dos estados de contas L2. Eles são desacoplados para que possam operar em paralelo, aumentando a eficiência.
contracts-bedrock
Vários contratos para que o L2 interaja com o L1:
- OptimismPortal: um feed de transações L2 que se originam como chamadas de contrato inteligente no estado L1.
- Batch inbox: um endereço L1 para o qual o Batch Submitter envia lotes de transações.
- L2 output oracle: um contrato inteligente que armazena raízes de saída L2 para uso em retiradas e provas de falha.
Como depositar?
Como retirar?
Feedback à Documentação do Optimism
Entender a stack OP pode ser desafiador devido a vários fatores. Um desses fatores são os inúmeros componentes que são referidos múltiplas vezes com nomes ligeiramente diferentes no código e na documentação. Por exemplo, os termos “op-batcher” e “batch‑submitter” / “verifiers” e “validators” podem ser usados de forma intercambiável, gerando confusão e dificultando a compreensão da função exata de cada componente.
Outro desafio ao compreender a stack OP é a arquitetura em evolução, que pode fazer com que alguns elementos de design se tornem obsoletos ao longo do tempo. Infelizmente, a documentação nem sempre é atualizada para refletir essas mudanças. Isso pode levar a mais confusão e dificuldade em entender o sistema, já que os usuários podem estar trabalhando com informações desatualizadas ou imprecisas.
Para superar esses desafios, é importante revisar cuidadosamente toda a documentação disponível, manter os conceitos consistentes em todos os lugares e ficar atualizado com quaisquer mudanças ou atualizações na stack OP. Isso pode exigir pesquisa adicional e colaboração com outros usuários ou desenvolvedores, mas é essencial para compreender plenamente e utilizar efetivamente esse sistema complexo.