ボム君.com

うどんのStackブログ

Ethereumとそのエコシステムについて学びましょう!

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のコントラクトの計算能力を上げるという側面もあります。計算を複数の子チェーンに依頼しその結果を親チェーンに戻すということもできるようになります。いわば子チェーンによるコントラクトの並列処理が可能になるのです。

udon-cryptocurrency.hatenablog.com


Raiden

Raidenプロジェクトには1対多数を想定しているPayment ChannelであるμRaidenと、Payment-Channels NetworkであるRaiden Network、そしてState Channel的な振る舞いをするRaidos(構想段階)があります。詳しくはこちら。

udon-cryptocurrency.hatenablog.com


Storage

 

分散型クラウドストレージを実現しようというものです。Dropboxのように中央集権的に管理するのではなく、ネットワーク上のノードに何重にも分散し(もちろん暗号化してある)保管するというものです。EVM(Ethereum)で保管するとむちゃくちゃ高価なので必需です。

computation

Truebit:https://truebit.io/
εnigma:https://www.enigma.co/


現状EVM(Ethereumのスマートコントラクトを実行するvirtual machine)で実行できるのはGasの上限によって制限されており、コントラクトのコード が300行ぐらいに抑えないといけないといった難点があります。そういった物を解消するためにオフチェーン上に持ってきてもっともっと拡張しようというものです。εnigmaではさらに動かしたコントラクトの情報がわからないといった、プログラムのプライバシーを確保したシークレットコントラクトというものを実装するとのことです。

Oracle

 


現実世界で何が起きたか(起きるか)といったデータをEthereum上に取り込むものです。ランダムに選んだ人で株式のように多数決だったり、どこかが中央集権的に管理する方式だったりと色々バリエーションが上がってます。

Whisper


Whisper:https://github.com/ethereum/wiki/wiki/Whisper
WhisperはDAppsがP2Pネットワーク上で安全に通信しあうための通信プロトコルです。

 

Based Apps


Pegged Asset

 

フィアットとかゴールドとかにペッグしたトークンです。Trustlines Networkではそのプロジェクトが進んでPegged Assetを発行するという話は聞きませんが一応。Omise Goはなんかやるとの話を聞いたことがあるような無いような?


DEX(分散型取引所)

 

DEXという分散型取引所により、現在の中央集権的な取引所からの脱却を目指します。
Omise Goはフィアット(法定通貨)をEthereumで扱うためのプロジェクトです。銀行を持ってない人のためのサービスに!というのが目標だそう。将来的にはPlasma(後述)を使用してスケールするようですね。

 

分散型アイデンティティ管理プラットフォーム

 

分散型のIDカードのようなものです。Ethereum上で動くこのアプリケーションは、特定企業に全て一括管理されるなどといったことはなく、各個人がIDを管理できます。Dappsのログインなどといったものにも使われる模様です。

 

組織(DAO,DACなど)の設立

 

DAO的な組織を作成したり、運営したりすることができます。新しい組織の形です。全てのステークホルダー(主にトークン保持者)が投票し、可決されれば実行されます。


そのほかのDapps


広告

 

インターネット企業による広告はユーザーにとって得でないので、Adblockなどを使うのは自然な流れですが、それではコンテンツ提供者が利益を得られません。そういった課題を解決するためのプロジェクトです。

 

ETFやファンド

 

MelonportでETFの簡単作成と利用!あと、Bancorというなかなか面白いトークンを作ることのできるプロジェクトもあります。Catalystはあらゆる取引をenigmaで分析し、トレードに役立てるというものです。

 

Ethereumをスケールするほかのプロジェクト


ペイメントチャネル(Payment-Channel)


ペイメントチャネル、Lightningとかって何?って方はこちら

www.cryptocoiner.info


Raiden


先述の通りです。詳しくはこちら

udon-cryptocurrency.hatenablog.com


L4によるState Channel


名前はまだないのですが、L4というところによってステートチャネル(ペイメントだけじゃなくて、スマートコントラクトも実行できるようになるなど、コントラクトもスケールできるすごいやつ)を開発しているようです。みんなだいすきVitalikもメンバーです。

medium.com


シャーディング(Sharding)


