Atomic Swap
微介紹
如果要把 A 鏈的 a 換成 B 鏈的 b
比較中心化的做法(一些跨鏈橋)
A B 兩條鏈都設定 smart contract
公正 (?) 第三方
確認交易結果、
執行 B 上的 contract
•
•
•
•
•
•
•
•
•
•
•
•
B chain
b transfered
•
•
•
•
•
•
•
•
•
•
•
•
A chain
a locked
Atomic Swap
不需要公正第三方確認交易
利用 Hash Time Locked Contract (HTLC)
Alice 在時 B 鏈上解鎖 b (公布 secret)
Bob 看到 secret,也在 A 鏈上解鎖 a
Alice 在 A 鏈上的 1 個 HTLC 鎖定 a
設定:
- 只有 Bob 才能解鎖
- 要有 Alice 事先準備好的 secret 才能解鎖 (Hash Lock)
Bob 在 B 鏈上的 1 個 HTLC 鎖定 b
設定:
- 只有 Alice 才能解鎖
- 要有 Alice 的那個同一個 secret 才能解鎖 (Hash Lock)
Alice 解鎖 b 的同時,Bob 也會知道 secret,於是也可以解鎖 a
如果 Alice 沒解鎖怎麼辦
Alice 沒有及時解鎖 b
Bob 拿回 b
Alice 在 A 鏈上的 1 個 HTLC 鎖定 a
設定:
- 解鎖到期時間 (Time Lock)
- Bob 可以在到期前用 secret 解鎖 (Hash Lock)
- 到期未解鎖,Alice 可以拿回 a
Bob 在 B 鏈上的 1 個 HTLC 鎖定 b
設定:
- 解鎖到期時間 (Time Lock)
- Alice 可以在到期前用 secret 解鎖 (Hash Lock)
- 到期未解鎖,Bob 可以拿回 b
Alice 拿回 a
Atomic Swap
(Bob)
Unlock a
with secret S
(Alice)
Unlock b
with secret S
(Bob)
Lock b
with secret S and time T
(Alice)
Lock a
with secret S and time T
(Alice)
準備 secret S
T
Atomic Swap
(Bob)
Unlock b
(Bob)
Lock b
with secret S and time T
(Alice)
Lock a
with secret S and time T
(Alice)
準備 secret S
T
(Alice)
Unlock a
有問題嗎
(Bob)
Lock b
with secret S and time T
(Alice)
Lock a
with secret S and time T
(Alice)
準備 secret S
T
有
(Bob)
OOXX
(Alice)
Unlock b
with secret S
可以修改一下
(Bob)
Lock b
with secret S and time T2
(Alice)
Lock a
with secret S and time T1
(Alice)
準備 secret S
(Bob)
Unlock a
with secret S
(Alice)
Unlock b
with secret S
T1
T2
有問題嗎
有
T2
T1
(Alice)
準備 secret S
(Alice)
Lock a
with secret S and time T1
(Bob)
Lock b
with secret S and time T2
(Alice)
Unlock b
with secret S
(Bob)
OOXX
(Bob 網路壞掉)
要解決這個問題
需要知道另一個鏈發生什麼事,或是沒發生什麼事
要能夠在 A 鏈上確認 B 鏈的交易、
在 B 鏈上確認 A 鏈的交易
很貴、很麻煩
需要設計 Light Clients 並整合到鏈的執行層
參考資料
Atomic Swap
By luyunghsien
Atomic Swap
- 374