はじめに
今回は、Ethereumの概要について説明します。本記事は、過去にコンセンサス・ベイスが主宰していたオンラインサロンの記事です。記事は2017年~2018年にかけて執筆されたため、一部は、既に古くなっている可能性があります。あらかじめご了承ください。
今回の内容
第1章ではEthereumとは何か、第2章ではEthereumの特徴、第3章ではEthereumのメリット、第4章ではEthereumのデメリットについて説明します。
ゴール
メリット、デメリットを含めてEthereumの概要を理解することを目指します。
ターゲット
Ethereumに興味がある方を対象としています。
前提知識
一般のプログラミングやネットワークの基本及びBitocoinやブロックチェーン技術の基礎を前提知識とします。
第1章 Ethereumとは何か?
呼称
日本語でEthereumは、イーサリアム、イサリアム、エセリウムなど色々な呼ばれ方をしています。本コンテンツではEthereumに統一します。
Ethereumとは?
次世代のスマートコントラクトと
非中央集権型アプリケーション(DApp)プラットフォーム
以前のEthereumの公式の説明にではこのように表現されていました。
「スマートコントラクトと非中央集権型のアプリケーションを動作させるためのプラットフォーム」ということですが、急にスマートコントラクトと非中央集権型アプリケーションという用語が出て来ても、これだけでEthereumが何であるか理解できる方は少ないでしょう。スマートコントラクトとDAppについては第3回のコンテンツにて解説します。
ワールドコンピューター
こちらもEthereumの公式サイトで使われた説明です。Ethereumは世界的なコンピュータであるという意味ですが、これでもピンと来ないでしょう。
ブロックチェーン・アプリケーションプラットフォーム
Ethereumではブロックチェーン上でアプリケーション構築し、動作させることが出来ます。ビットコインでは難しかった複雑なアプリケーションをブロックチェーン上で動かすことができる、という点がEthereumの最も際立った特徴と言えるでしょう。
なお、Ethereumはオープンソースですので、GitHubにてソースコードが公開されています。
https://github.com/ethereum/
第2章 Ethereumの特徴
公式サイトに書かれていた一言の説明で非常に大まかなイメージを掴んで頂いたところで、もう少し細かく特徴を説明します。
P2P(Peer-to-Peer)
EthereumはP2Pのシステムです。一般的なWebサービスのサーバー・クライアントモデルとは異なり、世界中に分散したコンピュータ同士が直接つながるネットワーク上で動作します。つまり中央となるコンピュータや管理者がいないため、非中央集権(Decentralized)なシステムと言われています。
DApps
Ethereumのブロックチェーン上にはSolidity(次項で説明)という専用言語で記述したプログラムを配置することができ、他の利用者はこのプログラムを実行することが出来ます。このプログラムのことをDApps(Decentralized Applications / 非中央集権型アプリケーション)と呼びます。
改ざん困難性
DAppsは、ブロックチェーンそのものの性質からオープンな形でプログラムを実行できるため、ネットワーク上の誰もがそのプログラムを検証できます。つまり、不正が行いにくく、停止が困難で強制的にプログラムを実行することができます。
Solidity
SolidityはDAppsを開発するために使用される専用言語の中で最も広く利用されている言語です。文法はJavaScriptに似ています。記述されたプログラムはコントラクトコードと呼ばれ、バイナリにコンパイルされてからEVM(Ethereum Virtual Machine)上で動作します。
EtherとGas
どこの誰が作ったかわからないプログラムを自分のコンピュータにて実行するため、悪意のある攻撃、例えば無限ループやDoS攻撃を防ぐ方法が必要です。
ビットコインと同じようにEthereumではEther(イーサ / ETH)と呼ばれる内部通貨があります。EthereumではGas(ガス)と呼ばれる自動車で言うガソリンのような考え方があります。プログラムを実行する際にはGasが必要で、Gasの制限を超えてしまう場合はプログラムは実行されず、元の状態に戻ります。さらに、一つのブロックで実行できるGasも制限されています。この仕組みにより、一定以上の動作をするプログラムの実行はできない仕組みとなっています。ちなみに、GasのEther建ての価格は変動します。
まとめ
- Peer-to-Peerネットワークのシステム
- オープンソースのソフトウェア
- 中央となる管理者が存在しない
- ブロックチェーン上にユーザが作成したプログラムを配置・実行可能
- ブロックチェーン上のデータは全ての参加者に公開される
- データの改ざんが難しい (プログラムの改ざん、変更も難しい)
- Ethereum内部通貨はEther
- プログラム実行時にはEtherの支払いが必要
第3章 Ethereumのメリット
Ethereumを用いてアプリを作るメリットはなんでしょうか。カジノサイトのポーカーを例にとって説明します。
従来のオンラインカジノサイトでのポーカーはインターネット上のサイトに接続し、そこでポーカーをしていました。ここで問題となるのは運営者側の不正です。従来の仕組みでは、ポーカー運営会社が自分の都合の良いようなカードの配布するなどの不正をしてもユーザからは分かりません。
Ethereum上のDAppで作られたポーカーの場合は、ポーカーのプログラムはブロックチェーン上に公開されているため、作者の不正の有無を検証することが可能です。そして、過去の履歴も追うことが可能なので、運営者による持ち逃げや破綻リスクを回避できます。これが、アプリケーションをEthereum上で運営するメリットです。
第4章 Ethereumのデメリット
では、Ethereumでは何ができないのでしょうか。Ethereumではアプリケーションを作成できると説明してきました。しかし、誰でも攻撃できるパブリックなインターネットで運用することを想定しているため、DDoS攻撃などの対策が必要です。Ethereumには従来のサーバ側のアプリケーションやモバイルアプリケーションと同じようなことができない、といった制約が多数存在します。
Ethereumが得意でないこと
リレーショナルデータベースシステムのような複雑な検索やSQLを利用することはできません。キーバリュー型のデータ保存しかできないとイメージしていただければわかりやすいでしょう。
大量、または大きなデータの保存
このようなデータの保存には大量のGasを消費します。外部サービスに保存で対応します。
コントラクトコード内の複雑な検索
検索用データ構造を作成することで対応します。
Ethereumでできないこと
- ブロックチェーン上のデータを参加者から隠すこと
- 送金、配置などの細かい許可の制御
- プライベート実装では可能なものあります
- コントラクトコードから外部情報を取得すること
- コントラクトコード内でのランダムな数値の生成
- 配置されたプログラムの変更
Ethereumでできないこと 5つの理由(2018.02.05追記)
- ブロックチェーン上のデータを参加者から隠すこと
全てのコンピュター(ノード)が同じデータ(ブロックチェーン)を持つために、そのデータを持つ人は全てのデータが見ることができてしまうためです。
正確に言いますと、アクセス制限や暗号化、ノードを指定して共有するなど情報を隠す方法も複数ありますが、ブロックチェーンでは、一般的に全てのデータを共有することが多いと理解しておくと大体合っています。 - 送金、配置などの細かい許可の制御
- プライベート実装では可能なものもあります
Ethereumはパブリックブロックチェーンの一つです。パブリックブロックチェーンでは、許可が必要ないブロックチェーンですので、誰はできて誰はできない、という制限はできません。Ethereumも例外ではありません。
プライベートブロックチェーンのMultiChainの場合、このユーザは送金はできる、このユーザは閲覧ができる、などの制御が可能です。
- プライベート実装では可能なものもあります
- コントラクトコードから外部情報を取得すること
ブロックチェーン側から外の情報を取ってくる場合、情報元のコンピュータが停止していたり、別々の情報を返してきたりする、という問題があります。その場合、同じプログラムを動かしても違う結果になってしまいます。そうすると、各コンピュータでのデータの出力が異なり、データを一致させること(コンセンサスを取ること)ができません。
ですので、Ethereumにおいては、必ず同じ入力を入れたら、どのコンピュータでも同じ出力を返すようになっています。これをDeterministicと言います。
逆に外部情報をEthereumで扱うためには、外部の事実をブロックチェーンに提供するエンティティ(オラクルと呼ばれる)を利用したりします。
ちなみに、Hyperledger Fabricは、ブロックチェーン側から外部情報を取得ができたりします。
- コントラクトコード内でのランダムな数値の生成
上記と同じ理由です。ランダムっぽい数値は作れますが、同じインプットに対して、同じアウトプットが出せないなどの問題があります。 - 配置されたプログラムの変更
基本的にブロックチェーンに登録したデータは、自由に変更ができません。プログラムを配置した場合、基本的にそのプログラムを変更することはできない、と考えて下さい。
現実的には、呼ぶ先のプログラムを変えたり、プログラム呼ぶ先のプログラムを変更することで、アップグレードするようなことをして、プログラムのアップデートをする形で対応しています。
免責事項:
本記事に掲載されている記事の内容につきましては、正しい情報を提供することに務めてはおりますが、提供している記事の内容及び参考資料からいかなる損失や損害などの被害が発生したとしても、弊社では責任を負いかねます。実施される際には、法律事務所にご相談ください。技術・サービス・実装方法等のレビュー、その他解説・分析・意見につきましてはblock-chani.jp運営者の個人的見解です。正確性・正当性を保証するものではありません。本記事掲載の記事内容のご利用は読者様個人の判断により自己責任でお願いいたします。
会社紹介
弊社(コンセンサス・ベイス株式会社)は、2015年設立の国内で最も古いブロックチェーン専門企業です。これまでに、大手企業の顧客を中心に、日本トップクラスのブロックチェーンの開発・コンサルティング実績があります。ブロックチェーンに関わるビジネスコンサル・システム開発・教育・講演などありました、お気軽にお問い合わせください。
会社ホームページ
https://www.consensus-base.com/