概要
今回のブログ記事はイーサリアムという暗号通貨の形成について説明します。イーサリアムとビットコインとの根本的な違いについても掘り下げて説明しますのでよろしくお願いします。
イーサリアムは、Bitcoinの基本構造を汎用化した分散型プラットフォームで、単なる送金だけでなくプログラム(スマートコントラクト)の実行を可能にします。これにより、分散型アプリケーション(DApps)の開発が可能となり、ワールドコンピューターとも称されます。
イーサリアムとは何か?
イーサリアム(ETH)はビットコイン(BTC)に次ぐ市場規模を誇る重要な暗号資産(仮想通貨)です。日本における保有率もBTCに次いで高く、国内の取引所では常に上位にランクインしています。加えて、世界中の機関投資家や企業からの関心も非常に高い資産です。
歴史
イーサリアムは2014年にヴィタリック・ブテリン氏がホワイトペーパーを公表し、翌年に公開されました。スマートコントラクトと分散型アプリケーション(dApps)のコンピューティング基盤として、先駆けとなりました。これにより、DeFi(分散型金融)、NFT(非代替性トークン)、分散型自律組織(DAO)など、多様なユースケースの創出と発展が促進されました。
イーサリアムの基本概念
イーサリアムは、ビットコインのプロトコルを一般化し、プログラム可能なブロックチェーンを提供することを目的としています。ビットコインがデジタルゴールドと称されるのに対し、イーサリアムは「ワールドコンピューター」を目指しています。これにより、単なる送金だけでなく、様々な分散型アプリケーション(DApps)を実行することが可能になります。
イーサリアムに投資する理由
豊かな開発エコシステム
イーサリアムは、世界中の開発者が集まり、活発にプロジェクトを推進しているプラットフォームです。分散型アプリケーション(DApps)やDeFi(分散型金融)など、多様なプロジェクトが展開されており、その成長と発展が期待されています。
スマートコントラクト基盤の市場シェアと高い時価総額
イーサリアムはスマートコントラクトを実行する主要なプラットフォームとして、圧倒的な市場シェアを持っています。これにより、他のブロックチェーンプロジェクトと比較して高い時価総額を維持しており、信頼性と安定性が評価されています。
セキュリティ
イーサリアムは強固なセキュリティ体制を持ち、ブロックチェーン技術の特性を活かして、改ざんやハッキングから資産を守ることができます。定期的なアップデートとコミュニティの監視により、セキュリティの強化が図られています。
ビットコインとイーサリアムの違い
ビットコインは2009年にサトシ・ナカモトによって「中央管理者不在の金融システム」として生み出されました。現在、ビットコインは主に支払い手段や価値保存の手段として使われる仮想通貨です。
一方でイーサリアムは、フルスケールのプログラミング言語をサポートするブロックチェーンプラットフォームとして設計されており、企業家や開発者がアプリケーションを開発しビジネスを展開するための基盤を提供します。
項目 | ビットコイン | イーサリアム |
---|---|---|
基本目的と機能 | デジタル通貨としての価値の保存と送金 ピアツーピアの送金システム | 分散型アプリケーション(DApps)とスマートコントラクトのプラットフォーム プログラム実行可能な分散型プラットフォーム |
スマートコントラクト | 基本的なスクリプト機能のみで、複雑なスマートコントラクトには対応していない | 高度なスマートコントラクトをサポートし、複雑な分散型アプリケーションを構築可能 |
コンセンサスアルゴリズム | Proof-of-Work (PoW) に基づくコンセンサス | 現在はPoWからProof-of-Stake (PoS) に移行中(イーサリアム2.0) |
開発言語 | 専用のスクリプト言語(制限的) | Solidityなどの汎用性の高いプログラミング言語を使用 |
発行上限 | 供給量は2,100万BTCに固定 | 特定の上限は設定されていないが、インフレーション率は管理されている |
トランザクション速度 | 約10分ごとにブロック生成 | 約15秒ごとにブロック生成 |
開発コミュニティとエコシステム | 主にデジタルゴールドとしての役割が重視されている | 分散型金融(DeFi)やNFTなど、多様なエコシステムが発展している |
イーサリアムの2種類のアカウントシステム
イーサリアムにはビットコインとは異なり、EOAとCAという二つの主要なアカウントタイプがあります。これらのアカウントの異なる役割について説明します。EOAは人が管理し、トランザクションを作成できますが、CAはスマートコントラクトが管理し、トランザクションを作成することはできません。
(復習)スマートコントラストとは?
EOA (Externally Owned Account)
EOAは人が管理するアカウントであり、秘密鍵を用いて管理されます。主に以下のデータを保持しています。EOAは、トランザクションを発行し、他のEOAやCA(Contract Account)に対してイーサの送金やスマートコントラクトの呼び出しを行うことができます。
データ | 役割 |
---|---|
ナンス | 実行されたトランザクションの数を表します。これは同じトランザクションが複数回実行されるのを防ぐためのカウンターです。 |
バランス | アカウントの残高を表します。イーサリアムでは、残高はwei単位で保持されます(1 ether = 1,000,000,000,000,000,000 wei)。 |
アドレス | EOAのアドレスは、ハッシュ関数を用いて生成され、ユーザーが取引を行う際に使用されます。 |
EOAの特徴
- トランザクションを作成することができる。
- 秘密鍵を持ち、ユーザーによって管理される。
CA (Contract Account)
CAはスマートコントラクトが管理するアカウントであり、以下のデータを保持しています。
CAは、スマートコントラクトのコードを持ち、そのコードを実行することができますが、EOAのように直接トランザクションを発行することはできません。CAは他のEOAやCAからトリガーされた場合にのみトランザクションを実行します。
データ | 役割 |
---|---|
ナンス | このCAがこれまでに生成した他のCAの数を表します。 |
バランス | アカウントの残高(wei単位)。 |
Code Hash | コントラクトのプログラムコードのハッシュ値。これにより、コントラクトの内容が保証されます。 |
Storage Root | コントラクトの状態データのルートハッシュ。このデータはマークルパトリシアツリー構造で保存され、効率的に検証されます。 |
CAの特徴
- スマートコントラクトを実行するためのコードを持つ。
- トランザクションを直接作成することはできない。
- EOAからのトリガーによってのみトランザクションが発生する。
トランザクションの仕組み
イーサリアムのトランザクションには、主に「メッセージコール」と「コントラクトクリエーション」の二つの種類があります。
メッセージコール(Message Call)
メッセージコールは、通常の送金トランザクションであり、以下のように機能します。
送金先 | EOAから他のEOAまたはCAへ送金が行われます。 |
実行内容 | 送金以外にも、既存のスマートコントラクトに対して特定の関数を呼び出し、その結果を受け取ることができます。 |
メッセージコールの主なデータ構造は以下の通りです。
from | トランザクションを発行したEOAのアドレス |
to | 受信先のEOAまたはCAのアドレス |
value | 送金するETHの量 |
data | 呼び出す関数およびその引数に関するデータ |
gasLimit | トランザクションの実行に対して支払えるガスの最大量 |
maxPriorityFeePerGas | マイナーに支払うガスの最大金額 |
maxFeePerGas | トランザクション実行のために支払えるガスの最大金額 |
コントラクトクリエーション (Contract Creation)
コントラクトクリエーションは、新しいスマートコントラクトを作成するためのトランザクションです。
送金先 | 宛先は常に「0x000…」となり、新しいCAの作成を指示します。 |
実行内容 | 新しいスマートコントラクトをブロックチェーン上にデプロイする。 |
コントラクトクリエーションの主なデータ構造は以下の通りです。
from | トランザクションを発行したEOAのアドレス |
to | 常に「0x000…」 |
value | 新しいCAに初期資金を送金する量 |
data | デプロイするスマートコントラクトのコード |
gasLimit | トランザクションの実行に対して支払えるガスの最大量 |
maxPriorityFeePerGas | マイナーに支払うガスの最大金額 |
maxFeePerGas | トランザクション実行のために支払えるガスの最大金 |
トランザクションのライフサイクル
イーサリアムおける独自の要素
イーサリアムのトランザクションのライフサイクルは、ビットコインのものと基本的な流れを共有しつつ、いくつかの独自の要素を持っています。以下に、イーサリアム固有の要素を抜粋して説明します。
スマートコントラクト
- イーサリアムのスマートコントラクトは、コントラクトクリエーショントランザクションによってデプロイされます。
ガスと手数料システム
- ガスは、イーサリアムネットワーク上でトランザクションやスマートコントラクトを実行するための手数料として使われます。ガスは計算処理の単位であり、トランザクションの複雑さに応じて必要なガス量が決まります。
- ベースフィーとプライオリティフィーの二重構造
トランザクション手数料はベースフィー(ネットワークの基本手数料)とプライオリティフィー(追加の手数料)に分かれています。ベースフィーはネットワークの混雑状況に応じて変動し、プライオリティフィーはトランザクションの優先度を高めるために使われます。
イーサリアムバーチャルマシン(EVM)
- イーサリアムバーチャルマシン(EVM)は、スマートコントラクトを実行するための仮想マシンです。EVMはソリディティで書かれたコードをバイトコードに変換し、各ノードが同じ結果を得られるようにします。
- EVMは、スマートコントラクトの実行を標準化し、分散型ネットワーク内のすべてのノードで一貫性のある処理を可能にします。
状態遷移とステートデータ
- ステートデータ
イーサリアムは、トランザクションの実行結果としての状態遷移(ステート)を管理します。これには、アカウントの残高やスマートコントラクトのデータが含まれます。 - マークルパトリシアツリー
ステートデータはマークルパトリシアツリーを使って効率的に管理されています。これにより、ステートの検証と同期が高速かつ効率的に行われます。
EVM (Ethereum Virtual Machine)
イーサリアムのEVMは、すべてのマイナーノードが持つ仮想マシンであり、イーサリアムネットワークの中核をなす重要なコンポーネントです。以下にEVMの役割とその特徴を詳しく説明します。
EVMの役割
- スマートコントラクトの実行
- 一貫したトランザクション処理
EVMの技術的特徴
- Solidity(プログラミング言語)
SolidityはJavaScriptに近い文法を持ち、人間が書きやすいように設計されています。
// SPDX-License-Identifier: MIT
pragma solidity >=0.6.12 <0.9.0;
contract HelloWorld {
function print() public pure returns (string memory) {
} }
- バイトコードへの変換
バイトコードはコンピュータが認識できる形式であり、これをEVMが実行することでスマートコントラクトが機能します。
608060405234801561000f575f80fd5b506101688061001d5f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c806313bdfacd 1461002d575b5f80fd5b61003561004b565b6040516100429190610112565b60405180910390f35b60606040518060400160405280600c81526020017f48656c6c 6f20576f726c64210000000000000000000000000000000000000000815250905090565b5f81519050919050565b5f82825260208201905092915050565b5f5b83 8110156100bf5780820151818401526020810190506100a4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6100e482610088565b6100 ee8185610092565b93506100fe8185602086016100a2565b610107816100ca565b840191505092915050565b5f6020820190508181035f83015261012a81846100 da565b90509291505056fea26469706673582212201fe629a1426d6729fa075cb52013ff69644a2a145b2ca78e2db97a7dd023603064736f6c63430008180033
なぜEVMが必要か?
- スマートコントラクトの普遍的な実行
トランザクションの実行は、ほとんどの場合スマートコントラクトの実行を伴います。そのため、全てのノードがEVMを持ち、同じ環境でプログラムを実行することが求められます。 - 一貫性の保証
異なるノードが同じトランザクションを処理しても、一貫した結果が得られる必要があります。EVMはこの一貫性を保証するための仕組みを提供します。
まとめ
ビットコインとイーサリアムは、どちらもブロックチェーン技術を基盤とした主要な仮想通貨ですが、その目的と機能には大きな違いがあります。
ビットコインは主にデジタル通貨として設計されており、価値の保存と送金に特化しています。ビットコインはProof-of-Work (PoW) というコンセンサスアルゴリズムを使用し、供給量は2,100万BTCに固定されています。そのため、デジタルゴールドとしての役割が強調されています。ビットコインのブロック生成時間は約10分で、これは取引の確認に時間がかかることを意味します。
一方、イーサリアムはスマートコントラクトと分散型アプリケーション(DApps)のプラットフォームとして機能します。これにより、単なる送金だけでなく、複雑なプログラムの実行が可能となります。イーサリアムは現在、PoWからProof-of-Stake (PoS) への移行中で、特定の発行上限はありませんが、インフレーション率は管理されています。イーサリアムのブロック生成時間は約15秒と短く、多くのトランザクションを迅速に処理できます。
イーサリアムは、分散型金融(DeFi)やNFT(非代替性トークン)など、多様なエコシステムの発展に貢献しています。このため、イーサリアムはその汎用性と柔軟性を活かし、ブロックチェーン技術の未来を牽引する存在となっています。
このように、ビットコインとイーサリアムはそれぞれ異なる強みと用途を持ち、ブロックチェーン技術の異なる側面を探求しています。ビットコインがデジタル通貨としての役割を強調する一方で、イーサリアムはより広範なアプリケーションの可能性を提供し、ブロックチェーン技術の新しい時代を切り開いています。
コメント