Les portefeuilles sur chaîne réalisent un mappage approximatif 1-1 des transactions aux transactions : pour chaque transaction économique qu'un utilisateur effectue, environ une transaction blockchain est nécessaire. Les agrégations, les coinjoin, les paiements cut-through, etc. modifient un peu cette déclaration. Mais c'est approximativement correct.
Lightning a réalisé un mappage de nombreux-à-un des transactions vers les transactions : la magie de Lightning est qu'un nombre effectivement infini de transactions économiques peut se produire dans un seul canal d'éclairage, qui est lui-même lié à une seule sortie de transaction non dépensée (UTXO). Essentiellement, nous avons pris la dimension "temps" - les transactions - et réalisé une mise à l'échelle significative en réduisant cette dimension.
Mais créer même un seul UTXO par utilisateur n'est, sans doute, pas suffisant. Il existe donc de nombreuses propositions visant à obtenir une plus grande mise à l'échelle en permettant à plusieurs utilisateurs de partager un seul UTXO de manière auto-souveraine. Encore une fois, en regroupant une autre dimension de mise à l'échelle, les utilisateurs, en un seul UTXO.
Notre objectif ici est de faire une vue d'ensemble de toutes ces propositions, de comprendre quels schémas techniques elles partagent, de comprendre de quels types de nouveaux opcodes et autres mises à niveau de fork doux elles ont besoin pour fonctionner, et de créer un tableau comparatif montrant comment toutes les parties s'emboîtent. En chemin, nous définirons également ce qu'est réellement un protocole de couche 2, quelle est la capacité de mise à l'échelle du Lightning, et nous comprendrons quelles améliorations nous devons apporter aux mempools pour réaliser tout cela.
Merci va àFulgur Venturespour parrainer cette recherche. Ils n'ont eu aucun contrôle éditorial sur le contenu de ce post et ne l'ont pas examiné avant sa publication.
Merci également àDaniela Brozzoni, Sarah Cox, et d'autres pour une revue préalable à la publication.
Cela dit, le retrait unilatéral est toujours notre objectif principal de conception.2
Avec cette définition, des choses comme Lightning sont considérées comme des systèmes de couche 2. Cependant, des systèmes tels que Liquid, Cashu et Fedimint ne sont pas des L2, car une autre partie ou d'autres parties ont le contrôle de vos fonds. Les schémas de validation côté client comme RGB ne sont également pas des L2 selon cette définition, car ils ne peuvent pas effectuer des transactions BTC de manière fiable. Enfin, @RubenSomsen/statechains-non-custodial-off-chain-bitcoin-transfer-1ae4845a4a39">Statechains ne parvient pas à passer le cap, car l'entité Statechain peut voler des fonds s'ils ne suivent pas le protocole.
Dans le script Bitcoin, les pactes sont des mécanismes par lesquels la manière dont une txout peut être dépensée est restreinte à l'avance, de sorte que la forme des transactions utilisées pour dépenser cette txout est prédéfinie ou autrement restreinte d'une manière qui n'est pas uniquement limitée aux signatures. Les systèmes de couche 2 qui partagent des UTXO entre plusieurs parties ont besoin de pactes car ils ont besoin de moyens de restreindre la façon dont l'UTXO peut être dépensée pour implémenter les règles et les incitations du protocole de couche 2.

On estime que environ la moitié de la population mondiale possède un smartphone, 4,3 milliards de personnes. Nous pouvons donc en fait intégrer un pourcentage important de la population entière qui est susceptible de pouvoir utiliser un canal Lightning par an.
Cependant, les canaux ne durent pas éternellement. À l’occasion, les utilisateurs voudront changer de portefeuille, augmenter ou diminuer la capacité des canaux, etc. La méthode la plus efficace pour modifier la capacité d’un canal consiste à raccordement, notamment mis en œuvre dans Portefeuille Phoenix.
Comme l'ouverture de canal, le raccordement pourrait également être effectué de manière amortie pour améliorer l'efficacité, avec plusieurs opérations de raccordement partageant une seule transaction pour réduire le nombre d'entrées et de sorties nécessaires pour ajouter et retirer des fonds5Ainsi, l'espace de bloc delta requis par tranche d'utilisateurs, en supposant l'utilisation demusig, est la sortie de la racine pivotante de 43 vB plus la sortie
57.5vB dépense de chemin clé taproot, pour un total de 100.5vB. Si nous supposons à nouveau une utilisation de l'espace de blocs de 90%, nous obtenons :