Shardingとは、ノードをいくつかのグループ(Shard)に分割して、トランザクションを並行して処理しようというものです。ノードの数が増えれば増えるほどたくさんのShardができ、大量にさばけるようになるものです。

udon-cryptocurrency.hatenablog.com

 

他のEthereumの新技術


Stateless Client


stateless client(コンセンサスノード)とは、全てのStateを持つ必要のない、state rootだけを持っていればOKというものです。これによりほとんどdiskにアクセスし保存する必要もなく、シャーディングプロセスの効率化も見込めます。

 

Ethereumを使い倒す


ウォレット


ウォレットは様々なものがありますが、私はこんな感じで管理してます。
- オフラインコンピューターにETH、Trezorにトークン
- MetamaskやimTokenやJaxx(サブ)


MetamaskやimTokenやJaxxは普段使い用、オフラインコンピューターやTrezorは基本置いておく用です。
ちなみに、パスフレーズという秘密鍵を言語化したものがあるのですが、それの仕様は微妙に違います。

f:id:udoncryptocurrency:20170617173223j:plain


こんな感じです。


Mist


Ethereum側が公式に出しているデスクトップ版のWalletです。他にもコントラクトのデプロイとかできたりします。Lightクライアントモードで動かすことをオススメします!

My Ether Wallet(MEW)


対応しているプラットフォーム:Webブラウザが対応しているならどんな機種でも。ただし、スマホでやるのはお勧めしません。

他にも

  • Jaxx
  • Metamask
  • imToken

と言ったものがオススメです。あと開発中のもので

  • Status
  • Moon Browser

といったものがあります!開発者の方はぜひぜひそちらも触ってみてください。

 

トランザクションの確認


自分のトランザクションが今どうなっているのか、その確認にはhttps://etherscan.ioがオススメです。見やすいUI/UXです!


ENS (Ethereum Name Service)


ENSとは


ENSとは、Ethereumにおけるドメインのようなものです。長い(意味不明な)アドレスを打ち込むのではなく、ドメインのように分かりやすい形にしようというものです。
例えば私に寄付をしていただく場合、0x6de754c0816aa1ec98d2ff55ad6ea7d00ab6e131
という長いアドレスを打ち込むのではなく、udonpro.ethと打ち込むだけで良くなります。またENSはEthereum上でスマートコントラクトを使用して作成されています。サーバーが落ちて使えない!なんてことはありません。
なお、Devcon3でも話されていた、通常のURL(udonpro.xyzとか)をENSでのドメインのようにするなどという興味深いものもありました。

medium.com


TokenFactory


TokenFactoryとは、簡単にERC20という規格に準拠しているEthereumトークンを作成することができるサービスです。

詳しくはこちら


Ethereumの今後予定と未来


Ethereumには4つのメジャーアップデートがあります。
1番目はフロンティア(Frontier)、2番目がホームステッド(Homestead)、3番目がメトロポリス(Metropolis)、そして最後4番目がセレニティ(Serenity)となっています。2017年12月現在のバージョンはメトロポリス(Metropolis)の前半のアップグレードであるByzantiumです。後半のアップグレードであるコンスタンティノープル(Constantinople)は2018年2月ごろにアップデートがなされるとの噂です。


コンスタンティノープル(Constantinople)でのアップグレード

 

  • PoW/PoSのハイブリッド(Casper FFG)の導入?(≒ ファイナリティを持たせる)
  • EIP86の実装

最新状況はここを見るといいかもです!

GitHub - ethereum/EIPs: The Ethereum Improvement Proposal


その他将来やると言ってるアップグレード内容

 

  • 1ブロック生成にかかる平均時間を現在の15秒から4秒以下に
  • PoSへ完全移行
  • Account/State ツリーの再設計
  • EVMの強化(EVM1.5やeWASM)
  • Shardingによる並行処理
  • ステートレスクライアント(Stateless Client)
  • 新規発行されるETHをほとんどゼロに

 

リンク集

Paper


Japanese White Paper:https://github.com/ethereum/wiki/wiki/%5BJapanese%5D-White-Paper
Ethereum 2.0 Mauve Paper:https://cdn.hackaday.io/files/10879465447136/Mauve%20Paper%20Vitalik.pdf


役立ちサイト

 

 

動画

 

保存版ブログ記事