本稿について
COSMOSのホワイトペーパー、最終更新日: 2018/4/7時点のものを対象とします。本稿では「Appendix」の日本語訳を掲載します。
原文はこちらになります。
スポンサードサーチ
Appendix(続き)
IBCパケット伝送確認応答
送信者が受信チェーンによるパケット伝送確認応答を求める理由はいくつかある。例えば、宛先チェーンが故障していると思われる場合、送信者は宛先チェーンのステータスが分からないかもしれない。あるいは宛先チェーンがパケット数の急上昇を伴うDoS攻撃を受けている一方で、送信者はパケットに対してタイムアウトを設けたい(「MaxHeight」パケットフィールドで設定)と思っているかもしれない。
こういった場合は、送信者は初期パケットステータスを「AckPending」にすることで伝送確認応答を必須とすることが可能だ。そして、アプリケーションのマークルハッシュに簡略化した「IBCPacket」を含めることでメッセージ伝送の確認を行うのは受信チェーンの責務となる。
まず、"Zone1"上に「IBCPacket」が存在することを示す証明する「IBCBlockCommit」と「IBCPacketTx」が"Hub"に送信される。「IBCPacketTx」は次の値を持つとしてみよう(筆者注:図の左側のZone1からHubへ伸びている2つの矢印の中身を例示するもの)。
- FromChainID:"Zone1"
- FromBlockHeight:100(とする)
- Packet:IBCPacketを1つ
- Header:IBCPacketHeaderを1つ
- SrcChainID:"Zone1"
- DstChainID:"Zone2"
- Number:200(とする)
- Status:AckPending
- Type:"coin"
- MaxHeight:350("Hub"は現在ブロック高300とする)
- Payload:<"coin"ペイロードのバイト>
- Header:IBCPacketHeaderを1つ
次に、"Hub"上に「IBCPacket」が存在することを示す証明する「IBCBlockCommit」と「IBCPacketTx」が"Zone2"に送信される。「IBCPacketTx」は次の値を持つとしてみよう(筆者注:図の右側上段のHubからZone2へ伸びている2つの矢印の中身を例示するもの)。
- FromChainID:"Zone2"
- FromBlockHeight:300
- Packet:IBCPacketを1つ
- Header:IBCPacketHeaderを1つ
- SrcChainID:"Zone1"
- DstChainID:"Zone2"
- Number:200
- Status:AckPending
- Type:"coin"
- MaxHeight:350
- Payload:<"coin"ペイロードと等しいバイト>
- Header:IBCPacketHeaderを1つ
続いて"Zone2"はそのアプリケーションハッシュに「AckSent」の新しいステータスを表す簡略化パケットを含んでいならない。"Zone2"上に簡略化「IBCPacket」が存在することを示す証明する「IBCBlockCommit」と「IBCPacketTx」が"Hub"に送り返される。「IBCPacketTx」は次の値を持つとしてみよう(筆者注:図の右側中段のZone2からHubへ伸びている2つの矢印の中身を例示するもの)。
- FromChainID:"Zone2"
- FromBlockHeight:400(とする)
- Packet:IBCPacketを1つ
- Header:IBCPacketHeaderを1つ
- SrcChainID:"Zone1"
- DstChainID:"Zone2"
- Number:200
- Status:AckSent
- Type:"coin"
- MaxHeight:350
- Payload:<同じ"coin"ペイロードのハッシュのバイト>
- Header:IBCPacketHeaderを1つ
最後に"Hub"はパケットのステータスを「AckPending」から「AckReceived」に更新せねばならない。この新しくファイナライズされたステータスの証拠は"Zone2"に送り返すべきである。「IBCPacketTx」は次の値を持つとしてみよう(筆者注:図の右側下段のHubからZone2へ伸びている2つの矢印の中身を例示するもの)。
- FromChainID:"Hub"
- FromBlockHeight:301
- Packet:IBCPacketを1つ
- Header:IBCPacketHeaderを1つ
- SrcChainID:"Zone1"
- DstChainID:"Zone2"
- Number:200
- Status:AckReceived
- Type:"coin"
- MaxHeight:350
- Payload:<同じ"coin"ペイロードのハッシュのバイト>
- Header:IBCPacketHeaderを1つ
一方で"Zone1"は、"coin"パケットの伝送が失敗したという証拠が"Hub"に示されない限り伝送は成功すると楽観視しているだろう。上述の例では、もし"Hub"がブロック高350までに"Zone2"から「AckSent」ステータスを受け取らなかった場合は自動的にステータスを「Timeout」に設定する。タイムアウトの証拠は"Zone1"に送り返されて、トークンも戻されることになる。
(COSMOSホワイトペーパー日本語訳16 ←← 前)|(次 →→ COSMOSホワイトペーパー日本語訳18)
免責
邦訳には誤りがある場合がございます。予めご承知おき下さい。
確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。