mcpField
B
blockchain-web3

blockchain-web3

github.com/travisjneuman開発106104 回インストール1 日前に更新
リポジトリ

blockchain-web3 について

Solidity コントラクトやブロックチェーンアプリを開発する人向けの Web3 開発スキルです。コントラクトの安全性、開発ツール、フロントエンド連携、DeFi のパターン、ガス最適化を扱います。

主な機能

  1. 01Solidity コントラクトの構造と安全性
  2. 02Hardhat と Foundry のワークフロー
  3. 03ethers.js v6 と viem の連携
  4. 04DeFi の設計パターン
  5. 05ガス最適化の手法

活用シーン

  1. 01コントラクトの安全性パターンの確認
  2. 02Hardhat または Foundry のコマンド選定
  3. 03フロントエンドとブロックチェーンの接続
  4. 04DeFi コントラクトの仕組みの検討

インストール

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

$npx skills add https://github.com/travisjneuman/.claude --skill blockchain-web3

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

詳細

ブロックチェーンと Web3 開発

スマートコントラクト開発(Solidity)

コントラクトの構造
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/access/Ownable.sol";

contract MyToken is ERC20, Ownable {
    constructor() ERC20("MyToken", "MTK") Ownable(msg.sender) {
        _mint(msg.sender, 1000000 * 10 ** decimals());
    }
}
セキュリティパターン
  • チェック・効果・相互作用: 検証 → 状態を更新 → 外部呼び出し
  • リエントランシーガード: OpenZeppelin の ReentrancyGuard または nonReentrant を使用します
  • アクセス制御: Ownable、AccessControl、またはカスタム修飾子を使用します
  • 整数の安全性: Solidity 0.8 以降には、オーバーフローのチェック機能が組み込まれています
  • プッシュよりプル: 資金を送金するのではなく、ユーザーが引き出せるようにします
よくある脆弱性
脆弱性防止策
リエントランシーnonReentrant 修飾子、CEI パターン
フロントランニングコミット・リビール方式、flashbot による保護
オラクル操作Chainlink の使用、スポット価格ではなく TWAP の使用
戻り値の未チェック常に transfer() の戻り値を確認するか、safeTransfer を使用します
Delegatecall インジェクションユーザー指定のアドレスに対して delegatecall を決して実行しないでください

開発ツール

Hardhat
npx hardhat init
npx hardhat compile
npx hardhat test
npx hardhat deploy --network sepolia
Foundry
forge init
forge build
forge test -vvv
forge script script/Deploy.s.sol --rpc-url $RPC --broadcast

フロントエンド統合(ethers.js v6 / viem)

// viem (recommended for new projects)
import { createPublicClient, http } from 'viem'
import { mainnet } from 'viem/chains'

const client = createPublicClient({ chain: mainnet, transport: http() })
const balance = await client.getBalance({ address: '0x...' })

// wagmi hooks (React)
import { useAccount, useBalance, useContractWrite } from 'wagmi'
const { address } = useAccount()
const { data: balance } = useBalance({ address })

DeFi パターン

  • AMM: 定積公式(x * y = k)、集中流動性
  • レンディング: 過剰担保ローン、清算メカニズム、金利モデル
  • ステーキング: rewardPerToken の累積パターンによる報酬の分配
  • ガバナンス: トークン保有量に応じた投票、タイムロックコントローラー、提案のライフサイクル

ガス最適化

  • 読み取り専用のパラメーターには memory より calldata を使用します
  • 構造体をパックします(スロットを効率的に使えるよう、小さい型をまとめます)
  • 安全な算術演算には unchecked ブロックを使用します
  • ストレージの読み書きを最小限に抑えます(メモリにキャッシュします)
  • オンチェーンでの参照が不要なデータには、ストレージの代わりにイベントを使用します

コメント