進化する自己修復型ブロックチェーンTezos

4.3K Views

November 03, 22

スライド概要

Tezosについて紹介する入門的なスライドです。

profile-image

都内在住のエンジニア

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

進化する 自己修正型ブロックチェーン Lin Oshitani @linoscope

2.

発表内容 ● 自己紹介 ● 自己修正型ブロックチェーンについて ● Tezosの革新性 ● Tezosの自己修正の歴史 ● Tezosのエコシステム ● Tezosの未来

3.

自己紹介:学生時代 ● 学部2年時にビットコインに出会い、無名のプログラマが「貨幣」を実装して しまったことに衝撃をうける ● ビットコインのコードを読めるようになるためプログラミングの勉強を本格的 にはじめる

4.

自己紹介:学生時代 ● プログラミングの数学的側面に惹かれる ● 大学院でプログラミング言語理論を研究

5.

自己紹介:社会人 ● 2018年4月: Indeed Japan にソフトウェアエンジニアとして新卒入社 ● 2022年4月: Linostudio合同会社を創業 ● 2022年4月: Tezos のプロトコル開発に参加 全世界フルリモートのメンバーで開発合宿

6.

自己紹介:個人開発 ● CAMLBOY: OCamlで書かれたブラウザ上で動くゲームボーイエミュレータ

7.

自己修正型ブロックチェーンについて

8.

なぜ「自己修正」が必要なのか ブロックチェーンは大きなアップデートが難しいという問題がある。 ハードフォークすればできるが、以下の欠点がある: ● 互換性を持たないノードによりネットワークが分断(技術的リスク) ● 意見の違いによりコミュニティーが分断(社会的リスク) ● 誰が決定権を持つか不透明。ステークホルダー?開発者?

9.

なぜ「自己修正」が必要なのか ブロックチェーンは大きなアップデートが難しいという問題がある。 ハードフォークすればできるが、以下の欠点がある: ● 互換性を持たないノードによりネットワークが分断(技術的リスク) ● 意見の違いによりコミュニティーが分断(社会的リスク) ● 誰が決定権を持つか不透明。ステークホルダー?開発者? 技術革新を取り込みながら進化できず技術的に停滞してしまう

10.

なぜ「自己修正」が必要なのか ブロックチェーンは大きなアップデートが難しいという問題がある。 ハードフォークすればできるが、以下の欠点がある: ● 互換性を持たないノードによりネットワークが分断(技術的リスク) ● 意見の違いによりコミュニティーが分断(社会的リスク) ● 誰が決定権を持つか不透明。ステークホルダー?開発者? 技術革新を取り込みながら進化できず技術的に停滞してしまう シームレスに進化できるブロックチェーンがあれば・・

11.

なぜ「自己修正」が必要なのか ブロックチェーンは大きなアップデートが難しいという問題がある。 ハードフォークすればできるが、以下の欠点がある: ● 互換性を持たないノードによりネットワークが分断(技術的リスク) ● 意見の違いによりコミュニティーが分断(社会的リスク) ● 誰が決定権を持つか不透明。ステークホルダー?開発者? 技術革新を取り込みながら進化できず技術的に停滞してしまう シームレスに進化できるブロックチェーンがあれば・・ 自己修正型ブロックチェーン Tezos

12.

Tezosは 自己修正型ブロックチェーン (Self-Amending Blockchain)

13.

Tezosは 自己修正型ブロックチェーン (Self-Amending Blockchain)

14.

ブロックチェーンとは ● state(状態)をもち ● operation(操作)の集まりである block をapply(適用)することでstate が更新される apply(state, block) = state’ Alice 9 XTZ Bob 1 XTZ … … - Transfer (Alice, Bob, 1) - Transfer (Carol, Dan, 2) -… Alice 8 XTZ Bob 2 XTZ … …

15.

ブロックチェーンの「チェーン」 次々と生成される block に対して、apply(state, block) を連ねて state を更新 していく Block n Block n+1 State n apply( State n , Block n+1 State n+1 )= State n+1 Block n+2 State n+2

16.

分岐したらどうする? … state n … state m ● ブロックチェーンは分散的なので同時に二つのブロックが生成され 分岐することがある ● どの枝が「正規」かネットワーク内で合意する必要がある score(state) = N (N は自然数) ● score( state n ) と score( state m ) を比較して大きいほうが「正規」

17.

