Principe de fonctionnement d'un Atomic Cross-Chain Swap
Marlinski Publié le
03/05/2022
A l’occasion de mon test personnel de Atomex, voici quelques explications sur le principe de fonctionnement d’un ACCS, un Atomic Cross-Chain Swap.
ACCS : Atomic Cross-Chain Swap
Le principe d’un atomic cross chain swap est de pouvoir procéder A un exchange cross chain (genre de l’eth contre du btc) sans passer par un tiers de confiance et sans possibilité que ceux-ci soient perdu.
Pour comprendre prenons d’abord la situation d’un non-atomic cross chain swap:
- user
A possède un wallet sur Ethereum ethA et sur bitcoin btcA - user
B possède un wallet sur Ethereum ethB et sur bitcoin btcB
Le principe d’un swap c’est que par exemple A va échanger 1 BTC avec B en échange de 13 ethereum.
Une procédure non-atomic serait celle ci:
- user
A envoie 1 btc à B: btcA ----(1 btc)----> btcB - user
B envoie 13 eth à A: ethB ----(13 eth)---> ethA
Le problème c’est que si l’utilisateur B est malhonnête, une fois reçu le bitcoin à l’étape 1 il peut décider de ne pas continuer l’étape 2 et de ne pas envoyer les eth.
A ne peut rien faire car une fois les btc envoyés, c’est foutu!
La solution c’est de conditionner les transactions en les lockant avec un secret et cela est possible avec un script btc hashed timelock contract (HTLC).
Un atomic cross chain swap fonctionne donc de la facon suivante:
- user
A choisit un secret S qu’il hash tel que H = hash(S) - user
A envoie 1 btc à B qu’il conditionne avec un HTLC :btcA ----(1 btc; HTLC(H)) ---> btcB- le principe c’est que
B ne pourra “redeem” (c’est-à-dire utiliser) ce bitcoin que si il soumet le secret S telque que hash(S) = H
Bien sûr à cette etape, B ne connait pas ce secret S mais uniquement son hash H
- user
B envoie 13 eth sur un smart contract (escrow) qui fonctionne comme un HTLC c’est A dire que les eth ne peuvent etre redeem par A que si il soumet le secret SethB ---(13 eth, H) ---> escrow smart contract
- user
A redeem ses eth et pour ce faire doit dévoiler le secret SethA ---(redeem, S) ---> escrow smart contractescrow smart contract --- (13 eth) ---> ethA
- Le secret
S est maintenant dévoilé et public sur la chaîne ethereum, B peut alors utiliser ce S pour “débloquer” sa transaction et redeem son bitcoin
Le principe fonctionne pour n’importe quel chaîne pour laquelle il est possible d’implementer cette fonction de HTLC !
A l’occasion de mon test personnel de Atomex, voici quelques explications sur le principe de fonctionnement d’un ACCS, un Atomic Cross-Chain Swap.
ACCS : Atomic Cross-Chain Swap
Le principe d’un atomic cross chain swap est de pouvoir procéder A un exchange cross chain (genre de l’eth contre du btc) sans passer par un tiers de confiance et sans possibilité que ceux-ci soient perdu.
Pour comprendre prenons d’abord la situation d’un non-atomic cross chain swap:
- user
Apossède un wallet sur EthereumethAet sur bitcoinbtcA - user
Bpossède un wallet sur EthereumethBet sur bitcoinbtcB
Le principe d’un swap c’est que par exemple A va échanger 1 BTC avec B en échange de 13 ethereum.
Une procédure non-atomic serait celle ci:
- user
Aenvoie 1 btc àB:btcA ----(1 btc)----> btcB - user
Benvoie 13 eth àA:ethB ----(13 eth)---> ethA
Le problème c’est que si l’utilisateur B est malhonnête, une fois reçu le bitcoin à l’étape 1 il peut décider de ne pas continuer l’étape 2 et de ne pas envoyer les eth.
A ne peut rien faire car une fois les btc envoyés, c’est foutu!
La solution c’est de conditionner les transactions en les lockant avec un secret et cela est possible avec un script btc hashed timelock contract (HTLC). Un atomic cross chain swap fonctionne donc de la facon suivante:
- user
Achoisit un secretSqu’il hash tel queH = hash(S) - user
Aenvoie 1 btc àBqu’il conditionne avec un HTLC :btcA ----(1 btc; HTLC(H)) ---> btcB- le principe c’est que
Bne pourra “redeem” (c’est-à-dire utiliser) ce bitcoin que si il soumet le secretStelque quehash(S) = HBien sûr à cette etape,Bne connait pas ce secretSmais uniquement son hashH
- user
Benvoie 13 eth sur un smart contract (escrow) qui fonctionne comme un HTLC c’estAdire que les eth ne peuvent etre redeem parAque si il soumet le secretSethB ---(13 eth, H) ---> escrow smart contract
- user
Aredeem ses eth et pour ce faire doit dévoiler le secretSethA ---(redeem, S) ---> escrow smart contractescrow smart contract --- (13 eth) ---> ethA
- Le secret
Sest maintenant dévoilé et public sur la chaîne ethereum,Bpeut alors utiliser ceSpour “débloquer” sa transaction et redeem son bitcoin
Le principe fonctionne pour n’importe quel chaîne pour laquelle il est possible d’implementer cette fonction de HTLC !



Échangez avec la communauté en direct, suivez nos actualités et inscrivez-vous à nos futurs évènements