7.4K Views
November 03, 22
スライド概要
Tezosについて紹介する入門的なスライドです。
都内在住のエンジニア
進化する 自己修正型ブロックチェーン Lin Oshitani @linoscope
発表内容 ● 自己紹介 ● 自己修正型ブロックチェーンについて ● Tezosの革新性 ● Tezosの自己修正の歴史 ● Tezosのエコシステム ● Tezosの未来
自己紹介:学生時代 ● 学部2年時にビットコインに出会い、無名のプログラマが「貨幣」を実装して しまったことに衝撃をうける ● ビットコインのコードを読めるようになるためプログラミングの勉強を本格的 にはじめる
自己紹介:学生時代 ● プログラミングの数学的側面に惹かれる ● 大学院でプログラミング言語理論を研究
自己紹介:社会人 ● 2018年4月: Indeed Japan にソフトウェアエンジニアとして新卒入社 ● 2022年4月: Linostudio合同会社を創業 ● 2022年4月: Tezos のプロトコル開発に参加 全世界フルリモートのメンバーで開発合宿
自己紹介:個人開発 ● CAMLBOY: OCamlで書かれたブラウザ上で動くゲームボーイエミュレータ
自己修正型ブロックチェーンについて
なぜ「自己修正」が必要なのか ブロックチェーンは大きなアップデートが難しいという問題がある。 ハードフォークすればできるが、以下の欠点がある: ● 互換性を持たないノードによりネットワークが分断(技術的リスク) ● 意見の違いによりコミュニティーが分断(社会的リスク) ● 誰が決定権を持つか不透明。ステークホルダー?開発者?
なぜ「自己修正」が必要なのか ブロックチェーンは大きなアップデートが難しいという問題がある。 ハードフォークすればできるが、以下の欠点がある: ● 互換性を持たないノードによりネットワークが分断(技術的リスク) ● 意見の違いによりコミュニティーが分断(社会的リスク) ● 誰が決定権を持つか不透明。ステークホルダー?開発者? 技術革新を取り込みながら進化できず技術的に停滞してしまう
なぜ「自己修正」が必要なのか ブロックチェーンは大きなアップデートが難しいという問題がある。 ハードフォークすればできるが、以下の欠点がある: ● 互換性を持たないノードによりネットワークが分断(技術的リスク) ● 意見の違いによりコミュニティーが分断(社会的リスク) ● 誰が決定権を持つか不透明。ステークホルダー?開発者? 技術革新を取り込みながら進化できず技術的に停滞してしまう シームレスに進化できるブロックチェーンがあれば・・
なぜ「自己修正」が必要なのか ブロックチェーンは大きなアップデートが難しいという問題がある。 ハードフォークすればできるが、以下の欠点がある: ● 互換性を持たないノードによりネットワークが分断(技術的リスク) ● 意見の違いによりコミュニティーが分断(社会的リスク) ● 誰が決定権を持つか不透明。ステークホルダー?開発者? 技術革新を取り込みながら進化できず技術的に停滞してしまう シームレスに進化できるブロックチェーンがあれば・・ 自己修正型ブロックチェーン Tezos
Tezosは 自己修正型ブロックチェーン (Self-Amending Blockchain)
Tezosは 自己修正型ブロックチェーン (Self-Amending Blockchain)
ブロックチェーンとは ● 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 … …
ブロックチェーンの「チェーン」 次々と生成される 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
分岐したらどうする? … state n … state m ● ブロックチェーンは分散的なので同時に二つのブロックが生成され 分岐することがある ● どの枝が「正規」かネットワーク内で合意する必要がある score(state) = N (N は自然数) ● score( state n ) と score( state m ) を比較して大きいほうが「正規」
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
apply(state, block) = state’ score(state) = N apply と score を組み合わせたものをブロックチェーンのprotocol と定義できる protocol = (apply, score)
Tezosは 自己修正型ブロックチェーン (Self-Amending Blockchain)
Tezosは 自己修正型ブロックチェーン (Self-Amending Blockchain)
自己修正型とは apply(state, block) = state’ score(state) = N protocol = (apply, score) すべてのブロックチェーンプロトコルは protocol で実現できる
自己修正型とは apply(state, block) = state’ score(state) = N protocol = (apply, score) すべてのブロックチェーンプロトコルは protocol で実現できる protocol を置き換えることですべてのアップグレードが実現できる
自己修正型とは apply(state, block) = state’ score(state) = N protocol = (apply, score) すべてのブロックチェーンプロトコルは protocol で実現できる protocol を置き換えることですべてのアップグレードが実現できる protocol をオンチェーンで置き換える機構があれば すべてのアップグレードがオンチェーンかつシームレスにできる
自己修正型とは apply(state, block) = state’ score(state) = N protocol = (apply, score) すべてのブロックチェーンプロトコルは protocol で実現できる protocol を置き換えることですべてのアップグレードが実現できる protocol をオンチェーンで置き換える機構があれば すべてのアップグレードがオンチェーンかつシームレスにできる state に protocol を埋め込み apply で置き換えればいい!
自己修正型とは apply(state, block) = state’ score(state) = N protocol = (apply, score) すべてのブロックチェーンプロトコルは protocol で実現できる protocol を置き換えることですべてのアップグレードが実現できる protocol をオンチェーンで置き換える機構があれば すべてのアップグレードがオンチェーンかつシームレスにできる state に protocol を埋め込み apply で置き換えればいい!
自己修正型とは applyA(state, block) = state’ Alice 9 XTZ Bob 1 XTZ … … protocol applyA, scoreA
自己修正型とは applyA(state, block) = state’ Alice 9 XTZ Bob 1 XTZ … … protocol applyA, scoreA - Transaction(Alice, Bob, 1) - Upgrade (applyB, scoreB) -…
自己修正型とは 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
自己修正型とは applyB(state, block) = state’ Alice 8 XTZ Bob 2 XTZ … … protocol applyB, scoreB … - Transaction(...) - Upgrade (applyC, scoreC) -…
自己修正型とは アップデートされた ! applyB(state, block) = state’ Alice 8 XTZ Bob 2 XTZ … … protocol applyB, scoreB … - Transaction(...) - Upgrade (applyC, scoreC) -…
自己修正型とは applyB(state, block) = state’ Alice 8 XTZ Bob 2 XTZ … … protocol applyB, scoreB … - Transaction(...) - Upgrade (applyC, scoreC) -… applyを置き換えるプロセスも apply 内で定義される(applyA内で行われた) 自己修正プロセス自体も自己修正可能!
自己修正型とは applyB(state, block) = state’ Alice 8 XTZ Bob 2 XTZ … … protocol applyB, scoreB applyを置き換えるプロセスも … - Transaction(...) - Upgrade (applyC, scoreC) -… 実際は apply 段階に分かれた 内で定義される(applyA内で行われた) サイクル 自己修正プロセス自体も自己修正可能!
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 が置き換わる
例:Proposal期間での apply ①Proposal … ②Exploration … ③Cooldown … ④Promotion ⑤Adoption … … apply(state, block) = state’ Alice 9 XTZ Bob 1 XTZ … … protoB_hash 3 ある protoB が提案され3つ得票
例: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)
例: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)
Tezosの革新性
Tezosの革新性:抽象化の力 すべてのブロックチェーンは apply と score で 実現できるという洞察 https://arxiv.org/pdf/1909.08458.pdf
Tezosの革新性:再帰的ブロックチェーン プロトコルにプロトコルを埋め込む再帰的ブロックチェーン。 これによりシームレスなプロトコルアップデートが可能に https://tezos.com/whitepaper.pdf
Tezosの革新性:決定権の移行 オンチェーンの投票によりプロトコルがアップデートされる。 プロトコルの決定権が開発者からステークホルダーへ vote!
ブロックチェーンは黎明期 技術革新および使用用途は未知数 今なにができるかより 進化可能性こそが一番重要
Tezosの自己修正の歴史
自己修正の歴史 ● ● ● ● ● 2014-08: ホワイトペーパー・ポジションペーパーを発表 2017-02: Alphanet を開始 2017-08: ICO で 280億円調達 2018-09: Mainnet を開始 2019-04: はじめてのプロトコルアップデート。プロトコルAthens Aと Athens B が提案され、投票によりAthens A が採択
自己修正の歴史 ● 2021-02 Edo: ○ ○ Tickets: プロトコルレベルのFungable/Non-fungable トークン。一つのコント ラクトに縛られずに移動可能なトークンを実現。 Sapling: Zcash の sapling protocol を使った匿名取引 ● 2022-04 Ithaca: ○ コンセンサスアルゴリズムを Nakamoto consensus から Tendermint-like な BFT (Tenderbake)にすり替えた かなり大規模なアップデートもシームレスに次々と行ってきた!
Tezos は自己修正で進化しつづけている! ユーザーの投票結果を確認するページ https://www.tezosagora.org/period/76
Tezosのエコシステム
急速に成長している 2021年に Tezos の DApp 使用は40倍に https://twitter.com/ArthurB/status/1510347760121352192 しかし数々のプロトコルアップグレードのおかげでガスコストは低下
活発な NFT コミュニティー objkt, fxhash, akaswap, 8bidou, etc
Tezosを活用する企業
Tezosの未来
プロトコル内 ● プロトコルレベルでの L2 サポート ○ ○ Optimistic Rollup Zk Rollup ● Data Availability Layer ○ Ethereum でいう Sharding プロトコル外: ● Deku side chain https://twitter.com/danhines09/status/1584032932536074240
本発表でカバーしなかったこと ● Liquid Proof of Stake ○ 自分のステークをロックアップなしに他の baker に委任できる ● コントラクト及びプロトコルの形式検証 ○ ○ プログラミング言語理論を使って特定のバグがないことなどを証明 暗号ライブラリは検証済み ● 関数型言語 OCaml で実装 ○ ○ 静的型付け 形式検証がしやすい ● Michelson VM ○ ○ ○ ○ 関数型 静的型付け 形式検証がしやすい Michelson にコンパイルする JS-likeなシンタックスをもった JSLigo など
質問があれば ● Tezos開発日本語コミュニティー: https://discord.gg/JeBER8Gz7N ● 発表者のTwitter:https://twitter.com/linoscope