クロスチェーンスワップは、その過程に第三者(例: 両替サービス)が入ることなく、異なるブロックチェーン間でのトークントレードを可能にします。
Symbol は ハッシュタイムロックコントラクト (HTLC) プロトコルに従って、アセットの分散型交換のためにトラストレス環境を作成します。プロトコルはすべての参加者が同意した場合にスワップが行われることを保証します。それと引き換えに、参加者の一部が手順を完了させないと決めた場合、各参加者はロックされた資金を受け取ることになります。
HTLC はカウンターパーティーリスクの回避のために hashlocks と timelocks を使用します。トークンの交換に関わる各参加者はそれを完了させるために proof (hashlock) を示さなければなりません。それが失敗する場合、ロックされたアセットはタイムロックが解消された後、元の所有者へ返却されます。
プロトコルの詳細な説明は Bitcoin Wiki を参照してください。
Alice と Bob は 10 alice:tokens を 10 bob:tokens に交換したいと思っています。
課題は彼らが同じネットワークに存在していないことです: alice:token は Symbol のプライベートチェーン上に、一方で bob:token は Symbol のパブリックチェーン上に存在しています。
トークン間の技術的な違いにより、あるブロックチェーンから別のブロックチェーンへトークンを直接取引することは不可能です。 Symbol パブリックおよびプライベートチェーンの場合、同じモザイク名でも異なる定義と配布されていることも、存在しないこともあります。Bitcoin と Symbol の違いは、各ブロックチェーンがまったく異なるテクノロジーを使用しているためです。
文字通り、異なるチェーン間でトークンを転送する代わりに、各チェーン内で取引が行われます。クロスチェーンスワッププロトコルは、トークンスワップがアトミックに発生することを保証します。
スワップを開始する前に、すべての関与する参加者は、各ブロックチェーンで少なくとも 1 つのアカウントを所有している必要があります。
Alice は proof
と呼ばれるランダムなバイトを生成します。proof は 10
から 1000
バイトの間でなければなりません。
Alice は得られた proof を 利用可能なアルゴリズム の1つでハッシュ化して secret
を生成します。
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 へ返還されます。
Alice は TX1 をプライベートネットワークへアナウンス し Bob とシークレットを共有 します。
Bob はチェーンからシークレットを取得し、次の SecretLockTransaction TX2 を パブリックネットワーク へアナウンスします。
TX2 Property |
Value |
---|---|
タイプ |
SecretLockTransaction |
Mosaic |
10 bob.token |
Recipient |
Alice のアドレス (パブリックチェーン) |
Algorithm |
h |
Duration |
84 h |
Secret |
h(proof) |
Network |
Public Chain |
Alice は SecretProofTransaction TX3 を パブリックネットワーク へアナウンスします。このトランザクションは使用している暗号化アルゴリズム、オリジナルの証明とシークレットを定義します。
TX3 Property |
Value |
---|---|
タイプ |
SecretProofTransaction |
Recipient |
Alice のアドレス (パブリックチェーン) |
Algorithm |
h |
Secret |
h(proof) |
Proof |
proof |
Network |
Public Chain |
TX3 が承認されると proof が明かされます。TX2 トランザクションはアンロック されて Alice はロックされた資産を受け取ります。
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
を待機する必要があります。