クロスチェーンスワップ

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

../_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 を待機する必要があります。

ガイド

次へ: 暗号手法