apply と score のすごさ apply(state, block) = state’ score(state) = N この二つの関数ですべてのブロックチェーンプロトコルは実現できる! ● Bitcoin: ○ state は UTXO、score は work の総量 ● Ethereum (PoS): ○ state は Ledger、score は validator の signature 数 ● 中央集権的なblockchain ○ state はなんでも、score は特定の秘密鍵で署名されていれば 1 それ以外は 0

18.

apply(state, block) = state’ score(state) = N apply と score を組み合わせたものをブロックチェーンのprotocol と定義できる protocol = (apply, score)

19.

Tezosは 自己修正型ブロックチェーン (Self-Amending Blockchain)

20.

Tezosは 自己修正型ブロックチェーン (Self-Amending Blockchain)

21.

自己修正型とは apply(state, block) = state’ score(state) = N protocol = (apply, score) すべてのブロックチェーンプロトコルは protocol で実現できる

22.

自己修正型とは apply(state, block) = state’ score(state) = N protocol = (apply, score) すべてのブロックチェーンプロトコルは protocol で実現できる protocol を置き換えることですべてのアップグレードが実現できる

23.

自己修正型とは apply(state, block) = state’ score(state) = N protocol = (apply, score) すべてのブロックチェーンプロトコルは protocol で実現できる protocol を置き換えることですべてのアップグレードが実現できる protocol をオンチェーンで置き換える機構があれば すべてのアップグレードがオンチェーンかつシームレスにできる

24.

自己修正型とは apply(state, block) = state’ score(state) = N protocol = (apply, score) すべてのブロックチェーンプロトコルは protocol で実現できる protocol を置き換えることですべてのアップグレードが実現できる protocol をオンチェーンで置き換える機構があれば すべてのアップグレードがオンチェーンかつシームレスにできる state に protocol を埋め込み apply で置き換えればいい!

25.

自己修正型とは apply(state, block) = state’ score(state) = N protocol = (apply, score) すべてのブロックチェーンプロトコルは protocol で実現できる protocol を置き換えることですべてのアップグレードが実現できる protocol をオンチェーンで置き換える機構があれば すべてのアップグレードがオンチェーンかつシームレスにできる state に protocol を埋め込み apply で置き換えればいい!

26.

自己修正型とは applyA(state, block) = state’ Alice 9 XTZ Bob 1 XTZ … … protocol applyA, scoreA

27.

自己修正型とは applyA(state, block) = state’ Alice 9 XTZ Bob 1 XTZ … … protocol applyA, scoreA - Transaction(Alice, Bob, 1) - Upgrade (applyB, scoreB) -…

28.

自己修正型とは applyA(state, block) = state’ Alice 9 XTZ Bob 1 XTZ … … protocol applyA, scoreA - Transaction(Alice, Bob, 1) - Upgrade (applyB, scoreB) -… Alice 8 XTZ Bob 2 XTZ … … protocol applyB, scoreB

29.

自己修正型とは applyB(state, block) = state’ Alice 8 XTZ Bob 2 XTZ … … protocol applyB, scoreB … - Transaction(...) - Upgrade (applyC, scoreC) -…

30.

自己修正型とは アップデートされた ! applyB(state, block) = state’ Alice 8 XTZ Bob 2 XTZ … … protocol applyB, scoreB … - Transaction(...) - Upgrade (applyC, scoreC) -…

31.

自己修正型とは applyB(state, block) = state’ Alice 8 XTZ Bob 2 XTZ … … protocol applyB, scoreB … - Transaction(...) - Upgrade (applyC, scoreC) -… applyを置き換えるプロセスも apply 内で定義される(applyA内で行われた) 自己修正プロセス自体も自己修正可能!

32.

自己修正型とは applyB(state, block) = state’ Alice 8 XTZ Bob 2 XTZ … … protocol applyB, scoreB applyを置き換えるプロセスも … - Transaction(...) - Upgrade (applyC, scoreC) -… 実際は apply 段階に分かれた 内で定義される(applyA内で行われた) サイクル 自己修正プロセス自体も自己修正可能!

33.

Tezosの現在の自己修正サイクル ①Proposal ②Exploration ③Cooldown ④Promotion ⑤Adoption New protocol! … A A vote … … A vote A … A A A … A A A B vote testnet … B B ① Proposal (提案): Baker(EthでいうValidator)ならだれでも protocol を提案・投票でき、 一番得票の多い protocol が次の Exporation へ ② Exploration(探検): Proposal で選ばれた protocol を testnet に採択するか投票 ③ Cooldown(冷却): testnet が自動的に生まれ、各々のノードが protocol を testnet でテスト ④ Promotion(促進): protocol を mainnet に採択するか投票 ⑤ Adaptation(適合): Adaptation の最後に mainnet の protocol が置き換わる

