2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
中村龍矢氏:それでは「シャーディング技術の全体像と研究動向」ということで発表します。よろしくお願いします。
本日はシャーディング祭りということで、まず序盤に僕からシャーディングの概論的なことをお話しします。それから題材としてEthereum 2.0のシャーディングについて話して、最後にQ&Aとして、Sli.doでもらった質問に答えていこうかなと思っています。資料は、あとでTwitterで公開します。
それではまず自己紹介も兼ねて、弊社の研究開発についてお話しします。LayerXはブロックチェーン開発会社です。創業したときからR&Dチームがありまして、先端の技術にキャッチアップすること、キャッチアップにとどまらないで自分たちで技術を生み出して発展に貢献すること、それからこの技術的なビジョンを持って社内外で発信することをビジョンにやっています。
今までのテーマを全部総合すると、セキュリティ、スケーラビリティ、インターオペラビリティ、プライバシーという、けっこういろんな方面の研究をやっています。
最初はスマートコントラクトのセキュリティから研究を始めました。ここにあるVyperというのは、Ethereumの有名なSolidityに代わる言語として作られたものです。最初はこのコンパイラにコントリビューションをしたりとか……。ここに書いてある「Vyper Compiler」は、Ethereumの「Remix」という有名なブラウザのコンパイラですが、そこにVyperプラグインというのがありまして、それは弊社が昔作ったものです。
ここから転じて、形式的検証というスマートコントラクトのセキュリティを数学的に証明する、といったプロジェクトを始めました。
ここで使っているのは「K Framework」という形式的検証のツールなんですけれども、Ethereumのコミュニティに限らず、本当にパブリックチェーンコミュニティで、今、広く扱われている形式的検証ツールになっています。
ここから徐々に、「形式的検証の対象をプログラムからプロトコルに変えてみたらおもしろいんじゃないか?」ということで始めたのが、CBC CasperというEthereumのProof of Stake向けのコンセンサスアルゴリズム。これの形式的検証を始めました。
こちらはプログラムの形式的検証と違うので別のツールを使っていて、Isabelleという定理証明器を使って証明を進めていきました。
こちらの研究は論文になっていまして、世界で初めて査読つきの国際学会に通ったCBC Casperの論文になってます。こういったCasperに関する学術的な研究は、Ethereum Foundationの「Grants Program」というものにサポートしてもらっています。
2019年の秋ぐらいから、今日のテーマでもあるEthereum 2.0のセキュリティを研究し始めまして、ここに書いてあるBouncing Attackとか、2つほど脆弱性の発見と改善策の提案を行なっています。こちらは2つともEthereum 2.0の公式の仕様にマージされています。
こうしたかたちで、既存のコンセンサスアルゴリズムに対して証明を与えたりとかセキュリティをチェックするということだけではなくて、我々もどんどん自分たちで作っていこうと、いくつかオリジナルのコンセンサスアルゴリズムに関しても提案をしています。
こういったCasperの研究に関しては、弊社の中で閉じこもるのではなくて、なるべく外の研究者と議論をしながら進めていまして……。とくにCasperはEthereumのプロトコルですので、VitalikをはじめとするEthereum Foundationのメンバーが議論にとてもつき合ってくれて、2019去年のDEVCONでもいろんな方に紹介をしてもらいました。
ここまでがセキュリティです。今日のトピックであるシャーディングというのは、スケーラビリティ関連の研究です。去年の秋・冬ぐらいから始めたもので、今日このあと岡南君が発表するシャーディングの負荷集中の現象、それからその緩和策の提案といったものを研究して、こちらも学会というかワークショップに発表しています。これは後ほど紹介します。
それ以外も、少しずつスケーラビリティに関しては既存の提案を見ていて……。僕はわりとセキュリティ・スケーラビリティ周りを研究しているのですが、もう1個プライバシーを主にやっているチームがあって、そちらで2019年の今ごろ作ったのが「Zerochain」という秘匿送金ブロックチェーンです。
これはPolkadotを運営しているWeb3 Foundationが作っているSubstrateというブロックチェーンフレームワーク上に、Rustで実装されています。こちらはWeb3 Foundationのグラントに採択されていて、サポートを受けています。
最近の新しい研究トピックとしては、「インターオペラビリティ:クロスチェーン」で、「Cordage」がつい最近リリースされています。
こちらはオープンソースの「Corda」というブロックチェーン、わりとエンタープライズ向けのブロックチェーンと、それからほかのチェーンをつないでいくというプロジェクトになっていまして、現在はEnterprise Ethereumの中でも非常に有名な「Quorum」というものと接続しています。これは絶賛開発中ですので、今後もいろんなアップデートがあるかと思います。
そういったかたちでEthereumとかCordaみたいな実際のインダストリーのブロックチェーンの研究ということもあるんですけれども、それをなるべくアカデミアのほうに論文で発表して、「こういった問題があるんだよ」ということをベンチャーとして伝えていきたいなと思っています。2019年は、国内で2つほど、国外で4つのカンファレンスに参加しています。
今ザーッとこれまでの研究についてやったことを話してきたんですけれども、その背景にどういった目的があるかとか、スタートアップとしてどういうふうにほかの大学や大企業と競って研究をしていくかということに関しては、最近記事を書きましたので、こちらをぜひご覧ください。このリンクから行くか、Twitterで発表しています。
というわけで、いよいよ本題のシャーディング概論とEthereum 2.0のほうに移りたいと思います。1点目は「シャーディングについて」です。
まず「シャーディングとは?」ということですが、非常に広い定義から紹介します。非常に広く言うと、複数のブロックチェーンで、1つの分散台帳、アプリケーションプラットフォームを作っていくというものです。
ここで、それぞれのシャードというのが右の図にある一つひとつのブロックチェーンのことを指していまして、大事なのは、それぞれのシャードが別々の履歴を管理する、別々のヒストリーを管理すると……。なので、あるシャードにあるコントラクト・アカウントはほかのシャードには基本的にはない、というかたちになります。
なぜやるかということなのですが、非常に乱暴に言うと、シャードの数だけTPSが上がっていくので、スケーラビリティの改善が主なモチベーションになります。
これは非常に広い定義ですが、狭義のシャーディングの定義として2つほど条件があります。こちらがわりとEthereumとかアカデミアでシャーディングと呼ばれているものです。
1つ目の定義が「異なるノードが各シャードに割り当てられる」というものです。自分があるシャードに割り当てられたとしたら、そのバリデーターはほかのシャードのことは見ない。これがシャーディングのスケーラビリティ改善としての特徴でして、TPSが上がっても1つあたりのノードが見るべきデータの量は変わりませんので、ストレージに関してTPS分だけ要求が増えることがありません。
この1つ目の条件を満たさない広い意味のシャーディングも「Transaction sharding」と言われたりして、こちらもこれで論文とか研究はあります。
2つ目の条件が非常に大事でして、「セキュリティは“あまり”落ちない」と書いてあるのですが、このようにブロックチェーンを分割してしまうと、かつ条件1を満たすと、一つひとつのシャードに属するノードの数、バリデーターの数は、当然N個に分けたらN分の1になりますので、セキュリティもN分の1になってしまうと。
これだと正しいスケーラビリティのソリューションじゃないので、これをなんとかして解決するのがシャーディングの2個目の条件になります。残念ながら完全に落ちなくするのは難しいと。ですが、“あまり”落ちないということで、その落ち幅がある程度に収まるというのが2つ目の条件になっています。
シャーディングに取り組んでいるのか誰かということですが、今日紹介するEthereumも当然やってるんですけれども、新しいブロックチェーン系のプロジェクトもシャーディングを導入しています。NEARというのはスタートアップでパブリックチェーンを作っていくというところで……。Polkadotは知ってる方もいるんじゃないかと思いますが、非常にEthereum 2.0に近いシャーディングの設計をとっています。
アカデミアでも2018年頃から急にいわゆるさっきの2個の条件を満たすシャーディングが現れ始めています。どれもセキュリティ系のトップカンファレンスですが、Omniledger・Chainspace・RapidChainということで、2018年ごろに出た提案になります。
では、こういったシャーディングのプロジェクトはどのように見たらよいかということで、今日はこの3つのポイントから見ていこうかなと思います。
1つ目がアーキテクチャ。シャードが分かれると言ってるんだけれども、どれぐらい・どういったかたちでそのシャードがつながっているのか。
2つ目がシャードセキュリティ。先ほどの条件の2つ目である、セキュリティがN分の1になってしまう問題をどう解決するか。ここでまたシャーディングの提案が分かれていきます。
3つ目がクロスシャードトランザクション。これもまた2つに分かれまして。ほかのシャードのデータをどういうふうに見るかというデータ層の話、それからそのデータ層の上でどういうふうにシャードをまたぐトランザクションを実行するかといったアプリケーション層。この2つに分かれるんですけれども、このクロスシャードトランザクションのつくり方によってもシャーディングの提案は分かれていきます。
それぞれいろんな提案をラフに見ていくこともできるのですが、今日はあえてEthereum 2.0に絞って解説しようかなと思っています。その理由は、Ethereum 2.0は比較的オーソドックスな提案をしていて、これを見ると他のシャーディングの提案も見やすくなるかなと思っています。
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05