イーサリアム検証者の悩みについて


日付: 2021-09-30 閲覧数: 80



イーサリアムや他のPoW法に基づくブロックチェーン・ネットワークにおいてブロックデータの完全性検証を行うのがノード間の合意に至る為に不可欠です。しかし、イーサリアムの場合、情報信ぴょう性検証を行うノードは報いられません。この結果、検証者の悩み(Ethereum Verifier’s Dilemma)というのが生じます。つまり、イーサリアムのマイニングに取り組んでいる採掘者は報酬が得られないことにもかかわらずデータ完全性検証を行うか、それをやらずに次のブロックのマイニング報酬を目当てに採掘し続けるという二者択一の岐路のどちらかを歩むことになります。今回はデータ駆動型モデル、閉形式と機械学習技術を組み合わせてこの問題を解析し、離散数学シミュレーションの結果についても報告したいと思います。


以下において、30万本のスマートコントラクトから抽出した情報と共に、CPU実行時間も報告し、Gaussian Mixture ModelとRandom Forest Regression法を使って、シミュレーション入力に適している形を生み出す元のデータの変換についても述べたいと思います。なお、実際に、情報完全性検証を省く行為の経済合理性も証明します。この欠点を補う為に、並列化と無効なブロックの入れ込みに基づく2つの方法を提案します。


キーワード:イーサリアムスマートコントラクトベンチマーク性能シミュレーション検証者の悩み


Data-Driven Model-Based Analysis of the Ethereum Verifier’s Dilemmaの英文からの翻訳:LBより


背景


全てのブロックチェーン・ネットワークが採掘者の検証作業に頼るものであり、仮想通貨マイニングを行う利用者たちはブロックチェーン上に保存される情報の信ぴょう性と完全性を確保する為に膨大な演算量をかけて協力してネットワークを51パーセント攻撃から守ろうと心掛けています。そして、許可を必要としない公開ブロックチェーンに基づく全てのネットワークが採掘者にマイニング作業に費やした労働の対価としてマイニング報酬を提供します。明らかに、望ましくて正確な行為を見せる採掘者の参加を促すには金銭的な動機付けが必要です。言い換えれば、バランスの良い動機付けと共に採掘者の利益をうまく調整できると磐石なブロックチェーン構造が生まれるということです。


ただし、興味深いことに、イーサリアムの場合は動機付けのない作業があります。この作業はブロック内のトランザクション情報の完全性検証です。その結果、採掘者の悩みが生じるのです。つまり、報酬を得ないことにも関わらずブロック内のトランザクション情報の完全性検証に計算パワーを費やしてもいいかなと悩む採掘者が多いでしょう。ブロック内に不正情報がなければ、もちろん完全性検証を行わなくても問題ありません。そしてマイニング報酬を目当てに後続するブロックの採掘に進んでも構いません。マイナーズの悩みと呼ばれるこの現象はDemystifying Incentives in the Consensus ComputerA scalable verification solution for blockchainsと題する研究論文で認知されていますが、詳しく解析されていません。


この総合的な研究論文において様々な手法を用いてブロック内データの完全性検証を行うか否かという決定とマイニング報酬の関係性を明らかにします。ここで数理モデルを採用し、起こり得る全ての シナリオの評価を試みます。


イーサリアムのネットワークの実際の構造を観察するだけで検証者の悩みの真相を明らかにするのが事実上不可能です。なので、数理モデルに基づいてデータ駆動型変数化を基盤にした手法が唯一な道 だと考えられています。この論文で次のいくつかの手法を組み合わせます。イーサリアムのネットワークの公開シミュレータ「BlockSim」を核心的なツールとして使います。このシミュレータは一般用途向けツールであり、拡張可能です。検証者の悩みを様々な条件の下で評価する為にシミュレータの拡張を行います。第二に、現実的なシミュレーションを行う為にイーサリアムのブロックチェーン上に保存されたスマートコントラクトの情報を収集します。そしてこのデータは現実的な変数と特徴データと共 にシミュレータの入力となります。今回、32.4万本のスマートコントラクトを解析しました。第三に、静的機械学習技術を用いてシミュレータの入力に適切な入力形式を作ります。具体的に言って、今 回はGaussian Mixture Models法を使って適切な情報分布(例えば、スマートコントラクト一本当たりのGas代の分布)を作り出します。そしてGas代を基に、Random Forest Regression法でスマートコントラクトを実行する為に必要なCPU時間を予測します。その結果となる分布をシミュレーションの入力変数として使用します。最後に基本条件の下で起こり得るシナリオを描写する閉形数式を導きます。基本条件下で無効なブロックが存在しません。この仮定で検証を行うか否かによって変動する収益率を描写する数式を導くことに成功しました。


前述した検証者の悩みの評価から特定の条件の下でブロック内のデータの検証を行う動機付けがないと分かります。明らかに、検証作業が省かれるとブロックデータの検証が行われることを仮定するイーサリアムのネットワークの構造は大きな危険に晒されます。この脆弱性を補う為に次の2つの方法を提案します。


