Ethereumの概要
Ethereumとは、オープンソースの分散アプリケーション(DApps)を構築するためのプラットフォームです。既存の多くのインターネットサービスは中央集権的で、配信するサーバ側と受信するクライアント側の構造になっています。Ethereumなどのpeer-to-peer(P2P)プラットフォーム上では、クライアントはサーバを介することなく直接お互いが情報のやり取りを行います。
Ethereumは、Jeffrey Wilcke、Vitalik Buterin、Gavin Woodという3人によって2013年に開発が開始されました。共同創立者の一人であるVitalik Buterinは、Bitcoin Magazineという仮想通貨やデジタル通貨関連のオンラインマガジンの記事を執筆していました。デジタル通貨に精通するにつれBitcoinにはアプリケーションを開発出来る基盤としてスクリプト言語の実行環境が必要であるという考えを持ち、それを主張していましたが、Bitcoin開発者達には受け入れられませんでした。そこで、彼は新しいプラットフォームであるEthereumを草案することになります。こういった面からEthereumは非中央集権的な分散アプリケーションを構築する基盤であり、トークン(デジタル通貨)であるEtherはブロックチェーンを使ってEthereumプラットフォーム上で生成されているもので、Ethereumネットワーク上でアプリケーションを実行する際の燃料として使用されます。
Ethereumの特徴
Ethereumの特徴は、P2Pネットワーク上で、チューリング完全であるEthereum Virtual Machine(EVM)によってP2Pのアプリケーション(DApps)を実行できることにあります。トークンであるEtherはイーサリアムネットワーク上で、DAppsやスマートコントラクトを実行するための燃料として使用される目的で存在しており、これをGASと呼んでいます
Ethereumクライアント
EthereumはP2Pプラットフォームであるため、サーバというものがなくても機能するようになっています(中央集権的な配信を行うサーバを配置することは可能です)。そのため、ユーザはEthereumネットワークにEthereumプロトコルによる通信が可能なクライアントを使ってアクセスします。Ethereumクライアントは、EVMを実装していて、稼働することが可能なアプリケーションを指します。Ethereumクライアントは様々な言語による実装が存在します。
Ethereumは、Pow(プルーフオブワーク)という仕組みを採用していましたが、要求される高い処理能力による消費電力の大きさ等が問題になり、新たにPos(プルーフオブステーク)アルゴリズムが考案されました。
当初は、従来のPowを使用したEthereumはEth1。Pos を導入した新たなEthereumはEth2と呼ばれていましたが、Eth2はEth1を置き換えるものではなく、併用されるものであり誤解を避けるため2022年1月にイーサリアム財団によりEth1を「実行レイヤー」(Execution Layer)、Eth2を「合意レイヤー」(Consensus Layer)と呼ぶように定められました。
以下は、実行レイヤークライアントの一部です。
Geth/Go Ethereum | Go言語による実装、すべてのクライアント機能を完全実装している。最もポピュラーでweb上のナレッジも豊富。 ドキュメント: https://geth.ethereum.org/docs/ Repo: https://github.com/ethereum/go-ethereum |
---|---|
Nethermind | .NET Coreによる実装。Windows以外(Linux, MacOS)でも動作する。 ドキュメント: https://docs.nethermind.io/nethermind/ Repo: https://github.com/NethermindEth/nethermind |
Hyperlendger Besu | Javaによる実装。エンタープライズグレードの機能を実装。 ドキュメント: https://besu.hyperledger.org/en/stable/ Repo: https://github.com/hyperledger/besu |
以下は、合意レイヤークライアントの一部です。
Prysm | Go言語による実装。現在(2022年1月)最も多く利用されている。 ドキュメント: https://docs.prylabs.network/docs/getting-started/ Repo: https://github.com/prysmaticlabs/prysm |
---|---|
Lighthouse | Rust言語による実装。 ドキュメント: https://lighthouse-book.sigmaprime.io/ Repo: https://github.com/sigp/lighthouse |
Teku | Java言語による実装。 ドキュメント: https://consensys.net/docs/ Repo: https://github.com/ConsenSys/teku |
Nimbus | Nim言語による実装。可能な限り軽量な実装を目指している。 ドキュメント: https://nimbus.guide/ Repo: https://github.com/status-im/nimbus-eth2 |
Lodestar | TypeScript言語による実装。 ドキュメント: https://chainsafe.github.io/lodestar/ Repo: https://github.com/ChainSafe/lodestar |
また、DAppsの実行環境であるEVMが含まれておらず、Etherトークンの管理目的であるウォレット機能のみを実装したものも存在します。
MyEtherWallet | Webベースのウォレット機能のみのクライアント |
---|---|
MyCrypto | Webベースのウォレット |
Mist | Wallet機能のみ、現在Deprecatedな位置づけ |
スマートコントラクト
Ethereumのもう1つの特徴としてスマートコントラクトの実行基盤であることが言えます。スマートコントラクトとは、Ethereumで実行可能なプログラムです。スマートコントラクトの存在意義としてオークションサイトでの取引を例に説明します。通常のWebアプリケーションであれば、ユーザはオークションサイトを運営しているサーバを介して売買を行います。購入者は、サイトに出品登録された品物を購入することになり、売買契約の記録はオークションサイトを運営している第三者が担保することになります。分散アプリケーション(DApps)では、中央集権的なサーバが必要ないため出品者のDAppsと購入者のDAppsが直接記録のやり取りを行います。その際、売買契約の記録を改ざんすることが可能では取引自体が成り立ちません。そこでクライアント同士のDAppsでスマートコントラクトを実行して売買の記録を改ざんすることが困難で誰でも閲覧可能であるブロックチェーンに記録することで、契約を担保するようにしています。
スマートコントラクトは、ブロックチェーンベースの技術のためどのデジタル通貨でも実行可能かというとそうではありません。取引量の多いデジタル通貨プラットフォームの中ではEthereumのみがスマートコントラクトを実行することが可能です。それは、Ethereumの開発者たちが通貨という面よりも分散アプリケーションとスマートコントラクトの実行基盤としてEthereumを作ったためと言えるのでないでしょうか。
コントラクト指向言語
スマートコントラクトは、バイトコードとしてEVMで処理、実行されます。低水準なバイトコードでは生産性が低いため、スマートコントラクトを記述することに特化した言語が存在します。
- Solidity
CやJavaScript の文法に似た言語で、複数のEthereumのコアコントリビューターによって開発された、現在のところ最もメジャーな言語で、ユーザ数、Webナレッジ共に豊富に存在する。 - Vyper
Python likeな言語、同じPython likeなSerpentに脆弱性が発見されたため、現在、Python likeな言語ではメジャーであるが、Solidityの100%代替え言語としては機能しない。 - Serpent
Python likeな言語、2017年にSerpentコンパイラに重大な脆弱性があることが見つかり、修正はされたもののSerpentを使って記述されたメジャーなDAppsがSolidityベースに移行するという問題が発生した。現在、Deprecatedな位置づけ - LLL
Lisp likeな言語、Web上の情報などあまり存在しないため、あまりメジャーではない。
Ethereumの動作環境
Ethereumの動作環境は≒Ethereumクライアントの実行環境といえます。そのため、動作環境は様々です。多くのクライアント実装は、MacOS, Linux, Windows上で動作します。またWebベースで動作する軽量なクライアントも存在します。各クライアントの動作環境に関してはEthereumクライアントの表にあるURLを参照してください。
Ethereumのドキュメント
Ethereumに関しての情報は、下記を参照ください。
- Ethereumコミュニティの運営するメインサイト
https://ethereum.org/
また、EthereumのWikiには、技術情報から概念に関するものまで、多くの情報があります。
- Ethereum wiki
https://eth.wiki/
Ethereumのサポート
NRIではお客様のご要望に応じて様々な支援ができるサービスをご用意しました。
詳細は下記ページをご確認ください。