Enfin, notez comment le basculement des canaux Lightning entre les portefeuilles peut être effectué dans une seule transaction en faisant confiance au portefeuille suivant pour signer une transaction d'engagement après que les fonds ont été envoyés à l'adresse d'engagement, ou avec un soutien de fermeture-coopérative-au-nouveau-canal dans les deux implémentations de portefeuille.
Bien sûr, il existe des cas d’utilisation concurrents pour Bitcoin au-delà des canaux Lightning, et il est difficile de savoir comment cela se traduira par des taux de frais. Mais ces chiffres nous donnent une approximation approximative qui suggère qu’avec la technologie actuelle, il est au moins techniquement possible de prendre en charge des centaines de millions d’utilisateurs de Lightning auto-souverains.
Dans le modèle de conception Virtual UTXO (V-UTXO), dont Ark est l’exemple le plus frappant, les V-UTXO sont créés via des covenants ou des accords multipartites, via la création de transactions qui pourraient être minées pour retirer unilatéralement les fonds V-UTXO en les mettant sur la chaîne, mais qui ne sont pas sur le « chemin heureux ». À cet égard, les V-UTXO sont similaires aux canaux. Mais contrairement aux canaux, les systèmes V-UTXO effectuent des transactions en dépensant les V-UTXO eux-mêmes, en (conceptuellement) un seul6transaction pré-signée.
Le modèle de conception « happy path » est l’utilisation d’un chemin de script « toutes les parties sont d’accord », tel qu’un multisig N-of-N ; taproot est conçu spécifiquement pour ce concept, ce qui permet au chemin de clé d’être un multisig N-of-N via musig. En supposant que toutes les parties soient d’accord, le chemin heureux permet aux pièces d’être dépensées efficacement (et en privé).
De manière intéressante, étant donné que les UTXO virtuels sont « réels » à bien des égards, il est assez facile de construire des canaux sur les UTXO virtuels en créant simplement des UTXO virtuels qui, s'ils sont extraits, aboutiraient à la création des UTXO requis pour les canaux. En ce sens, les schémas UTXO virtuels sont une
couches légèrement inférieures aux canaux.
Comme discuté ci-dessus, la caractéristique clé de Lightning est sa limite de scalabilité pour les utilisateurs finaux, en raison de la nécessité d'avoir au moins une UTXO par utilisateur. Cela dit, pour l'élément de routage "central" de Lightning - les nœuds publics de Lightning qui routent la grande majorité des transactions - ces limites de scalabilité ne sont pas vraiment une préoccupation car Lightning fonctionne très bien s'il y a beaucoup plus d'utilisateurs finaux que de nœuds de routage, car chaque canal public utilisé pour le routage des paiements peut facilement prendre en charge un grand nombre de transactions par seconde. C'est aussi pourquoi de nombreux futurs systèmes L2 prévoient également de participer au réseau Lightning. Nous le voyons également dans la manière dont les systèmes existants qui ne sont pas tout à fait des systèmes L2 comme Cashu dà0e9pendent fortement du réseau Lightning pour être réellement utiles : l'utilisation principale de Cashu est probablement d'envoyer et de recevoir des paiements Lightning.
Puisque les usines de canal négocient des UTXO qui pourraient être minés, mais ne devraient pas réellement être minés dans le scénario optimal, elles sont un exemple très primitif de V-UTXOs.
Les usines de chaînes en elles-mêmes ne nécessitent aucun fork pour être possibles. Cependant, les simples usines de chaînes décrites ci-dessus sont probablement impraticables au-delà de petits nombres de parties en raison de la coordination nécessaire pour réellement obtenir un avantage d'échelle. Ainsi, des propositions de conventions telles que OP_Evictou CTV (via arbres txout) visent à permettre des résultats plus fins où des parties individuelles peuvent être contraintes on-chain, sans forcer tout le monde on-chain en même temps.
Alors que les canaux Poon-Dryja encouragent la publication de l’état correct sur la chaîne en punissant les états incorrects, LN-Symmetry permet plutôt de mettre à jour les états incorrects avec une transaction supplémentaire. Cela a l’avantage de simplifier les canaux Lightning en supprimant la complexité des pénalités. Cependant, cela est susceptible d’être un inconvénient dans les scénarios non fiables, car des pénalités sont sans doute nécessaires pour décourager la fraude.
LN-Symmetry a besoin d'une mise à niveau logicielle pour être activéeSIGHASH_ANYPREVOUTqui est nécessaire pour permettre aux transactions d'état de réutiliser d'autres transactions d'état lors des mises à jour.
En soi, LN-Symmetry n'offre aucune amélioration de mise à l'échelle sur les canaux Lightning conventionnels. Mais les partisans ont argumenté que cela facilite la mise en œuvre de choses comme les usines de canaux.
Pour effectuer des transactions V-UTXO entre les parties, le coordinateur Ark cosigne les transactions qui dépensent un ou plusieurs V-UTXO, de sorte que les transactions ne sont valides que si un ou plusieurs autres V-UTXO sont créés dans un autre tour. En combinaison avec quelques délais prudents - voir la documentation Ark pour tous les détails - cette dépendance est ce qui rend les V-UTXO dépensables sans confiance : les V-UTXO ne peuvent pas être réclamés sur la chaîne à moins que de nouveaux V-UTXO ne soient créés dans une autre transaction de pool. Il existe quelques façons potentielles de mettre en œuvre cette dépendance. Mais les détails exacts ne sont pas pertinents pour les besoins de cet article.
Remarquez comment cela signifie qu'un ASP donné aura de nombreuses rondes actives différentes se déroulant en même temps. De nouvelles rondes sont fréquemment créées pour permettre le transfert des fonds dans les rondes existantes. Mais les rondes existantes chevauchent les nouvelles rondes, car elles expireront généralement après les nouvelles rondes, et les nouvelles sorties de transactions de pool sont créées.
Plus précisément, le coût est engagé lorsque le V-UTXO est dépensé. Tant que le V-UTXO n'est pas dépensé, il représente un UTXO potentiel très réel qui pourrait être mis sur la blockchain pour retirer unilatéralement les fonds ; l'utilisateur possède ces fonds. Cependant, pour dépenser le V-UTXO, l'ASP doit créer une nouvelle sortie de transaction pool, en utilisant des fonds que l'ASP obtient par ailleurs, tandis que les fonds du V-UTXO dépensé ne sont pas disponibles pour l'ASP jusqu'à ce que le délai d'expiration soit atteint.
Ainsi, dépenser un V-UTXO nécessite un prêt à court terme, empruntant des fonds pour couvrir l'intervalle de temps entre maintenant et l'expiration du tour. Cela signifie que le coût de liquidité pour dépenser un V-UTXO diminue en réalité à mesure que le V-UTXO vieillit et que le temps d'expiration se rapproche, atteignant finalement — en théorie — zéro lorsque le tour expire enfin.
Enfin, rappelez-vous que le coût de dépenser un V-UTXO est lié à la taille totale du V-UTXO dépensé. Pas le montant payé au destinataire. Cela signifie que les portefeuilles destinés à effectuer des transactions directes avec des V-UTXOs (par opposition à la gestion d'un seul V-UTXO à des fins, par exemple, d'un canal d'éclairage basé sur V-UTXO) doivent faire des compromis sur la façon dont ils répartissent les fonds en V-UTXOs. Un seul V-UTXO minimise le coût du retrait unilatéral, tout en maximisant les frais de transaction basés sur la liquidité ; diviser les fonds en plusieurs V-UTXOs fait le contraire. C'est totalement différent de l'économie du Bitcoin on-chain ou des transactions Lightning.
Quel est ce coût de liquidité ? Au moment de la rédaction, le portefeuille Lightning Phoenix facture des frais de 1 % pour réserver la liquidité du canal pendant 1 an ; au pire, Phoenix devrait immobiliser ses fonds pendant 1 an. Cependant, cela suppose que la liquidité n'est pas utilisée. Il est tout à fait possible que le coût du capital pour Phoenix soit en réalité plus élevé, et qu'ils supposent que le client moyen utilise leur liquidité entrante en moins d'un an. Phoenix gagne également de l'argent sur les frais de transaction, ce qui pourrait subventionner la liquidité du canal. Enfin, Phoenix pourrait ne pas être rentable !
Le taux des bons du Trésor américain nous donne une autre estimation. À l'heure actuelle, le taux des bons du Trésor à 3 mois est d'environ 5 % par an. Étant donné qu'il est argumenté que ce taux est surestimé en raison de l'inflation du dollar américain, nous supposerons un coût de liquidité de 3 % par an pour les fonds libellés en BTC pour notre analyse.
Si l’intervalle d’arrondi est de 4 semaines, cela signifie qu’une transaction commencera avec un coût de liquidité de
, pour finalement atteindre zéro. En supposant que l'utilisateur essaie de déplacer ses fonds vers une nouvelle ronde deux semaines avant l'expiration de la ronde, l'utilisateur paie environ 1,5% par an en frais de liquidité pour obtenir la garde de ses fonds. D'un autre côté, si l'utilisateur attend jusqu'au dernier moment8, le coût pourrait être presque nul, au risque de manquer le délai d'expiration.Les utilisateurs peuvent ne pas considérer cela comme un coût trivial. Et ce coût suppose que les coûts fixes de chaque tour ont été rendus insignifiants en amortissant les frais de transaction et autres coûts sur un grand nombre de participants.
Et si les coûts fixes n'étaient pas si insignifiants ? Supposons que l'ASP compte 1000 utilisateurs et que les sorties de la piscine soient créées en moyenne une fois par heure. Sur une période de 4 semaines, cela représente 672 transactions sur la chaîne. Cela signifie que pour simplement conserver leurs fonds, les utilisateurs de l'ASP doivent collectivement payer presque autant de transactions que les utilisateurs ! Il serait probablement moins cher pour eux d'ouvrir tous leurs propres canaux Lightning, même si l'ASP exige qu'ils attendent une heure entière pour une confirmation.
Parce que les rounds expirent, ce problème est un problème continu, encore pire que celui rencontré par les canaux Lightning : au moins un canal Lightning peut continuer à être utile indéfiniment, permettant l'ouverture d'un canal maintenant et son amortissement progressif sur de nombreux mois. Deuxièmement, parce que les rounds expirent, il y a moins de flexibilité quant au moment de créer les nouveaux txouts qui soutiennent ces rounds : si les frais sont élevés pendant une ou deux semaines, les utilisateurs dont les txouts de leur pool expirent n'ont d'autre choix que de (collectivement) payer ces frais élevés pour maintenir leur garde sur leurs fonds. Avec les canaux Lightning, il y a beaucoup plus de flexibilité quant à quand ouvrir réellement un canal.
Alors que les auteurs d'Ark ont initialement imaginé un scénario très optimiste où de nouveaux rounds seraient créés toutes les quelques secondes, le démarrage initial devra probablement se faire avec des cas d'utilisation qui peuvent se permettre d'attendre plusieurs heures pour qu'une transaction Ark soit confirmée, si les frais de transaction ne sont pas subventionnés.
Imaginez ce qu’il advient d’un V-UTXO si le propriétaire se déconnecte : après l’expiration du tour, l’ASP doit récupérer les fonds pour récupérer ses liquidités pour les tours suivants. Si un propriétaire de V-UTXO se déconnecte, la mise en place de ce V-UTXO sur la chaîne entraîne des coûts de transaction importants, car l’ASP doit maintenant récupérer des fonds à plusieurs niveaux de l’arbre V-UTXO. L’ASP peut recréer les V-UTXO non dépensés lors d’un nouveau tour. Mais ce n’est pas sans confiance du point de vue des propriétaires de V-UTXO, car ils ne peuvent pas dépenser ces V-UTXO sans obtenir de données9 à partir de l’ASP. L’ASP pourrait aussi simplement enregistrer les V-UTXO non dépensés en tant que solde de garde. Ou peut-être même avoir une politique de saisie des fonds !
Personnellement, je soupçonne que compte tenu du coût non négligeable de l'auto-conservation à Ark, de nombreux utilisateurs opteront plutôt pour des ASP avec une politique de roulement des fonds dans un nouveau tour et accepteront simplement le potentiel de fraude à la fin de chaque tour. C'est moins cher que de déplacer proactivement leurs fonds suffisamment tôt pour garantir la sécurité en cas de, par exemple, leur échec à allumer leur téléphone à temps pour que leur portefeuille déplace les fonds vers un nouveau tour.
De même, grâce aux engagements Sufficiently Advanced™, la structure complète de l'arbre de txout pourrait être remplacée par une sorte de schéma de retrait progressif, offrant potentiellement des économies d'espace. Nous aborderons cette question dans une section ultérieure, car cette technique est potentiellement utile pour d'autres schémas.
La question de la garde en fin de tour est un autre cas où les accords suffisamment avancés™ pourraient résoudre un problème : un accord, en particulier un accord de preuve ZK, pourrait contraindre l'ASP à recréer tous les V-UTXO non dépensés au tour suivant, éliminant ainsi le problème de la garde qui leur revient en fin de tour. Bien qu'il soit probablement impossible de le rendre sans confiance, car l'utilisateur aura probablement besoin de certaines données de l'ASP pour dépenser leur V-UTXO lors du nouveau tour, cela pourrait empêcher l'ASP de bénéficier financièrement d'une fraude contre les utilisateurs hors ligne.
Paiement de frais sur chaîne lors du retrait unilatéral
Similaire à Lightning, l'économie du paiement des frais on-chain et la valeur réelle d'un V-UTXO après les frais déterminent si l'utilisation d'Ark correspond à notre définition d'un L2 via un retrait unilatéral, ou une fraude qui ne profite pas à l'ASP. Nous discuterons plus en détail de ces spécificités lorsque nous aborderons le modèle de conception de l'arbre txout.
Du point de vue de Bitcoin, un schéma de validation rollup nécessite un engagement, car nous voulons être en mesure de créer des UTXO pour le schéma qui ne peuvent être dépensés que si les règles du schéma sont suivies. Ce n'est pas nécessairement un processus décentralisé. De nombreux schémas de validation rollup sont en fait entièrement centralisés ; la preuve de rollup prouve que le séquenceur de transaction centralisé a suivi les règles pour une séquence particulière de transactions.
En ce qui concerne le contrat... La technologie de preuve à divulgation nulle de connaissance est encore un domaine très récent, avec des avancées régulières. Il est donc très peu probable que nous voyions des opcodes ajoutés à Bitcoin qui valideraient directement des schémas de preuve à divulgation nulle de connaissance spécifiques. Au lieu de cela, il est généralement accepté que des schémas spécifiques utiliseraient plutôt des opcodes plus généraux, en particulier OP_CAT, pour valider les preuves à divulgation nulle de connaissance via des scripts. Par exemple, StarkWareestcampagnepour que OP_CAT soit adopté.
Les rollups de validité sont un sujet potentiellement important, avec de nombreux projets de faible substance et de grande hype, que nous ne discuterons pas plus en détail, en dehors de souligner les opcodes qui rendent potentiellement cette classe de conception viable.
Canaux hiérarchiques
Canaux hiérarchiques10vise à rendre le redimensionnement des canaux rapide et bon marché : « Les canaux hiérarchiques font pour la capacité des canaux ce que le LN fait pour le bitcoin ». Cependant, ils ne dépassent toujours pas fondamentalement la limite d'une UTXO par utilisateur. De plus, ils ne nécessitent de toute façon aucune modification du protocole Bitcoin. Nous n'allons donc pas les discuter plus en détail. Leurs défenseurs devraient simplement les mettre en œuvre ! Ils n'ont pas besoin de notre permission.
À l’heure actuelle, le développement de CoinPool semble avoir stagné, le dernier commit sur le site Web de spécification datant d’il y a deux ans.
L’exemple le plus simple d’épinglage vient du fait que sans RBF complet, le remplacement des transactions peut être désactivé. Ainsi, nous pouvons avoir une transaction à faible taux d’honoraires, avec le remplacement désactivé, qui ne sera pas minée mais ne pourra pas être remplacée. Essentiellement, 100% de la puissance de hachage a résolu ce problème en activant le RBF complet, et au moment de la rédaction de cet article, le RBF complet devrait être activé par défaut dans la prochaine version de Bitcoin Core (après 11 années d'effort!).
Cela laisse l’épinglage de la règle BIP-125 #3, le seul problème d’épinglage restant qui est pertinent pour les protocoles L2 multipartites et non résolu dans Bitcoin Core. À titre de référence, la règle #3 du BIP-125 stipule ce qui suit :
Une transaction de remplacement est nécessaire pour payer des frais absolus plus élevés (non
juste le taux des frais) que la somme des frais payés par toutes les transactions remplacées.
Cette règle peut être exploitée en diffusant une transaction d’épinglage importante et à faible taux de frais dépensant la ou les sorties pertinentes pour le protocole multipartite (alternativement, un groupe de transactions). Étant donné que la transaction a un faible taux de frais, elle ne sera pas minée en temps opportun, voire jamais. Pourtant, comme il a des frais totaux élevés, le remplacer par une transaction différente n’est pas rentable.
La règle n°3 est assez facilement corrigée viataux de remplacement par frais, et ce correctif fonctionne dans toutes les situations. Malheureusement, il n’est pas clair si RBFR sera adopté par Core dans un avenir proche, car ils ont consacré beaucoup d’efforts à une solution partielle inférieure. Transactions TRUC/V3.
RBF est l’étalon-or pour le paiement des frais, car il est le plus efficace dans presque tous les domaines.11situations: les transactions de remplacement n'ont pas besoin d'entrées ou de sorties supplémentaires, par rapport à ce qui aurait été nécessaire si le bon frais avait été deviné dès le premier essai.
L'efficacité est importante, car les inefficacités dans le paiement des frais rendent paiement de frais hors bandeune source rentable de revenus pour les grands mineurs; les mineurs plus petits et décentralisés ne peuvent pas profiter des paiements de frais hors bande en raison de l'impraticabilité et de l'inutilité de payer un petit mineur pour confirmer une transaction. Les paiements de frais hors bande semblent également inviter des problèmes de LMA/CTF : à l'heure actuelle, la plupart des systèmes de paiement de frais hors bande réellement disponibles nécessitent une sorte de processus de LMA/CTF pour effectuer un paiement de frais, à l'exception notable de la mempool.space accélérateur, qui, au moment de la rédaction de cet article (août 2024), accepte Lightning sans compte.
Pour utiliser directement le RBF dans les situations où les transactions sont pré-signées, vous devez pré-signer des variantes de frais couvrant l’ensemble des frais potentiels. Bien que cela soit tout à fait faisable dans de nombreux cas, le nombre de variantes nécessaires est généralement faible12, jusqu'à présent, le protocole Lightning de production - et d'autres protocoles proposés - ont plutôt choisi d'utiliser L’enfant paie pour les parents (CPFP), généralement via des sorties d’ancrage.
L'idée derrière une sortie d'ancrage est d'ajouter une ou plusieurs sorties à une transaction avec une valeur minimale ou nulle, dans l'intention de payer les frais via CPFP en dépensant ces sorties dans des transactions secondaires. Cela est bien sûr très inefficace lorsqu'il est appliqué à des protocoles tels que LN qui ont de petites transactions sur chaîne, presque...doubler la taille totale d'une transaction d'engagement LN utilisant une sortie d'ancrage éphémère. Ce serait moins préoccupant lorsqu'il s'agit de protocoles utilisant des transactions plus importantes, tels que tout ce qui utilise OP_CAT pour mettre en œuvre des conventions.
Un problème moins évident avec les sorties d'ancre est le besoin de conserver des UTXO supplémentaires pour payer les frais. Dans une application "client" typique, cela peut représenter un fardeau global important, car sans les sorties d'ancre, il n'est souvent pas du tout nécessaire de conserver plus d'un UTXO. En effet, il est probable que certains portefeuilles Lightning existants, axés sur les consommateurs, soient vulnérables au vol par la partie distante du canal dans des environnements à frais élevés en raison de l'incapacité à payer les frais.
SIGHASH_ANYONECANPAY peut être utilisé pour le paiement des frais dans certains cas en permettant d’ajouter des entrées supplémentaires aux transactions signées ; SIGHASH_SINGLE permet également d’ajouter des sorties. Lightning l’utilise pour les transactions HTLC. À l’heure actuelle, cette pratique peut être vulnérable à l’épinglage des transactions si elle n’est pas gérée avec soin13, car un attaquant pourrait ajouter un grand nombre d’entrées et/ou de sorties à une transaction pour créer un code PIN à frais élevés/à faible taux de frais. RBFR résout ce problème ; l’approche utilisée dans les transactions TRUC/V3 n’est pas en mesure de résoudre ce problème. Ce mode de paiement des frais n’est pas aussi efficace que le RBF. Mais cela peut être plus efficace que les sorties d’ancrage.
Enfin, il y a eu une variété de propositions de fork-logiciel pour ajouter un parrainage des fraissystème au protocole Bitcoin. Cela permettrait aux transactions de déclarer des dépendances à d'autres transactions, de sorte que la transaction sponsorisée ne pourrait être minée que si la transaction sponsorisée était également minée (probablement dans le même bloc). Cela pourrait être beaucoup plus efficace qu'un CPFP traditionnel car la transaction sponsorisée pourrait déclarer cette dépendance en utilisant significativement moins de vbytes que la taille d'une entrée de transaction.
L'exemple canonique concerne un contrat de verrouillage temporel de hachage (HTLC). Bien qu'il soit facile de considérer un HTLC comme étant un contrat permettant soit d'autoriser une transaction à être dépensée en révélant une préimage, soit en utilisant un délai d'expiration. En réalité, en raison des limitations du script Bitcoin, un HTLC permet à une transaction d'être toujours dépensée en révélant une préimage, puis, après un délai d'expiration, également via le mécanisme de délai d'expiration.
Le remplacement cyclique profite de cela en utilisant l'image avant le délai, pour remplacer la transaction essayant de racheter la sortie HLTC via le mécanisme de délai sans que la victime n'apprenne l'image. Une attaque de remplacement cyclique réussie le fait pendant suffisamment longtemps pour qu'un autre HTLC du canal expire.
Un défi majeur dans l'exploitation rentable du cycle de remplacement est que chaque cycle de remplacement coûte de l'argent. Une implémentation Lightning consciente des délais dépensera des frais de plus en plus élevés en essayant de dépenser la sortie HTLC expirée avant l'expiration de la prochaine sortie HTLC à son tour. Deuxièmement, n'importe qui peut vaincre l'attaque en rediffusant simplement la transaction remplacée15une fois que le cycle de remplacement est terminé.
Tout comme le verrouillage de transaction, le remplacement cyclique est également une exploitation économique des mineurs. À la fin de chaque cycle de remplacement, il existe une transaction qui a été supprimée des pools de mémoire, mais qui est entièrement valide et pourrait être extraite si les mineurs l'avaient encore dans leurs pools de mémoire.
Un soft-fork OP_Expire réel consisterait très probablement en deux fonctionnalités, de la même manière que le OP_CheckLockTimeVerifyetOP_CheckSequenceVerifyles opcodes se composent de deux parties:
Un défi très notable avec le déploiement et l’utilisation de OP_Expire est la réorganisation : la communauté technique Bitcoin, à commencer par Satoshi17a essayé de s'assurer que le protocole de consensus Bitcoin est conçu de manière à ce que, après une réorganisation profonde, les transactions précédemment extraites puissent être extraites dans de nouveaux blocs. Ce principe de conception tente d'éviter le scénario cauchemardesque d'un grand nombre de pièces confirmées devenant définitivement invalides - et donc les personnes qui comptent sur ces pièces perdant de l'argent - si une défaillance du consensus entraîne une grande réorganisation.
Dans le cas d’une réorganisation importante, les transactions utilisant l’expiration peuvent devenir impossibles à miner en raison de leur hauteur d’expiration atteinte. La proposition de OP_Expire propose d’atténuer ce problème en traitant les sorties des transactions utilisant l’expiration de la même manière que les transactions coinbase, ce qui les rend également non dépensables pour ~100 blocs.
Une barrière significative à la mise en œuvre de l'expiration des transactions consiste à parvenir à un consensus sur le fait de savoir si ce compromis est acceptable, voire nécessaire. Les types de transactions pour lesquelles OP_Expire serait utile impliquent déjà des délais relativement longs où les fonds des utilisateurs sont gelés. Ajouter encore plus de temps à ces délais n'est pas souhaitable. De plus, les doubles dépenses ont toujours été un moyen d'annuler les pièces après un réorg : avec l'utilisation croissante de RBF et la proposition d'utiliser des sorties d'ancrage sans clé, l'expiration des transactions ferait-elle une différence significative ?
SIGHASH_ANYPREVOUT est également potentiellement utile dans les cas où nous voulons utiliser des variantes de taux de frais RBF pré-signées en conjonction avec des transactions pré-signées, car le fait que la signature ne dépende plus d'un txid spécifique évite unexplosion combinatoire des variantes de taux de frais. Cependant, la proposition BIP-118 actuelle ne traite pas ce cas d'utilisation et peut être incompatible avec celui-ci en raison du fait que SIGHASH_ANYPREVOUT est également proposé pour s'engager à la valeur de l'UTXO.
Une objection initiale à SIGHASH_ANYPREVOUT était l'idée que les portefeuilles se mettraient en difficulté en l'utilisant de manière inappropriée. Le problème est que dès qu'une seule signature SIGHASH_ANYPREVOUT a été publiée, elle peut être utilisée pour dépenser n'importe quel txout avec le script spécifié. Ainsi, si un deuxième sortie avec le même script est créé accidentellement, SIGHASH_ANYPREVOUT permet une attaque de rejeu trivial pour voler ces pièces. Cependant, comme il y a tellement d'autres problèmes inhérents aux portefeuilles et aux implémentations L2, cette préoccupation semble avoir disparu.
Pour l'instant, la communauté technique générale semble raisonnablement positive quant à la mise en œuvre de BIP-118. Cependant, comme discuté ci-dessus dans notre discussion sur LN-Symmetry, il y a un débat sur le fait que son principal cas d'utilisation - LN-Symmetry - est en réalité une bonne idée.
Pourquoi les covenants récursifs ne sont-ils pas possibles dans CTV ? Parce que les fonctions de hachage : le CTV vérifie la transaction de dépense par rapport à un hachage de modèle, et il n'y a aucun moyen18de créer un modèle contenant un CTV avec un hachage de lui-même.
Cela dit, il ne s’agit pas nécessairement d’une réelle limitation : vous pouvez facilement hacher une chaîne de hachages de modèles CTV à une profondeur de dizaines de millions de transactions en quelques secondes seulement sur un ordinateur moderne. Avec verrous de temps nSequence relatifset la taille de bloc limitée qui atteint en fait la fin d'une telle chaîne pourrait facilement prendre des milliers d'années.
La proposition actuelle de CTV dans BIP-119n'a qu'un seul mode de hachage, connu sous le nom de DefaultCheckTemplateVerifyHash, qui s'engage essentiellement à tous les aspects de la transaction de dépense dans le hachage du modèle. D'un point de vue pratique, cela signifie que dans de nombreuses circonstances, le seul mécanisme disponible pour le paiement des frais sera le CPFP. Comme mentionné ci-dessus, c'est un problème potentiel car cela rend le paiement des frais hors bande non trivial dans les cas où les transactions utilisant CTV sont petites.
On peut dire que CTV bénéficie du soutien le plus large de la communauté technique parmi toutes les propositions d'opcode covenant en raison de sa simplicité relative et de sa large gamme de cas d'utilisation.
Bien que les auteurs aient probablement de bonnes raisons pour leur proposition, il leur incombe en fait d'expliquer ces raisons et de les justifier correctement. Ainsi, nous n'en discuterons pas davantage.
La concaténation est suffisante pour implémenter de nombreux types de covenants, y compris les covenants récursifs, en faisant ce qui suit:
Le fait que nous devons seulement assembler la transaction sans les données de témoin est un point clé: le covenant doit seulement valider ce que la transaction fait - ses entrées et sorties - pas les données de témoin (s'il y en a) qui la rendent effectivement valide.
En limitant la taille du script modulo, la combinaison de OP_CAT et OP_CheckSigFromStack est suffisante pour construire de nombreux types de covenants, y compris des covenants récursifs. Comparé à des solutions plus efficaces telles que CTV, c'est plus cher. Mais la différence de coût est moins importante que ce à quoi vous vous attendriez!
En gros, utiliser OP_CAT pour faire cela nécessite que toutes les parties non témoins de la transaction de dépense soient placées sur la pile via le témoin. Pour des cas d'utilisation CTV typiques tels que les arbres de txout, la transaction de dépense n'aura pas du tout de données de témoin. Étant donné que l'espace de témoin est réduit de 75%, cela augmente notre frais de transaction effectif pour la transaction enfant de seulement 25%. Pas mal!
Un excellent exemple est la prétendue suffisance d'OP_CAT pour permettre une efficacité et une sécurité raisonnablement efficaces Vérification STARK à mettre en œuvre dans le script Bitcoin. Étant donné que les STARK sont capables de prouver des énoncés extrêmement généraux, rendant ainsi possible de mettre en œuvre efficacement les STARK, cela a des ramifications significatives qui vont au-delà de la portée des systèmes L2, car cela permettrait à de nombreux systèmes différents d'être construits sur Bitcoin. Un argument solide contre OP_CAT est que ces cas d'utilisation pourraient ne pas être totalement bénéfiques pour les utilisateurs de Bitcoin.
La création de la valeur extractible par les mineurs centralisateurs nocifs est un problème potentiel clé, appelé "MEV qui est evIL" (MEVil)par Matt Corallo. En bref, le MEVil est toute situation dans laquelle les gros mineurs/pools peuvent extraire une valeur supplémentaire en utilisant des stratégies avancées de minage de transactions - au-delà de la simple maximisation des frais totaux - qui sont impraticables pour les mineurs/pools plus petits. La complexité des instruments financiers potentiels pouvant être créés avec OP_CAT rend très difficile l'élimination du MEVil. Une MEVil significative est déjà apparue sur Bitcoin à partir de protocoles d'enchères de jetons; heureusement, ce cas spécifique a été vaincu grâce à l'adoption de la pleine RBF.
En plus du potentiel de MEVil, il existe de nombreux autres cas d'utilisation concrets d'OP_CAT qui sont potentiellement nuisibles. Par exemple, la proposition Drivechains a été chroniqué ici, et est largement considéré comme nuisible à Bitcoin. C'est censé être possiblepour mettre en œuvre Drivechain avec OP_CAT. Un autre exemple est les propositions de jetons comme les actifs Taproot. Bien qu'il soit impossible en général de les empêcher d'être mis en œuvre avec validation côté client, il existe des propositions visant à les mettre en œuvre avec OP_CAT de manière potentiellement beaucoup plus attrayante pour les utilisateurs finaux, tout en utilisant beaucoup plus d'espace de bloc, ce qui pourrait potentiellement surenchérir sur les transactions Bitcoin « légitimes ». Ces cas d'utilisation peuvent également soulever des problèmes juridiques en raison de la fréquence à laquelle les protocoles de jetons sont utilisés pour la fraude financière.
Une décision de conception importante consiste à savoir s'il faut ou non exposer les octets d'état intermédiaire réels sur la pile sous une forme canonique, ou les représenter sous une nouvelle forme de type d'élément de pile opaque dont la valeur réelle en octets ne peut pas être directement manipulée. SHA256 est spécifié pour un vecteur d'initialisation particulier et fixe, et il semble inconnu si les propriétés cryptographiques de SHA256 sont vraies si des états intermédiaires/vecteurs d'initialisation arbitraires sont autorisés.
Bien sûr, étant donné que le hachage incrémental peut faire à peu près ce que OP_CAT peut faire, mais de manière plus efficace, il partage toutes les préoccupations concernant la trop grande puissance de OP_CAT.
Renaissance du script
OP_CAT était l'un des 15 opcodes que Satoshi a désactivés. En plus de restaurer OP_CAT, Rusty Russell propose21pour essentiellement restaurer le script Bitcoin à la «Vision originale de Satoshi» en réactivant la plupart de ces opcodes, en ajoutant des limites DoS et potentiellement en ajoutant quelques autres dans le même soft-fork. En particulier, un OP_CheckSigFromStack est probablement.
Bien que OP_CAT seul rende possible l’existence de clauses restrictives (récursives), une « renaissance complète du script » rendrait possibles des clauses plus sophistiquées – et beaucoup plus faciles à mettre en œuvre – car certaines parties de la transaction de dépenses pourraient être manipulées directement. Par exemple, vous pouvez imaginer un script covenant qui utilise des opcodes arithmétiques pour s’assurer que la valeur totale des txouts dans la transaction adhère à une propriété souhaitée.
Encore une fois, le renouveau du scénario soulève les mêmes préoccupations, et plus encore, sur le fait d’être trop puissant que OP_CAT seul.
En pratique, la Simplicité est à la fois trop simple et pas du tout simple. Les combinateurs primitifs sont d'un niveau ridiculement bas, si bien que des opérations de base comme l'addition doivent être laborieusement implémentées à partir de zéro ; la Simplicité brute serait exceptionnellement verbeuse en pratique. Ainsi, toute utilisation réelle de la Simplicité ferait appel à un système de substitutions de code, similaire à des appels de fonctions de bibliothèque, connu sous le nom de jets. Cela pose un problème pratique/politique: comment décider quelles jetons implémenter? Il est fort probable que les jetons soient implémentés en C++, comme tout autre opcode, nécessitant une bifurcation douce pour chaque nouveau jeton.
Dans le cadre de cet article, nous n'avons pas besoin d'entrer dans les détails de chacune de ces nombreuses propositions. Au lieu de cela, nous pouvons en parler comme d'un groupe : ce sont toutes des propositions relativement spécifiques à un cas d'utilisation qui rendent une classe de L2 possible, idéalement sans effets secondaires indésirables. Ils ont tous l'avantage de l'efficacité : ils utilisent tous moins d'espace de bloc que l'obtention du même objectif avec des opcodes plus génériques tels que la manipulation OP_CAT. Mais ils ont tous l'inconvénient d'ajouter de la complexité au système de script, pour un cas d'utilisation potentiellement de niche.
Le même dynamisme se produirait si Bitcoin adoptait le système de script Simplicity. L'équivalent des opcodes dans Simplicity consiste à ajouter un jet pour un motif couramment utilisé. Encore une fois, la mise en œuvre de jets pour des opérations spécifiques à un cas d'utilisation comme la manipulation d'arbres présente des avantages et des inconvénients similaires à la mise en œuvre d'opcodes complexes pour des opérations spécifiques à un cas d'utilisation.
Pour qu'un pool de fonds soit utile, il doit être associé à une sorte d'état de partage de données : comment la valeur de txout est-elle répartie ? Si le pool de fonds doit évoluer au fil du temps, cet état doit également changer à mesure que des fonds sont ajoutés ou retirés du pool. Comme nous construisons sur Bitcoin, l'ajout ou le retrait de fonds du pool impliquera inévitablement de dépenser l'UTXO que le pool contrôle.
Rappelez-vous que le système de consensus Bitcoin lui-même est basé sur la validation des changements d'état: les transactions prouvent via leurs témoins que les changements apportés à l'état de l'ensemble UTXO sont valides; la preuve de travail nous permet de parvenir à un consensus sur l'ensemble de transactions correct. Cela signifie que les pools de fonds seront eux-mêmes également basés sur la validation des changements d'état: nous prouvons à chaque nœud Bitcoin que les règles du pool de fonds sont suivies à chaque changement d'état.
Mais il y a un autre aspect clé des pools de fonds L2 sans confiance : lorsque l'état du pool de fonds change, le système doit publier intrinsèquement suffisamment de données pour que les utilisateurs participant au pool de fonds puissent récupérer leurs fonds. Si nous ne l'avons pas fait, alors notre système ne fournit pas de retrait unilatéral, sans la coopération de tiers. De nombreux schémas basés sur Rollup échouent ici : ils souffrent de pannes de disponibilité de données, où l'utilisateur est incapable de récupérer ses fonds si les coordinateurs tiers sont hors ligne, car ils n'ont aucun moyen d'obtenir les données nécessaires pour construire une transaction de récupération de fonds valide.
Avec ces contraintes à l'esprit, sur quelles structures de données les pools de fonds vont-ils être basés? Inévitablement, ce sont tous une sorte d'arbre. Plus précisément, une sorte d'arbre de Merkle. Ils doivent être un arbre, car c'est à peu près la seule structure de données évolutive en informatique; ils doivent être merkelisés, car c'est fondamentalement la seule façon raisonnable de s'engager cryptographiquement à l'état de l'arbre. Enfin, les mises à jour de l'arbre seront inévitablement publiées sur la blockchain Bitcoin, car c'est la seulemoyen de publicationtous les utilisateurs de la couche 2 partagent, et le seul sur lequel nous pouvons contraindre les utilisateurs à publier pour déplacer des pièces. Et parce que toute mise en œuvre de convenant aura besoin de parties de l'arbre pour valider que les règles du convenant sont respectées.
Alors, avec la théorie de haut niveau réglée, comment cela se traduit-il réellement en scripts et transactions Bitcoin ?
Le seul «pacte» requis ici est le pacte le plus fondamental : la transaction pré-signée.
Arbres de Txout
Le motif de conception suivant, plus complexe, que nous voyons dans les pools de fonds est l'arbre txout. Ark en est un exemple notable. Ici, le pool de fonds peut être divisé en dépensant l'UTXO racine dans un arbre de transactions prédéfinies, appliqué avec des engagements simples tels que des transactions pré-signées ou CTV, divisant la valeur de cet UTXO en des montants de plus en plus petits jusqu'à ce que des nœuds feuilles soient atteints et puissent être dépensés par les propriétaires légitimes.
Il est important de reconnaître que le but de l'arbre des txout est de donner aux utilisateurs des options pour récupérer leurs fonds, et ces options ont un coût : un arbre des txout sera toujours un moyen plus coûteux de diviser un pool de fonds et de les retourner à leurs propriétaires que de simplement diviser les UTXO dans une seule transaction. Chaque couche de l'arbre ajoute un coût en raison des octets utilisés dans les txouts et txins nécessaires pour créer cette couche.
Alors, quelles options un arbre de txout pourrait-il offrir ? Encore une fois, Ark est un excellent exemple : nous ne voulons pas que le rachat on-chain d'un seul V-UTXO nécessite que chaque V-UTXO soit mis sur la chaîne. En utilisant un arbre, le rachat peut plutôt diviser l'arbre en parties plus petites jusqu'à ce que le V-UTXO souhaité soit mis sur la chaîne.
Tout comme dans le cas d'une transaction individuelle pré-signée, les informations publiées sont les transactions elles-mêmes, qui permettent au portefeuille d'autres utilisateurs de savoir comment dépenser leurs fonds si nécessaire.
L’évolutivité des arbres txout permet de réaliser des économies d’échelle intéressantes. Le coût pour que le premier V-UTXO soit mis sur la chaîne, dans un pool de fonds avec n V-UTXO, est à peu près log2(n)log2(n) fois plus cher qu’une seule transaction, car les niveaux log2(n) des transactions fractionnées doivent être mis sur la chaîne. Cependant, une fois que le premier V-UTXO est mis sur la chaîne, les V-UTXO suivants deviennent moins chers à racheter sur la chaîne parce que quelqu’un d’autre a déjà payé le coût de l’extraction des transactions intermédiaires.
Rappelez-vous que le nombre total d'éléments dans un arbre binaire avec
n feuilles est 2n. Cela signifie que pour mettre tous les V-UTXO sur la chaîne, le coût total pour le faire via un arbre txout serait un petit multiple du coût total pour le faire dans une seule transaction. Étonnamment efficace!
Ou peut-être pas... Si la taille totale des rachats du fonds est suffisamment élevée, ils peuvent représenter une demande non négligeable sur l'ensemble de l'espace de bloc. L'espace de bloc est un système d'offre et de demande, donc à un moment donné, les frais augmenteront en raison d'une forte demande. À l'extrême, il est tout à fait possible de créer des arbres de txout si grands et si profonds qu'il est en fait possible de racheter chaque
La mise en œuvre de RBF est complexe en raison des autorisations : l'endroit évident pour prendre des frais pour RBF est la valeur V-UTXO. Mais comment garantir que seul le propriétaire a la possibilité de signer une transaction à frais plus élevés ? Dans de nombreuses circonstances, il n'est pas évident de le faire de manière plus efficace qu'une sortie d'ancrage sans clé. Cependant, ne pas le faire pose de sérieux défis pour les schémas utilisés par les portefeuilles d'utilisateurs finaux, qui peuvent ne pas avoir de UTXO à dépenser pour effectuer une CPFP, si les V-UTXO eux-mêmes ne peuvent pas être dépensés immédiatement.
Enfin, il faut réfléchir attentivement aux incitations dans les systèmes d'arbres txout, en tenant compte du paiement des frais. Par exemple, dans un système de type Ark, si un ensemble de V-UTXO coûte individuellement trop cher pour être récupéré en dehors de la chaîne, un coordinateur peu coopératif pourrait refuser de permettre le rachat de ces V-UTXO hors chaîne, puis réaliser un profit en volant la valeur de ces V-UTXO dans une seule transaction UTXO une fois qu'un délai est atteint.
Si tel est le cas, on peut soutenir que ce système ne répondrait pas à nos critères pour être considéré comme un L2 pour les petits V-UTXO.
Pour ce faire, nous devons implémenter une machine à états non triviale. Mais nous avons également besoin de ce qui est essentiellement une base de données partagée. Pourquoi? Parce que l’objectif ici est de partager un UTXO entre de nombreux propriétaires différents. Enfin, si nous voulons réellement obtenir une amélioration de l’évolutivité, nous devons le faire d’une manière qui met le moins possible de ces données de propriété sur la chaîne.
Ces exigences nous conduisent intrinsèquement à une sorte de structure de données merkélisée en forme d’arbre, telle qu’un arbre de somme de Merkle. La manipulation de cette structure de données va intrinsèquement nécessiter quelque chose comme OP_CAT, une sorte d’opcode de vérification de preuve à divulgation nulle de connaissance, ou un opcode de manipulation d’arborescence spécifique à l’objectif.
Il est intéressant de noter que, comme dans les arbres txout, vous ne pouvez pas faire mieux que la mise à l’échelle de l’ordre log(n) tout en conservant des propriétés de sécurité similaires. Pourquoi? Supposons que nous ayons un OP_ZKP hypothétique qui, grâce à des mathématiques avancées, n’a besoin que de 32 octets pour prouver une affirmation. Bien que cette preuve zk puisse prouver que la structure de données merkelisée a été manipulée selon les règles du système de couche 2, elle ne fournirait pas les données nécessaires pour que l’utilisateur suivant effectue également un changement d’état. Cela ne répond pas à nos critères préférés d’activation du retrait inconditionnel : au mieux, un utilisateur pourrait être en mesure d’obtenir un retrait inconditionnel. Mais aucun autre utilisateur n’a pu le faire.
En revanche, si les parties modifiées de la structure de données merklisée sont publiées via le scriptsig du covenant - par exemple, les empreintes de frères dans un arbre de Merkle - le prochain utilisateur dispose de suffisamment de données pour mettre à jour sa compréhension de l'état du système et effectuer lui-même un retrait inconditionnel.
Un moyen potentiel de contourner ce problème serait si le pacte exige une preuve de publication sur un support de publication différent de la chaîne Bitcoin. Cependant, les garanties de sécurité seront moins solides que ce qui est possible via Bitcoin.
Enfin, remarquez comment les arbres txout et une approche basée sur l'équilibre peuvent être combinés. Si la structure de données manipulée est un arbre txout, des fonds pourraient être ajoutés à l'arbre txout en dépensant la sortie et en ajoutant de nouveaux fonds, avec un script de convention qui valide que les fonds ont effectivement été ajoutés à l'arbre txout. De même, les fonds peuvent être supprimés par tous les mécanismes normalement disponibles pour un arbre txout. Advanced Ark est un exemple de cette classe de schéma.
La capacité maximale de bloc dans toutes les blockchains décentralisées (et centralisées) est limitée par des contraintes techniques. Dans Bitcoin, la taille maximale du bloc est telle que Bitcoin fonctionne essentiellement à pleine capacité ~100% du temps. Comme l'exploitation minière de Bitcoin agit comme un système d'enchères, mettant aux enchères des espaces de bloc au plus offrant, en pratique, cela signifie que le taux de frais minimum pour faire traiter une transaction augmente et diminue en fonction de la demande.
Le taux de commission est toujours pris en compte dans l'économie de la couche 2 et les modes de défaillance. Par exemple, dans Lightning, les HTLC de taille "poussière" qui sont trop petits pour être rentablement rachetés sur la chaîne utilisent un modèle de sécurité différent des HTLC plus importants. Bien que le protocole Lightning n'implémente pas encore correctement cela, en théorie, ce seuil devrait être dynamique, en fonction des taux de commission à la hausse et à la baisse, idéalement jusqu'au point où une partie pourrait choisir si oui ou non un HTLC existe même dans une transaction d'engagement donnée en fonction du taux de commission.
Une variété d'attaques ont été proposées où cette situation est intentionnellement déclenchée sur Lightning, comme l'inondation et le pillage22 et l’attaque de sortie de masse23. Étant donné que la capacité de la blockchain Bitcoin est partagée entre tous les cas d'utilisation, des attaques entre différents systèmes de couche 2 sont également possibles : par exemple déclencher une sortie massive sur Ark pour profiter des canaux Lightning.
Les L2 qui partagent des UTXO entre plusieurs utilisateurs rendent ces problèmes potentiellement plus graves, car la demande d'espace de bloc en cas de défaillance est proportionnellement plus élevée. À l'heure actuelle, nous n'avons jamais réellement observé de défaillances à grande échelle sur Lightning où un grand nombre de canaux ont dû être fermés simultanément. Il est valable de dire que nous devrions acquérir une expérience opérationnelle supplémentaire avec Lightning et son passage à environ 1 UTXO par utilisateur, avant de repousser encore plus les limites avec des schémas de partage d'UTXO.
Deuxièmement, avant que de nouveaux systèmes de partage UTXO ne soient largement adoptés, des recherches minutieuses doivent être menées sur la rentabilité potentielle des attaques en cas de forte demande d’espace de bloc. Par exemple, dans un système comme Ark où l’ASP peut racheter des fonds en utilisant beaucoup moins d’espace de blocage que les autres parties, il se peut que le déclenchement intentionnel de taux de frais élevés, puis la saisie de fonds qui ne peuvent pas être retirés unilatéralement de manière rentable soit une fraude rentable, violant nos deux conditions pour un véritable système L2.
Le plus récent soft-fork, Taproot, a eu un processus de déploiement relativement controversé, prenant un temps assez long pour être effectivement déployé. Un argument en faveur de la réalisation d'un soft-fork de nettoyage de consensus en premier, avant d'activer de nouveaux opcodes ou d'autres fonctionnalités pour les nouveaux types de L2, est que nous en apprendrions davantage sur la volonté de la communauté plus large de mettre en œuvre ce qui devrait être un soft-fork relativement non controversé et qui profite à tout le monde.
Une approche plus simple consiste simplement à faire semblant que certaines parties ne peuvent pas effectuer les actions que les conventions empêcherait. Par exemple, si un protocole proposé souhaite utiliser CTV pour faire respecter le fait qu'un arbre txout est dépensé dans un arbre de transaction, chaque utilisation de CTV pourrait être remplacée par un NOP ou CheckSig. Bien que dans la réalité, l'arbre txout n'est pas effectivement appliqué, chaque morceau de code interagissant avec l'arbre et chaque partie peut être testé comme s'il l'était, et puisque NOP et CheckSig sont autorisés dans les scripts standard, le protocole peut être testé sur mainnet avec de vrais fonds.
Nous allons également laisser de côté tous les opcodes de manipulation de l’arbre de Merkle proposés. Ils sont tous trop spécialisés, trop spécifiques à des cas d’utilisation, pour avoir une chance significative d’être adoptés à l’heure actuelle. Dans la mesure où ces opcodes sont utiles, l’implémentation de leurs effets via OP_CAT et/ou Script Revival est une voie beaucoup plus probable vers l’adoption.

CTV est le grand gagnant ici, suivi de SIGHASH_ANYPREVOUT (OP_Expire est utile à de nombreuses choses en étant une correction cyclique de remplacement, mais pas essentiel). CTV l'emporte car tant de choses s'inscrivent dans le modèle de conception de "s'assurer que la transaction de dépense correspond à ce modèle"; même les constructions OP_CAT peuvent efficacement utiliser CTV.
Contrairement à OP_CAT, CTV ne semble pas présenter beaucoup de risques de conséquences involontaires, sauf en encourageant les paiements de frais hors bande dans certains cas. Ce n'est pas idéal. Mais personne n'a proposé une alternative largement soutenue.
Ma recommandation personnelle : faire un soft-fork de nettoyage consensuel, suivi de CTV.
Clause de non-responsabilité : Les points de vue et opinions exprimés dans cet article sont uniquement ceux de l'auteur et ne constituent aucun conseil en investissement.
Les traductions de l'article dans d'autres langues sont réalisées par l'équipe Gate Learn. Sauf mention contraire, la copie, la distribution ou le plagiat des articles traduits sont interdits.





