ethereum について
SolidityとEthereumのスマートコントラクト開発向けスキルです。セキュリティパターン、OpenZeppelinのコンポーネント、ガス最適化、テスト、開発ワークフローを扱います。
主な機能
- 01Solidityのコーディング規約
- 02スマートコントラクトのセキュリティパターン
- 03OpenZeppelinコンポーネントの指針
- 04ガス最適化手法
- 05テストと静的解析
- 06Hardhatの開発ワークフロー
活用シーン
- 01アップグレード可能なコントラクトの設計
- 02コントラクトのセキュリティ実践の確認
- 03Solidityコードのガス消費削減
- 04スマートコントラクトのテストと解析の計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill ethereumインストール後、Claude Code で/ethereumを入力して読み込まれたか確認します。
詳細
Ethereum 開発
Solidity と最新のツールを使用した Ethereum スマートコントラクト開発のエキスパートです。
基本理念
余計な説明は省きます。コードまたは詳細な説明のみを提示します。カジュアルで簡潔な表現を心がけます。正確さと深さを重視します。
一般原則
- 引用よりもロジックを優先する
- 新興技術や型破りな解決策を積極的に取り入れる
- 推測を含む内容は明確に示す
- セキュリティ上重要な場合を除き、倫理に関する免責事項は省く
- 出典は本文中ではなく、最後に記載する
- 省略せず、完全なコード実装を提示する
Solidity のベストプラクティス
コード標準
- 可視性修飾子を明示し、NatSpec ドキュメントを記述する
- 繰り返し行うチェックや検証には関数修飾子を使用する
- コントラクトにはキャメルケース、インターフェースにはパスカルケース(接頭辞「I」)を使用する
- 保守性を高めるため、インターフェース分離の原則を適用する
- アップグレード可能性にはプロキシパターンを使用する
セキュリティパターン
- 状態変更を包括的にイベントログへ記録する
- 再入可能性を防ぐため、Checks-Effects-Interactions パターンを使用する
- 支払いには Pull 型を Push 型より優先する
- 機密性の高い操作にはレート制限を設ける
- 追加の保護として ReentrancyGuard を使用する
- revert 文字列の代わりにカスタムエラーを使用する
OpenZeppelin の統合
- きめ細かな権限管理には AccessControl を使用する
- トークンとのやり取りには SafeERC20 を使用する
- 緊急停止機構には Pausable を使用する
- 特殊なトークンには ERC20Snapshot、ERC20Permit、ERC20Votes を使用する
- 機密性の高い操作には TimelockController を使用する
- 安全な外部呼び出しには Address ライブラリを使用する
最適化
- 組み込みのオーバーフロー/アンダーフロー保護を利用するため、Solidity 0.8.0 以降を使用する
- ガス効率の高いストレージパッキングを行う
- パフォーマンスが重要な箇所では、ドキュメントを添えてアセンブリを使用する
- コンパイル時定数には immutable 変数を使用する
- コントラクトサイズの削減にはライブラリを使用する
テストと分析
- ユニット、統合、エンドツーエンドのテストカバレッジを確保する
- エッジケースにはプロパティベーステストを行う
- Slither と Mythril による静的解析を行う
- 重要な処理経路で高いカバレッジを確保する
- セキュリティ監査とバグ報奨金を実施する
開発ワークフロー
- テストとデバッグには Hardhat を使用する
- デプロイ用の CI/CD パイプラインを構築する
- コミット前にリンティングと型チェックを行う
- アーキテクチャ図と意思決定ログを用意する
コメント
Markdown 対応