Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Corda勉強資料 その2 State、Transaction編

Corda勉強資料 その2 State、Transaction編

この資料はゼタント社内の勉強資料ですが、speaker deckでも公開します。
誤り等を見つけた方はご連絡いただければ幸いです。

前回(その1)は、スライドを見せながら説明することを意識していたので、
スライドとしては用語の説明が中心になってしまっていたので、今回はスライド
だけをみてもある程度わかるようにしたつもりです。

Avatar for Takeshi Kubo

Takeshi Kubo

July 28, 2020
Tweet

More Decks by Takeshi Kubo

Other Decks in Technology

Transcript

  1. この資料について • この資料はゼタント社内の勉強資料です • ですが、speaker deckでも公開します • 内容の正確性を完璧には保証はできませんのでご承知おきください • 誤り等を⾒つけた⽅はご連絡いただければ幸いです

    • 資料内には私の主観が混じることがありますが、そういう部分はなるべく 独⽴したスライドにするようにします • 分散台帳(DLT)やブロックチェーンといった⽤語がありますが、明確な 定義があるようでないので、本書ではすべてDLTに統⼀します 2
  2. 前回資料の復習 抑えておくべきポイントは、下記2点。これさえ理解していれば、このあとの理解も捗るはず • 資産はStateとして表現され、ある資産の取引に関係するノードだけが同じStateを共有する • Stateは取引などによって更新される。どのような更新を施すかを提案するメッセージがTransactionで ある 4 Notary (サーバ)

    Node (サーバ) Node (サーバ) Map service (サーバ) State State State State State State State State transaction transaction State State State State このようなシステム全体のことを Networkと呼んでいる Vault (⼊れ物=DB) Contract、Flow (cordapp)を持つ Vault (⼊れ物=DB) Transactionをやり取りし てStateを更新していく仕 組みのことをLedgerと呼 んでいる Contract、Flow (cordapp)を持つ Contract、 Flow を持つ
  3. Stateとは 取り扱う資産がどのような状態であるかの記述 • 資産に関する情報そのものであり、Cordaの中で最も⼤切なもの • Cordaは、このStateを信頼できる形で管理運⽤できるようにするための仕組み であると⾔っても過⾔ではない どんな種類の資産を扱うことができるか︖ • デジタル情報として表現できるものすべて

    • 必ずしも「資産」と呼べなそうなものでも構わない Stateはどの様に表現されるのか︖ • UTXO (Unspent Transaction Output)形式で表現される • 何か資産に変化・変更があるたびにStateを更新し、古いState(更新前)を無 効化する。ただし、古いStateも削除せず、追記するのみ。 5
  4. 未使⽤Stateと使⽤済みState 未使⽤State(Unconsumed State) • ある資産についての最新情報のこと • 資産を取引する際には、この最新のStateしか利⽤することができない 使⽤済みState(Consumed State) •

    ある資産についての過去の情報(すでに有効ではない) • 使⽤済みのStateを取引対象とするような取引は、全て無効とみなす 6 [出典] https://docs.corda.net/docs/corda-os/4.5/key-concepts-states.html 4つの資産に関する情報(A,B,C,S) がVaultに保存されている例 HEADとついたものが最新のStateで、 それ以外の過去の変遷も記録しておく
  5. 契約または取引 あるState(もちろん未使⽤State)を更新すること • 当然、ビジネス上意味のある更新のことであることは⾔うまでもない 複数のState(もちろん全て未使⽤State)を⼀括、同時に更新してもよい • 複数の当事者それぞれが持つ資産を交換するような取引など 7 債権 貸付:Aさん→Bさん

    ⾦額:10,000円 ⽇本円 保有者:Aさん ⾦額:5,000円 ⽇本円 保有者:Bさん ⾦額:25,000円 変更前の3つの未使⽤State 債権 貸付:Aさん→Bさん ⾦額:7,000円 ⽇本円 保有者:Aさん ⾦額:8,000円 ⽇本円 保有者:Bさん ⾦額:22,000円 変更後の3つの未使⽤State 3000円分の 部分返済 -3,000円 +3,000円 -3,000円
  6. Transaction Transactionを必要なノードにのみ送ることで前ページの課題を解決する Transactionとは • Stateを「この状態に変更すべし」という提案メッセージである • 変更の対象となる未使⽤Stateを含むTransactionを参照しなければならない • 取引に関係し、そのメッセージに書かれた内容を承認する者たちの電⼦署名でメッ セージを保護する

    • Transactionは必要なノードにしか配布されない ポイント • Transactionは変更前と変更後の結果のみを記述したものであり、その過程、つまり どのような演算を⾏うのかはTransactionには含まれない • それは事前にビジネスレベルで合意しておき、Cordappに記述しておけば良い • これにより処理アルゴリズムのようなProprietaryな情報をDLTに書く必要がなくな り、安全性が増す 9
  7. Transactionのイメージ 10 [出典] https://docs.corda.net/docs/corda-os/4.5/key-concepts-transactions.html 当事者(Alice) の電⼦署名 当事者(Bob) の電⼦署名 電⼦署名の 署名範囲

    変更前の 最新State 変更前の 最新State 変更後の 最新State 変更後の 最新State 署名が施されたTransactionが 関係ノードに永久保存され るので、過去を改ざんする ことは事実上不可能になる 変更提案が当事者全員 に受け⼊れられると、 これらのStateは使⽤済 み(Consumed)State になる このTransactionが効⼒を発揮するためには、当事者全員の署名が必要 (誰が当事者であるかは、Transaction内に記載される) ※ 未使⽤Stateを変化させ、新しい未使⽤Stateを作り、もとのStateを使⽤済みにするような表現形式をUTXOという
  8. Transactionの有効化 Transactionは下記条件を満たすことで有効なものとして認められる • Transaction内に指定された承認者(required signers)の電⼦署名が付与され ていること • 当事者のVaultにコミット(格納)されること ポイント •

    電⼦署名の付与は、そのTransactionの内容を承認したことの意思表明である • 承認するかどうかの判断は署名者によって異なる(ビジネスロジックに依存) • 使⽤済みStateが再利⽤されていないこと(つまり⼆重消費されていないこと) を保証するNotaryという役割のノードを配備し、承認者に加えることができる • このTransactionは関係者以外が保持する必要がない。(ビジネス上意味をなさ ない) 11
  9. Transactionの内容(2ページ前に説明しなかったもの) 12 [出典] https://docs.corda.net/docs/corda-os/4.5/key-concepts-transactions.html 変更前の 最新State 変更前の 最新State 変更後の 最新State

    変更後の 最新State このTransactionの内容 を検証するための外部 情報のハッシュ値 電⼦署名 このTransactionのコミッ トを許可する時間帯。時 刻管理にNotaryが必要 このTransactionの意図(なんのための Transactionであるか)を説明するための 情報。Required signersもここで指定する
  10. こういうお役に⽴てます • システム化、デジタル化によって実現したい • しかし、まだ⾻⼦が固まっていない • 問題を洗い出したり、周辺との関連を整理しなければならない 15 新規事業 実証実験

    業務フロー改⾰ ちなみに、このような状況に役⽴つツールも開発中です (いずれお披露⽬させていただきます) こういういった状況から寄り添い、分析や提案を織り交ぜ ながら、システム設計から開発までお⼿伝いできます
  11. 案件例 16 トークン系のサービスを開発したい 資源、電力、物流などの トレーサビリティシステムを開発したい 双方向コミュニケーションが可能な Webアプリケーションを開発したい ID基盤を開発したい サービスを実現するためのシステムを どう作ればいいかわからない

    複雑化した業務フローなどを整理して、 課題を抽出し、改善につなげたい 契約や権利を管理する サービスを開発したい インセンティブ設計およびサービス設計 要件定義、システム設計、開発 • 実証実験システムの開発、システム提案など、大 規模〜小規模まで経験のあるメンバーが在籍し ています • 通信キャリアでの経験などを活かし、多岐にわた る分野に対応できます • ブロックチェーン技術も利用できます 要件定義、システム設計、開発 各種コンサル経験あり • plugin-jmeeという技術基盤を保有しています お問い合わせ:[email protected]