
Découvrez l'abstraction de compte dans Ethereum — ce que cela signifie et pourquoi c'est important.

Même avec un marché baissier qui fait rage, peu de gens doutent que la crypto soit là pour durer — des wallets comme MetaMask comptent déjà des millions d'utilisateurs, par exemple. Mais la question demeure : « Comment amener le prochain milliard d'utilisateurs vers le web3 ? »
Selon les personnes interrogées, les réponses varient. Mais tout le monde s'accorde sur certains points — notamment la nécessité d'améliorer l'expérience des utilisateurs qui interagissent avec les applications blockchain. Sans rendre le web3 plus convivial, les gens ont peu de raisons de délaisser les applications web2 qu'ils utilisent au quotidien.
« L'abstraction de compte » est une proposition visant à améliorer les interactions des utilisateurs avec Ethereum — un sujet qui fait de plus en plus l'objet de nombreuses discussions dans la communauté crypto. Vous vous demandez peut-être : « Qu'est-ce que l'abstraction de compte exactement, et pourquoi devrais-je m'y intéresser ? »
Cet article est conçu pour vous aider à comprendre l'abstraction de compte en replaçant son passé, son présent et son avenir dans leur contexte. Nous répondrons à toutes les questions que vous pourriez avoir sur le sujet — notamment le qui, quoi, pourquoi, comment et quand de l'abstraction de compte.
Un bref résumé des points clés :
Les comptes programmables et auto-custodiaux (« smart accounts ») peuvent réduire les frictions liées à l'intégration de nouveaux utilisateurs dans l'écosystème web3. Cependant, les limitations imposées par la conception d'Ethereum empêchent l'adoption et l'utilisation à grande échelle des smart accounts.
L'abstraction de compte introduit des changements significatifs qui ouvrent la voie à une adoption généralisée de smart accounts sans tiers de confiance et résistants à la censure. Différentes approches pour mettre en œuvre l'abstraction de compte sont envisagées — chacune présentant des avantages et des compromis uniques.
MetaMask soutient l'adoption de l'abstraction de compte via sa plateforme d'innovation sans permission : MetaMask Snaps. Avec MetaMask Snaps, les développeurs peuvent étendre MetaMask pour apporter les avantages de l'abstraction de compte aux utilisateurs de crypto dans le monde entier.
Comme tout nouveau concept dans le web3, l'abstraction de compte peut être difficile à définir. Néanmoins, nous pouvons mieux la comprendre en décomposant d'abord les différents termes pertinents à la discussion sur l'abstraction de compte dans Ethereum :
Abstraction (n) : Un terme (assez complexe) en informatique qui signifie grossièrement cacher des informations sur un système ou une application afin qu'il puisse être utilisé avec moins de connaissance des processus s'exécutant en arrière-plan. Également définie comme « le processus consistant à masquer la complexité d'un système en fournissant une interface qui facilite sa manipulation. »
Compte (n) : La représentation d'un utilisateur sur la blockchain qui peut envoyer ou recevoir des transactions et interagir avec d'autres comptes on-chain. Ethereum dispose de deux types de comptes : les Externally Owned Accounts (EOA) et les contract accounts (aussi appelés « smart contracts »).
2a. Externally Owned Accounts (EOA) : Comptes Ethereum générés à l'aide d'un logiciel de wallet (comme MetaMask) et gérés par une paire cryptographique de clés publique et privée. Un EOA est « actif » (il peut initier des transactions et payer les frais de gas pour l'exécution EVM). Cependant, il est limité à l'exécution d'opérations de base — comme envoyer de l'Ether ou interagir avec des contrats.
2b. Contract accounts : Comptes Ethereum déployés sous forme de smart contract et contrôlés par une logique écrite en code (plutôt que par une clé privée). Un contract account est « passif » : il ne peut envoyer des transactions qu'en réponse à une transaction provenant d'un EOA et ne peut pas payer les frais de gas. Il est cependant programmable et peut exécuter une logique arbitraire en fonction du code stocké à l'adresse.
Wallet (n) : Une interface pour gérer les fonds de votre compte Ethereum — le fonctionnement d'un wallet dépend du type de compte auquel il est lié. Un wallet basé sur un EOA comme MetaMask nécessite une clé privée pour autoriser les transactions. En revanche, un smart contract wallet est lié à un contract account et peut utiliser une logique arbitraire pour autoriser des transactions (par exemple, en utilisant un schéma multisignature).
Ces définitions étant posées, nous pouvons maintenant définir l'abstraction de compte.
Définir l'abstraction de compte
L'abstraction de compte est une proposition visant à accroître la flexibilité dans la gestion et le comportement des comptes Ethereum. Nous y parvenons en introduisant des account contracts : des smart contracts à usage spécifique qui définissent et gèrent le compte Ethereum d'un utilisateur (désormais appelé smart account).
Avec l'abstraction de compte, vous pouvez bénéficier d'un accès programmable à vos fonds en utilisant un smart contract wallet plutôt que de vous fier uniquement aux clés privées pour la sécurité. Cela est possible parce que votre smart account peut avoir des règles personnalisées pour dépenser des coins et transférer des actifs.
Alors, comment « l'abstraction » s'intègre-t-elle dans tout cela ?
Du point de vue du réseau, « l'abstraction de compte » signifie que les détails des types de comptes sont invisibles pour le protocole Ethereum. Chaque compte (y compris les comptes auto-custodiaux) est simplement un smart contract, et les utilisateurs sont libres de déterminer comment les comptes individuels sont gérés et exploités.
Du point de vue de l'utilisateur, « l'abstraction de compte » signifie que certains détails techniques concernant l'interaction avec les comptes Ethereum sont dissimulés derrière des interfaces de plus haut niveau. Cela améliore la conception des wallets et réduit considérablement la complexité de l'utilisation des applications web3.
Cette clarification est nécessaire car la confusion autour de l'abstraction de compte vient du fait de ne pas savoir (a) ce qui est abstrait et (b) où l'abstraction se produit. Les comptes ne sont pas nécessairement abstraits des utilisateurs (même s'ils le sont du protocole). Vous disposez toujours d'une adresse de wallet pour recevoir des fonds et d'une clé de signature pour vous assurer que vous seul pouvez dépenser ces fonds.
De votre point de vue, l'abstraction de compte ressemble davantage à l'utilisation d'un smart account qui abstrait certains détails de l'interaction avec la blockchain. Pour contextualiser, voici à quoi ressemble l'interaction avec une dapp du point de vue d'un utilisateur novice :
Avec l'abstraction de compte, les développeurs de wallets peuvent créer des systèmes qui gèrent ces processus en arrière-plan et simplifient l'expérience d'utilisation du web3 (en résumé : les wallets deviennent « invisibles »). Parmi les cas d'usage (que nous développerons plus tard) : éliminer la nécessité de stocker des phrases secrètes/clés privées, de payer le gas pour les transactions, ou même de configurer soi-même un compte on-chain.
Comme mentionné précédemment, l'abstraction de compte supprime la plupart des frictions associées à l'utilisation des wallets web3 et à l'interaction avec les dapps. Cela rapproche le web3 de l'idéal du web2 où tous les utilisateurs — novices comme expérimentés — peuvent bénéficier du même degré de flexibilité, de sécurité et de facilité d'utilisation.
En particulier, l'abstraction de compte a des implications considérables pour l'avenir de l'auto-custody. Grâce aux fonctionnalités offertes par les account contracts, utiliser un wallet web3 donnera l'impression d'utiliser un compte bancaire ou une application sans avoir à faire confiance à la banque.
Dans les sections suivantes, nous aborderons les différentes dimensions de l'abstraction de compte et discuterons de la façon dont elles améliorent l'expérience d'utilisation d'Ethereum. Plus précisément, nous parlerons de l'abstraction de signature, de l'abstraction de frais et de l'abstraction de nonce.
Aujourd'hui, les transactions provenant de votre EOA doivent comporter une signature générée par la clé privée du compte en utilisant l'algorithme de signature numérique à courbe elliptique (ECDSA) pour être valides. Cela confère à la plupart des EOAs un modèle de sécurité simple : les fonds sont en sécurité tant que les clés privées restent en possession de l'utilisateur. Mais cela présente également plusieurs limitations :
Les EOAs sont notoirement difficiles à sécuriser, d'autant plus que les acteurs malveillants font constamment évoluer de nouvelles façons de compromettre les clés privées. Chez MetaMask, nous avons été témoins directs des défis que posent le phishing, l'ingénierie sociale, l'usurpation d'identité, l'injection de malwares et des attaques similaires à la sécurité des utilisateurs dans le web3.
L'auto-custody peut ressembler à un sport extrême. Contrairement à votre compte bancaire habituel, vous ne pouvez pas « récupérer » un wallet EOA si la phrase secrète/clé privée est perdue. Cela représente un défi pour les nouveaux utilisateurs qui doivent faire face aux conséquences d'une perte totale des actifs détenus dans des comptes Ethereum sans aucun recours.
L'abstraction de signature résout ces problèmes en supprimant les signatures ECDSA comme mécanisme d'autorisation par défaut pour les comptes non-custodiaux. Les utilisateurs sont plutôt autorisés à définir des règles personnalisées pour autoriser les wallets à initier des transactions. Autrement dit, vous pouvez décider de ce qui rend une transaction valide.
La mise en œuvre de l'abstraction de signature ouvre des possibilités pour des schémas d'autorisation plus avancés. Ainsi, l'utilisation de votre wallet web3 sera similaire, voire meilleure, à une application bancaire web2. Voici quelques cas d'usage :
Limites de transaction : Un wallet lié à votre smart account peut rejeter une transaction (ou demander une autorisation supplémentaire) si la valeur dépasse une limite prédéfinie. Ça vous semble familier ? Normal — les banques le font déjà pour protéger vos comptes et cartes de crédit contre la fraude, l'utilisation non autorisée et d'autres raisons liées à la sécurité.
Approbations multi-parties : Vous pourriez déléguer un contrôle partiel de votre compte à des parties de confiance, aussi appelées « gardiens ». Les gardiens peuvent être des amis, des membres de la famille, des prestataires de services, ou même un appareil distinct que vous possédez (par exemple, un hardware wallet). Vous pouvez ainsi activer une authentification multi-facteurs (MFA) de style web2 pour votre wallet en exigeant l'approbation d'un gardien pour les transactions qui retirent des fonds de votre smart account.
Rotation et révocation de clés : Avec les smart accounts, vous pouvez générer une nouvelle clé de signature si la clé précédente a été perdue ou volée. Pour plus de sécurité, vous pouvez demander à des gardiens de geler votre compte pendant le processus de récupération et d'exiger leur approbation pour les flux de rotation/révocation de clés (c'est-à-dire la récupération sociale). C'est similaire à la façon dont vous pouvez bloquer votre carte de crédit si elle est égarée/volée sans perdre l'accès à votre compte bancaire.
Sessions de confiance : Vous n'aimez pas devoir approuver chaque action lorsque vous interagissez avec une dapp dans votre navigateur ? Parfait ! Vous pouvez créer des « clés de session » spéciales avec votre smart account pour que les dapps signent automatiquement les transactions pendant une période spécifique. Cela signifie que vous pouvez interagir avec des dapps — jouer à un jeu blockchain, par exemple — sans être constamment interrompu par des pop-ups de wallet.
À un niveau élevé, les clés de session sont basées sur un smart contract qui contrôle les interactions entre votre compte et une dapp. Vous avez toujours le contrôle des clés de session et pouvez réguler l'autorité de signature de la dapp, comme le montant qu'elle peut déduire de votre solde ou les fonctions qu'elle peut appeler.
Paiements automatiques : Similaire à l'idée des clés de session, vous pouvez autoriser des prestataires de services à « prélever » des fonds de votre smart account (sous réserve de règles prédéfinies). Cela permet de mettre en place des paiements récurrents et des abonnements avec votre wallet web3. Imaginez payer un abonnement Netflix ou une facture de services publics avec votre compte Ethereum !
Actuellement, chaque transaction Ethereum doit comporter des « frais de gas » indiquant combien l'EOA émetteur est prêt à payer pour l'exécution. Les frais de gas sont libellés en Ether, le token natif d'Ethereum. Cela crée des problèmes, notamment pour les nouveaux utilisateurs qui doivent se procurer de l'ETH avant d'envoyer leur transaction.
L'abstraction de compte n'élimine pas la nécessité de payer des frais de gas, mais elle abstrait les détails de la façon et du moment où les utilisateurs choisissent de payer le gas (abstraction de frais). Par exemple, l'abstraction de compte permet des « transactions sponsorisées » où un autre compte couvre le coût du gas pour la transaction d'un utilisateur. Quelques avantages des transactions sponsorisées :
Paiement de gas en tokens non-ETH : Avez-vous déjà souhaité pouvoir payer les frais de transaction avec des tokens ERC-20 dans votre wallet ? Avec les transactions sponsorisées, vous pouvez obtenir un relayer disposant d'ETH pour avancer le coût de vos transactions et le rembourser dans un autre token comme le DAI ou l'USDC.
Transactions sans gas : Les développeurs de dapps peuvent sponsoriser des transactions et minimiser les frictions d'intégration pour les nouveaux utilisateurs d'Ethereum. Vous pourriez essentiellement utiliser des applications web3 sans rien savoir du « gas » et profiter de la même expérience en un clic que celle offerte par les applications web2.
Connexions sociales : Une dapp pourrait déployer un contract wallet en votre nom, résolvant ainsi le problème de la configuration d'un wallet avant d'envoyer des transactions on-chain. Le meilleur ? Les wallets peuvent utiliser une infrastructure d'authentification (par exemple, Web3Auth et WebAuthn) pour permettre aux utilisateurs de créer des comptes web3 avec des identifiants existants comme une adresse e-mail ou un compte Facebook/Twitter.
Les smart accounts sur Ethereum ont une autre fonctionnalité spéciale : le regroupement de transactions (transaction batching). Avec les transactions regroupées, vous pouvez combiner plusieurs opérations en une seule transaction on-chain et réduire le coût et la complexité de l'interaction avec les dapps. Voici pourquoi le regroupement de transactions est important :
Votre EOA stocke une valeur connue sous le nom de « nonce » qui indique combien de transactions vous avez envoyées (pensez-y comme un compteur de transactions). Une nouvelle transaction doit strictement augmenter le nonce de 1 pour être valide — une règle qui empêche quelqu'un d'autre de « rejouer » la même transaction pour voler vos fonds (oui, ça peut arriver).
Mais il y a un inconvénient. Les nonces vous obligent à traiter les transactions selon le principe premier entré, premier sorti (FIFO). Imaginez que vous ayez deux transactions (A et B) avec des nonces de 0 et 1, respectivement. Dans ce cas, vous enverriez la transaction A et attendriez une confirmation (de son exécution) avant d'envoyer B.
Envoyer B alors que A est encore en attente entraînerait simplement le rejet de la première, car le nonce serait supérieur à la plage prescrite (nonce actuel de l'EOA + 1). En fait, c'est une raison majeure pour laquelle vous avez des « transactions bloquées » lors de l'utilisation d'un wallet.
L'abstraction de nonce vous permet de créer des mécanismes de protection contre le rejeu personnalisés (au lieu que le protocole Ethereum impose un ordre strict sur les transactions). Par exemple, vous pouvez avoir un schéma de nonce qui permet de traiter plusieurs transactions en parallèle. Cela résoudrait le problème des transactions bloquées et améliorerait considérablement les interactions avec les dapps.
Cela dit, l'abstraction de nonce est difficile à mettre en œuvre en pratique et peut potentiellement briser certains invariants critiques pour la sécurité et l'UX, comme l'unicité des hachages de transaction. C'est là qu'intervient le regroupement de transactions :
Puisque les smart accounts peuvent traiter plusieurs transactions à la fois, le besoin de schémas complexes d'abstraction de nonce disparaît en grande partie. Pour reprendre l'exemple précédent, imaginons que les transactions A et B ne sont que des parties d'une seule opération hypothétique comme l'échange d'actifs sur Uniswap :
Transaction A : Autoriser le contrat Uniswap à accéder à vos tokens
Transaction B : Finaliser l'échange de tokens
Avec le regroupement de transactions, vous pouvez combiner le flux d'approbation et d'échange en une seule transaction. Le résultat : des frais de gas réduits et des temps d'attente diminués lors de l'utilisation des dapps. Pas mal, non ?
À ce stade, vous savez déjà que l'abstraction de compte nous permet d'ajouter des fonctionnalités personnalisées et des politiques d'autorisation aux comptes utilisateurs. Mais nous n'avons pas vraiment abordé comment tout cela est possible. Cette section présente différentes approches pour mettre en œuvre l'abstraction sur Ethereum (si cela ne vous semble pas particulièrement attrayant, n'hésitez pas à passer à la section suivante).
Il existe deux façons généralement acceptées d'atteindre l'abstraction de compte : (a) permettre aux EOAs d'exécuter du code EVM et (b) autoriser les smart contracts à initier des transactions. Ainsi, vous constaterez que de nombreuses propositions d'abstraction de compte souhaitent soit que les EOAs se comportent comme des smart contracts, soit que les contract accounts agissent comme des EOAs.
Cela soulève naturellement quelques questions :
« En quoi ces approches sont-elles exactement différentes ? »
« Pourquoi l'approche que nous adoptons est-elle importante ? »
En donnant aux EOAs la capacité d'exécuter du code, nous pouvons ajouter des fonctionnalités complexes aux comptes contrôlés par les utilisateurs. Cela surpuissantise les EOAs et les transforme en smart accounts, ouvrant la voie à une abstraction de compte native. Il est important de noter que cette approche vous permet de profiter des avantages d'un wallet programmable sans avoir à supporter le coût du déploiement d'un nouveau contract account.
Certaines approches pour mettre à niveau les EOAs en contract accounts impliquent de traiter la charge utile de données des transactions EOA comme du bytecode EVM. D'autres impliquent de déléguer le contrôle d'un EOA à un account contract spécial qui effectue des transactions au nom de l'EOA. Dans ce dernier cas, le même account contract peut être réutilisé par différents EOAs, réduisant ainsi le besoin d'avoir différentes implémentations de contract wallet.
Voici une infographie montrant différentes propositions d'abstraction de compte dans le camp « rendre les EOAs programmables », y compris leurs caractéristiques clés et leur statut de mise en œuvre :
Avec cette approche, nous mettons à niveau les contract accounts afin qu'ils puissent approuver des transactions et payer des frais de gas (tout comme les EOAs). Cela offre une autre voie pour atteindre l'abstraction de compte en introduisant des « contrats surpuissants » qui peuvent agir comme des EOAs (c'est-à-dire des account contracts). De plus, cela résout un problème pressant dans Ethereum : l'absence de support pour les contract wallets au niveau du protocole.
En effet — certains smart contract wallets existent déjà aujourd'hui et offrent de nombreux avantages de l'abstraction de compte. Mais l'utilisation de ces wallets peut être incroyablement difficile car Ethereum traite les smart contracts comme des « citoyens de seconde classe » et exige que toutes les transactions démarrent depuis un EOA.
Cette limitation signifie également que les smart contract wallets manquent du caractère sans tiers de confiance et auto-custodial des wallets EOA comme MetaMask. Pour contextualiser, considérons le flux de création et d'utilisation d'un smart contract wallet :
Déployer un nouveau contract account
Envoyer des transactions pour appeler des fonctions sur votre wallet contract
Le problème est déjà évident : vous devez maintenant gérer deux wallets. Pourquoi ? Un EOA (pré-financé en ETH) doit couvrir les coûts de déploiement du wallet et d'appel des fonctions nécessaires par la suite.
Entrent en scène les relayers : des EOAs qui peuvent payer les transactions de votre wallet en échange d'une commission. Les fournisseurs de smart contract wallets gèrent souvent des relayers pour subventionner les transactions des utilisateurs. C'est-à-dire que le relayer paie de l'ETH depuis son wallet pour couvrir vos frais de transaction et récupère les coûts en vous facturant ailleurs — peut-être en monnaie fiduciaire ou dans un autre token.
Ce système fonctionne bien dans la plupart des cas : vous pouvez créer et utiliser un contract wallet sans trop vous soucier des subtilités du paiement du gas. Cependant, cela nécessite également de faire confiance au relayer pour ne pas censurer ou altérer vos transactions.
Mais c'est la crypto, et nous aimons les systèmes sans tiers de confiance.
En permettant aux contract accounts d'approuver des transactions et de payer des frais de gas, l'abstraction de compte rend le processus de création et d'utilisation d'un smart contract wallet plus trustless. Plus précisément, cela permet à quiconque exploite un relayer d'exécuter des transactions en votre nom. Il vous suffit de signer un message autorisant le relayer à déduire des fonds de votre solde de wallet après avoir exécuté la transaction :
Désormais, le flux d'utilisation d'un smart contract wallet est quelque peu différent :
Déployer un wallet contract ? En utilisant des flux de déploiement contrefactuels, vous pouvez envoyer des fonds au contract account avant de le déployer et payer l'EOA d'un relayer pour les coûts de déploiement depuis le solde de votre wallet.
Interagir avec un wallet contract ? Signez un message off-chain et demandez à un relayer d'effectuer l'appel à votre account contract. Le message inclura une instruction pour que l'account contract rembourse les coûts de gas du relayer.
Cette idée d'activer des smart accounts trustless et résistants à la censure sous-tend de nombreuses propositions d'abstraction de compte dans cette catégorie. Par exemple, l'ERC-4337 — la proposition d'abstraction de compte la plus populaire à ce jour — décentralise les relayers en introduisant un mempool alternatif où les utilisateurs peuvent soumettre des transactions de contract wallet pour traitement.
Dans ce cas, les relayers (appelés « bundlers ») peuvent se faire concurrence pour exécuter des transactions de smart account, réduisant ainsi le risque de censure ou de dépendance excessive envers les fournisseurs de wallets. Voici une infographie montrant différentes propositions d'abstraction de compte dans le camp « donner aux smart contracts les fonctionnalités des EOAs », y compris leurs caractéristiques clés et leur statut de mise en œuvre :
Des années après que Vitalik Buterin a introduit le concept pour la première fois, il subsiste encore quelques désaccords sur la meilleure façon de mettre en œuvre l'abstraction de compte. Par exemple, la mise en œuvre de l'EIP-3074 et de l'EIP-5003 permettrait aux EOAs existants (y compris les utilisateurs de MetaMask) de passer aux smart accounts. Mais ces propositions nécessitent un hard fork qui, compte tenu de l'attention de la communauté portée sur des mises à niveau plus urgentes, semble irréalisable pour l'instant.
En revanche, l'EIP-4337 a reçu un large soutien car elle met en œuvre l'abstraction de compte sans nécessiter de changements à grande échelle du protocole Ethereum. Mais pour les utilisateurs utilisant actuellement des wallets basés sur des EOAs, cela implique de devoir déplacer des actifs d'un EOA vers un contract account nouvellement déployé — un processus potentiellement complexe et coûteux, compte tenu des frais de gas élevés sur Ethereum aujourd'hui.
Chez MetaMask, nous pensons que l'abstraction de compte est essentielle pour offrir une expérience d'intégration fluide aux nouveaux utilisateurs du web3. Nous savons également que les EOAs ne peuvent pas garantir l'adoption de la crypto (« Le prochain milliard d'utilisateurs n'écrira pas 12 mots sur un papier », comme le dit avec éloquence Yoav Weiss, chercheur à l'Ethereum Foundation).
C'est pourquoi nous avons commencé à réfléchir à des moyens de délivrer les avantages de l'abstraction de compte sans compromettre le wallet MetaMask que les utilisateurs connaissent et apprécient. Une partie de cet effort consiste à se tourner vers MetaMask Snaps — la plateforme d'innovation sans permission qui permet aux développeurs de créer des fonctionnalités personnalisées sur l'infrastructure MetaMask existante.
En utilisant Snaps, les développeurs peuvent étendre les fonctionnalités de votre wallet MetaMask pour prendre en charge différents cas d'usage de l'abstraction de compte. Des clés de session aux intégrations complètes de smart accounts construites avec MetaMask — le tout développé avec Snaps — nous avons vu des développeurs relever le défi d'utiliser MetaMask pour démocratiser l'accès à l'abstraction de compte pour les utilisateurs.
La proposition actuelle d'abstraction de compte — même si elle est légèrement imparfaite — est un pas de géant vers la réalisation de smart accounts trustless et résistants à la censure sur Ethereum, et mérite un soutien suffisant. Pour citer l'une des nôtres, Taylor Monahan : « Une demi-solution livrée vaut mieux qu'une solution parfaite jamais livrée. »
C'est pourquoi notre prochain article sur le sujet de l'abstraction de compte prendra la forme d'une plongée en profondeur dans les détails de l'ERC-4337. Nous discuterons notamment de la façon dont les développeurs web3 peuvent commencer à construire l'avenir de l'abstraction de compte et intégrer le prochain milliard d'utilisateurs — une ligne de code à la fois — avec MetaMask.
Restez connectés !
Un grand merci à Patrick McCorry, Simon Brown, Mirko Garozzo, Christian Montoya, Oliver Renwick et Megan Dias pour leurs retours sur les versions antérieures de cet article. Ma gratitude va également à Clarissa Watson et Francesco Andreoli qui ont fourni des conseils et un soutien dans les premières étapes du projet.
Traduit par IA. Peut contenir des erreurs. Veuillez toujours vérifier les informations.