FLOCブロックチェーン大学校

マイページ
無料体験セミナー

ホワイトペーパー FLOC LOG

【日本語訳】イーサリアム(Ethereum/ETH)ホワイトペーパー全文

イーサリアム(Ethereum/ETH)のホワイトペーパー全文の日本語訳です。FLOCLOGではブロックチェーンを活用した様々なプロジェクトのホワイトペーパー日本語訳を閲覧できます。

マークルツリー

左: ブランチの有効性を証明するにはマークルツリー内の少数のノードに示すだけで十分です。
右: マークルツリーの一部を変更しようとしたら、チェーンのどこかに矛盾が生じます。

ビットコインの重要な拡張機能として、ブロックはマルチレベルのデータ構造で保存されることです。ブロックの「ハッシュ」は実際にはブロックヘッダ―のハッシュに過ぎず、タイムスタンプ、ナンス、直前のブロックのハッシュ値、およびブロック内のすべてのトランザクションを格納するマークルツリーと呼ばれるデータ構造のルートハッシュを含む、およそ200バイトのデータです。

マークルツリーはバイナリーツリーの1種で、基盤となるデータを含んだいくつものリーフノードが底にあるノードのセット、それぞれがその下2つのノードのハッシュである中間ノードのセット、そして最終的に単一のルートノードによって構成されていて、さらにその下にあるツリーの頂点を表す、2つの子ノードのハッシュによって形成されています。マークルツリーの目的はブロックのデータを少しずつ配信できるようにすることです。1つのノードは1つのソースからブロックのヘッダーのみをダウンロードすることができ、たとえそれがツリーの一部であったとしても全てのデータが正しいかを確認することができます。これが機能するのはハッシュがツリーの上方向に伝播するからです。もしも、悪意あるユーザーがマークルツリーの底に偽のトランザクションを入れようとしたら、この変更は上のノードへの変更を生じさせ、さらにその上のノードへの変更が必要となり、最終的にツリーのルートを変えることになるので、つまりブロックのハッシュも変更されるので、それによってプロトコルはそのブロックを全く別のブロックとして登録します。

マークルツリープロトコルは長期的な持続性のためには議論の余地なく必須なものです。ビットコインネットワークにおける「フルノード」は全ブロックを完全に保存し、処理するので2014年4月当時ではビットコインネットワークのフルノードを持つにはディスクに15GBの空き容量が必要で、さらに毎月ギガバイト以上成長しています。現在、これは一部のデスクトップパソコンでは可能ですが、スマホでは不可能で、将来的には企業、もしくはマイニングが趣味という人以外はネットワークに参加できなくなります。「シンプル化された決済承認(SPV)」として知られるプロトコルによって別のクラスのノードが存在でき、そのノードは「ライトノード」と呼ばれ、このノードはブロックヘッダをダウンロードし、ブロックヘッダのProof-of-Workを確認して、それからトランザクションとそれに関係する「ブランチ」のみをダウンロードします。これにより、ライトノードは、ブロックチェーン全体のごくわずかな部分のみをダウンロードしながら、ビットコイントランザクションのステータス、および現在の残高がどのようなものであるかを、セキュリティを保ったまま、確実に判断できます。

他のブロックチェーンアプリケーション

ブロックチェーンの基盤となるアイデアを他のコンセプトに適用するというアイデアには長い歴史があります。2005年、Nick Szaboは「所有者権限で財産権を保護」というコンセプトを考え、ドキュメントでどのように「レプリケートデータベーステクノロジーによる新しい進歩」によって、誰がどの土地を所有するかの記録を保管するためのブロックチェーンベースのシステムを可能とするかを説明し、建物、不法占有、そしてジョージア州の固定資産税のようなコンセプトを含む手の込んだフレームワークを作りました。しかしながら、その当時は不幸なことに効果的で利用できるレプリケイトデータベースシステムがなかったので、そのプロトコルは実際に実装されることはありませんでした。しかしながら、2009年の後、ビットコインの分散型コンセンサスが開発されたら、いくつもの代替アプリケーションが誕生し始めました。

Namecoin – 2010年に誕生したNamecoinは分散型名前登録データベースとして説明するのが最適です。ビットコイン、BitMessageやTORのような分散型プロトコルでは、他の人とやりとりをするために、アカウントを特定する何らかの方法が必要となりますが、既存の全ソリューションにおける唯一のそのような利用可能な識別子は、1LW79wp5ZBqaHW1jL5TCiBCrhQYtHagUWyのような疑似乱数ハッシュしかありませんでした。理想は、「ジョージ」のような名前のあるアカウントを持つことです。しかしながら、もしも誰かが「ジョージ」という名前のアカウントを作ることができたら、他の人が同じプロセスで「ジョージ」を自分のために登録することや誰かが偽造することができてしまいます。唯一のソリューションは早い者勝ちにすることで、最初の登録が成功したら、それ以降の登録は失敗するという、ビットコインのコンセンサスプロトコルに完全に適したものです。Namecoinは最も歴史があり、最も成功している、そのようなアイデアを活用した名前登録システムの実装です。

