はじめに
今回は、Ethereumの基礎用語について説明します。
本記事は、過去にコンセンサス・ベイスが主宰していたオンラインサロンの記事です。記事は2017年~2018年にかけて執筆されたため、一部は、既に古くなっている可能性があります。あらかじめご了承ください。
今回の内容
基礎用語について説明します
ゴール
Ethereumの思想や実際の利用例を知り、DApps開発に役立てる。
ターゲット
Ethereumに興味がある方を対象としています。前提知識
一般のプログラミングやネットワークの基本及びBitocoinやブロックチェーン技術の基礎を前提知識とします。
当シリーズを第1回から読んでおくことを推奨します。
第1章 Ethereumの基礎用語
まずは基本となる用語を簡単に説明します。
Ether
Ethereumの内部通貨です。通貨記号はETH。日々その価値は変動しており、2017年8月17日現在の1etherの価値はおよそ34,000円です。
Wei
Etherの補助単位です。最小単位でもあります。1 ether = 1018 wei です。他にもszabo(=1012 wei)、finny(=1015 wei)のような単位がつけられていますが全て覚えておく必要はないでしょう。
トランザクション
Ethereum上で処理を実行するために送信するデジタル署名されたデータのことです。トランザクションを送信することでEtherの受け渡しや、コントラクトコードの実行などが行えます。トランザクションはEOA(下記参照)からのみ送信されます。
Gas
プログラム実行時にマイナーに支払われる計算処理の燃料(ガソリン)のようなもので、トランザクション送信時に送信者の残高から自動的にEther建てで購入されます。処理に必要なGas量はその複雑さによって決定されます(例えばトランザクション送信基本料は500gas)。各処理の消費Gasはこちらで確認することができます。
1gasあたりの価格(GASPRICE)は送信者が決めることができ、高く設定するほどマイナーに計算してもらいやすくなるため処理が早く終わります。
消費されるEtherの量は次の式で求められます。
(消費Ether) = (消費Gas量) × (GASPRICE)
また、トランザクションに予めこめておくGasの量であるSTARTGASという値も送信者が指定します。STARTGASは消費Gasよりも多くする必要があり、余ったGasは送信者に返却されます。もしも足りない場合は処理がすべてロールバックされ、手数料を除いた分のGasが返却されます。
スマートコントラクト
Ethereum上で実行される分散型のプログラムです。詳しくは後述します。
Dapps
中央管理者がいない分散型アプリケーションのことです。詳しくは後述します。
Solidity
スマートコントラクト記述専用言語として最もよく使われているプログラミング言語です。JavaScriptに似た文法を持っており、静的型、多重継承などが備わっている高級言語です。
EVM (Ethereum Virtual Machine)
Ethereumネットワークに分散的に存在するプログラム実行のための仮想環境です。Solidityなどの言語で書かれたプログラムをコンパイルしてできたバイトコードを実行できます。
アカウント
Ethereumでは2種類のアカウントがあります。一つはEOA (Externally-Owned Account)で、秘密鍵を持っているユーザーが使用します。EOAはトランザクションを送信することが出来ます。もう一つはコントラクトアカウントで、こちらはコントラクトコード(プログラム)を持っていて、トランザクションを受け取った際にそのプログラムが実行されます。
アドレス
EOAとコントラクトの各アカウントが持っている20byteの表現(公開鍵のハッシュ)のことです。通常、Ethereumでは “0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826” のように16進表記がなされます。
Geth
Ethereumネットワークに参加してノードとなるために使用されるクライアントソフトウェアです。Gethをインストールしてブロックを同期することで、マイニング、Etherの送信、スマートコントラクトのデプロイ、トランザクションの送信などが行えるようになります。
Truffle
Solidityによるスマートコントラクト開発のフレームワークです。コードのコンパイル、マイグレーション(デプロイ)、テストなどが行えます。
Remix
Solidityによるスマートコントラクト開発のIDEです。ブラウザで動作し、コードの記述、コンパイルやローカルな仮想環境の使用などが行なえます。
Mist
EthereumのDappを使用できるブラウザです。ウォレット機能も備えています。
Ethereum Wallet
Mistの機能限定版です。ウォレット機能のみ使用できます。
第2章 スマートコントラクトの概要と歴史
スマートコントラクトという用語は、1997年にNick Szabo氏によって作られた概念です。直訳すれば、「賢い契約」となり、約束を守るルールをプログラム化したものなので、紙の契約よりスマート(賢い)という意味で名付けられました。スマートコントラクトをブロックチェーンの専門用語と捉えている方がいらっしゃいますが、概念自体はブロックチェーンの登場前から存在したということです。元々は非常に広い意味で利用されていた用語になります。スマートコントラクトの例として自動販売機が挙げられます。お金を投入しボタンを押したら自動で商品が出てくることが自動実行の契約と捉えられます。このようにスマートコントラクトは「自動実行される契約」という理解をしていただけたら良いでしょう。
Ethereumにおいては、ブロックチェーン上で動作するプログラムをスマートコントラクトと一般的に表現します。”Hello World”を保存するだけのものなど、必ずしもプログラムが契約になっていなくてもコントラクトと呼ばれることがあります。
第3章 DAppsの概要と歴史
DAppsはDecentralized Applicationsの略で、日本語訳すると非中央集権型アプリケーションのことです。イメージとしては、インターネット上に分散化されている状態で動作するWebアプリのようなものです。EthereumはDAppsのプラットフォームであり、ブロックチェーンを使用することで非中央集権(Decentralized)を実現しています。ブロックチェーン以前に主流であった中央集権的(centralized)に対して非中央集権的(decentralized)という呼ばれ方をされています。
中央集権や非中央集権の違いについて、Vitalik Buterin氏は自身のブログで次の3つに分ける考え方を示しています。
1. アーキテクチャ的(非)中央集権
物理的なコンピュータの数による違い
2. 政治的(非)中央集権
コンピュータをコントロールする個人や組織の数による違い
3. ロジカル的(非)中央集権
インターフェースやデータ構造の違い
DAppsにおける非中央集権型とは、ネットワーク上のコンピュータが多数で分散しており、それを管理する個人や組織も分散しているものとされます。上記3つの分類の3番目のインターフェイスやデータ構造に関して、Vitalikはブロックチェーンを「中央集権的」側に分類しています。なぜなら、ブロックチェーンやEthereumは計算を分担して行う分散コンピューティングではなく、同じ計算を全てのノードが行い一つのコンピュータのように振る舞うからです。このような動作を「ワールドコンピュータ」とも呼びます。
DAppsの定義としてよく引用されるのは、David Johnston氏による定義です。以下はそれを簡単にまとめたものです。
- オープンソースでトークンの大部分をコントロールする主体がなく、ユーザの同意で変更がなされること
- アプリケーションのデータはパブリックで、非中央集権的なブロックチェーンであること
- アプリケーションは、暗号学的トークンを利用すること
- アプリケーションは、PoWのようなアルゴリズムを使いトークンを生成すること
この定義によると、ビットコインもDappにりますし、StorjやMaidSafeなどもDappとして紹介されています。StorjやMaidSafeはブロックチェーンの実装を一からしなくてはならず、開発に2年以上かかってしまっています。そのようにプラットフォームの開発や多くのコンピュータの用意などをしなくても、簡単にユーザがプログラムを書きDAppsを作成し、ブロックチェーン上に配置し、そしてブロックチェーン上で動かすことができるプラットフォームがEthereumということになります。
免責事項
本記事に掲載されている記事の内容につきましては、正しい情報を提供することに務めてはおりますが、提供している記事の内容及び参考資料からいかなる損失や損害などの被害が発生したとしても、弊社では責任を負いかねます。実施される際には、法律事務所にご相談ください。技術・サービス・実装方法等のレビュー、その他解説・分析・意見につきましてはblock-chani.jp運営者の個人的見解です。正確性・正当性を保証するものではありません。本記事掲載の記事内容のご利用は読者様個人の判断により自己責任でお願いいたします。
会社紹介
弊社(コンセンサス・ベイス株式会社)は、2015年設立の国内で最も古いブロックチェーン専門企業です。これまでに、大手企業の顧客を中心に、日本トップクラスのブロックチェーンの開発・コンサルティング実績があります。ブロックチェーンに関わるビジネスコンサル・システム開発・教育・講演などありました、お気軽にお問い合わせください。会社ホームページ
https://www.consensus-base.com/