クロスチェーンスワップ

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

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

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

トラストレスな交換環境を作るために、特定のトランザクションが要求されます。一般的に Hashed TimeLock Contract (HTLC)と呼ばれる特定のトランザクションタイプが必要です。このトランザクションタイプは ハッシュロックタイムロック の2つの追加コンポーネントによって特徴付けられます。徹底した説明は Bitcoin Wiki で閲覧できます。

つまり、カウンターパーティーリスクを軽減させるために、支払の受信者はトランザクションを実行するための証拠を提示する必要があります。それに失敗した場合、1人のアクタだけが同意しなくても、期限に到達した後にロックファンドはリリースされます。

プロトコル

Alice と Bob は 10 alice:tokens を 10 bob:tokens に交換したいと思っています。課題は彼らが同じブロックチェーン上に存在していないことです: alice:token は Catapult のパブリックチェーン上に、一方で bob:token は Catapult テクノロジーによるプライベートネットワーク上に定義されています。

注釈

Catapult のプライベートと将来のパブリックチェーンは SDK を共有しています。 シークレットロック/プルーフメカニズム が許可されているなら、別のテクノロジーによるブロックチェーン間でもアトミックスワップを実装できるでしょう。

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

Atomic cross-chain swap sequence diagram

  1. Alice は proof と呼ばれるランダムなバイトを生成します。proof は 10 から 1000 バイトの間でなければなりません。
  2. Alice は得られた proof を 利用可能なアルゴリズム の1つでハッシュ化して secret を生成します。
  3. Alice は SecretLockTransaction TX1 を定義します:
  • モザイク: 10 alice token
  • 受信者: Bob のアドレス (プライベートチェーン )
  • アルゴリズム: h
  • シークレット: h(proof)
  • 期間: 96h
  • ネットワーク: プライベートチェーン
  1. Alice は TX1 をプライベートネットワークへアナウンスBob とシークレットを共有 します。
  2. Bob は以下の SecretLockTransaction TX2パブリックネットワーク へアナウンスします。
  • モザイク: 10 bob token
  • 受信者: Alice のアドレス (パブリックチェーン )
  • アルゴリズム: h
  • シークレット: h(proof)
  • 期間: 84h
  • ネットワーク: パブリックチェーン

注釈

資産をアンロックできる時間は、TX1 のタイムフレームよりも短くする必要があります。Alice はシークレットを知っていて、Bob はそれを確信しているので、Alice がシークレットを公開したあとに、彼にはいくらかの時間があるでしょう。

  1. Alice は SecretProofTransaction TX3パブリックネットワーク へアナウンスします。このトランザクションは使用している暗号化アルゴリズム、オリジナルの証明とシークレットを定義します。
  2. TX3 が承認されると proof が明かされます。TX2 トランザクションはアンロック されて Alice はロックされた資産を受け取ります。
  3. Bob は proof を手に入れて SecretProofTransaction TX4プライベートネットワーク へアナウンスし、ロックされた資産を TX1 から受け取ります。

ガイド

Transaction schemas

SecretLockTransaction

2 つのアカウント間でモザイクを転送するにはSecretLockTransactionを使用します。特定のモザイクは妥当な SecretProofTransaction がそれらをアンロックするまで、ロックされたままになります。

トランザクションが証明されずに期間に到達した場合、ロックされた総量はSecretLockTransactionを開始したアカウントへ戻ります。

バージョン: 0x01

EntityType: 0x4152

インライン

プロパティ タイプ 説明
secret Hash256 ハッシュ化された証明
mosaic UnresolvedMosaic ロックされたモザイク
duration BlockDuration ロックを有効にするブロックの数。期間は 30 日までが許可されています。到達した場合はモザイクが開始者へ返還されます。
hashAlgorithm LockHashAlgorithm proof に使用されているハッシュアルゴリズム
recipientAddress UnresolvedAddress ロック解除後、ファンドを受け取るアドレス

SecretProofTransaction

SecretProofTransactionは SecretLockTransactions のアンロックに使用します。

トランザクションはモザイクをアンロックするための proof を証明しなければなりません。

バージョン: 0x01

EntityType: 0x4252

インライン

プロパティ タイプ 説明
secret Hash256 ハッシュ化された証明
proofSize uint16 バイト換算のプルーフサイズ
hashAlgorithm LockHashAlgorithm proof に使用されているハッシュアルゴリズム
recipientAddress UnresolvedAddress ロック解除後、ファンドを受け取るアドレス
proof array(byte, proofSize) 元のランダムなバイト列

LockHashAlgorithm

サポートされているハッシュアルゴリズムのリスト

Enumeration: uint8

Id 説明
0 (Op_Sha3_256) SHA3-256 によってハッシュ化された proof
1 (Op_Keccak_256) Keccak によってハッシュ化された proof (ETH 互換)
2 (Op_Hash_160) 最初に SHA-256 を、その後 RIPEMD-160 によって2回のハッシュ化された proof (bitcoin’s OP_HASH160)
3 (Op_Hash_256) SHA-256 によって2回のハッシュ化されたproof (bitcoin’s OP_HASH256)

次へ: 暗号手法