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

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

ホワイトペーパー FLOC LOG

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

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

ブロックチェーンとマイニング

イーサリウムブロックチェーンは多くの点でビットコインブロックチェーンに類似していますが、いくつかの違いがあります。ブロックチェーンアーキテクチャに関するイーサリウムとビットコインの主な違いは、ビットコインとは異なり、イーサリウムのブロックにはトランザクションリストと最新の状態の両方のコピーが含まれることです。それ以外では、ブロック番号と難易度という2つの値もブロック内に保存されています。イーサリウム仮想マシンにおけるブロックのバリデーションアルゴリズムは以下の通りです。

  1. 直前のブロックへの参照があって、有効かを確認します。
  2. ブロックのタイムスタンプが参照されている直前のブロックよりも大きく、さらにその差が15分以内であることを確認します。
  3. ブロック番号、難易度、トランザクションルート、アンクルルート、そしてガスリミット(様々なイーサリウム固有の低レベルコンセプト)が有効なのかを確認します。
  4. ブロック状のProof-of-Workが有効かを確認します。
  5. S[0]を直前のブロックのSTATE_ROOTにします。
  6. TXのブロックをn個のトランザクションのトランザクションリストとします。
    For all in in 0…n-1, setS[i+1] =APPLY(S[i],TX[i]).
    もしも、どれかのアプリケーションがエラーを返したり、この時点までにブロックで消費されたガスの合計がGASLIMITを超えたりした場合は、エラーを返します。
  7. S_FINALをS [n]としますが、マイナーに支払われたブロック報酬を追加します。
  8. S_FINALがSTATE_ROOTと同じかどうかを確認します。もしも、同じだったらブロックは有効で、違ったら無効です。

一見した感じ、このアプローチはとても非効率的に見えるかもしれません。なぜなら、このアプローチでは全ての状態をそれぞれのブロックに格納する必要があるからです。しかし、現実的には効率性はビットコインと比較されるべきです。その理由は、状態はツリー構造で保管されていて、ブロックごとにツリーのごく一部を変更するだけで良いからです。それゆえ、一般的には、2つの隣接するブロックの間では、ツリーの大部分は同じとなるので、データを1回格納したら、ポインタを使用することですぐに参照できます(例 サブツリーのハッシュ)。「パトリシアツリー」と呼ばれる特別な構造がこれを実現するために使われていて、ノードの挿入と削除を可能にし、それを効率的に行えるようにする、マークルツリーへの改善が含まれています。さらに、全ての状態情報は最後のブロックの一部分なので、ブロックチェーンの履歴全てを保存する必要はなく、もしもこの戦略をビットコインに適用した場合は、5~20倍のスペース節約になると計算されています。

アプリケーション

一般的に、イーサリウム上には3種類のアプリケーションがあります。1つ目のカテゴリーは金融アプリケーションで、ユーザーに自分のお金を使って、契約を作成し、管理するためのもっと強力な方法を提供します。これにはサブ通貨や金融デリバティブ、ヘッジ契約、預金ウォレット、遺言、さらに究極的にはある種類の雇用契約全てを含みます。2つ目のカテゴリーは準金融アプリケーションで、お金は絡むものの、多くの部分においてはお金が絡まないものです。その完璧な例は、計算問題の解決のための自己実施型の報酬制度です。最後に、オンライン投票や分散型ガバナンスといった、全く金融と関係のないアプリケーションもあります。

トークンシステム

ブロックチェーン上のトークンシステムには、米ドルや金などの資産を表すサブ通貨、スマートアセットを表す個々のトークン、安全で偽造不可能なクーポン、さらには従来の価値と全く結び付かないインセンティブのためのポイントシステム用のトークンシステムまで、さまざまな用途があります。トークンシステムはイーサリウム内で驚くほど簡単に実装できます。理解すべき重要な点は、すべての通貨、つまりトークンシステムは、基本的に1つの操作を含むデータベースであるということです。(i)Xが最低でもX個をトランザクション前に持っていて、(ii)トランザクションがAによって承認されるという条件を満たしたら、AからX個を差し引いて、BにX個を追加するということを行います。トークンシステムを実装するために必要なのはこのロジックをコントラクトに実装することだけです。

