クロスチェーンスワップ

クロスチェーンスワップは、その過程に第三者(例: 両替サービス)が入ることなく、異なるブロックチェーン間でのトークントレードを可能にします。

../_images/cross-chain-swap.png

パブリックとプライベート間のクロスチェーン交換

Symbol は ハッシュタイムロックコントラクト (HTLC) プロトコルに従って、アセットの分散型交換のためにトラストレス環境を作成します。プロトコルはすべての参加者が同意した場合にスワップが行われることを保証します。それと引き換えに、参加者の一部が手順を完了させないと決めた場合、各参加者はロックされた資金を受け取ることになります。

HTLC はカウンターパーティーリスクの回避のために hashlockstimelocks を使用します。トークンの交換に関わる各参加者はそれを完了させるために proof (hashlock) を示さなければなりません。それが失敗する場合、ロックされたアセットはタイムロックが解消された後、元の所有者へ返却されます。

プロトコルの詳細な説明は Bitcoin Wiki を参照してください。

プロトコル

Alice と Bob は 10 alice:tokens を 10 bob:tokens に交換したいと思っています。

課題は彼らが同じネットワークに存在していないことです: alice:token は Symbol のプライベートチェーン上に、一方で bob:token は Symbol のパブリックチェーン上に存在しています。

トークン間の技術的な違いにより、あるブロックチェーンから別のブロックチェーンへトークンを直接取引することは不可能です。 Symbol パブリックおよびプライベートチェーンの場合、同じモザイク名でも異なる定義と配布されていることも、存在しないこともあります。Bitcoin と Symbol の違いは、各ブロックチェーンがまったく異なるテクノロジーを使用しているためです。

文字通り、異なるチェーン間でトークンを転送する代わりに、各チェーン内で取引が行われます。クロスチェーンスワッププロトコルは、トークンスワップがアトミックに発生することを保証します。

sequenceDiagram participant Alice participant Private Chain participant Public Chain participant Bob Note over Alice: proof = 'random' Note over Alice: h = sha_256() Note over Alice: secret = h(proof) Alice ->> Private Chain: announces TX1(secret) Note right of Alice: TX1 waits for proof Alice -->> Bob: tells secret Bob ->> Public Chain: announces TX2(secret) Note left of Bob: TX2 waits for proof Alice ->> Public Chain: announces TX3(proof, secret) Note left of Public Chain: proof becomes public Note left of Bob: TX2 executes Note left of Bob: Alice receives funds Bob ->> Private Chain: announces TX4(proof, secret) Note right of Alice: TX1 executes Note right of Alice: Bob receives funds

Cross-chain swap sequence diagram

スワップを開始する前に、すべての関与する参加者は、各ブロックチェーンで少なくとも 1 つのアカウントを所有している必要があります。

  1. Alice は proof と呼ばれるランダムなバイトを生成します。proof は 10 から 1000 バイトの間でなければなりません。

  2. Alice は得られた proof を 利用可能なアルゴリズム の1つでハッシュ化して secret を生成します。

  3. Alice は SecretLockTransaction TX1 を定義します:

TX1 Property

Value

タイプ

SecretLockTransaction

Mosaic

10 alice.token

Recipient

Bob のアドレス (プライベートチェーン)

Algorithm

h

Duration

96 h

Secret

h(proof)

Network

Private Chain

度アナウンスされると、誰かがシークレットにマッチする証明を発見するまで、このトランザクションはロックされたままです。もしセットされた期限よりも前に、誰もアンロックしない場合は、ロックされた資産は Alice へ返還されます。

  1. Alice は TX1 をプライベートネットワークへアナウンスBob とシークレットを共有 します。

  2. Bob はチェーンからシークレットを取得し、次の SecretLockTransaction TX2パブリックネットワーク へアナウンスします。

TX2 Property

Value

タイプ

SecretLockTransaction

Mosaic

10 bob.token

Recipient

Alice のアドレス (パブリックチェーン)

Algorithm

h

Duration

84 h

Secret

h(proof)

Network

Public Chain

  1. Alice は SecretProofTransaction TX3パブリックネットワーク へアナウンスします。このトランザクションは使用している暗号化アルゴリズム、オリジナルの証明とシークレットを定義します。

TX3 Property

Value

タイプ

SecretProofTransaction

Recipient

Alice のアドレス (パブリックチェーン)

Algorithm

h

Secret

h(proof)

Proof

proof

Network

Public Chain

  1. TX3 が承認されると proof が明かされます。TX2 トランザクションはアンロック されて Alice はロックされた資産を受け取ります。

  2. Bob は proof を手に入れて SecretProofTransaction TX4プライベートネットワーク へアナウンスし、ロックされた資産を TX1 から受け取ります。

TX4 Property

Value

タイプ

SecretProofTransaction

Recipient

Bob のアドレス (プライベートチェーン)

Algorithm

h

Secret

h(proof)

Proof

proof

Network

Private Chain

このプロセスはアトミックですが、デッドラインを迎える前に完了するまで、多くの時間がかかることになります:

  • TX1 の期間は TX2 の期間より大幅に長くして、最初の参加者が proof を公開した後に、2番目の参加者が TX1 のロックを解除する時間を確保する必要があります。

  • transaction rollbacks を回避するには、各参加者のアナウンス間に少なくとも maxRollBackBlocks を待機する必要があります。