Colored coins – colored coins は人々が独自のデジタル通貨や1つの重要な資産を示すデジタルトークンをビットコインブロックチェーン上で発行できるようにすることを目的としたプロトコルです。colored coinsのプロトコルを使って、特定のビットコインのUTXOに特定の色を割り当てることができ、そしてプロトコルは他のUTXOの色を、それらを作成するトランザクションが費やしたインプットの色と同じになるように再帰的に定義します。(色の混ざったインプットに対してはいくつかの特別なルールが適用されます。) これによって、ユーザーは特定の色のUTXOだけを含むウォレットを維持したり、普通のビットコインのように送金したり、受け取ったUTXOの色を決定するためにブロックチェーンを遡ったりすることができるようになります。

Metacoins – metacoinの背後にある考え方は、ビットコイン上のプロトコルで、ビットコイントランザクションを使用して、metacoinのトランザクションを保存するものの、異なる状態遷移関数APPLYを持つことです。Metacoinのプロトコルは無効なmetacoinのトランザクションがビットコインブロックチェーン上に現れるのを防ぐことができないので、もしもAPPLY'(S,TX)がerrorを返して来たら、プロトコルはデフォルトでAPPLY’(S、TX)= Sになるというルールが追加されています。これにより、ビットコインそのものの中に実装することはできないものの、潜在的に高度な機能を備えた任意の仮想通貨プロトコルを作成するための簡単なメカニズムを提供することができます。

これらから、一般的にコンセンサスプロトコルを構築するアプローチは2つあり、1つは独立したネットワークを構築することで、もう1つはビットコイン上のプロトコルを構築することです。前者のアプローチは、Namecoinのようなアプリケーションのケースではかなり成功していますが、実装が難しいです。実装するたびに、毎回独立したブロックチェーンをブートストラップし、必要な状態遷移とネットワークコードをすべて構築してテストする必要があります。さらに、分散型コンセンサステクノロジを活用したアプリケーションの多くは規模が小さすぎて独自のブロックチェーンの安全性を保証できないようと予測しています。また、相互作用を必要とする既存の大規模な分散型アプリケーション、特に分散型自律型組織が存在することにも注意してください。

一方、ビットコインベースのアプローチはビットコインのシンプル化された決済承認機能を引き継いでいないという欠陥があります。SPVはビットコインにおいて有用で、なぜならブロックチェーンの深度を承認のためのプロキシーとして使うので、それまでのトランザクションにおいて十分にさかのぼることができれば、それが正しいトランザクションだったと安心して言うことができます。一方で、ブロックチェーンベースのメタプロトコルは、その独自のプロトコルのコンテキスト内で有効ではないトランザクションをブロックチェーンに含まないように強制的に行う方法がないです。したがって、完全に安全なSPVメタプロトコルの実装においては、特定のトランザクションが有効かどうかを判断するために、ビットコインブロックチェーンの先頭までずっとバックワードスキャンする必要があります。現状、全ての「正しい」ビットコインベースメタプロトコルの実装はデータの提供において、信頼できるサーバに依存していて、特に仮想通貨の主な目的の1つが信頼の必要性を排除することであるので、おそらく最善からは遠いものとなります。

スクリプティング

拡張とかなしでも、実際ビットコインプロトコルは「スマートコントラクト」というコンセプトの弱いバージョンを扱っています。ビットコインのUTXOは公開鍵によって所有できるだけでなく、シンプルなスタックベースのプログラミング言語で表現された複雑なスクリプトで行うこともできます。このパラダイムでは、そのUTXOを消費するトランザクションはスクリプトを実行するのに十分なだけのデータを提供しなければなりません。それゆえ、たとえベーシックな公開鍵所有メカニズムがスクリプトによって実装されていたとしても、スクリプトは楕円曲線署名をインプットとして受け取り、それをトランザクションとUTXOを所有するアドレスと照合して検証し、検証が成功した場合は1を返し、それ以外の場合は0を返します。他の、より複雑なスクリプトも様々な追加のユースケースのために存在します。例えば、有効化するために、事前に設定された3つの秘密鍵のうち2つからの署名を必要とするスクリプト(マルチシグ)という、コーポレートアカウントや安全な貯金用のアカウントや商用のエスクローシチュエーションに活用することができる設定を行うことができます。また、スクリプトは計算問題の解答に対しての報酬を支払うために使うことができ、さらには例えば「このビットコインUTXOは、もしもあなたが○○枚のdogecoinに送金するトランザクションのSPV証明を提供することができたらあなたのものとなります」といった、本質的に分散型での異なる仮想通貨間での取引を可能とする、スクリプトを作成することさえできます。

