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 S
ethB ---(13 eth, H) ---> escrow smart contract
- user
A
redeem ses eth et pour ce faire doit dévoiler le secret S
ethA ---(redeem, S) ---> escrow smart contract
escrow 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
A
possède un wallet sur EthereumethA
et sur bitcoinbtcA
- user
B
possède un wallet sur EthereumethB
et 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
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 secretS
qu’il hash tel queH = 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 secretS
telque quehash(S) = H
Bien sûr à cette etape,B
ne connait pas ce secretS
mais uniquement son hashH
- user
B
envoie 13 eth sur un smart contract (escrow) qui fonctionne comme un HTLC c’estA
dire que les eth ne peuvent etre redeem parA
que si il soumet le secretS
ethB ---(13 eth, H) ---> escrow smart contract
- user
A
redeem ses eth et pour ce faire doit dévoiler le secretS
ethA ---(redeem, S) ---> escrow smart contract
escrow smart contract --- (13 eth) ---> ethA
- Le secret
S
est maintenant dévoilé et public sur la chaîne ethereum,B
peut alors utiliser ceS
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 !
Échangez avec la communauté en direct, suivez nos actualités et inscrivez-vous à nos futurs évènements