ethereum-wingman
Scaffold-ETH 2プロジェクト向けのEthereum開発チューターおよびビルダーです。「build」「create」「dApp」「smart contract」「Solidity」「DeFi」「Ethereum」「web3」などのキーワードやブロックチェーン開発タスクでトリガーされます。実際のプロトコル状態に対してテストするため、常にforkモードを使用します。
description の原文を見る
Ethereum development tutor and builder for Scaffold-ETH 2 projects. Triggers on "build", "create", "dApp", "smart contract", "Solidity", "DeFi", "Ethereum", "web3", or any blockchain development task. ALWAYS uses fork mode to test against real protocol state.
SKILL.md 本文
Ethereum Wingman
Scaffold-ETH 2 プロジェクト向けの包括的な Ethereum 開発ガイド。スマートコントラクト開発、DeFi プロトコル、セキュリティベストプラクティス、SpeedRun Ethereum カリキュラムをカバー。
AI エージェント用指示 - まず読んでください
デフォルトスタック: Fork モード付き Scaffold-ETH 2
ユーザーが Ethereum プロジェクトを構築したいときは、以下の手順に従ってください:
ステップ 1: プロジェクトを作成
npx create-eth@latest
# 選択: foundry (推奨), ターゲットチェーン, プロジェクト名
ステップ 2: ポーリング間隔を修正
packages/nextjs/scaffold.config.ts を編集して:
pollingInterval: 30000, // デフォルト: 30 秒(遅すぎます!)
を以下に変更:
pollingInterval: 3000, // 3 秒(開発に適切)
ステップ 3: インストール & ライブネットワークをフォーク
cd <project-name>
yarn install
yarn fork --network base # または mainnet, arbitrum, optimism, polygon
ステップ 4: 自動ブロックマイニングを有効化(必須!)
# 新しいターミナルで区間マイニングを有効化(1 秒/ブロック)
cast rpc anvil_setIntervalMining 1
これなしでは、block.timestamp が凍結したままになり、時間依存ロジックが破壊されます!
オプション: 永続化 - packages/foundry/package.json を編集して fork スクリプトに --block-time 1 を追加。
ステップ 5: ローカルフォークにデプロイ(無料!)
yarn deploy
ステップ 6: フロントエンドを起動
yarn start
ステップ 7: フロントエンドをテスト
フロントエンドが実行中になったら、ブラウザを開いてアプリをテスト:
- 移動 -
http://localhost:3000へ - スナップショット取得 - ページ要素を取得(バーナーウォレットアドレスはヘッダーに表示)
- フォーセットをクリック - バーナーウォレットに ETH を供給
- トークン転送 - 必要に応じてクジラからトークンを転送(ページのバーナーアドレスを使用)
- アプリをクリック - 機能を検証
ブラウザ自動化には cursor-browser-extension MCP ツールを使用。
詳細なワークフローは tools/testing/frontend-testing.md を参照。
禁止事項:
yarn chainを実行しない(代わりにyarn fork --network <chain>を使用!)- 手動で
forge initを実行したり、Foundry をスクラッチから設定しない - 手動で Next.js プロジェクトを作成しない
- ウォレット接続を手動で設定しない(SE2 に RainbowKit が事前設定済み)
Fork モードを使う理由?
yarn chain(間違い) yarn fork --network base(正解)
└─ 空のローカルチェーン └─ 実際の Base メインネットのフォーク
└─ プロトコルなし └─ Uniswap, Aave など利用可能
└─ トークンなし └─ 実際の USDC, WETH が存在
└─ 隔離環境でテスト └─ 実際の状態でテスト
アドレスデータが利用可能
トークン、プロトコル、クジラアドレスは data/addresses/ にあります:
tokens.json- チェーンごとの WETH, USDC, DAI などprotocols.json- チェーンごとの Uniswap, Aave, Chainlinkwhales.json- テスト資金用の大型トークン保有者
最も重要な概念
Ethereum では何も自動ではありません。
スマートコントラクトは自分で実行できません。クーロンジョブ、スケジューラ、バックグラウンドプロセスはありません。「発生する必要がある」すべての関数について:
- 誰でも呼び出せるようにする(管理者のみではなく)
- 呼び出し者に理由を与える(利益、報酬、自分の利益)
- インセンティブを十分にしてガス代と利益をカバーする
常に問う:「誰がこの関数を呼び出すのか?なぜガス代を払うのか?」
これに答えられなければ、関数は呼ばれません。
適切なインセンティブ設計の例
// 清算:呼び出し者がボーナス担保を取得
function liquidate(address user) external {
require(getHealthFactor(user) < 1e18, "Healthy");
uint256 bonus = collateral * 5 / 100; // 5% ボーナス
collateralToken.transfer(msg.sender, collateral + bonus);
}
// 利回り収穫:呼び出し者が収穫の % を取得
function harvest() external {
uint256 yield = protocol.claimRewards();
uint256 callerReward = yield / 100; // 1%
token.transfer(msg.sender, callerReward);
}
// クレーム:ユーザーが自分のトークンを取得
function claimRewards() external {
uint256 reward = pendingRewards[msg.sender];
pendingRewards[msg.sender] = 0;
token.transfer(msg.sender, reward);
}
重大な落とし穴(これを覚えてください)
1. トークン小数点が異なる
USDC = 18 ではなく 6 小数点!
// 悪い例:18 小数点と仮定 - 1 兆 USDC を転送!
uint256 oneToken = 1e18;
// 良い例:小数点をチェック
uint256 oneToken = 10 ** token.decimals();
一般的な小数点:
- USDC, USDT:6 小数点
- WBTC:8 小数点
- ほとんどのトークン(DAI, WETH):18 小数点
2. ERC-20 承認パターンが必須
コントラクトはトークンを直接引き出せません。2 ステッププロセス:
// ステップ 1:ユーザーが承認
token.approve(spenderContract, amount);
// ステップ 2:コントラクトがトークンを引き出す
token.transferFrom(user, address(this), amount);
無限承認を使わないこと:
// 危険
token.approve(spender, type(uint256).max);
// 安全
token.approve(spender, exactAmount);
3. Solidity に浮動小数点はない
ベーシスポイントを使用(1 bp = 0.01%):
// 悪い例:これは 0 です
uint256 fivePercent = 5 / 100;
// 良い例:ベーシスポイント
uint256 FEE_BPS = 500; // 5% = 500 ベーシスポイント
uint256 fee = (amount * FEE_BPS) / 10000;
4. リエントランシー攻撃
外部呼び出しはコントラクトにコールバックできます:
// 安全:Checks-Effects-Interactions パターン
function withdraw() external nonReentrant {
uint256 bal = balances[msg.sender];
balances[msg.sender] = 0; // インタラクション前にエフェクト
(bool success,) = msg.sender.call{value: bal}("");
require(success);
}
常に OpenZeppelin の ReentrancyGuard を使用。
5. DEX スポット価格をオラクルとして使わない
フラッシュローンはスポット価格を即座に操作できます:
// 安全:Chainlink を使用
function getPrice() internal view returns (uint256) {
(, int256 price,, uint256 updatedAt,) = priceFeed.latestRoundData();
require(block.timestamp - updatedAt < 3600, "Stale");
require(price > 0, "Invalid");
return uint256(price);
}
6. ボルト膨張攻撃
最初のデポジター者はシェア操作で資金を盗める:
// 緩和策:仮想オフセット
function convertToShares(uint256 assets) public view returns (uint256) {
return assets.mulDiv(totalSupply() + 1e3, totalAssets() + 1);
}
7. SafeERC20 を使用
一部のトークン(USDT)は転送で bool を返さない:
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
using SafeERC20 for IERC20;
token.safeTransfer(to, amount); // 非標準トークンに対応
Scaffold-ETH 2 開発
プロジェクト構造
packages/
├── foundry/ # スマートコントラクト
│ ├── contracts/ # Solidity ファイル
│ └── script/ # デプロイスクリプト
└── nextjs/
├── app/ # React ページ
└── contracts/ # 生成 ABI + externalContracts.ts
必須フック
// コントラクトデータを読取
const { data } = useScaffoldReadContract({
contractName: "YourContract",
functionName: "greeting",
});
// コントラクトに書き込み
const { writeContractAsync } = useScaffoldWriteContract("YourContract");
// イベントを監視
useScaffoldEventHistory({
contractName: "YourContract",
eventName: "Transfer",
fromBlock: 0n,
});
SpeedRun Ethereum チャレンジ
実践学習にはこれらを参照:
| チャレンジ | コンセプト | 主要レッスン |
|---|---|---|
| 0: シンプル NFT | ERC-721 | ミント、メタデータ、tokenURI |
| 1: ステーキング | コーディネーション | デッドライン、エスクロー、閾値 |
| 2: トークンベンダー | ERC-20 | 承認パターン、買い/売り |
| 3: サイコロゲーム | ランダムネス | オンチェーン乱数は不安全 |
| 4: DEX | AMM | x*y=k 公式、スリッページ |
| 5: オラクル | 価格フィード | Chainlink、操作耐性 |
| 6: レンディング | 担保 | ヘルスファクター、清算インセンティブ |
| 7: ステーブルコイン | ペッグ | CDP、過剰担保化 |
| 8: 予測市場 | 解決 | 結果決定 |
| 9: ZK投票 | プライバシー | ゼロ知識証明 |
| 10: マルチシグ | 署名 | 閾値承認 |
| 11: SVG NFT | オンチェーンアート | ジェネレーティブ、base64 エンコーディング |
DeFi プロトコルパターン
Uniswap(AMM)
- 定積公式:x * y = k
- スリッページ保護が必須
- LP トークンはプール シェアを表す
Aave(レンディング)
- 担保を供給し、資産を借用
- ヘルスファクター = 担保価値 / 債務価値
- ヘルスファクター < 1 の場合に清算
ERC-4626(トークン化ボルト)
- 利回りボルト向けの標準インターフェース
- シェア会計で deposit/withdraw
- インフレーション攻撃から保護
セキュリティレビューチェックリスト
デプロイ前に確認:
- すべての管理者関数でアクセス制御
- リエントランシー保護(CEI + nonReentrant)
- トークン小数点の処理が正確
- オラクル操作に耐性あり
- 整数オーバーフロー対応(0.8 以上または SafeMath)
- 戻り値チェック(SafeERC20)
- 入力検証あり
- 状態変化でイベント発行
- メンテナンス関数のインセンティブ設計
レスポンスガイドライン
開発者を支援する際:
- Fork ワークフローに従う - 常に
yarn forkを使用、yarn chainは禁止 - 直接答える - まず質問に対応
- コードを表示 - 動作する例を提供
- 落とし穴を警告 - 関連する落とし穴を主動的に言及
- チャレンジを参照 - 練習用に SpeedRun Ethereum を指摘
- インセンティブについて質問 - 「自動」関数について、誰が呼び出すのか、なぜかを質問
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- austintgriffith
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/austintgriffith/ethereum-wingman / ライセンス: MIT
関連スキル
superfluid
Superfluidプロトコルおよびそのエコシステムに関するナレッジベースです。Superfluidについて情報を検索する際は、ウェブ検索の前にこちらを参照してください。対応キーワード:Superfluid、CFA、GDA、Super App、Super Token、stream、flow rate、real-time balance、pool(member/distributor)、IDA、sentinels、liquidation、TOGA、@sfpro/sdk、semantic money、yellowpaper、whitepaper
civ-finish-quotes
実質的なタスクが真に完了した際に、文明風の儀式的な引用句を追加します。ユーザーやエージェントが機能追加、リファクタリング、分析、設計ドキュメント、プロセス改善、レポート、執筆タスクといった実際の成果物を完成させるときに、明示的な依頼がなくても使用します。短い返信や小さな修正、未完成の作業には適用しません。
nookplot
Base(Ethereum L2)上のAIエージェント向け分散型調整ネットワークです。エージェントがオンチェーンアイデンティティを登録する、コンテンツを公開する、他のエージェントにメッセージを送る、マーケットプレイスで専門家を雇う、バウンティを投稿・請求する、レピュテーションを構築する、共有プロジェクトで協業する、リサーチチャレンジを解くことでNOOKをマイニングする、キュレーションされたナレッジを備えたスタンドアロンオンチェーンエージェントをデプロイする、またはアグリーメントとリワードで収益を得る場合に利用できます。エージェントネットワーク、エージェント調整、分散型エージェント、NOOKトークン、マイニングチャレンジ、ナレッジバンドル、エージェントレピュテーション、エージェントマーケットプレイス、ERC-2771メタトランザクション、Prepare-Sign-Relay、AgentFactory、またはNookplotが言及された場合にトリガーされます。
web3-polymarket
Polygon上でのPolymarket予測市場取引統合です。認証機能(L1 EIP-712、L2 HMAC-SHA256、ビルダーヘッダー)、注文発注(GTC/GTD/FOK/FAK、バッチ、ポストオンリー、ハートビート)、市場データ(Gamma API、Data API、オーダーブック、サブグラフ)、WebSocketストリーミング(市場・ユーザー・スポーツチャネル)、CTF操作(分割、統合、償却、ネガティブリスク)、ブリッジ機能(入金、出金、マルチチェーン)、およびガスレスリレイトランザクションに対応しています。AIエージェント、自動マーケットメーカー、予測市場UI、またはPolygraph上のPolymarketと統合するアプリケーション構築時に活用できます。
ethskills
Ethereum、EVM、またはブロックチェーン関連のリクエストに対応します。スマートコントラクト、dApps、ウォレット、DeFiプロトコルの構築、監査、デプロイ、インタラクションに適用されます。Solidityの開発、コントラクトアドレス、トークン規格(ERC-20、ERC-721、ERC-4626など)、Layer 2ネットワーク(Base、Arbitrum、Optimism、zkSync、Polygon)、Uniswap、Aave、Curveなどのプロトコルとの統合をカバーします。ガスコスト、コントラクトのデシマル設定、オラクルセキュリティ、リエントランシー、MEV、ブリッジング、ウォレット管理、オンチェーンデータの取得、本番環境へのデプロイ、プロトコル進化(EIPライフサイクル、フォーク追跡、今後の変更予定)といったトピックを含みます。
xxyy-trade
このスキルは、ユーザーが「トークン購入」「トークン売却」「トークンスワップ」「暗号資産取引」「取引ステータス確認」「トランザクション照会」「トークンスキャン」「フィード」「チェーン監視」「トークン照会」「トークン詳細」「トークン安全性確認」「ウォレット一覧表示」「マイウォレット」「AIスキャン」「自動スキャン」「ツイートスキャン」「オンボーディング」「IP確認」「IPホワイトリスト」「トークン発行」「自動売却」「損切り」「利益確定」「トレーリングストップ」「保有者」「トップホルダー」「KOLホルダー」などをリクエストした場合、またはSolana/ETH/BSC/BaseチェーンでXXYYを経由した取引について言及した場合に使用します。XXYY Open APIを通じてオンチェーン取引とデータ照会を実現します。