Ethereum とは?

Ethereum

Ethereum最新情報

NRIのOpenStandiaが提供するEthereum最新情報

Ethereumの保守サポートサービスの内容はこちら Ethereumの導入については、こちらのフォームからお問い合わせ下さい OSS全般の事例紹介はこちら

Ethereumバージョンアップ情報

すべてを見る

更新日:2021-03-30

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ネットワーク上でアプリケーションを実行する際の燃料として使用されます。

TOPに戻る

Ethereumの特徴

Ethereumの特徴は、P2Pネットワーク上で、チューリング完全であるEthereum Virtual Machine(EVM)によってP2Pのアプリケーション(DApps)を実行できることにあります。トークンであるEtherはイーサリアムネットワーク上で、DAppsやスマートコントラクトを実行するための燃料として使用される目的で存在しており、これをGASと呼んでいます


Ethereumクライアント

EthereumはP2Pプラットフォームであるため、サーバというものがなくても機能するようになっています(中央集権的な配信を行うサーバを配置することは可能です)。そのため、ユーザはEthereumネットワークにEthereumプロトコルによる通信が可能なクライアントを使ってアクセスします。Ethereumクライアントは、EVMを実装していて、稼働することが可能なアプリケーションを指します。

下記は、Ethereumクライアントの一部です。様々な言語による実装が存在します。

Go Ethereum Go言語による実装、すべてのクライアント機能を完全実装している。最もポピュラーでweb上のナレッジも豊富。
Wiki: https://github.com/ethereum/go-ethereum/wiki
Repo: https://github.com/ethereum/go-ethereum
Parity Ethereum Rustによる実装、すべての機能を網羅している完全実装。
Wiki: https://wiki.parity.io/
Repo: https://github.com/paritytech/parity-ethereum
Aleth C++による完全実装。
ドキュメント:http://www.ethdocs.org/en/latest/ethereum-clients/cpp-ethereum/
Repo: https://github.com/ethereum/cpp-ethereum
Py-EVM Pythonによる実装、ほぼすべての機能を実装している。
Repo: https://github.com/ethereum/py-evm
pyethapp Pythonによる実装、速度的な問題などからR&D目的に使用することを推奨している。
Wiki: https://github.com/ethereum/pyethapp/wiki
Repo: https://github.com/ethereum/pyethapp
EthereumJS Monorepo JavaScriptによる実装、ブラウザ上で実行可能
Repo: https://github.com/ethereumjs/ethereumjs-vm
Nethermind .NET Coreによる実装。Windows以外(Linux, MacOS)でも動作する。
Repo: https://github.com/NethermindEth/nethermind
Harmony/ethereumj Javaによる完全実装。
Repo: https://github.com/ethereum/ethereumj
Exthereum/EVM Elixirによる完全実装。
Repo: https://github.com/exthereum/evm
Ciri Rubyによる実装
Repo: https://github.com/ciri-ethereum/ciri
Solidity EVM スマートコントラクト言語であるSolidityによるruntime実装。
Repo: https://github.com/Ohalo-Ltd/solevm

また、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上の情報などあまり存在しないため、あまりメジャーではない。

TOPに戻る

Ethereumの動作環境

Ethereumの動作環境は≒Ethereumクライアントの実行環境といえます。そのため、動作環境は様々です。多くのクライアント実装は、MacOS, Linux, Windows上で動作します。またWebベースで動作する軽量なクライアントも存在します。各クライアントの動作環境に関してはEthereumクライアントの表にあるURLを参照してください。

TOPに戻る

Ethereumのドキュメント

Ethereumに関しての情報は、下記を参照ください。

また、EthereumのWikiには、技術情報から概念に関するものまで、多くの情報があります。

TOPに戻る

OpenStandiaに関する
資料請求・お問い合わせはこちら

  • 資料請求
  • お問い合わせ

※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。

  • OpenStandiaサポート対象オープンソース|50種類以上のOSSのサポートをご提供します。
  • 人気midPoint
  • 人気Keycloak
  • 注目MongoDB
  • ForgeRock AM(OpenAM)
  • ForgeRock IDM(OpenIDM)
  • MongoDB
  • Postfix
  • Apache HTTP Server
  • ZABBIX
  • PostgreSQL
  • Apache Struts
  • Apache Kafka
  • Apache Hadoop
  • Apache Spark
  • Spring Framework
  • Apache Tomcat
  • Solr
  • iBATIS
  • DRBD
  • MySQL
  • JBoss
  • Ruby on Rails
  • Jaspersoft
  • OpenLDAP
  • Apache log4j
  • Apache Subversion
  • ForgeRock DS(OpenDJ)
  • Pacemaker
  • Samba
  • Red Hat Enterprise Linux
  • Nginx
  • BIND
  • Dovecot
  • Pentaho
  • sendmail
  • Courier-IMAP
  • ForgeRock DS(OpenDJ)
  • Heartbeat
  • Hibernate
  • Hinemos
  • MyBatis
  • MySQL Cluster
  • Apache Axis2
  • Squid
  • OpenSSO