Slide 1

Slide 1 text

Plasma on Substrate Takumi Yamashita @ public_sate 1

Slide 2

Slide 2 text

Takumi Yamashita (@public_sate) 所属:Staked Inc/東京大学大学院情報理工学研究科 趣味/特技だったもの: 競技プログラミング(ACM-ICPC WorldFinals 2016/2017) Splatoon(WiiU)(関東3位) スマブラ(地元最強) 週刊少年ジャンプ Twitter(アルファ) 同人誌 (冬コミC91) 2

Slide 3

Slide 3 text

Proskenion 3 未踏2018年度

Slide 4

Slide 4 text

Substrate とは 日本語 Substrate Docs https://t.co/gB3CGA2w0Q ブロックチェーンフレームワーク モジュールを組み合わせて  君だけのブロックチェーンを作ろう 4

Slide 5

Slide 5 text

Plasma とは スケーラビリティのソリューション (既に詳しい説明がなされているはずなので省略します。 ) 5 Parent Child Submit Exit Deposit

Slide 6

Slide 6 text

Plasm あなたのブロックチェーンに 無限のスケーラビリティを 6 © Staked Technologies https://github.com/stakedtechnologies/Plasm

Slide 7

Slide 7 text

Plasm を動かす Let's make a Plasma chain with Plasm and Substrate. https://medium.com/staked-technologies/lets-make-a-plasma-chain-with-plasm-an d-substrate-39cbd868022d 7

Slide 8

Slide 8 text

Plasm の展望 Plasm は 親チェーンであり 子チェーンでもある ブロックチェーンを作れる。 多階層 Plasma チェーン - Plasma Dictys 8 Root chain Parent chain / Child chain Parent chain / Child chain Child chain Child chain Child chain Child chain

Slide 9

Slide 9 text

Plasma Dictys Plasma の特徴 ExitGame によりメインチェーンのセキュリティを 子チェーンであやかることができる。 9 Root chain Parent chain / Child chain Parent chain / Child chain Child chain Child chain Child chain Child chain

Slide 10

Slide 10 text

Plasma Dictys 10 Root chain Parent chain / Child chain Parent chain / Child chain Child chain Child chain Child chain Child chain Root Chain のセキュリティ Parent Chain のセキュリティ = Root Chain のセキュリティ 無限のスケーラビリ ティ Fast Finality による即時決済 すごい!! MapReduce による 効率的トランザクション処理

Slide 11

Slide 11 text

Plasma Dictys 11 Root chain Parent chain / Child chain Parent chain / Child chain Child chain Child chain Child chain Child chain Root Chain のセキュリティ Parent Chain のセキュリティ = Root Chain のセキュリティ 無限のスケーラビリ ティ Fast Finality による即時決済 すごい!! MapReduce による 効率的トランザクション処理 甘くない トートロジー

Slide 12

Slide 12 text

Substrate アンチパターン Rustの機能 Trait Trait はある型が実装しなければならない機能をコンパイラ に伝える機能を持つ。 C# や Java でいうところのインター フェースのようなもの。 トレイト境界 ジェネリック型に指定されたトレイトが実装されることを強要 する機能。 関連型 トレイト内で複数の型をグループ化するものです。 12

Slide 13

Slide 13 text

Substrate アンチパターン 13 たくさんのジェネリック引数を持った構造体 を使いたいが毎回決まった定義を書くのが面倒

Slide 14

Slide 14 text

Trait Alias Pattern パターン 型エイリアスを使って Trait の型を省略する。 14

Slide 15

Slide 15 text

type AccountId = sr25519::Pubkey; のときは type Signature = sr25519::Signature; type AccountId = ed25519::Pubkey; のときは type Signature = ed25519::Signature; を指定しないとエラーが起きるような設計にしたい。 Substrate アンチパターン 15

Slide 16

Slide 16 text

Verify trait を実装していて且つ verify に使う Signer(公開鍵)の型が AccountId であるような Signature でなければならない仕様にすることで解決。 Relational Trait Lock Pattern 16

Slide 17

Slide 17 text

Substrate アンチパターン Event テストパターン:Event が正しく発行されているかをどうテストするか? 17 マクロ展開 参考 https://docs.substrate.dev/docs/event-enum

Slide 18

Slide 18 text

Event Test Pattern Event テスト : Trait と super Trait の Event への From を実装したTestEvent を使う 18 参考 : https://github.com/stakedtechnologies/Plasm/blob/v0.2.0/core/child/src/mvp.rs#L172

Slide 19

Slide 19 text

Super SRML Trait Pattern 異なる SRML をある SRML をラップした機能を作りたい時 例:balances SRML と timestamp SRML を内部で使いたい。 スーパートレイトを使って指定した SRML とセットで使うことを強制する。 19

Slide 20

Slide 20 text

Using SRML Module Trait Pattern ある機能が実装された任意の SRML を別の SRML で使いたい時 SRML の Module を関連型として与える。 20 runtime/src/lib.rs srml/system/src/lib.rs srml/indices/src/lib.rs indices::Module

Slide 21

Slide 21 text

Plasma on Substrate の規格策定 21 PlasmParent PlasmChild PlasmUtxo PlasmMerkle PlasmProof has PlasmTx mvp cash chamber mvp cash chamber mvp cash predicate dynamic static mvp cash predicate

Slide 22

Slide 22 text

Plasma on Substrate の規格策定 Rust の Trait を用いて規格を記述する 自由度の高いコードを書いても規格に沿ったプログラムを実装可能になる。 コンパイル時にバグを防ぐ。 22

Slide 23

Slide 23 text

PlasmTx 23 tx_hash out_index tx_hash out_index value keys quorum value keys quorum value keys quorum Transaction input1 input2 output2 output3 output1 SignedTransaction Signature0 Signature1 Signature.. utxo_a signature public_key utxo_b unlock

Slide 24

Slide 24 text

PlasmTx ver Predicate. predicateAddress stateID Contract Transaction input1 predicateAddress stateID input2 deprecate0 deprecate1

Slide 25

Slide 25 text

UtxoTrait MakePayment Plasma on Substrate の規格策定 type Signature; type TimeLock: type Value; type OnNewAccount; 25 PlasmParent PlasmChild PlasmUtxo PlasmMerkle PlasmProof has PlasmTx type Utxo = PlasmUtxo; type Tree = PlasmMerkle; type Hash; type Hashing; MerkleTreeTrait

Slide 26

Slide 26 text

ブロックチェーンの歴史 ● 過去 ● 今 ● 未来 26

Slide 27

Slide 27 text

議題 27 Polkadot Harberger Tax Child Chainの作成者は一定期間(月次) ごとに7%のtaxをroot chainに自動的に 支払う。その内、2%を僕らが運営費とし て頂き、5%を使われているチェーン に還元する。%はトークンによるVotingに より変動する。このモデルはP4のエッセン スを大いに含むモデルである。Harberger Taxに関してはRadical Marketという書籍を 参考にされたい。 Plasma Chain IoTユースケース 電力ユースケース ゲームユースケース predicateAddress stateID Contract Transaction input1 predicateAddress stateID input2 deprecate0 deprecate1 ここのDSL 作るべき では? 子チェーンの Tx 親 子 孫 SkipExit/二段Exit