Serpantでトークンシステムを実装するためのベーシックなコードは以下の通りです。

from = msg.sender to = msg.data[0] value = msg.data[1]

if contract.storage[from] >= value:
contract.storage[from] = contract.storage[from] ­ value
contract.storage[to] = contract.storage[to] + value

これは本質的には、この文書の上でさらに説明した「銀行システム」における状態遷移機能の実装です。最初の段階で通貨単位を分配する最初のステップと他のいくつかのエッジケースを提供するために、数行の追加コードを追加する必要があり、理想的には他のコントラクトのアドレス残高を照会させる機能を追加すると良いです。理論的には、サブ通貨として機能するイーサリウムベースのトークンシステムはオンチェーンのビットコインベースのメタ通貨には欠けている重要な機能を含めることができるかもしれず、それはその通貨でトランザクション手数料を直接払う機能です。これを実装する方法は、コントラクトは送信者に手数料として支払われるETH分の残高を維持し、コントラクトが手数料分の独自通貨を集めて、そして市場でそれらを再販することによってこの残高を補充します。したがって、ユーザーは自分のアカウントをETHで「アクティベイト」する必要がありますが、EHTさえあれば、コントラクトが毎回払い戻しを行うため、再利用することができます。

金融デリバティブと価値がステーブルな通貨

金融デリバティブは「スマートコントラクト」の最も期待されているアプリケーションで、コードで実装するのに最もシンプルなものの1つです。金融コントラクトの実装における大きな課題は多くの場合外部の価格情報を参照することが必要ということです。たとえば、多くの人が期待するアプリケーションは、米ドルに対するETHのボラティリティ(または別の仮想通貨)をヘッジするスマートコントラクトですが、これを行うにはETH/USDの価格がどれぐらいなのかをコントラクトが知っていないといけません。これを行う最も簡単な方法は、その当事者が必要に応じてコントラクトを更新する能力を持つように設計された特定の当事者(例えばNASDAQ)によって維持される「データフィード」コントラクトを使うことです。そのコントラクトにメッセージを送ると価格が返信として提供されるようにします。

その重要な要素を検討すると、ヘッジコントラクトは以下のようになります。

1. Aが1000ETH入力します。
2. Bが1000ETH入力します。
3. データフィードコントラクトが引っ張ってきた情報で、1000ETHのUSDでの価値をストレージに記録し、これはX$の価値があると表示します。
4. 30日後、AまたはBがX$分のETHを送金するためにコントラクトに「ping」をできるようにし、 (新しい価格を入手するために再度データフィードコントラクトの情報をベースに計算) AにXドル分を送信し、残りをBに戻します。

このようなコントラクトは仮想通貨の商用利用においては大きなポテンシャルを持っています。仮想通貨に関する最も大きな問題の1つはその価格の変動幅の大きさです。たとえ、多くのユーザーと企業が暗号資産による安全性と利便性を活用したいと思っていても、多くは自分の資産価値が1日で23%失われるような目には遭いたくないと思っています。今までのところ、最も一般的に提案されている解決策は、発行体が資産を担保することで価値を安定化させる方法です。そのアイデアは、発行者がサブ通貨を発行して、その新しい通貨を発行して失効させる権利を持ち、そして特定の裏付けとなる資産(金、米ドル)などの1つをその発行体に提供する人にオフラインでこの通貨の単位1つを提供するというものです。その後、発行者は1単位の仮想通貨を送り返してきた人に1単位の原資産(米ドル、金)を提供することを約束します。このメカニズムによって、発行者が信頼さえできれば、あらゆる非暗号化資産が暗号資産に持ち上げることができるようになります。

しかしながら、現実では発行者は常に信頼されているわけではなく、いくつかのケースにおいては、銀行インフラはそのようなサービスが存在するには脆弱、もしくは敵対的です。金融デリバティブは代々案を提供します。ここでは、単一の発行体が資産をバックアップするための資金を提供するのではなく、暗号化された参照資産の価格が上がることを賭けて分散した投機家の市場がその役割を果たします。発行者とは異なり、ヘッジコントラクトは資金をエスクローで保有しているため、投機家は交渉相手側にデフォルトする選択肢はありません。注意して欲しいのはこのアプローチは完全に分散化されているわけではないです。なぜなら、価格の参照などで信用されたソースをまだ必要としているからです。しかしながら、インフラ要件を軽減し(発行者になるのとは違い、価格の参照情報を発行するには免許は不要で、フリースピーチとしてカテゴリー化されるかもしれません)、詐欺の可能性を減らすという意味では大きな改善です。

