# [EIP160] EXPオペコードのガスコストを増加させる提案を理解しよう！

> 「block.number >= FORK_BLKNUM」という条件の下で、EXP命令（指数計算を行う命令）のガスコスト（実行コスト）を変更することを提案しています。

- URL: https://cardene.dev/articles/865cb73db25da3fc23f3
- 公開日: 2024-01-28
- 更新日: 2024-01-28
- トピック: Blockchain
- タグ: ethereum, solidity, smartcontract, ブロックチェーン

## はじめに

初めまして。
**CryptoGames**というブロックチェーンゲーム企業でエンジニアをしている **cardene（かるでね）** です！
スマートコントラクトを書いたり、フロントエンド・バックエンド・インフラと幅広く触れています。

https://cryptogames.co.jp/

代表的なゲームは**クリプトスペルズ**というブロックチェーンゲームです。

https://cryptospells.jp/

今回は、EthereumにおけるEXP命令のガスコスト改訂を提案している**EIP160**についてまとめていきます！

:::message
以下にまとめられているものを翻訳・要約・補足しながらまとめていきます。
:::

https://eips.ethereum.org/EIPS/eip-160

他にも様々なEIPについてまとめています。

https://cardene.notion.site/ERC-EIP-2a03fa3ea33d43baa9ed82288f98d4a9?pvs=4

## パラメータ

- `FORK_BLKNUM`
    - `2,675,000`
- `CHAIN_ID`
    - `1`

## 仕様

「`block.number >= FORK_BLKNUM`」という条件の下で、`EXP`命令（指数計算を行う命令）のガスコスト（実行コスト）を変更することを提案しています。
具体的には、ブロック番号が`FORK_BLKNUM`以上になった場合、`EXP`命令のガスコストを「`10` + 指数部のバイトあたり`10`」から「`10` + 指数部のバイトあたり`50`」へと増加させるという内容です。

ここでの「`block.number`」とは、ブロックチェーン上での特定のブロックの番号を指します。
ブロックチェーンは、連続するブロックのチェーンで構成されており、各ブロックには一意の番号が割り当てられています。

「`FORK_BLKNUM`」とは、ブロックチェーンのネットワーク上で特定のアップデートが適用されるブロックの番号を指します。
この番号に達すると、ネットワークは新しいルールに従って動作するようになります。

この提案の背景には、`EXP`命令の現在のガスコストがその処理に必要なリソースに比べて低く設定されているという問題があります。
指数計算は計算量が多いため、ネットワークのリソースを相応に消費します。
そのため、ガスコストを増加させることで、命令の実行にかかるコストをより適切に反映させようとしています。
これにより、ネットワークの過負荷を防ぐとともに、よりセキュアで効率的なネットワーク運用を目指しているのです。

:::message
`EXP`については以下の記事を参考にしてください。
:::

https://zenn.dev/heku/books/aef33b86ded3c0/viewer/14d71a#exp

## 補足

ブロックチェーンにおける`EXP`命令のガスコストに関するベンチマーク（性能評価）の結果について述べています。
「`EXP`命令は現在、本来あるべき価格の約4～8分の1に過小評価されている」と述べられています。

ブロックチェーンにおいて、`EXP`命令は指数計算を行うための命令です。
ブロックチェーンのトランザクションでは、各命令の実行には「**ガス**」と呼ばれる単位を使用してコストを計算して消費します。
このガスコストは、ネットワーク上でのトランザクションの処理負荷に対する料金として機能します。

ベンチマークとは、コンピューターシステムやプログラムの性能を評価するテストのことです。
ベンチマークの結果は、`EXP`命令の現在のガスコストが、実際に必要とされるリソースや処理能力と比較してかなり低く設定されていることを示しています。
つまり、`EXP`命令を使用することによるネットワークへの影響や負担が、現在のガスコストでは適切に反映されていないということです。

これは、ネットワークのセキュリティや効率に影響を及ぼす可能性があります。
コストが過小評価されていると、その命令が過度に使用され、結果的にネットワークの過負荷やセキュリティリスクを招く恐れがあります。
そのため、この情報は`EXP`命令のガスコストを再評価し、調整する必要があることを示唆しています。

## 参考

- [EIP-160 issue and discussion](https://github.com/ethereum/EIPs/issues/160)

## 引用

Vitalik Buterin (@vbuterin), "EIP-160: EXP cost increase," Ethereum Improvement Proposals, no. 160, October 2016. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-160.

## 最後に

今回は「EthereumにおけるEXP命令のガスコスト改訂を提案している**EIP160**」についてまとめてきました！
いかがだったでしょうか？

質問などがある方は以下のTwitterのDMなどからお気軽に質問してください！

[Twitter @cardene777](https://twitter.com/cardene777)

他の媒体でも情報発信しているのでぜひ他も見ていってください！

https://chaldene.net/

https://zenn.dev/heku

https://mirror.xyz/0xcE77b9fCd390847627c84359fC1Bc02fC78f0e58

https://cardene.notion.site/ERC-EIP-2a03fa3ea33d43baa9ed82288f98d4a9?pvs=4