しかしながら、ビットコインに実装されたスクリプト言語にはいくつかの重要な限界があります。

チューリング完全の不足– つまり、ビットコインスクリプト言語がサポートする大規模な計算があったとして、ほとんど全てをサポートしていないということです。足りない主要なカテゴリーはループです。これはトランザクションの承認時に無限ループが発生するのを防ぐためにループが抜けています。理論的には、スクリプトプログラマーが、ifステートメントを使用して基礎となるコードを単純に何度も繰り返すことで、任意のループをシミュレートすることで解決できる問題ですが、このせいでスペース的にとても非効率的なスクリプトが出来上がってしまいます。例えば、代替となる楕円曲線署名アルゴリズムを実装するには、同じコード内で別々にだいたい256回の乗法ラウンドを繰り返す必要があります。

バリューブラインドネス– UTXOスクリプトには引出可能額に対してのきめ細かい管理を提供することができません。例えば、オラクルコントラクトの1つの強力なユースケースはヘッジングコントラクトです。ヘッジングコントラクトとは、AとBが1000$相当のBTCを入れて、30日後に1000$相当のBTCをAに送って、残りをBに送るというようなスクリプトです。このコントラクトには1BTCがUSDでどれだけの価値があるのかを決めるオラクルが必要で、たとえこんな活用であったとしても現在利用可能な完全に中央集権なソリューションに対してはインフラ要件と信用という面において大きな改善となります。しかしながら、UTXOは1か0だけなので、これを達成する唯一の方法は、さまざまな価値の多くのUTXOを使う非常に非効率的な方法です。具体的に言うと、2kのUTXOがあったとしてkが30になるまでの全UTXOを用意する必要があり、それらのUTXOからどのUTXOをAに送るか、どれをBに送るかをオラクルが選びます。

ステートの欠如– UTXOは消費するか、消費しないかのどちらかしかなく、それ以前の内部ステートを維持する、マルチステージコントラクトやスクリプトには対応できません。このせいでマルチステージオプションコントラクト、分散型取引オファーや二段階暗号コミットメントプロトコル(計算報酬を補償するために必要)などを難しくしています。また、UTXOは単純な一回限りのコントラクトにしか使用できず、分散型組織などのより複雑な「ステートフル」コントラクトを構築することはできず、メタプロトコルを実装することは困難です。バリューブラインドネスとバイナリーステートを組み合わせたら、もう1つの重要なアプリケーションである出金制限を作れますが、ビットコインでは不可能です。

ブロックチェーンブラインドネス– UTXOなナンスや直前のハッシュのようなブロックチェーンデータからは見ることができません。この厳しい制限によって、潜在的に価値のある乱数のソースであるスクリプト言語を利用できないせいで、ギャンブルや他のいくつかのカテゴリーのアプリケーションに厳しい制限が課されます。それゆえ、仮想通貨上で先進的なアプリケーションを構築するためには3つのアプローチがあると考えています。1つ目は新しいブロックチェーンを構築、2つ目はビットコイン上でスクリプトを利用、3つ目はビットコイン上でメタプロトコルを構築することです。新しいブロックチェーンを構築することで、機能セットを構築するのに制限はなくなりますが、開発コストとブートストラップのための努力が必要になります。スクリプトを使うのは実装が簡単で、標準的ですが、その機能とメタプロトコルはかなり制限されていて、簡単とは言いながらもスケーラビリティの欠点に苦しみます。イーサリウムでは、同時に3つのパラダイムのアドバンテージを提供できる一般化されたフレームワークを構築しようとしています。


FLOCブロックチェーン大学校は、第一線で活躍する講師陣から体系的かつ実践的な知識や技術を学び、最短3ヶ月でビジネスパーソンやエンジニアとして活躍できるブロックチェーン総合スクールです。
5,000人を超える方が参加した、無料でブロックチェーンを100分で学ぶ「無料体験セミナー」も随時開催しています。
遠方で参加できない、日程が合わないという方にはWEB受講も行ってます。

多数のケーススタディが掲載されたブロックチェーンビジネス事例集がこちらから無料入手できます。

最新記事・限定情報を配信してます

ブロックチェーン専門スクールで即戦力を身につけませんか?

FLOCブロックチェーン大学校は、技術者の育成から、ビジネススクール、検定試験によるアセスメントの構築、人材紹介、起業家育成などを通じ、ブロックチェーンのプラットフォームを構築しているブロックチェーンの総合スクールです。
無料体験セミナーは、ブロックチェーンの仕組みからブロックチェーンで変わる未来、ブロックチェーン技術を効率的に身につける方法について、100分で学べる体験講座です。遠方で参加できない方や、教室開催の日程で都合が合わない方にはWEB配信も行ってます。

無料体験セミナーを確認する

FLOC LOG カテゴリー

3分でわかるブロックチェーンFLOC講師が解説!速報ブロックチェーンニュースホワイトペーパー体験セミナー