Atomic Swap : qu’est-ce que c’est ?

Un atomic swap, ou échange atomique en français, est une manière décentralisée et sûre d’échanger des cryptomonnaies fonctionnant sur des chaînes de blocs différentes. L’adjectif “atomique” insiste sur la nature insécable de l’échange réalisé : soit les deux parties donnent ce qui est dû à l’autre, soit il ne se passe rien.

Le concept n’est pas nouveau : il avait déjà été décrit sur Bitcointalk en juillet 2012 et l’appellation “transfert atomique” était apparue dès mai 2013. Mais ce n’est qu’en 2017 qu’on a vu la technique se démocratiser, notamment avec le swap réalisé entre les chaînes de Bitcoin et de Litecoin mis en avant par Charlie Lee.

Quels problèmes résolvent les atomic swaps ?

Il peut exister de nombreuses raisons pour lesquelles un utilisateur souhaite procéder à un échange de cryptomonnaies : l’utilisateur peut vouloir utiliser une cryptomonnaie pour acheter un bien ou un service à quelqu’un qui accepte une monnaie différente de celle qu’il détient. Il peut aussi vouloir transférer un actif entre une chaîne latérale et une chaîne principale, comme un transfert de bitcoins de Liquid vers Bitcoin par exemple. Il est également possible qu’il désire se prémunir contre la volatilité en transférant sa valeur vers un stablecoin (comme le DAI). Enfin, la motivation de l’utilisateur peut être spéculative, ce qui le poussera à échanger du bitcoin contre un crypto-actif qu’il considère comme à fort potentiel.

Un échange peut se faire par le biais de platefomes d’échange centralisées. On peut citer les places de marché comme Kraken ou Binance, mais aussi les services d’échange direct comme Changelly ou SideShift. Néanmoins, si ces plateformes sont très utiles, elles souffrent de défauts intrinsèques à leur nature centralisée :

  • Les plus réglementées d’entre elles nécessitent une procédure d’identification et vos fonds peuvent se retrouver bloqués par la contrainte légale ;
  • Les moins réglementées peuvent tout simplement partir avec vos fonds : on l’a vu cette année avec Cobinhood ;
  • Ces plateformes peuvent également se faire pirater et ne jamais vous rembourser.

Dans le milieu des cryptomonnaies qui fonctionnent sans autorité centrale, ces plateformes forment les vestiges d’un autre temps, et c’est en toute logique qu’on a vu émerger des solutions permettant d’échanger ses actifs avec autrui sans passer par un tiers de confiance, notamment par ce qu’on appelle aujourd’hui les plateformes d’échange décentralisées.

Les plateformes décentralisées peuvent se fonder sur différents procédés, mais le modèle plus répandu est probablement celui qui se base sur une chaîne de référence unique. Le plus souvent ces plateformes permettent d’échanger uniquement les différents jetons émis sur la chaîne de référence : les plateformes IDEX ou KyberSwap fonctionnant sur Ethereum rentrent ainsi dans cette catégorie. Parfois, on peut retrouver d’autres actifs sur ces plateformes à l’aide d’un processus de tokénisation comme le WBTC (“Wrapped Bitcoin”) sur Ethereum ou le BTCB sur le Binance DEX.

Toutefois, ce procédé souffre lui-aussi de défauts inhérents :

  • L’utilisation de ces plateformes requiert généralement de détenir du (crypto-)carburant permettant de payer les frais de transaction : de l’éther (ETH) pour les plateformes fonctionnant sur Ethereum par exemple. Ceci est problématique si on ne dispose que d’un seul crypto-actif que l’on souhaite échanger contre un autre.
  • Si l’on souhaite échanger des actifs qui fonctionnent sur des chaînes différentes, on est obligé de passer par des produits de substitution, comme le WBTC dont la valeur est indexée sur celle du Bitcoin. Outre le risque systémique parfois lié à ces actifs tokénisés, cette solution ne convient que pour un usage spéculatif et ne s’adresse qu’aux traders.
  • Enfin ces plateformes sont parfois très difficiles à utiliser : l’interaction avec les différentes contrats peut s’avérer ardue.

