イーサリアムの「Gas(ガス)」って何?~イーサリアムの仕組みを理解しよう

2017.11.24
イーサリアムの「Gas(ガス)」

<この記事(ページ)は 6分で読めます>

イーサリアムを保管し送金したりするときに、必ず「Gas(ガス)」という言葉に遭遇すると思います。Gasはその名の通り燃料のガスと同義で、イーサリアムのブロックチェーンの「燃料」として使用されています。ここではイーサリアムについてより理解を深めるために、このGasがイーサリアムのブロックチェーンの中でどのような働きをしているのか紹介していきます。

イーサリアムとは

イーサリアムは、2015年7月にリリースされたプラットフォームとその通貨です。ロシア人のVitalik Buterin(ヴィタリック・ブテリン)を中心に開発されました。大きな特徴としては、スマートコントラクトであることと、PoS(プルーフ・オブ・ステーク)を導入しようと取り組んでいることです。他の仮想通貨やプラットフォームと同様に、そのプラットフォームにブロックチェーンを組み込んでいます。

Gasとは

イーサリアムのGasは、実際にトークンとして存在しているわけではありません。ガソリンのようなもので、スマートコントラクト(プログラム)を実行することや、トランザクションを送信することに必要で、プログラムの中の作業量をカウントするための単位として使用されています。実際の燃料費は、Ether(イーサ)から差し引かれます。

Gasの種類

Gasはさまざまな用途で使用されるため、その用途ごとに呼称が変わります。

・Gas Fee

Gas Fee (ガス手数料)は、トランザクションやプログラムを実行するのに必要な手数料としてマイナーに支払われます。Gas Priceとは送信者がマイナーに支払う1計算当たりの手数料のことです。1 Gasの値段は、GasとEtherの交換レートのなかでGasの需要に応じて変化します。1Etherよりずっと小さい値であるため、weiという単位で数えられます。

ビットコインのsatoshiのように、weiはEtherの最小単位です。Etherには、以下のようなさまざまな単位も設定されています。

・startGas

startGasとは、トランザクションの実行にかかるGasの最大量です。EthereumのホワイトペーパーではstartGasと呼ばれていますが、イエローペーパーではGas limitと呼ばれており、Geth(Ethereumの仕様を実装したクライアントの一つ)では単に“Gas”と呼ばれているので注意が必要です。

例えば、My Ether Wallet(イーサリアム対応のウォレット)でEtherを送金するときには、必ず手数料を設定しなくてはなりません。この手数料は自分で設定することができますが、手数料の最低金額はあらかじめ決まっています。この最低金額は「トランザクションの実行にかかるGasの最大量(startGas)」×「需要と供給で決まるガス料金(Gas Price)」で決定します。

トランザクションの実行時に燃料としてのGasが足りないと「ガス欠」となり取引ができなくなってしまうことがあります。そのようにならないために多めにGasを確保しておく必要があります。つまり、startGasとはトランザクションでGasが足りなくならないように保険として実際より多めに払うGasなのです。消費されず余ったGasはremaining gasとして、後で返還される仕組みです。

一般的に、送信者が支払う手数料はstartGas×Gas Priceで、マイナーが得る手数料は(startGasから remaining gasを引いたもの)×Gas Priceで決定します。

Gasがイーサリアムで使われる過程

例えば、「10 Ether の値と、0.001 Ether / Gas の Gas Price (ガス市場価格)で 2000 Gas 、そして64バイトのデータを送信する」とします。

・まず送信手続きを行った際、トランザクションが正しいかどうか、例えば入力された値が正しい数値かどうか(well-formed)をチェックします。そして署名が有効であれば、ノンス値が送信者のアカウントと合致するかチェックし、合致しない場合はエラーとして返信します。

・合致した場合、トランザクション送信者が、最低限 2000 × 0.001= 2 Ether (送信者側が設定した手数料×Gas Price)を所持しているか確認します。 もし、所持していれば、2 Ether を送信者のアカウントから手数料として差し引きます。この価格は送信者が設定できるもので、2 Ether以上であればどの価格でも構いません。

・送信者から手数料として支払われたGasの量を2000 Gasとして初期化します。トランザクションのバイト長が 170 byte であるとすると、byte あたりの手数料が 5 Gas であったことから、850 Gasを差し引くことなり、1150 Gas が残ります。

・次に送信者のアカウントから送信者が実際に送金する 10 Ether を差し引き、それを送信先のアカウントに加えます。(10Etherが送金されたことになる)

・次に取引処理のためのプログラムを動かします。この操作で、187 Gas を消費する場合、残りの Gas は 1150 – 187 = 963 Gasとなります。

・963 × 0.001 = 0.963 Ether を送信者のアカウントに返金し、結果を返します。

このような手順を踏んでトランザクションは成立します。

Gasの活用

イーサリアムは現在まで多くのDos攻撃にさらされてきました。Dos攻撃とは、サーバやネットワークリソースに過重に負荷をかけることや脆弱性を突くことで、サービスの妨害や不正を行うことです。

イーサリアムではすべての計算ステップや領域に対して手数料が課されます。そのため、Dos攻撃を仕掛けているアタッカーはアタックするときに手数料を支払わなければなりません。つまり、Gasが一種のDos攻撃対策になっています。イーサリアムでは、これまで何度もDos攻撃を受けてきましたが、そのたびにGasの料金を上げるといった対策を取ることによって攻撃から身を守ってきたようです。

イーサリアムは現在Frontier→Homestead→Metropolis→Serenityという順番でハードフォークを行い、システム改変することでPoSを行おうとしていますが、このハードフォークでもその状況に応じて標準のGas Priceを変更しています。例えばFrontierからHomesteadに移行したときはGas Priceが50gwei(shannon)から20gweiに変更になったため、手数料は例えば1トランザクションに21000Gasかかるとすると、

0.00000005 × 9 × 21000 = 0.00945 USD / transaction(1Ether=9USDの場合)
から
0.00000002 × 9× 21000 = 0.00378 USD / transaction
と値下がりしました。

このようにGas Priceを変更することでトランザクション手数料は大きく変わります。これを利用することでDos攻撃者にも対応しうるのです。 

まとめ

イーサリアムの仕組みはやや難解です。それはイーサリアムがより高度で使いやすいブロックチェーンを目指して開発・進化しているためといえるでしょう。ブロックチェーンの仕組みを理解するということはその仕組みのより良い活用方法やビジネスの動きをより深く知ることにつながると考えられます。

関連記事

この記事のタグ

おすすめ記事