关于 defi-protocols
defi-protocols 是面向 DeFi 开发、合约审计与协议集成的知识技能,涵盖智能合约、代币和去中心化借贷。内容包括 Web3.js、Ethers.js、链上数据查询及交易模拟等实践。
主要功能
- 01读取和写入智能合约状态
- 02管理 ERC-20 与 ERC-721 代币
- 03查询借贷利率与借款额度
- 04通过区块浏览器 API 分析链上数据
- 05使用 Hardhat 模拟交易
适用场景
- 01开发 DeFi 应用和协议集成
- 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 })。
集成说明
使用能够处理 signer 对象的 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 等协议。