C’est dans ce contexte qu’interviennent les atomic swaps, appelés échanges atomiques en français, qui permettent des échanges décentralisés entre les différentes chaînes de blocs.

Comment fonctionnent-ils ?

Comme on l’a dit, les échanges atomiques sont “atomiques” dans le sens où ils sont insécables (en grec ancien ἄτομος, átomos qui a donné le nom atome par la suite) : soit les deux parties de l’échange se font, soit l’échange ne se produit pas du tout. Il est ainsi théoriquement impossible pour un participant de percevoir les fonds de l’autre sans fournir la contrepartie nécessaire.

Ces échanges se fondent sur la programmabilité de la monnaie, chose qu’on retrouve dans Bitcoin et dans la plupart des protocoles crypto-économiques : ils se basent donc sur des contrats autonomes (smart contracts) en charge de procéder à l’échange si les deux participants respectent leur engagement, et de les rembourser si quelque chose se passe mal.

Pour comprendre comment les atomic swaps fonctionnent, voyons un peu ce qui se passe dans le cas d’un exemple simple : un échange atomique se produisant entre la chaîne de Bitcoin et celle de Litecoin.

Supposons qu’une personne, nommée Alice conformément à l’usage en cryptographie, possède des bitcoins (BTC) et qu’elle souhaite obtenir des litecoins (LTC). De l’autre côté, disons qu’un autre personnage, appelé Bob, est propriétaire de 10 litecoins qu’il veut échanger contre des bitcoins. Ils rentrent en contact tous les deux et décident d’un taux de change de 0,006 LTC par BTC : Bob pourra donc obtenir 0,06 bitcoins en échange de ses 10 litecoins.

Transactions de l'échange atomique
Transactions impliquées dans l’échange atomique.

La première phase de l’échange est la phase d’engagement où les deux participants s’impliquent tous les deux. Pour ce faire, chacun crée un contrat autonome appelé HTLC (Hash Time Locked Contract) dans lequel les fonds seront bloqués. L’un de ces contrats sur trouve sur Bitcoin et l’autre sur Litecoin, mais ils sont relativement similaires dans leur manière de fonctionner. Dans un HTLC, deux cas de figures sont possibles :

  • Le cas de l’accord mutuel : les fonds sont déverrouillés grâce à la révélation d’un secret qui est haché par une fonction de hachage et comparé à l’empreinte (hash) inscrite dans le contrat ;
  • Le cas du litige : quelqu’un ne respecte pas sa part de l’accord et les fonds sont remboursés au terme d’un temps (time) de verrouillage plus ou moins long.

D’où le nom de Hash Time Locked Contract.

Avant toute chose donc, Alice choisit au hasard un secret (noté s) qui n’est en réalité qu’un nombre de 32 octets. Elle fournit l’empreinte H(s) de ce secret à Bob. Ils pourront ainsi tous deux construire un contrat de leur côté pour effectuer l’échange atomique.

D’abord, Alice construit et signe une transaction d’engagement (1) envoyant 0,06 bitcoins vers le contrat sur la chaîne de Bitcoin, et fournit la contenu et l’adresse de son contrat à Bob qui pourra s’assurer que tout est en ordre. Puis, elle construit et signe une transaction de remboursement (2) dépensant les fonds de ce contrat qu’elle pourra diffuser après un délai prédéfini (ici 16 heures).

Ensuite, une fois que la transaction d’engagement d’Alice a été confirmée, Bob fait de même de son côté : il crée un contrat équivalent sur Litecoin où il envoie 10 litecoins (3) et donne l’adresse et le contenu à Alice pour qu’elle s’assure que tout est en ordre. Enfin, il construit et signe une transaction (4) qui le remboursera au bout d’un délai strictement inférieur à celui de la transaction d’Alice : ici 8 heures. Cette différence résulte du rapport déséquilibré qui existe entre Alice (qui connaît le secret de déblocage) et Bob (qui ne l’a pas).