34.

例:Proposal期間での apply ①Proposal … ②Exploration … ③Cooldown … ④Promotion ⑤Adoption … … apply(state, block) = state’ Alice 9 XTZ Bob 1 XTZ … … protoB_hash 3 ある protoB が提案され3つ得票

35.

例:Proposal期間での apply ①Proposal … ②Exploration … ③Cooldown ④Promotion ⑤Adoption … … … apply(state, block) = state’ Alice 9 XTZ Bob 1 XTZ … … protoB_hash 3 ある protoB が提案され3つ得票 - Transfer(Alice, Bob, 1) - Proposal (protoB_hash) - Proposal (protoC_hash)

36.

例:Proposal期間での apply ①Proposal … ②Exploration … ③Cooldown ④Promotion ⑤Adoption … … … apply(state, block) = state’ Alice Alice 8 XTZ Bob 2 XTZ … … protoB_hash 4 protoC_hash 1 9 XTZ Bob 1 XTZ … … protoB_hash 3 ある protoB が提案され3つ得票 - Transfer(Alice, Bob, 1) - Proposal (protoB_hash) - Proposal (protoC_hash)

37.

Tezosの革新性

38.

Tezosの革新性:抽象化の力 すべてのブロックチェーンは apply と score で 実現できるという洞察 https://arxiv.org/pdf/1909.08458.pdf

39.

Tezosの革新性:再帰的ブロックチェーン プロトコルにプロトコルを埋め込む再帰的ブロックチェーン。 これによりシームレスなプロトコルアップデートが可能に https://tezos.com/whitepaper.pdf

40.

Tezosの革新性:決定権の移行 オンチェーンの投票によりプロトコルがアップデートされる。 プロトコルの決定権が開発者からステークホルダーへ vote!

41.

ブロックチェーンは黎明期 技術革新および使用用途は未知数 今なにができるかより 進化可能性こそが一番重要

42.

Tezosの自己修正の歴史

43.

自己修正の歴史 ● ● ● ● ● 2014-08: ホワイトペーパー・ポジションペーパーを発表 2017-02: Alphanet を開始 2017-08: ICO で 280億円調達 2018-09: Mainnet を開始 2019-04: はじめてのプロトコルアップデート。プロトコルAthens Aと Athens B が提案され、投票によりAthens A が採択

44.

自己修正の歴史 ● 2021-02 Edo: ○ ○ Tickets: プロトコルレベルのFungable/Non-fungable トークン。一つのコント ラクトに縛られずに移動可能なトークンを実現。 Sapling: Zcash の sapling protocol を使った匿名取引 ● 2022-04 Ithaca: ○ コンセンサスアルゴリズムを Nakamoto consensus から Tendermint-like な BFT (Tenderbake)にすり替えた かなり大規模なアップデートもシームレスに次々と行ってきた!

45.

Tezos は自己修正で進化しつづけている! ユーザーの投票結果を確認するページ https://www.tezosagora.org/period/76

46.

Tezosのエコシステム

47.

急速に成長している 2021年に Tezos の DApp 使用は40倍に https://twitter.com/ArthurB/status/1510347760121352192 しかし数々のプロトコルアップグレードのおかげでガスコストは低下

49.

Tezosを活用する企業

50.

Tezosの未来

51.

プロトコル内 ● プロトコルレベルでの L2 サポート ○ ○ Optimistic Rollup Zk Rollup ● Data Availability Layer ○ Ethereum でいう Sharding プロトコル外: ● Deku side chain https://twitter.com/danhines09/status/1584032932536074240

52.

本発表でカバーしなかったこと ● Liquid Proof of Stake ○ 自分のステークをロックアップなしに他の baker に委任できる ● コントラクト及びプロトコルの形式検証 ○ ○ プログラミング言語理論を使って特定のバグがないことなどを証明 暗号ライブラリは検証済み ● 関数型言語 OCaml で実装 ○ ○ 静的型付け 形式検証がしやすい ● Michelson VM ○ ○ ○ ○ 関数型 静的型付け 形式検証がしやすい Michelson にコンパイルする JS-likeなシンタックスをもった JSLigo など

53.

質問があれば ● Tezos開発日本語コミュニティー: https://discord.gg/JeBER8Gz7N ● 発表者のTwitter:https://twitter.com/linoscope