关于 defi
面向在 Stacks 主网上执行 DeFi 操作的技能,覆盖 ALEX DEX 代币兑换与 Zest Protocol 借贷。可查询报价、池和持仓,也可提交交易;写入操作需要解锁钱包。
主要功能
- 01ALEX DEX 兑换报价与交易
- 02查询交易池及可用资产
- 03查看 Zest 持仓
- 04供应、提取、借入与偿还
- 05启用抵押品并领取奖励
- 06仅支持主网操作
适用场景
- 01查询代币兑换预期输出
- 02查看 ALEX 交易池信息
- 03管理 Zest 借贷及抵押
- 04领取 sBTC 供应奖励
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ aibtcdev/ skills --skill defi安装后在 Claude Code 中输入/defi确认已加载。
附带文件AGENT.mddefi.ts
详细介绍
DeFi 技能
提供两种协议的 DeFi 操作:
- ALEX DEX — Stacks 上用于代币兑换的自动做市商(AMM)。使用 alex-sdk 进行路由和价格发现。仅限主网。
- Zest Protocol — Stacks 上的借贷协议。存入资产赚取利息,以抵押品为担保借款。仅限主网。
写入操作(swap、supply、withdraw、borrow、repay、claim-rewards)需要已解锁的钱包(请先运行 bun run wallet/wallet.ts unlock)。读取操作(get-swap-quote、get-pool-info、list-pools、list-assets、get-position)也需要已解锁的钱包,以提供路由上下文。
用法
bun run defi/defi.ts <subcommand> [options]
子命令
alex-get-swap-quote
获取 ALEX DEX 的兑换报价。返回将 tokenX 兑换为 tokenY 的预期输出数量。
bun run defi/defi.ts alex-get-swap-quote --token-x <contractId> --token-y <contractId> --amount-in <units>
选项:
--token-x(必填)— 输入代币:合约 ID(例如SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-wstx-v2)或符号(STX、ALEX)--token-y(必填)— 输出代币:合约 ID 或符号--amount-in(必填)— 要兑换的 tokenX 数量(以最小单位计)
输出:
{
"network": "mainnet",
"quote": {
"tokenIn": "SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-wstx-v2",
"tokenOut": "SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex",
"amountIn": "1000000",
"expectedAmountOut": "52341",
"route": ["STX", "ALEX"]
}
}
alex-swap
在 ALEX DEX 上执行代币兑换。需要已解锁的钱包。
bun run defi/defi.ts alex-swap --token-x <contractId> --token-y <contractId> --amount-in <units> [--min-amount-out <units>]
选项:
--token-x(必填)— 输入代币:合约 ID 或符号--token-y(必填)— 输出代币:合约 ID 或符号--amount-in(必填)— 要兑换的 tokenX 数量(以最小单位计)--min-amount-out(可选)— 滑点保护的最低可接受输出数量(默认值:0)
输出:
{
"success": true,
"txid": "abc123...",
"swap": {
"tokenIn": "SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-wstx-v2",
"tokenOut": "SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex",
"amountIn": "1000000",
"minAmountOut": "0"
},
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet"
}
alex-get-pool-info
获取 ALEX DEX 的流动性池信息。返回代币对的储备余额和池详情。
bun run defi/defi.ts alex-get-pool-info --token-x <contractId> --token-y <contractId>
选项:
--token-x(必填)— 第一个代币的合约 ID 或符号--token-y(必填)— 第二个代币的合约 ID 或符号
输出:
{
"network": "mainnet",
"pool": {
"poolId": "SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-wstx-v2-SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex",
"tokenX": "SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-wstx-v2",
"tokenY": "SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex",
"reserveX": "5000000000",
"reserveY": "12000000000",
"totalShares": "8000000000"
}
}
alex-list-pools
列出 ALEX DEX 上所有可用的交易池。
bun run defi/defi.ts alex-list-pools [--limit <n>]
选项:
--limit(可选)— 返回的交易池数量上限(默认值:50)
输出:
{
"network": "mainnet",
"poolCount": 3,
"pools": [
{
"id": 1,
"pair": "wstx-v2/alex",
"tokenX": "SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-wstx-v2",
"tokenY": "SP102V8P0F7JX67ARQ77WEA3D3CFB5XW39REDT0AM.token-alex",
"factor": "100000000"
}
],
"usage": "Use the tokenX and tokenY contract IDs with alex-get-swap-quote or alex-swap"
}
zest-list-assets
列出 Zest Protocol 上所有受支持的资产。
bun run defi/defi.ts zest-list-assets
输出:
{
"network": "mainnet",
"assetCount": 3,
"assets": [
{
"symbol": "sBTC",
"name": "Stacked Bitcoin",
"contractId": "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token"
},
{
"symbol": "stSTX",
"name": "Stacked STX",
"contractId": "SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token"
}
],
"usage": "Use the symbol (e.g., 'stSTX') or full contract ID in other zest-* commands"
}
zest-get-position
获取用户在 Zest Protocol 上的借贷头寸。
bun run defi/defi.ts zest-get-position --asset <symbolOrContractId> [--address <addr>]
选项:
--asset(必填)— 资产符号(例如stSTX、aeUSDC)或完整合约 ID--address(可选)— 用户地址(若省略,则使用当前活动钱包)
输出:
{
"network": "mainnet",
"address": "SP2...",
"position": {
"asset": "SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token",
"supplied": "5000000",
"borrowed": "0"
}
}
zest-supply
向 Zest Protocol 借贷池存入资产以赚取利息。需要已解锁的钱包。
bun run defi/defi.ts zest-supply --asset <symbolOrContractId> --amount <units> [--on-behalf-of <addr>]
选项:
--asset(必填)— 资产符号或完整合约 ID--amount(必填)— 存入数量(以最小单位计)--on-behalf-of(可选)— 代表另一个地址存入
输出:
{
"success": true,
"txid": "abc123...",
"action": "supply",
"asset": "SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token",
"amount": "5000000",
"onBehalfOf": "SP2...",
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet"
}
zest-withdraw
从 Zest Protocol 借贷池提取资产。需要已解锁的钱包。
bun run defi/defi.ts zest-withdraw --asset <symbolOrContractId> --amount <units>
选项:
--asset(必填)— 资产符号或完整合约 ID--amount(必填)— 提取数量(以最小单位计)
输出:
{
"success": true,
"txid": "abc123...",
"action": "withdraw",
"asset": "SP4SZE494VC2YC5JYG7AYFQ44F5Q4PYV7DVMDPBG.ststx-token",
"amount": "5000000",
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet"
}
zest-borrow
以已存入的抵押品为担保,从 Zest Protocol 借入资产。需要已解锁的钱包。
bun run defi/defi.ts zest-borrow --asset <symbolOrContractId> --amount <units>
选项:
--asset(必填)— 资产符号或完整合约 ID--amount(必填)— 借入数量(以最小单位计)
输出:
{
"success": true,
"txid": "abc123...",
"action": "borrow",
"asset": "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token",
"amount": "100000",
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet"
}
zest-repay
向 Zest Protocol 偿还借入的资产。需要已解锁的钱包。
bun run defi/defi.ts zest-repay --asset <symbolOrContractId> --amount <units> [--on-behalf-of <addr>]
选项:
--asset(必填)— 资产符号或完整合约 ID--amount(必填)— 偿还数量(以最小单位计)--on-behalf-of(可选)— 代表另一个地址偿还
输出:
{
"success": true,
"txid": "abc123...",
"action": "repay",
"asset": "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token",
"amount": "100000",
"onBehalfOf": "SP2...",
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet"
}
zest-enable-collateral
在 Zest Protocol v2 上将现有 zTokens 注册为抵押品。调用 v0-4-market.collateral-add。只有在未通过 zest-supply(该命令会原子化地完成抵押品注册)而直接向金库存入资产时,才需要执行此操作。需要使用已解锁的钱包。
bun run defi/defi.ts zest-enable-collateral --asset <symbolOrContractId> --amount <units>
选项:
--asset(必需)— 资产符号或完整合约 ID--amount(必需)— 要添加为抵押品的 zTokens 数量(以最小单位计)
输出:
{
"success": true,
"txid": "abc123...",
"action": "enable_collateral",
"asset": "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token",
"amount": "100000",
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet"
}
zest-claim-rewards
领取 Zest Protocol 激励计划中累积的奖励。sBTC 供应方可获得 wSTX 奖励。需要使用已解锁的钱包。
bun run defi/defi.ts zest-claim-rewards [--asset <symbolOrContractId>]
选项:
--asset(可选)— 你用于赚取奖励的供应资产(默认值:sBTC)
输出:
{
"success": true,
"txid": "abc123...",
"action": "claim_rewards",
"asset": "SM3VDXK3WZZSA84XXFKAFAF15NNZX32CTSG82JFQ4.sbtc-token",
"rewardAsset": "wSTX",
"network": "mainnet",
"explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet",
"note": "Rewards will be sent to your wallet once the transaction confirms."
}
说明
- ALEX DEX 和 Zest Protocol 仅支持主网。在测试网上调用会返回错误。
- 对于 ALEX 兑换报价,你可以使用代币符号(
STX、ALEX)或完整合约 ID。使用alex-list-pools查找可用交易对。 - 对于 Zest 操作,你可以使用资产符号(
stSTX、aeUSDC、sBTC)或完整合约 ID。使用zest-list-assets查找受支持的资产。 - 钱包操作需要使用已解锁的钱包(先运行
bun run wallet/wallet.ts unlock)。 - 借款操作需要在协议中有足够的抵押品。借款前请确保已供应资产。