イーサリアムの概要

Kazuki Kyakuno
Axell Corporation
Published in
May 24, 2021

ワールドコンピュータであるイーサリアムの概要について解説します。

イーサリアムの概要

イーサリアムは世界で一つのステートを共有するワールドコンピュータです。イーサリアムを構成する全てのノードで共通のステートを持ち、スマートコントラクトと呼ばれるプログラムでステートの内容を書き換えていくことで、コンピュータとして動作します。

ワールドコンピュータ

ステートはトランザクションから起動されるスマートコントラクトによって書き換えられます。トランザクションはブロックチェーンで管理されます。トランザクションがブロックチェーンに保存されていることで、任意の時間のステートを再構成することができます。これにより、データに永続性があり、悪意があるユーザによる書き換えは不可能です。

イーサリアムはトランザクションベースのステートマシンであると言えます。

GASについて

世界で一つのコンピュータを共有するため、リソースは限られており、ユーザに無制限のアクセスを与えることはできません。そのため、スマートコントラクトの実行ステップ数に応じて、手数料であるGASを支払う必要があります。GASの入手方法として、暗号資産であるイーサが定義されています。イーサはワールドコンピュータであるイーサリアムの使用料という側面を持ちます。

スマートコントラクトについて

スマートコントラクトはSolidityというプログラム言語で記述します。チューリング完全であり、GASのコストを無視すれば、原理的に全てのプログラムを実行することができます。Solidityはバイトコードにコンパイルされ、EVM(イーサVM)によって実行されます。

イーサリアムにコントラクトを登録するには、宛先がアドレス0x000…000(ゼロアドレス)である特別なトランザクションを作成します。

コントラクトを実行するには、宛先がコントラクトアドレスであるトランザクションを作成します。

ウォレットについて

ワールドコンピュータへは誰でもアクセスが可能です。ユーザ認証の手段として、秘密鍵と対応する公開鍵によってユーザを一意に特定します。中央集権的なシステムとは異なり、秘密鍵はユーザ自ら管理する必要があります。秘密鍵を管理する手段として、ウォレットがあり、MetaMaskはブラウザで使用できるウォレットです。

イーサリアムではsecp256k1で定義された楕円曲線暗号を使用して、秘密鍵と公開鍵を生成します。イーサリアムアドレスは、公開鍵のKeccak-256によるハッシュ値の最後の20バイトから計算します。

イーサリアムクライアントについて

Geth(Go-Ethereum)は公式のイーサリアムクライアントです。Go言語で開発されています。ブロックチェーンと同期してフルノードとして使用することや、テスト用のローカルブロックチェーンを構築することができます。イーサリアムクライアントはJSON-RPC APIを提供します。RPCインタフェースはポート8545のHTTPサービスとして動作し、ブラウザウォレットなどがブロックチェーンに接続するためのゲートウェイとして機能します。

イーサリアムクライアントの役割

web3.jsについて

web3.jsはイーサリアムにアクセスするためのJavaScript APIです。送金やコントラクトの実行をJavaScriptから行うことができます。

トークンについて

NFTなどのトークンはイーサリアムのアプリケーションの一つです。トークンを管理するコントラクトや、トークンを売買するコントラクトなどが、イーサリアム上で動いています。

ERCについて

ERCはスマートコントラクトのための標準規格です。用途別に必要なAPIが規定されています。例えば、NFTはERC721で定義されます。ERCに準拠することでNFTをブラウザウォレットやマーケットプレイスで扱うことができるようになります。

PoWとPoSについて

ステートを保存するブロックチェーンの改竄を防ぐため、現在はPoWによって保護されています。今後はPoSへの移行が計画されています。

Polygon (MATIC)について

Polygon (MATIC)はイーサリアム互換のサイドチェーンです。イーサリアムのブロックチェーンは混雑によりネットワーク手数料(GAS)が高騰しており、Polygon (MATIC)を使用することでコストを抑制することができます。イーサリアム互換なため、イーサリアムと同じスマートコントラクトが動作します。OpenSeaもPolygon (MATIC)に対応しており、売買できるNFTの作成に使用可能です。

--

--