Lorsque les transactions d’engagement ont toutes deux été confirmées sur leurs chaînes respectives, la seconde phase de l’échange atomique peut commencer : on l’appellera la phase de collecte. Alice signe et diffuse sa transaction de collecte (5) récupérant les 10 litecoins de Bob. Pour cela, elle doit fournir le secret au sein de la transaction et, ce faisant, le révèle nécessairement à Bob. Finalement, Bob peut lui-aussi construire, signer et diffuser la transaction (6) lui octroyant les 0,06 bitcoins sur son compte. De cette manière, Alice et Bob se retrouvent en possession des fonds qu’ils désiraient en premier lieu !

Ce modèle garantit que :

  • Aucun des deux participants ne peut se remboursement avant la fin du temps de verrouillage de Bob (8 heures ici) ;
  • Si Alice diffuse sa transaction de collecte juste avant la fin de ce temps imparti, elle ne pourra pas faire valoir sa transaction de remboursement dans le même temps (à cause du temps de verrouillage supérieur) ;
  • Bob ne peut pas s’emparer des bitcoins d’Alice tant qu’elle n’a pas révélé le secret (chose qu’elle doit obligatoirement faire au sein de sa transaction de collecte).

Notez que les temps de verrouillage sont arbitraires et peuvent être allongés en fonction des temps moyens de confirmation des deux chaînes.

Comment réaliser un atomic swap en pratique ?

Les échanges atomiques ne sont pas faciles à mettre en place dans la réalité et demandent une communication entre deux personnes. Aujourd’hui, les manières de faire des échanges atomiques sont donc plutôt rares mais elles existent.

La manière la plus simple d’effectuer un échange atomique est probablement d’utiliser le portefeuille AtomicDEX développé par l’équipe derrière la plateforme Komodo. Au sein de ce portefeuille on peut retrouver un carnet d’ordres dont la liquidité n’est pas nulle. Notez que le portefeuille est actuellement en bêta ouverte et peut faire l’objet de quelques dysfonctionnements.

Le portefeuille AtomicDEX permet de gérer et d’échanger une multitude de crypto-actifs différents. D’abord, il supporte par défaut le Komodo (KMD) ainsi que les jetons les plus importants de l’écosystème Komodo comme le RedFOX (RFOX). Ensuite, il intègre bien évidemment le Bitcoin (BTC) et les autres cryptomonnaies apparentées telles que le Litecoin (LTC), le Bitcoin Cash (BCH), le Dash (DASH) ou encore le Zcash (ZEC). Enfin, il supporte l’éther (ETH), le Basic Attention Token (BAT), et d’autres jetons ERC-20 comme les stable coins USDC et DAI.

Exemple d'échange atomique KMD BCH au sein du portefeuille AtomicDEX
Exemple d’échange atomique KMD / BCH au sein du portefeuille AtomicDEX.

Conclusion

Ainsi, l’échange atomique constitue un protocole d’échange simple et décentralisé, qui, une fois correctement standardisé, pourrait bien s’intégrer au sein de solutions centralisées et décentralisées. Il n’est pas encore bien développé et souffre en conséquence d’un manque évident de liquidité. Néanmoins, au vu de la hausse de la réglementation et de la surveillance autour des plateformes d’échange, on peut s’attendre à que l’utilisation de ce type de procédé grandisse considérablement à l’avenir.

N.B. : Pour cet article, je me suis basé sur les explications fournies par Pierre Noizat dans son article Atomic swaps, un protocole étape par étape publié en février 2019, ainsi que sur mon expérience avec le portefeuille AtomicDEX.

Ludovic Lars

Je suis fasciné par les cryptomonnaies et par l'impact qu'elles pourraient avoir sur nos vies. De formation scientifique, je m'attache à décrire leur fonctionnement technique de la façon la plus fidèle possible.