IDと評価システム

Namecoinは最初期のアルトコインで、ビットコインのようなブロックチェーンを名前登録システム提供のために使おうとしていました。このシステムを使うと、ユーザーは他のデータと一緒に自分の名前をパブリックデータベースに登録することができます。主に挙げられているユースケースはDNSシステムで、 “bitcoin.org”(または、Namecoinの場合は “bitcoin.bit”)のようなドメイン名をIPアドレスにマッピングします。他のユースケースとしてはメール認証や潜在的により先進的な評価システムなどが含まれています。こちらがイーサリウム上でNamecoinのような名前登録システムを提供するためのベーシックコントラクトです。

if !contract.storage[tx.data[0]]:
contract.storage[tx.data[0]] = tx.data[1]

このコントラクトはとてもシンプルで、イーサリウム内のデータベースで追加のみ可能で、そのベータベースでの変更や削除はできません。誰でもなんらかの価値のある名前を登録することができ、その登録は永遠に残り続けます。より洗練された名前登録コントラクトはまた、他のコントラクトがそれを問い合わせることを可能にする「機能条項」、ならびにデータを変更しまたは所有権を移転するための名前の「所有者」(すなわち最初の登録者)のためのメカニズムを持ちます。あるものは、評価システムと信頼のウェブ(web-of-trust)機能をその上に実装することさえできます。

分散型ファイルストレージ

この2~3年、数多くの有名なオンラインファイルストレージのスタートアップが登場し、その中でも最も有名なのがDropboxで、ユーザーが自分のハードドライブのバックアップをアップロードしてサービスストアに保管してもらい、月額料金を支払ってもらうことで、そこにアクセスできるようにすることを目指しています。しかしながら、現状このファイルストレージマーケットは場合によっては、比較的非効率です。既存の様々なソリューションから考えると、特に、無料分や企業レベルの割引がかからない20〜200 GBレベルのゾーンでは、主流のファイルストレージのコストの月額は、ハードドライブ全体のコスト以上の金額を毎月支払っているようなものです。イーサリウムのコントラクトを使うことで分散型ファイルストレージエコシステムを開発することができるようになり、それぞれのユーザーが自分のハードドライブを貸し出すことで少量のお金を稼ぐことができ、未使用のスペースによって、ファイルストレージのコストをさらに下げることができます。

このようなデバイスの重要な基盤は、「分散型Dropboxコントラクト」と呼ばれるものです。このコントラクトは以下のように動きます。まず、目的のデータをブロックに分割し、各ブロックをプライバシーのために暗号化して、そこからマークルツリーを構築します。そうしたら、毎Nブロックごとに、コントラクトはマークルツリー内のランダムなインデックスを選択し(ランダム性のソースとしてコントラクトコードからアクセス可能な直前のブロックのハッシュを使い)、ツリー内の特定のインデックスでそのブロックの所有名の証明となるようなシンプル化された決済の承認のあるトランザクションを供給するために最初のエンティティにXETHを与えるという条件のコントラクトを作成します。ユーザーが自身のファイルを再ダウンロードしたい時は、ファイルを復元するためにマイクロペイメントチャネルプロトコルを使うことができます。(例 32キロバイトごとに1 szabo(架空の通貨)を支払う) 支払う人にとって、最も手数料的に効率的なアプローチは最後までトランザクションを公開する代わりに、代わりに、トランザクションを32キロバイトごとに同じナンスを持つもう少し有利なトランザクションに置き換えます。

このプロトコルの重要な特徴は、多くのランダムノードがファイルを忘れることをしないと信頼しているように思われるかもしれませんが、秘密の共有によってファイルを複数の部分に分割し、それぞれの部分がまだ残っていることを確認するためにあるノードを所有することでそのリスクをほぼゼロにまですることができます。コントラクトがまだお金を払っているならば、それはそこにいる誰かがまだファイルを保存しているということを意味します。


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

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

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

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

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

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

FLOC LOG カテゴリー

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