クロスチェーンスワップ

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

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

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

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

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

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

プロトコル

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

The problem is that they are not in the same network: alice.token is defined in a private chain using Symbol tech, whereas bob.token is only present in Symbol’s public chain.

Trading tokens directly from one blockchain to the other is impossible due to the technological differences between them. In the case of Symbol public and private chain, the same mosaic name could have a different definition, distribution, or even not exist. Between Bitcoin and Symbol, the difference is even more evident, as each blockchain uses an entirely different technology.

Instead of transferring tokens between different chains literally, the trade will be performed inside each chain. The cross-chain swap protocol ensures that the token swap occurs atomically.

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

Before starting with the swap, all participants involved in the swap must own at least an account in each blockchain.

  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

The process is atomic but should be completed with lots of time before the deadlines:

  • TX1 の期間は TX2 の期間より大幅に長くして、最初の参加者が proof を公開した後に、2番目の参加者が TX1 のロックを解除する時間を確保する必要があります。
  • transaction rollbacks を回避するには、各参加者のアナウンス間に少なくとも maxRollBackBlocks を待機する必要があります。

ガイド

次へ: 暗号手法