mcpField
E
ethereum-development

ethereum-development

github.com/pluginagentmarketplace開発151 回インストール43 週間前に更新
リポジトリ

ethereum-development について

ethereum-developmentは、Ethereum開発者向けにEVMの動作、ガス最適化、トランザクションの仕組み、ノードとの連携を解説するスキルです。概念説明に加え、Solidity、viem、Foundryの例やトラブルシューティング用コマンドを含みます。

主な機能

  1. 01EVMの実行とストレージを解説
  2. 02ガス最適化手法を紹介
  3. 03トランザクション種別と手数料を説明
  4. 04Ethereum RPCと状態照会を紹介
  5. 05Foundryとcastのコマンドを収録

活用シーン

  1. 01Solidityコントラクトのガス使用量を最適化
  2. 02ストレージスロットとコントラクト状態を確認
  3. 03トランザクション手数料の見積もりや調査
  4. 04ガス不足やnonceエラーの追跡

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pluginagentmarketplace/custom-plugin-blockchain --skill ethereum-development

インストール後、Claude Code で/ethereum-developmentを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
config.yaml
schema.json
references/
GUIDE.md
PATTERNS.md
scripts/
validate.py

詳細

Ethereum 開発スキル

EVM の内部構造、ガス最適化、トランザクションの仕組み、クライアントとのやり取りなど、Ethereum 開発を習得します。

クイックスタート

# Invoke this skill for Ethereum development
Skill("ethereum-development", topic="gas", network="mainnet")

対象トピック

1. EVM(Ethereum Virtual Machine)

実行環境について理解します。

  • スタックマシン:256 ビットワード、深さ 1024
  • メモリ:線形バイト配列、拡張コスト
  • ストレージ:永続的なキーと値のペア、32 バイトのスロット
  • オペコード:コスト、効果、ガス消費量
2. ガス最適化

トランザクションのコストを削減します。

  • ストレージのパッキング:複数の値を 1 つのスロットに格納
  • Calldata と Memory の使い分け:効率的に選択
  • ループの最適化:ストレージの読み取りをキャッシュ
  • カスタムエラー:リバート時のガスを節約
3. トランザクションの仕組み

トランザクションのライフサイクルを習得します。

  • タイプ:Legacy(0)、Access List(1)、EIP-1559(2)
  • 手数料の見積もり:ベース手数料、優先手数料、最大手数料
  • ナンスの管理:順次処理
  • レシート:ステータス、ログ、使用ガス量
4. クライアントとのやり取り

Ethereum ノードを操作します。

  • RPC メソッド:eth_、debug_、trace_
  • 状態の照会:ストレージスロット、コード、残高
  • イベントのサブスクリプション:ログ、トピックのフィルタリング

コード例

ガス効率の高いストレージ
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

contract Optimized {
    // Pack into single slot (32 bytes)
    struct User {
        uint128 balance;    // 16 bytes
        uint64 lastUpdate;  // 8 bytes
        uint32 nonce;       // 4 bytes
        bool active;        // 1 byte
        // 3 bytes padding
    }

    mapping(address => User) public users;
}
ストレージスロットの読み取り
import { createPublicClient, http, keccak256, encodePacked, pad } from 'viem';
import { mainnet } from 'viem/chains';

const client = createPublicClient({ chain: mainnet, transport: http() });

// Read mapping value: balances[address]
async function getBalance(contract: `0x${string}`, user: `0x${string}`) {
  const slot = keccak256(encodePacked(['address', 'uint256'], [user, 0n]));
  return await client.getStorageAt({ address: contract, slot });
}
EIP-1559 トランザクション
import { createWalletClient, http, parseEther } from 'viem';

const client = createWalletClient({ transport: http() });

const hash = await client.sendTransaction({
  to: '0x...',
  value: parseEther('0.1'),
  type: 'eip1559',
  maxFeePerGas: parseGwei('30'),
  maxPriorityFeePerGas: parseGwei('2'),
});

ガス最適化の早見表

手法削減量例
ストレージのパッキング約20k/スロット1 つのスロットに uint128 + uint128
Calldata と memory の使い分け約3/バイト読み取り専用には calldata を使用
チェックなしの演算約80/演算unchecked { i++; }
カスタムエラー約200以上error Unauthorized()
短絡評価変動先に低コストのチェックを実行

よくある落とし穴

落とし穴問題解決策
ループ内でのストレージアクセス読み取りコストが高い先にメモリへキャッシュ
文字列のストレージ保存複数のスロットを使用可能な場合は bytes32 を使用
ゼロ値のストレージ保存全額返金がなくなるSSTORE の返金に頼らない

トラブルシューティング

"Transaction underpriced"
# Check current gas prices
cast gas-price --rpc-url $RPC
cast basefee --rpc-url $RPC

maxFeePerGas を現在のベース手数料の少なくとも 2 倍に設定してください。

"Out of gas"
# Trace transaction to find issue
cast run --trace $TX_HASH --rpc-url $RPC
"Nonce too low"
# Get current nonce
cast nonce $ADDRESS --rpc-url $RPC

CLI コマンド

# Foundry essentials
forge build --sizes          # Contract sizes
forge test --gas-report      # Gas consumption
forge snapshot               # Gas snapshots
cast storage $ADDR $SLOT     # Read storage
cast call $ADDR "fn()"       # Simulate call

テストテンプレート

contract GasTest is Test {
    function test_GasOptimization() public {
        uint256 gasBefore = gasleft();
        target.optimizedFunction();
        uint256 gasUsed = gasBefore - gasleft();

        assertLt(gasUsed, 50000, "Too much gas used");
    }
}

相互参照

  • Bonded Agent:02-ethereum-development
  • 関連スキル:solidity-development、web3-frontend

バージョン履歴

バージョン日付変更内容
2.0.02025-01viem とガス最適化に対応した本番品質のリリース
1.0.02024-12初回リリース

コメント