まずは、Adding Concurrency to Smart Contractsと題する研究論文の結果に基づいてブロックデータ検証の並列化を導入します。すると検証作業に必要な時間の短縮で検証者がより早く次のブロックの採掘に進めるという効果を期待します。


第二に、意図的に無効なブロックを注入することによって検証作業を行う参加者を罰するという解決策も提案します。この方法はA scalable verification solution for blockchainsで既に提案されています。その理由に関して言えば、検証作業を行うわない参加者は高頻度で無効なブロックを提出することになり、他の採掘者によって無効なブロックの提出が拒否されます。その結果、検証作業を行わない参加者の収益率が下がります。


明らかに、検証を行わない多くの場合はマイニングの収益率が上がります。特に有効なブロックが多い場合とブロック制限の場合、この傾向が強まります。現在、イーサリアムの場合は検証者の悩みの 影響は強くありませんが、ブロック制限が高まるにつれて検証を行うわない行為がブロックチェーンのセキュリティ脆弱性をもたらすのがDemystifying Incentives in the Consensus Computerでも指摘されています。検証作業の並列化と無効なブロックの注入が検証作業を行う参加者を刺激し、この問題を解決し得ると考えて います。


背景


ブロックチェーンは分散型電子台帳であり、トランザクション情報を含むブロックから成り立っています。ブロックチェーン・ネットワークにおいて全ての採掘者がデータベースの完全性を確保する為 に新しいブロックの生成・追加を行い続けています。ブロック生成と追加の前に未承認のトランザクションのリストからいくつかの行を選び、proof-of-workなどの計算手法を用いてブロック追加に必>要な情報を算出します。そしてこのように計算されたブロックが各ノードに通信されます。理論上、各ノードが受信後にブロックを局所ブロックチェーンに追加する前にブロック内のデータの完全性検証を行うべきです。ブロックの完全性検証という作業は、ブロックの構造を検証し、ブロック内の全てのトランザクションを再実行し、出力を確認することを意味します。これで採掘者の計算結果の検 証が行われます。


ビットコインのような第1世代の仮想通貨ネットワークは主に仮想通貨振込み機能を提供しました。ただし、イーサリアムなど、スマートコントラクト機能を実現する仮想通貨ネットワークはもっと複雑な仕組みを提供し、分散型アプリケーションの開発も可能となりました。


スマートコントラクトとはブロックチェーン上に保存された実行可能なプログラムです。従来の契約書と同様に、いくつかの条件を含み、ある条件下でスマートコントラクトで定められた規則がコンセ ンサスによって施行されます。現在、チューリング完全なプログラミング言語を提供するイーサリアムは世界で一番人気のあるスマートコントラクト機能を実現するプラットフォームです。


イーサリアムの場合は、一般利用者用アカウントとスマートコントラクト用アカウントが存在します。後者はスマートコントラクトのソースコードとその実行に必要なストレージ容量を管理します。取引を行うことでアカウント間の情報通信も実現されます。イーサリアムのブロックチェーンは仮想通貨振込みとスマートコントラクトとの情報交換という2種類のトランザクションに対応しています。前者はイーサ(ETH)の送金機能を実現します。後者は新しいスマートコントラクトの展開及びスマートコントラクトとの情報交換を実現する機能です。


新しいスマートコントラクトを展開する際、コントラクト作成を描写するソースコードを含むトランザクションをブロックチェーンに提出する必要があります。トランザクション実行後、展開されたスマートコントラクトの唯一なアドレスが生成され、依頼を提出した参加者にそのハッシュ値が送信されます。スマートコントラクト内の機能を呼び出す為に、スマートコントラクト機能呼び出し依頼が入力変数と共にブロックチェーンに提出する必要があります。その後、スマートコントラクトが入力変数と呼び出された機能に応じて応答を返すことになります。イーサリアムのブロックチェーンの各ノードが、EVM(イーサリアム仮想マシン)を実行しています。この仮想マシンがスマートコントラクト機能を実行する役割を果たしています。スマートコントラクト内の命令はopcodesと呼ばれています。全てのトランザクションはEVMで逐次実行・検証されるのです。


イーサリアムの動機付けモデル


イーサリアムのネットワークでその電子台帳の完全性を確保する為に採掘者に報酬を与えるという動機付けモデルが存在します。参加者は、ブロック報酬、トランザクション手数料とuncle報酬という3つの種類の報酬を得ることができます。ブロック報酬は一定額の報酬であり、現在各ブロックあたり2ETHです。そしてブロックのトランザクション手数料による報酬はブロック内の全てのトランザクションの手数料を合算した金額です。uncle報酬は孤立ブロック(オーファンブロック)を生成・追加した参加者に与えられます。


イーサリアムの仕組みはGas代に基づいたモデルを採用してスマートコントラクトとの情報交換の手数料を算出します。なお、各スマートコントラクト内のopcodeは事前に定められたGas料を消費します。提出時、EVMが使用済みのGasを照会し、提出者からその額に応じて実行手数料を徴収します。なお、このモデルは実行デッドロックを回避する為に提出者がGas料の最高値を指定し、それを超えるGas代が定めれれるとEVMがスマートコントラクトの実行を止めるという仕組みです。




コメント (0)


記事特選