Ethereum(イーサリアム)ガイド

So… why not make a protocol that work like this?

f:id:udoncryptocurrency:20170617163844p:plain

この画像は、Vitalik Buterin(Ethereumを立ち上げた人)が、Devcon3というイベントでプレゼンした際のスライドから取ってきました。

www.youtube.com

「何で、ただの計算機や十徳ナイフのようなシステムを作るの?何でもできるスマホのようなシステム作ろうよ!」という趣旨の発表をしているスライドです。

Ethereum(イーサリアム)とは

概要

一言で言えば、分散型アプリケーションを作るための分散型コンピューターである「The World Computer」を作ることを目指しているプロジェクトです。

www.youtube.com

従来型の暗号通貨、例えばBitcoinは悪い人が入ってくるP2Pネットワークでも送金の機能が動くシステムを作りました。ですがそれしかできません。いわばただの電卓みたいなことしかできないのです。
では、DNS機能をつけたNamecoinや、新しいトークン発行機能やDEXやアドレスのDNSのような機能をつけたBitsharesのようなものはどうでしょうか?これも確かに送金以外のことはできます。ですが、それだけに機能が制限されているいわば十得ナイフ程度のものです。
ですがEthereumではスマートコントラクトと呼ばれるコードを書くだけで、あらゆる機能を自由に誰でも開発することができるのです!

実際にどうやって動いているのか知りたい方はこちら!

coffeetimes.hatenadiary.jp

Q&A

イーサリアムによくありがちな疑問をまとめて答えました!あわせてご覧下さい!

udon-cryptocurrency.hatenablog.com

Bitcoin(ビットコイン)と同じ?

BitcoinもEthereumもパブリックブロックチェーンですが、コンセプトは違います。Bitcoinは_「分散型のデジタルマネー」_がコンセプトです。このコンセプト通り、Bitcoinはインターネット上での支払いなどに利用されることになりました。(最近は手数料がクソ高いですが…。)逆にいってしまえば送金しかできないのです。

Ethereumでは、コア開発者じゃない一般の開発者が望み通りの機能を、スマートコントラクトと呼ばれるコードを書くことにより望み通りの機能を追加することが可能となっています。非常に汎用性の高いプラットフォームです。あらゆる機能(分散型のアプリケーション=DApps)を追加でき、Ethereum自体がコンピューターのような仕組みをしていることから、「The World Computer」、つまりワールドコンピューターと呼ばれることもあります。

The World Computer

スマートコントラクト

さて、よくEthereumを語るときによく出てくるスマートラクトとはなんでしょうか?簡単に言えば、プログラムのことです。このプログラムはお金やトークン(チケットのようなものです。)の動きを定めることができます。Ethereum上でこれを動かすと、誰にも邪魔されることなく簡単に、ダウンタイム(サーバが落ちること)なくプログラムは実行されます。また、こういったプログラムは全世界に公開されるため、透明性を確保することができます。もちろん将来的には、秘匿したいコントラクトも出てくるでしょう。そのためにzk-SNARKを使用したZokratesや、完全準同型暗号を使ったεnigmaなどが開発されてます。

従来型のブロックチェーン(いわゆるビタリックが計算機や十得ナイフと評価するもの)は、新しい機能(DEXやネームスペースなど)を追加するのにいちいちハードフォークをしなくてはなりません。一開発者が気軽に機能追加することはできないのです。それをスマートコントラクトは開発者がコードを書いてコントラクトを実装すれば簡単にそのような機能を追加できます。(もちろんコントラクトの仕様自体の変更や拡張の場合はハードフォークが必要ですが)

Ethereumのエコシステム

f:id:udoncryptocurrency:20180101153112p:plain

私が思うに、Ethereumには次のような感じのレイヤーの作りになっていると思います。Consensusはもちろん、従来のEthereumやそのほかにEVMを搭載する予定のæternityなど、従来のブロックチェーンで時にはスマートコントラクトを使い拡張し、参加者の最終的な同意をとります。EVM系のじゃないとマルチチェーン(複数のチェーンを使用する仕組み)互換性とかの問題とかも出てくるので。

そしてConsensus層の上にはPlasma、そしてその上にRaidenが乗っかりペイメント速度を大幅に拡張します。(Plasmaはある程度コントラクト能力も拡張しますが…。)他にもComputationはコントラクトのスケーラビリティを解決し、Storageは簡単に大きめのデータを保存するのに役立ちます。Oracleは外部からの情報をブロックチェーン上に反映し、Wisperは安全なP2Pでのメッセージングを可能にします。これらがEthereumを拡張し、Dappsを作る際の基本機能になります。これがDApps Stacks層です。

そしてその上にはそのDapps Stacksを使った、他のDappsもよく使うようなBased Dapps層があります。これには分散型取引所だったり、IDシステムだったり組織作成のだったりとがあります。で、その上に普通のDAppsができる。といった上にどんどんレイヤー状に乗っかっていく作りのようになっていると思うのです。(曖昧なところはありますが)レイヤー状に作るというのはインターネットの世界ではよくあることです。インターネットの仕組みを調べてみるとわかるかもしれません!

Ethereumでは山ほどDappsが開発されています。こちらのサイトではたくさんのDappsが紹介されています。

dapps.ethercasts.com

 

DApps Stacks

Plasma

Vitalik ButerinとJoseph Poonが発表したスケーリングソリューションです。Ethereumをroot chainとして、子チェーンを階層状に作れるというものです。これにより主なトランザクションは子チェーンでおこない、結果(state)だけをEthereumに書き込むというものです。なおPlasmaはEthereumのコントラクトの計算能力を上げるという側面もあります。計算を複数の子チェーンに依頼しその結果を親チェーンに戻すということもできるようになります。いわば子チェーンによるコントラクトの並列処理が可能になるのです。