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

設定:

  1. 只有 Bob 才能解鎖
  2. 要有 Alice 事先準備好的 secret 才能解鎖 (Hash Lock)

Bob 在 B 鏈上的 1 個 HTLC 鎖定 b

設定:

  1. 只有 Alice 才能解鎖
  2. 要有 Alice 的那個同一個 secret 才能解鎖 (Hash Lock)

Alice 解鎖 b 的同時,Bob 也會知道 secret,於是也可以解鎖 a

如果 Alice 沒解鎖怎麼辦

Alice 沒有及時解鎖 b

Bob 拿回 b

Alice 在 A 鏈上的 1 個 HTLC 鎖定 a

設定:

  1. 解鎖到期時間 (Time Lock)
  2. Bob 可以在到期前用 secret 解鎖 (Hash Lock)
  3. 到期未解鎖,Alice 可以拿回 a

Bob 在 B 鏈上的 1 個 HTLC 鎖定 b

設定:

  1. 解鎖到期時間 (Time Lock)
  2. Alice 可以在到期前用 secret 解鎖 (Hash Lock)
  3. 到期未解鎖,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