Os usuários de Bitcoin devem apenas precisar de BTC no Bitcoin para forçar uma retirada de seus BTC da BOB de volta para o Bitcoin. Estamos trabalhando em uma solução híbrida: padrão para Ethereum como DA, 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.
tl;dr
Uma das propriedades principais dos L2s é que seu estado precisa progredir mesmo quando o o sequenciador está offline. L2s conseguem isso lendo e escrevendo seu estado de uma camada de Disponibilidade de Dados (DA) que pode ser atualizada independentemente do L2 estar online. Dessa 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, isso apresenta um problema interessante. Atualmente, a BOB usa blobs Ethereum EIP-4844 como sua camada DA. Usuários no Ethereum podem facilmente acionar saques de volta para Bitcoin via a ponte BitVM. No entanto, requer que os usuários tenham ETH no Ethereum.
Isso não é bom o suficiente para nós: os usuários de Bitcoin só precisam de BTC em Bitcoin para forçar um saque de seu BTC de BOB de volta para Bitcoin. Estamos trabalhando em uma solução híbrida: usando Ethereum como DA por padrão, permitindo que os usuários forcem a inclusão de transações em BOB por meio de uma transação especial em Bitcoin. Estamos animados para compartilhar nosso trabalho em andamento neste post do blog.
O processo de derivaçãoé bastante importante para L2s: todo o estado L2 do BOB precisa ser construído a partir do L1 e da camada DA. Isso permite que os L2s desfrutem da mesma resistência à censura que a camada DA, no nosso caso, Ethereum.
Simplificado, nos 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 pouca capacidade de armazenamento disponível (cerca de 4MB aproximadamente a cada 10 minutos) e, portanto, o custo de armazenamento é alto.
No entanto, no nosso caso, a BOB ainda pode usar o Ethereum como sua camada DA 'principal' onde ela envia todos os seus dados de transações, mas adicionar o Bitcoin como uma camada de contingência altamente resistente à censura se o Ethereum DA estiver indisponível. Essencialmente, o Ethereum se torna a camada DA otimista, enquanto o Bitcoin se torna a última opção cara, 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 (e especificamente o "op-node") processe entradas nesta ordem:
Vamos entrar em uma possível solução para codificar as transações de retirada forçada do Bitcoin no pipeline de derivação BOB. Observe que isso ainda está sendo pesquisado, 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 a retirada do BOB para o Bitcoin e funcionaria exatamente da mesma forma que se a transação fosse enviada do Ethereum.
Podemos então armazenar uma versão (compactada) da transação de saque forçado no Bitcoin que inclui todos os dados acima.
Como os dados para a transação de retirada forçada 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 devido a ser enviada para o contrato OptimismPortal de 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 Ordinais também. Ajustamos a estrutura para atender às nossas necessidades.
Não definido
OP_FALSE OP_IF
OP_PUSH “bob”
OP_1
OP_PUSH "transação"
OP_0
OP_PUSH $WITHDRAWAL_TRANSACTION_DATA
OP_ENDIF
Esquema de Compromisso/Revelação de Duas Fases:
Como acontece com os Ordinais, os usuários terão que enviar duas transações para o Bitcoin:
Este é o problema mais aberto até agora, com duas opções atualmente em consideração:
Também estamos experimentando mais ideias, então fique ligado para 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ção 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 op-node (ou outras implementações de camada de consenso) que verifica primeiro se uma transação resulta em uma alteração 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 de Bitcoin e Ethereum como parte da ponte BitVM e da liquidação de BOB no Ethereum.
Aumento de armazenamento: Além disso, os nós BOB na rede enfrentam requisitos de armazenamento e largura de banda aumentados, uma vez que precisam processar e armazenar dados do Bitcoin e do Ethereum. No entanto, poderíamos mitigar isso exigindo que as transações BOB feitas no Bitcoin precisassem ser incluídas em blocos Ethereum com uma referência aos últimos blocos do Bitcoin. Dessa forma, os nós precisariam apenas sincronizar os blocos recentes do Bitcoin.
Estamos animados em empurrar 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 de transações combinadas com a pilha de rollup do BOB. Atualizaremos esta postagem no blog com mais informações à medida que avançarmos.
Os usuários de Bitcoin devem apenas precisar de BTC no Bitcoin para forçar uma retirada de seus BTC da BOB de volta para o Bitcoin. Estamos trabalhando em uma solução híbrida: padrão para Ethereum como DA, 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.
tl;dr
Uma das propriedades principais dos L2s é que seu estado precisa progredir mesmo quando o o sequenciador está offline. L2s conseguem isso lendo e escrevendo seu estado de uma camada de Disponibilidade de Dados (DA) que pode ser atualizada independentemente do L2 estar online. Dessa 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, isso apresenta um problema interessante. Atualmente, a BOB usa blobs Ethereum EIP-4844 como sua camada DA. Usuários no Ethereum podem facilmente acionar saques de volta para Bitcoin via a ponte BitVM. No entanto, requer que os usuários tenham ETH no Ethereum.
Isso não é bom o suficiente para nós: os usuários de Bitcoin só precisam de BTC em Bitcoin para forçar um saque de seu BTC de BOB de volta para Bitcoin. Estamos trabalhando em uma solução híbrida: usando Ethereum como DA por padrão, permitindo que os usuários forcem a inclusão de transações em BOB por meio de uma transação especial em Bitcoin. Estamos animados para compartilhar nosso trabalho em andamento neste post do blog.
O processo de derivaçãoé bastante importante para L2s: todo o estado L2 do BOB precisa ser construído a partir do L1 e da camada DA. Isso permite que os L2s desfrutem da mesma resistência à censura que a camada DA, no nosso caso, Ethereum.
Simplificado, nos 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 pouca capacidade de armazenamento disponível (cerca de 4MB aproximadamente a cada 10 minutos) e, portanto, o custo de armazenamento é alto.
No entanto, no nosso caso, a BOB ainda pode usar o Ethereum como sua camada DA 'principal' onde ela envia todos os seus dados de transações, mas adicionar o Bitcoin como uma camada de contingência altamente resistente à censura se o Ethereum DA estiver indisponível. Essencialmente, o Ethereum se torna a camada DA otimista, enquanto o Bitcoin se torna a última opção cara, 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 (e especificamente o "op-node") processe entradas nesta ordem:
Vamos entrar em uma possível solução para codificar as transações de retirada forçada do Bitcoin no pipeline de derivação BOB. Observe que isso ainda está sendo pesquisado, 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 a retirada do BOB para o Bitcoin e funcionaria exatamente da mesma forma que se a transação fosse enviada do Ethereum.
Podemos então armazenar uma versão (compactada) da transação de saque forçado no Bitcoin que inclui todos os dados acima.
Como os dados para a transação de retirada forçada 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 devido a ser enviada para o contrato OptimismPortal de 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 Ordinais também. Ajustamos a estrutura para atender às nossas necessidades.
Não definido
OP_FALSE OP_IF
OP_PUSH “bob”
OP_1
OP_PUSH "transação"
OP_0
OP_PUSH $WITHDRAWAL_TRANSACTION_DATA
OP_ENDIF
Esquema de Compromisso/Revelação de Duas Fases:
Como acontece com os Ordinais, os usuários terão que enviar duas transações para o Bitcoin:
Este é o problema mais aberto até agora, com duas opções atualmente em consideração:
Também estamos experimentando mais ideias, então fique ligado para 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ção 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 op-node (ou outras implementações de camada de consenso) que verifica primeiro se uma transação resulta em uma alteração 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 de Bitcoin e Ethereum como parte da ponte BitVM e da liquidação de BOB no Ethereum.
Aumento de armazenamento: Além disso, os nós BOB na rede enfrentam requisitos de armazenamento e largura de banda aumentados, uma vez que precisam processar e armazenar dados do Bitcoin e do Ethereum. No entanto, poderíamos mitigar isso exigindo que as transações BOB feitas no Bitcoin precisassem ser incluídas em blocos Ethereum com uma referência aos últimos blocos do Bitcoin. Dessa forma, os nós precisariam apenas sincronizar os blocos recentes do Bitcoin.
Estamos animados em empurrar 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 de transações combinadas com a pilha de rollup do BOB. Atualizaremos esta postagem no blog com mais informações à medida que avançarmos.