defi-protocols について
defi-protocolsは、DeFi開発、コントラクト監査、プロトコル連携向けの知識スキルで、スマートコントラクト、トークン、分散型融資を扱います。Web3.jsやEthers.js、オンチェーン照会、トランザクションシミュレーションの実践知識を含みます。
主な機能
- 01スマートコントラクト状態の読み書き
- 02ERC-20とERC-721トークンの管理
- 03融資金利と借入上限の照会
- 04エクスプローラーAPIによるオンチェーン分析
- 05Hardhatによるトランザクションのシミュレーション
活用シーン
- 01DeFiアプリとプロトコル連携の開発
- 02スマートコントラクトの操作や脆弱性の監査
- 03トークン送金と承認の処理
- 04コントラクトのデプロイと取引フローのテスト
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill defi-protocolsインストール後、Claude Code で/defi-protocolsを入力して読み込まれたか確認します。
詳細
defi-protocols
目的
このスキルは、AI に DeFi プロトコルの専門知識を提供し、Ethereum や Binance Smart Chain などのブロックチェーン上で、スマートコントラクト、トークン、分散型レンディングを正確に扱えるようにします。
使用する場面
DeFi アプリの開発、スマートコントラクトの監査、トークン管理、レンディングプロトコルの統合に関するタスクで、このスキルを使用します。リアルタイムのコーディングシナリオで、ブロックチェーン取引、イールドファーミング、プロトコルの脆弱性に対処する場合に適用します。
主な機能
- Web3.js や Ethers.js ライブラリを使用してスマートコントラクトとやり取りし、状態を読み書きします。
- ERC-20/ERC-721 トークンを管理します。これには送金や承認が含まれます。
- Aave や Compound などのプロトコルを通じた分散型レンディングに対応し、金利や借入限度額を照会します。
- Etherscan API エンドポイント(例:
/api?module=account&action=balance)などのブロックエクスプローラーからオンチェーンデータを分析します。 - Hardhat などのツールで取引をシミュレートし、スマートコントラクトをテストします。
使用パターン
このスキルを使用するには、コードで Web3 プロバイダーを初期化し、API キーの環境変数を設定します。たとえば、Node.js スクリプトで Web3 をインポートし、ネットワークに接続します。
const Web3 = require('web3');
const web3 = new Web3(process.env.RPC_URL || 'http://localhost:8545');
DeFi 固有のタスクでは、コントラクトとのやり取りを try-catch ブロックで囲み、デコードには ABI ファイルを使用します。Aave を照会する際は、コントラクトアドレスと関数シグネチャを指定してプールデータを取得します。
一般的なコマンド/API
- CLI:コントラクトのデプロイには Hardhat を使用します:
npx hardhat run scripts/deploy.js --network sepolia --api-key $ETHEREUM_API_KEY。 - API:コントラクト呼び出しには、
eth_callなどのエンドポイントを通じて Ethereum JSON-RPC を使用します:curl -X POST --data '{"jsonrpc":"2.0","method":"eth_call","params":[{...}],"id":1}' $RPC_URL。 - Aave API:GraphQL クエリを使用して、
GET https://api.thegraph.com/subgraphs/name/aave/protocol-v2からレンディングプールを照会します。 - 設定形式:ABI を JSON ファイルに保存します。例:
{ "abi": [{ "name": "balanceOf", "inputs": [...] }] }。fs.readFileSync('abi.json')で読み込みます。 - トークンとのやり取り:Ethers.js を使用して送金します:
contract.methods.transfer(address, amount).send({ from: walletAddress })。
統合に関する注意事項
署名者オブジェクトを扱う Web3 プロバイダーを使用して、このスキルを MetaMask などのウォレットと統合します。認証には、Infura や Alchemy などのサービス向けに $ETHEREUM_API_KEY のような環境変数を設定します。他のスキルと組み合わせる場合は、ブロックチェーンネットワークを統一するなどして互換性を確保してください(例:DeFi と一般的なブロックチェーンタスクの両方で Web3.js を使用します)。Chainlink などのオラクルでは、コントラクトをインポートし、DeFi ロジックを実行する前に getPrice などの関数を呼び出します。
エラー処理
Ethers.js で TransactionError を確認し、取引のリバートなどの一般的なエラーに対処します:try { await contract.methods.borrow().send(); } catch (error) { if (error.reason.includes('insufficient collateral')) console.log('Add more collateral'); }。API の失敗については、ステータスコード(レート制限を示す 429 など)を確認し、指数バックオフで再試行します。ブロックチェーンのエラーには、イベントリスナーを使用します。例:contract.events.ErrorOccurred().on('data', handleError)。レンディングプロトコルでのリエントランシーなどの攻撃を防ぐため、必ず入力を検証してください。
具体的な使用例
- Aave レンディングプールを照会する: トークンの利用可能な流動性を確認するには、次の Ethers.js スニペットを使用します:
const pool = await ethers.getContractAt('ILendingPool', '0x...'); const liquidity = await pool.getReserveData(tokenAddress); console.log(liquidity.availableLiquidity.toString());。必要な API アクセスには$AAVE_SUBGRAPH_KEYを設定します。 - シンプルなトークンコントラクトをデプロイする: Hardhat プロジェクトで
npx hardhat compileを実行し、続けてnpx hardhat deploy --network mumbaiを実行します。設定はhardhat.config.jsに次のように記述します:module.exports = { networks: { mumbai: { url: process.env.RPC_URL, accounts: [process.env.PRIVATE_KEY] } } };。これにより、DeFi で使用する ERC-20 トークンがデプロイされます。
グラフの関連性
- 関連:ethereum(ブロックチェーンクラスターを共有)、smart-contracts(コントラクトのインタラクションで重複)、tokens(ERC 標準に重点を置く)。
- 接続経路:より広範なエコシステムにアクセスするためのブロックチェーンクラスター。
- 依存関係:融資の詳細には、aave などのプロトコルが必要です。