mcpField
D
defi

defi

github.com/aibtcdev其他11199 次安装1 天前更新
代码仓库

关于 defi

面向在 Stacks 主网上执行 DeFi 操作的技能,覆盖 ALEX DEX 代币兑换与 Zest Protocol 借贷。可查询报价、池和持仓,也可提交交易;写入操作需要解锁钱包。

主要功能

  1. 01ALEX DEX 兑换报价与交易
  2. 02查询交易池及可用资产
  3. 03查看 Zest 持仓
  4. 04供应、提取、借入与偿还
  5. 05启用抵押品并领取奖励
  6. 06仅支持主网操作

适用场景

  1. 01查询代币兑换预期输出
  2. 02查看 ALEX 交易池信息
  3. 03管理 Zest 借贷及抵押
  4. 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)。
  • 借款操作需要在协议中有足够的抵押品。借款前请确保已供应资产。

评论

支持 Markdown