Os usuários do Bitcoin só precisam de BTC no Bitcoin para forçar uma retirada de seus BTC da BOB de volta ao Bitcoin. Estamos trabalhando em uma solução híbrida: com Ethereum como DA por padrão, permitindo que os usuários incluam transações na BOB por meio de uma transação especial no Bitcoin. Estamos animados para compartilhar nosso trabalho em andamento neste post do blog.
Resumo demasiado longo; não li
Uma das propriedades principais dos L2s é que o seu estado precisa de progredir mesmo quando o O sequenciador está offline. L2s alcançam isso lendo e escrevendo seu estado a partir de uma camada de Disponibilidade de Dados (DA) que pode ser atualizada independentemente do L2 estar online. Desta forma, os usuários podem forçar a inclusão de suas transações mesmo quando o sequenciador está offline, ou o sequenciador não aceita suas transações diretamente.
Para a ponte BitVM da BOB, isto coloca um problema interessante. Atualmente, a BOB utiliza os blocos Ethereum EIP-4844 como sua camada DA. Os utilizadores na Ethereum podem facilmente desencadear levantamentos de volta para o Bitcoin através da ponte BitVM. No entanto, requer que os utilizadores tenham ETH na Ethereum.
Isso não é suficientemente bom para nós: os usuários de Bitcoin só precisam de BTC no Bitcoin para forçar uma retirada de seus BTC de BOB de volta para o Bitcoin. Estamos trabalhando em uma solução híbrida: usando Ethereum como DA por padrão, permitindo aos usuários incluir transações em BOB por meio de uma transação especial no Bitcoin. Estamos animados para compartilhar nosso trabalho em andamento neste post do blog.
O processo de derivaçãoé bastante importante para as L2s: todo o estado L2 da BOB precisa ser construído a partir da camada L1 e da camada DA. Isso permite que as L2s desfrutem da mesma resistência à censura que a camada DA, no nosso caso, Ethereum.
Simplificado, em rollups (especificamente cadeias OP Stack), temos dois tipos de dados no L1:
Se quisermos o Bitcoin como uma camada DA, por que não mudar completamente para usar o Bitcoin como uma camada DA? A resposta é principalmentecusto. O Bitcoin tem muito pouco armazenamento disponível (cerca de 4MB aproximadamente a cada 10 minutos), e, portanto, o custo de armazenamento é elevado.
No entanto, no nosso caso, BOB ainda pode usar o Ethereum como a sua camada DA “principal” onde ele publica todos os seus dados de transação, mas adicionar o Bitcoin como uma camada de fallback altamente resistente à censura se o Ethereum DA estiver indisponível. Essencialmente, o Ethereum torna-se a camada DA otimista, enquanto o Bitcoin torna-se o último recurso caro, mas tolerante a falhas.
A solução básica é adicionar Bitcoin ao BOB como parte do pipeline de derivação, de modo que o BOB (especificamente o “op-node”) processe as entradas nessa ordem:
Vamos mergulhar em uma possível solução para codificar as transações de saque forçado de Bitcoin no pipeline de derivação BOB. Observe que isso ainda está em pesquisa, portanto, alterações são possíveis.
Precisaremos de três partes para criar uma transação de retirada forçada:
Uma pilha OPtransação de depósito tem a seguinte estrutura:
Uma transação de saque forçado requer a inclusão da transação de saque codificada no campo de dados da transação de depósito. Isso é feito criando a transação no BOB que aciona o saque do BOB para Bitcoin e funcionaria exatamente da mesma forma como se a transação fosse enviada do Ethereum.
Podemos então armazenar uma versão (comprimida) da transação de retirada forçada no Bitcoin que inclui todos os dados acima.
Como os dados para a transação de saque forçado são maiores do que o normalmente armazenado em uma saída OP_RETURN, provavelmente usaremos um Taprootsaída para armazenar os dados.
Embora seja fácil identificar uma transação de depósito (que pode incluir uma retirada) no Ethereum por ser enviada para o contrato OptimismPortal da BOB, não é tão fácil identificar uma transação de retirada forçada no Bitcoin.
Serialização de Dados: A transação de saque forçado é serializada usando scripts Taproot dentro de uma estrutura de 'envelope'. Estes são noops na rede Bitcoin e são usados, por exemplo, para Ordinals também. Ajustamos a estrutura para atender às nossas necessidades.
Não definido
OP_FALSE OP_IF
OP_PUSH “bob”
OP_1
OP_PUSH “transaction”
OP_0
OP_PUSH $WITHDRAWAL_TRANSACTION_DATA
OP_ENDIF
Esquema de Compromisso/Revelação em Duas Fases:
Assim como nos Ordinais, os utilizadores terão de submeter duas transações ao Bitcoin:
Este é o problema mais aberto até agora, com duas opções atualmente em consideração:
Também estamos a experimentar mais ideias, por isso fique atento a mais atualizações!
Qualquer pessoa pode determinar o estado do BOB apenas verificando os dados no Bitcoin e Ethereum:
Consistência de dados: Embora seja importante garantir a consistência de dados entre as cadeias Ethereum e Bitcoin, a mera presença de dados de transações em ambas as cadeias não garante a validade. As transações devem representar transições de estado válidas de acordo com a função de transição de estado do rollup para serem consideradas legítimas. A solução requer a implementação de lógica de validação dentro do nó de operação (ou outras implementações de camada de consenso) que primeiro verifica se uma transação resulta em uma mudança de estado válida antes de aceitá-la.
Provas de Fraude e Validade: O sistema de prova de fraude tanto para BitVM quanto para Ethereum precisa ser aprimorado para lidar com dados de ambas as cadeias, o que poderia tornar a resolução de disputas mais complexa. Para resolver isso, precisamos contabilizar com precisão as transações possíveis do Bitcoin e Ethereum como parte da ponte BitVM e do acerto do BOB no Ethereum.
Aumento de armazenamento: Além disso, os nós BOB na rede enfrentam requisitos crescentes de armazenamento e largura de banda, pois precisam processar e armazenar dados do Bitcoin e Ethereum. No entanto, isso pode ser mitigado exigindo que transações BOB feitas no Bitcoin sejam incluídas nos blobs do Ethereum com uma referência aos últimos blocos do Bitcoin. Dessa forma, os nós só precisam sincronizar os blocos recentes do Bitcoin.
Estamos entusiasmados por impulsionar a fronteira dos rollups híbridos combinando a segurança do Bitcoin com a inovação do Ethereum. Neste problema concreto, estamos interessados em ter a resistência à censura do Bitcoin em transações combinada com a pilha de rollup do BOB. Atualizaremos esta publicação do blog com mais informações à medida que fizermos progressos.
Os usuários do Bitcoin só precisam de BTC no Bitcoin para forçar uma retirada de seus BTC da BOB de volta ao Bitcoin. Estamos trabalhando em uma solução híbrida: com Ethereum como DA por padrão, permitindo que os usuários incluam transações na BOB por meio de uma transação especial no Bitcoin. Estamos animados para compartilhar nosso trabalho em andamento neste post do blog.
Resumo demasiado longo; não li
Uma das propriedades principais dos L2s é que o seu estado precisa de progredir mesmo quando o O sequenciador está offline. L2s alcançam isso lendo e escrevendo seu estado a partir de uma camada de Disponibilidade de Dados (DA) que pode ser atualizada independentemente do L2 estar online. Desta forma, os usuários podem forçar a inclusão de suas transações mesmo quando o sequenciador está offline, ou o sequenciador não aceita suas transações diretamente.
Para a ponte BitVM da BOB, isto coloca um problema interessante. Atualmente, a BOB utiliza os blocos Ethereum EIP-4844 como sua camada DA. Os utilizadores na Ethereum podem facilmente desencadear levantamentos de volta para o Bitcoin através da ponte BitVM. No entanto, requer que os utilizadores tenham ETH na Ethereum.
Isso não é suficientemente bom para nós: os usuários de Bitcoin só precisam de BTC no Bitcoin para forçar uma retirada de seus BTC de BOB de volta para o Bitcoin. Estamos trabalhando em uma solução híbrida: usando Ethereum como DA por padrão, permitindo aos usuários incluir transações em BOB por meio de uma transação especial no Bitcoin. Estamos animados para compartilhar nosso trabalho em andamento neste post do blog.
O processo de derivaçãoé bastante importante para as L2s: todo o estado L2 da BOB precisa ser construído a partir da camada L1 e da camada DA. Isso permite que as L2s desfrutem da mesma resistência à censura que a camada DA, no nosso caso, Ethereum.
Simplificado, em rollups (especificamente cadeias OP Stack), temos dois tipos de dados no L1:
Se quisermos o Bitcoin como uma camada DA, por que não mudar completamente para usar o Bitcoin como uma camada DA? A resposta é principalmentecusto. O Bitcoin tem muito pouco armazenamento disponível (cerca de 4MB aproximadamente a cada 10 minutos), e, portanto, o custo de armazenamento é elevado.
No entanto, no nosso caso, BOB ainda pode usar o Ethereum como a sua camada DA “principal” onde ele publica todos os seus dados de transação, mas adicionar o Bitcoin como uma camada de fallback altamente resistente à censura se o Ethereum DA estiver indisponível. Essencialmente, o Ethereum torna-se a camada DA otimista, enquanto o Bitcoin torna-se o último recurso caro, mas tolerante a falhas.
A solução básica é adicionar Bitcoin ao BOB como parte do pipeline de derivação, de modo que o BOB (especificamente o “op-node”) processe as entradas nessa ordem:
Vamos mergulhar em uma possível solução para codificar as transações de saque forçado de Bitcoin no pipeline de derivação BOB. Observe que isso ainda está em pesquisa, portanto, alterações são possíveis.
Precisaremos de três partes para criar uma transação de retirada forçada:
Uma pilha OPtransação de depósito tem a seguinte estrutura:
Uma transação de saque forçado requer a inclusão da transação de saque codificada no campo de dados da transação de depósito. Isso é feito criando a transação no BOB que aciona o saque do BOB para Bitcoin e funcionaria exatamente da mesma forma como se a transação fosse enviada do Ethereum.
Podemos então armazenar uma versão (comprimida) da transação de retirada forçada no Bitcoin que inclui todos os dados acima.
Como os dados para a transação de saque forçado são maiores do que o normalmente armazenado em uma saída OP_RETURN, provavelmente usaremos um Taprootsaída para armazenar os dados.
Embora seja fácil identificar uma transação de depósito (que pode incluir uma retirada) no Ethereum por ser enviada para o contrato OptimismPortal da BOB, não é tão fácil identificar uma transação de retirada forçada no Bitcoin.
Serialização de Dados: A transação de saque forçado é serializada usando scripts Taproot dentro de uma estrutura de 'envelope'. Estes são noops na rede Bitcoin e são usados, por exemplo, para Ordinals também. Ajustamos a estrutura para atender às nossas necessidades.
Não definido
OP_FALSE OP_IF
OP_PUSH “bob”
OP_1
OP_PUSH “transaction”
OP_0
OP_PUSH $WITHDRAWAL_TRANSACTION_DATA
OP_ENDIF
Esquema de Compromisso/Revelação em Duas Fases:
Assim como nos Ordinais, os utilizadores terão de submeter duas transações ao Bitcoin:
Este é o problema mais aberto até agora, com duas opções atualmente em consideração:
Também estamos a experimentar mais ideias, por isso fique atento a mais atualizações!
Qualquer pessoa pode determinar o estado do BOB apenas verificando os dados no Bitcoin e Ethereum:
Consistência de dados: Embora seja importante garantir a consistência de dados entre as cadeias Ethereum e Bitcoin, a mera presença de dados de transações em ambas as cadeias não garante a validade. As transações devem representar transições de estado válidas de acordo com a função de transição de estado do rollup para serem consideradas legítimas. A solução requer a implementação de lógica de validação dentro do nó de operação (ou outras implementações de camada de consenso) que primeiro verifica se uma transação resulta em uma mudança de estado válida antes de aceitá-la.
Provas de Fraude e Validade: O sistema de prova de fraude tanto para BitVM quanto para Ethereum precisa ser aprimorado para lidar com dados de ambas as cadeias, o que poderia tornar a resolução de disputas mais complexa. Para resolver isso, precisamos contabilizar com precisão as transações possíveis do Bitcoin e Ethereum como parte da ponte BitVM e do acerto do BOB no Ethereum.
Aumento de armazenamento: Além disso, os nós BOB na rede enfrentam requisitos crescentes de armazenamento e largura de banda, pois precisam processar e armazenar dados do Bitcoin e Ethereum. No entanto, isso pode ser mitigado exigindo que transações BOB feitas no Bitcoin sejam incluídas nos blobs do Ethereum com uma referência aos últimos blocos do Bitcoin. Dessa forma, os nós só precisam sincronizar os blocos recentes do Bitcoin.
Estamos entusiasmados por impulsionar a fronteira dos rollups híbridos combinando a segurança do Bitcoin com a inovação do Ethereum. Neste problema concreto, estamos interessados em ter a resistência à censura do Bitcoin em transações combinada com a pilha de rollup do BOB. Atualizaremos esta publicação do blog com mais informações à medida que fizermos progressos.