本稿について
COSMOSのホワイトペーパー、最終更新日: 2018/4/7時点のものを対象とします。本稿では「Appendix」の日本語訳を掲載します。
原文はこちらになります。
スポンサードサーチ
Appendix(続き)
トランザクションのタイプ
標準的な実装でトランザクションはABCIインタフェースを介してCosmosハブのアプリケーション流れる。
Cosmosハブは「SendTx」「BondTx」「UnbondTx」「ReportHackTx」「SlashTx」「BurnAtomTx」「ProposalCreateTx」「ProposalVoteTx」などの大量な主要なトランザクションタイプを受け入れる。これらはまさに自明な名前であるが、将来、本ペーパーの修正版でまとめる。ここではIBCに関する主要な2つのトランザクションタイプ、「IBCBlockCommitTx」、「IBCPacketTx」を紹介する。
IBCBlockCommitTx
IBCBlockCommitTxトランザクションは次のもので構成される。
- ChainID(String):ブロックチェーンのID。
- BlockHash([]byte):ブロックハッシュのバイトで、アプリケーションハッシュを含むマークルルート。
- BlockPartsHeader(PartSetHeader):ブロックのパートセットヘッダのバイトで投票の署名検証のみに必要。(筆者注:Tendermintのブロック構造では、PartSetHeaderはPartSetの全てのデータ片と、それらのデータ片のマークルルートハッシュを持つ。PartSetはデータをデータ片に分割するのに利用される)
- BlockHeight(int):コミットのブロック高。
- BlockRound(int):コミットのラウンド。
- Commit([]Vote):ブロックコミットを構成する>2/3のTendermintの「Precommit」投票。
- ValidatorsHash([]byte):新しいバリデータの集合のマークルルートハッシュ。
- ValidatorsHashProof(SimpleProof):「BlockHash」に対して「ValidatorsHash」を証明するためのシンプルツリーのマークル証明。
- AppHash([]byte):アプリケーションステートのIAVLツリーのマークルルートハッシュ。
- AppHashProof(SimpleProof):「BlockHash」に対して「AppHash」を証明するためのシンプルツリーのマークル証明。
IBCPacketTx
IBCPacketは次のもので構成される。
- Header(IBCPacketHeader):パケットヘッダ。
- Payload([]byte):パケットペイロードのバイト。(オプション)
- PayloadHash([]byte):パケットのバイトのハッシュ。(オプション)
「Payload」か「PayloadHash」のいずれかはなくてはならない。「IBCPacket」のハッシュは「Header」と「Payload」の2つのアイテムのシンプルマークルルートである。完全なペイロードのない「IBCPacket」を短縮パケット(abbreviated packet)という。
IBCPacketHeaderは次のもので構成される。
- SrcChainID(string):送り元となるブロックチェーンのID。
- DstChainID(string):宛先となるブロックチェーンのID。
- Number(int):全パケットのユニークな数。
- Status(enum):「AckPending」「AckSent」「NoAck」「Timeout」のどれか
- Type(string):アプリケーション次第。Cosmosはパケット型"coin"を予約している。
- MaxHeight(int):この高さまでにステータスが「NoAckWanted」または「AckReceived」出ない場合、ステータスは「Timeout」になる。(オプション)
IBCPacketTxトランザクションは次のもので構成される。
- FromChainID(string):このパケットを提供しているブロックチェーンのID。必ずしも送り元のブロックチェーンのIDではない。
- FromBlockHeight(int):送り元のチェーンのブロックハッシュに含まれている(マークル化されている)パケットがあるブロック高。
- Packet(IBCPacket):データのパケットで、そのステータスは「AckPending」「AckSent」「AckReceived」「NoAck」「Timeout」のいずれか。
- PacketProof(IAVLProof):所与のブロック高で送り元チェーンの「AppHash」に対してパケットのハッシュを証明するためのIAVLツリーのマークル証明。
"ゾーン1"から"ゾーン2"へ"ハブ"を介してパケットを送信する順序を図Xに示す(筆者注:当該の図はないので、AppendixのIBC Packet Delivery Acknowledgementを参照(日本語訳はこちらにて掲載))。まず、「IBCPacketTx」はパケットが"ゾーン1"のアプリケーションステートに含まれていることを"ハブ"に対して証明する。次に、もう一つの「IBCPacketTx」がパケットが"ハブ"のアプリケーションステートに含まれていることを"ゾーン2"に対して証明する。この手続きの間、「IBCPacket」のフィールドは同じで、「SrcChainID」は常に"ゾーン1"、「DstChainID」は常に"ゾーン2"である。
「PacketProof」は、例えば次に示すような正しいマークル証明のパスを持っていなければならない。
IBC/<SrcChainID>/<DstChainID>/<Number>
"ゾーン1"が"ハブ"を介して"ゾーン2"にパケットを送信したい場合、「IBCPacket」のデータはパケットが"ゾーン1"、"ゾーン2"、"ハブ"のどこでマークル化されていたとしても同じである。唯一変更可能なフィールドは配信をトラッキングするための「Status」だけである。
謝辞
TendermintとCosmosにかかる我々の研究に関し、その概念化やレビュー、サポートの支援をいただいたことについて友人や仲間に感謝の意を表明する。
- SkuChainのZaki Manian氏は特にABCIセクションの形式化と言語化に多大な支援をいただいた。
- AltheaのJehan Tremback氏、及びDustin Byington氏には初期版に助力をいただいた。
- Honey BadgerのAndrew Miller氏にはコンセンサスに関するフィードバックをいただいた。
- Greg Slepak氏にはコンセンサスと言語化に関するフィードバックをいただいた。
- Bill Greim氏とSeunghwan Han氏は種々の貢献をしてくれた。
- また、あなたとあなたの組織にも感謝申し上げる。
引用文献
- 1 Bitcoin: https://bitcoin.org/bitcoin.pdf
- 2 ZeroCash: http://zerocash-project.org/paper
- 3 Ethereum: https://github.com/ethereum/wiki/wiki/White-Paper
- 4 TheDAO: https://download.slock.it/public/DAO/WhitePaper.pdf
- 5 Segregated Witness: https://github.com/bitcoin/bips/blob/master/bip-0141.mediawiki
- 6 BitcoinNG: https://arxiv.org/pdf/1510.02037v2.pdf
- 7 Lightning Network: https://lightning.network/lightning-network-paper-DRAFT-0.5.pdf
- 8 Tendermint: https://github.com/tendermint/tendermint/wiki
- 9 FLP Impossibility: https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf
- 10 Slasher: https://blog.ethereum.org/2014/01/15/slasher-a-punitive-proof-of-stake-algorithm/
- 11 PBFT: http://pmg.csail.mit.edu/papers/osdi99.pdf
- 12 BitShares: https://bitshares.org/technology/delegated-proof-of-stake-consensus/
- 13 Stellar: https://www.stellar.org/papers/stellar-consensus-protocol.pdf
- 14 Interledger: https://interledger.org/rfcs/0001-interledger-architecture/
- 15 Sidechains: https://blockstream.com/sidechains.pdf
- 16 Casper: https://blog.ethereum.org/2015/08/01/introducing-casper-friendly-ghost/
- 17 ABCI: https://github.com/tendermint/abci
- 18 Ethereum Sharding: https://github.com/ethereum/EIPs/issues/53
- 19 LibSwift: http://www.ds.ewi.tudelft.nl/fileadmin/pds/papers/PerformanceAnalysisOfLibswift.pdf
- 20 DLS: http://groups.csail.mit.edu/tds/papers/Lynch/jacm88.pdf
- 21 Thin Client Security: https://en.bitcoin.it/wiki/Thin_Client_Security
- 22 Ethereum 2.0 Mauve Paper: http://vitalik.ca/files/mauve_paper.html
未分類のリンク
(COSMOSホワイトペーパー日本語訳18 ←← 前)|(最初に戻る →→ COSMOSホワイトペーパー日本語訳1)
免責
邦訳には誤りがある場合がございます。予めご承知おき下さい。
確実な情報を知るためには冒頭に示した原文をご参照くださいますようお願いいたします。