Les utilisateurs de Bitcoin ne devraient avoir besoin que de BTC sur Bitcoin pour forcer un retrait de leurs BTC de BOB vers Bitcoin. Nous travaillons sur une solution hybride : utiliser par défaut Ethereum en tant que DA tout en permettant aux utilisateurs de forcer l’inclusion de transactions sur BOB via une transaction spéciale sur Bitcoin. Nous sommes ravis de partager notre travail en cours dans cet article de blog.
tl;dr
L'une des principales caractéristiques des L2 est que leur état doit progresser même lorsque le le séquenceur est hors ligne. Les L2 y parviennent en lisant et en écrivant leur état à partir d'une couche de disponibilité des données (DA) qui peut être mise à jour indépendamment du L2 en ligne. De cette façon, les utilisateurs peuvent forcer l'inclusion de leurs transactions même lorsque le séquenceur est hors ligne ou que le séquenceur n'accepte pas leurs transactions directement.
Pour le pont BitVM de BOB, cela pose un problème intéressant. BOB utilise actuellement des blobs Ethereum EIP-4844 comme couche DA. Les utilisateurs sur Ethereum peuvent facilement déclencher des retraits vers Bitcoin via le pont BitVM. Cependant, cela nécessite que les utilisateurs aient de l'ETH sur Ethereum.
Ce n'est pas assez bon pour nous : les utilisateurs de Bitcoin ne devraient avoir besoin que de BTC sur Bitcoin pour forcer un retrait de leur BTC de BOB vers Bitcoin. Nous travaillons sur une solution hybride : en optant par défaut pour Ethereum en tant que DA tout en permettant aux utilisateurs d'inclure de force des transactions sur BOB via une transaction spéciale sur Bitcoin. Nous sommes impatients de partager notre travail en cours dans ce billet de blog.
Le processus de dérivationest assez important pour les L2 : l'état L2 entier de BOB doit être construit à partir de la couche L1 et de la couche DA. Cela permet aux L2 de bénéficier de la même résistance à la censure que la couche DA, dans notre cas, Ethereum.
Simplifié, dans les rollups (en particulier les chaînes OP Stack), nous avons deux types de données sur le L1:
Si nous voulons Bitcoin en tant que couche DA, pourquoi ne pas passer complètement à l'utilisation de Bitcoin comme couche DA? La réponse est surtoutcoût. Bitcoin a très peu d'espace de stockage disponible (environ 4 Mo environ toutes les 10 minutes), et donc, le coût de stockage est élevé.
Cependant, dans notre cas, BOB peut toujours utiliser Ethereum comme sa couche DA "principale" où il publie l'ensemble de ses données de transaction, mais ajouter Bitcoin comme une couche de secours hautement résistante à la censure si Ethereum DA n'est pas disponible. Essentiellement, Ethereum devient la couche DA optimiste tandis que Bitcoin devient le dernier recours coûteux mais tolérant aux pannes.
La solution de base consiste à ajouter Bitcoin à BOB dans le cadre du pipeline de dérivation, de sorte que BOB (et spécifiquement le "nœud op") traite les entrées dans cet ordre :
Plongeons dans une solution possible pour encoder les transactions de retrait Bitcoin forcé dans le pipeline de dérivation BOB. Notez que cela est encore en cours de recherche, il est donc possible que des changements soient apportés.
Nous aurons besoin de trois parties pour créer une transaction de retrait forcé :
Une pile OPtransaction de dépôt a la structure suivante :
Une transaction de retrait forcé nécessite d'inclure la transaction de retrait encodée dans le champ de données de la transaction de dépôt. Cela est fait en créant la transaction sur BOB qui déclenche le retrait de BOB vers Bitcoin et fonctionnerait exactement de la même manière que si la transaction était envoyée depuis Ethereum.
Nous pouvons alors stocker une version (compressée) de la transaction de retrait forcé sur Bitcoin qui inclut toutes les données mentionnées ci-dessus.
Comme les données de la transaction de retrait forcé sont plus grandes que ce qui devrait normalement être stocké dans une sortie OP_RETURN, nous utiliserons probablement une Taprootsortie pour stocker les données.
Bien qu'il soit facile d'identifier une transaction de dépôt (qui peut inclure un retrait) sur Ethereum car elle est envoyée au contrat OptimismPortal de BOB, il n'est pas aussi facile d'identifier une transaction de retrait forcé sur Bitcoin.
Serialization des données : la transaction de retrait forcé est sérialisée à l'aide de scripts Taproot dans une structure « enveloppe ». Ceux-ci sont des noops sur le réseau Bitcoin et sont utilisés, par exemple, pour les ordinaux également. Nous ajustons la structure pour répondre à nos besoins.
Non défini
OP_FALSE OP_IF
OP_PUSH "bob"
OP_1
OP_PUSH "transaction"
OP_0
OP_PUSH $WITHDRAWAL_TRANSACTION_DATA
OP_ENDIF
Schéma de validation/dévoilement en deux phases :
Comme pour les Ordinaux, les utilisateurs devront soumettre deux transactions à Bitcoin :
C'est le problème le plus ouvert à ce jour, avec deux options actuellement à l'étude:
Nous expérimentons également avec plus d'idées, alors restez à l'écoute pour plus de mises à jour !
N'importe qui peut déterminer l'état de BOB en ne faisant que vérifier les données sur Bitcoin et Ethereum :
Consistance des données : Bien qu'il soit important de garantir la consistance des données entre les chaînes Ethereum et Bitcoin, la simple présence des données de transaction sur les deux chaînes ne garantit pas leur validité. Les transactions doivent représenter des transitions d'état valides selon la fonction de transition d'état du rollup pour être considérées comme légitimes. La solution nécessite la mise en œuvre d'une logique de validation à l'intérieur de l'op-node (ou d'autres implémentations de couche de consensus) qui vérifie d'abord si une transaction entraîne un changement d'état valide avant de l'accepter.
Preuves de fraude et validité: Le système de preuve de fraude pour BitVM et Ethereum doit être amélioré pour gérer les données des deux chaînes, ce qui pourrait rendre la résolution des litiges plus complexe. Pour remédier à cela, nous devons prendre en compte avec précision les transactions possibles de Bitcoin et Ethereum en tant que partie du pont BitVM et du règlement de BOB sur Ethereum.
Augmentation du stockage: De plus, les nœuds BOB du réseau font face à des exigences accrues en matière de stockage et de bande passante, car ils doivent traiter et stocker des données provenant de Bitcoin et Ethereum. Cependant, nous pourrions atténuer cela en exigeant que les transactions BOB effectuées sur Bitcoin soient incluses dans des blocs Ethereum avec une référence aux derniers blocs Bitcoin. De cette façon, les nœuds n'ont besoin de synchroniser que les blocs Bitcoin récents.
Nous sommes ravis de repousser les limites des rollups hybrides combinant la sécurité de Bitcoin avec l'innovation d'Ethereum. Dans ce problème concret, nous sommes intéressés à associer la résistance à la censure des transactions de Bitcoin avec la pile rollup de BOB. Nous mettrons à jour ce billet de blog avec plus d'informations au fur et à mesure de nos progrès.
Les utilisateurs de Bitcoin ne devraient avoir besoin que de BTC sur Bitcoin pour forcer un retrait de leurs BTC de BOB vers Bitcoin. Nous travaillons sur une solution hybride : utiliser par défaut Ethereum en tant que DA tout en permettant aux utilisateurs de forcer l’inclusion de transactions sur BOB via une transaction spéciale sur Bitcoin. Nous sommes ravis de partager notre travail en cours dans cet article de blog.
tl;dr
L'une des principales caractéristiques des L2 est que leur état doit progresser même lorsque le le séquenceur est hors ligne. Les L2 y parviennent en lisant et en écrivant leur état à partir d'une couche de disponibilité des données (DA) qui peut être mise à jour indépendamment du L2 en ligne. De cette façon, les utilisateurs peuvent forcer l'inclusion de leurs transactions même lorsque le séquenceur est hors ligne ou que le séquenceur n'accepte pas leurs transactions directement.
Pour le pont BitVM de BOB, cela pose un problème intéressant. BOB utilise actuellement des blobs Ethereum EIP-4844 comme couche DA. Les utilisateurs sur Ethereum peuvent facilement déclencher des retraits vers Bitcoin via le pont BitVM. Cependant, cela nécessite que les utilisateurs aient de l'ETH sur Ethereum.
Ce n'est pas assez bon pour nous : les utilisateurs de Bitcoin ne devraient avoir besoin que de BTC sur Bitcoin pour forcer un retrait de leur BTC de BOB vers Bitcoin. Nous travaillons sur une solution hybride : en optant par défaut pour Ethereum en tant que DA tout en permettant aux utilisateurs d'inclure de force des transactions sur BOB via une transaction spéciale sur Bitcoin. Nous sommes impatients de partager notre travail en cours dans ce billet de blog.
Le processus de dérivationest assez important pour les L2 : l'état L2 entier de BOB doit être construit à partir de la couche L1 et de la couche DA. Cela permet aux L2 de bénéficier de la même résistance à la censure que la couche DA, dans notre cas, Ethereum.
Simplifié, dans les rollups (en particulier les chaînes OP Stack), nous avons deux types de données sur le L1:
Si nous voulons Bitcoin en tant que couche DA, pourquoi ne pas passer complètement à l'utilisation de Bitcoin comme couche DA? La réponse est surtoutcoût. Bitcoin a très peu d'espace de stockage disponible (environ 4 Mo environ toutes les 10 minutes), et donc, le coût de stockage est élevé.
Cependant, dans notre cas, BOB peut toujours utiliser Ethereum comme sa couche DA "principale" où il publie l'ensemble de ses données de transaction, mais ajouter Bitcoin comme une couche de secours hautement résistante à la censure si Ethereum DA n'est pas disponible. Essentiellement, Ethereum devient la couche DA optimiste tandis que Bitcoin devient le dernier recours coûteux mais tolérant aux pannes.
La solution de base consiste à ajouter Bitcoin à BOB dans le cadre du pipeline de dérivation, de sorte que BOB (et spécifiquement le "nœud op") traite les entrées dans cet ordre :
Plongeons dans une solution possible pour encoder les transactions de retrait Bitcoin forcé dans le pipeline de dérivation BOB. Notez que cela est encore en cours de recherche, il est donc possible que des changements soient apportés.
Nous aurons besoin de trois parties pour créer une transaction de retrait forcé :
Une pile OPtransaction de dépôt a la structure suivante :
Une transaction de retrait forcé nécessite d'inclure la transaction de retrait encodée dans le champ de données de la transaction de dépôt. Cela est fait en créant la transaction sur BOB qui déclenche le retrait de BOB vers Bitcoin et fonctionnerait exactement de la même manière que si la transaction était envoyée depuis Ethereum.
Nous pouvons alors stocker une version (compressée) de la transaction de retrait forcé sur Bitcoin qui inclut toutes les données mentionnées ci-dessus.
Comme les données de la transaction de retrait forcé sont plus grandes que ce qui devrait normalement être stocké dans une sortie OP_RETURN, nous utiliserons probablement une Taprootsortie pour stocker les données.
Bien qu'il soit facile d'identifier une transaction de dépôt (qui peut inclure un retrait) sur Ethereum car elle est envoyée au contrat OptimismPortal de BOB, il n'est pas aussi facile d'identifier une transaction de retrait forcé sur Bitcoin.
Serialization des données : la transaction de retrait forcé est sérialisée à l'aide de scripts Taproot dans une structure « enveloppe ». Ceux-ci sont des noops sur le réseau Bitcoin et sont utilisés, par exemple, pour les ordinaux également. Nous ajustons la structure pour répondre à nos besoins.
Non défini
OP_FALSE OP_IF
OP_PUSH "bob"
OP_1
OP_PUSH "transaction"
OP_0
OP_PUSH $WITHDRAWAL_TRANSACTION_DATA
OP_ENDIF
Schéma de validation/dévoilement en deux phases :
Comme pour les Ordinaux, les utilisateurs devront soumettre deux transactions à Bitcoin :
C'est le problème le plus ouvert à ce jour, avec deux options actuellement à l'étude:
Nous expérimentons également avec plus d'idées, alors restez à l'écoute pour plus de mises à jour !
N'importe qui peut déterminer l'état de BOB en ne faisant que vérifier les données sur Bitcoin et Ethereum :
Consistance des données : Bien qu'il soit important de garantir la consistance des données entre les chaînes Ethereum et Bitcoin, la simple présence des données de transaction sur les deux chaînes ne garantit pas leur validité. Les transactions doivent représenter des transitions d'état valides selon la fonction de transition d'état du rollup pour être considérées comme légitimes. La solution nécessite la mise en œuvre d'une logique de validation à l'intérieur de l'op-node (ou d'autres implémentations de couche de consensus) qui vérifie d'abord si une transaction entraîne un changement d'état valide avant de l'accepter.
Preuves de fraude et validité: Le système de preuve de fraude pour BitVM et Ethereum doit être amélioré pour gérer les données des deux chaînes, ce qui pourrait rendre la résolution des litiges plus complexe. Pour remédier à cela, nous devons prendre en compte avec précision les transactions possibles de Bitcoin et Ethereum en tant que partie du pont BitVM et du règlement de BOB sur Ethereum.
Augmentation du stockage: De plus, les nœuds BOB du réseau font face à des exigences accrues en matière de stockage et de bande passante, car ils doivent traiter et stocker des données provenant de Bitcoin et Ethereum. Cependant, nous pourrions atténuer cela en exigeant que les transactions BOB effectuées sur Bitcoin soient incluses dans des blocs Ethereum avec une référence aux derniers blocs Bitcoin. De cette façon, les nœuds n'ont besoin de synchroniser que les blocs Bitcoin récents.
Nous sommes ravis de repousser les limites des rollups hybrides combinant la sécurité de Bitcoin avec l'innovation d'Ethereum. Dans ce problème concret, nous sommes intéressés à associer la résistance à la censure des transactions de Bitcoin avec la pile rollup de BOB. Nous mettrons à jour ce billet de blog avec plus d'informations au fur et à mesure de nos progrès.