@ensofinance/sdk

中文文档
2.7.1发布于 2026/11/10MITTypeScriptESM + CJS构建来源已验证近 30 天下载 2万

与 Enso API 交互的 SDK

中文使用文档
文档目录22 节
  1. 导言
  2. 安装
  3. 快速启动
  4. 例行战略
  5. 核心特征
  6. 调试批准
  7. 自动运行
  8. 钱包余额
  9. 捆绑交易
  10. 连接池地址
  11. CCTP 帮助者
  12. 非辅助职位
  13. 调试数据
  14. Token 定价
  15. 协议支持
  16. 处理大数字
  17. 支持的行动
  18. 支持的网络
  19. API 参考
  20. 主要客户方法
  21. 捐款
  22. 许可证

NPM Version X (formerly Twitter) Follow

Enso SDK 软件

Enso SDK提供了一套与Enso快捷键交互的工具和方法. 它包括自动互换路由、多链路由、象征性批准、引用和平衡核对的功能.

导言

Enso API提供了两个强大的路由组件:

  1. 路由 API: 找到跨越多个DeFi协议的最佳执行路径,包括流动性池,出借平台,自动化市场制造者,收益优化器等. 它自动决定两个符号或位置之间的最佳路径.

  2. 套装 API:通过组合动作序列,为复杂的多步DeFi操作启用自定义路由创建器. 这完全适合诸如产量农业、杠杆地位和组合再平衡等先进用途.

安装

npm install @ensofinance/sdk

或者说

yarn add @ensofinance/sdk

快速启动

import { EnsoClient } from "@ensofinance/sdk";

// Initialize the client with your API key
const ensoClient = new EnsoClient({
  apiKey: "YOUR_API_KEY",
});

// Get the best route from one token to another
const routeData = await ensoClient.getRouteData({
  fromAddress: "0xYourAddress",
  chainId: 1,
  amountIn: ["1000000000000000000"],
  tokenIn: ["0xTokenInAddress"],
  tokenOut: ["0xTokenOutAddress"],
  routingStrategy: "router",
});

// Execute the transaction with your web3 provider
// const tx = await web3.eth.sendTransaction(routeData.tx);

例行战略

可供公众使用的路线策略 SDK :

  • router - 使用作为通用路由器的单一合同
  • delegate - 以代办电话的形式返回呼叫数据,用于智能账户
  • ensowallet-v2 - 返回用于部署Enso智能账户的调用数据,并在同一交易中执行智能账户内部的所有逻辑

核心特征

调试批准

获取批准数据,以便在使用时允许象征性支出 router 作为 routingStrategy (使用时不需要) delegate:

// Example: Approving USDC for spending
const approvalData = await ensoClient.getApprovalData({
  fromAddress: "0xYourAddress",
  tokenAddress: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC
  chainId: 1,
  amount: "1000000000", // 1000 USDC (6 decimals)
  routingStrategy: "router",
});

自动运行

获取令牌之间路径的最佳执行数据 :

const routeData = await ensoClient.getRouteData({
  fromAddress: "0xYourAddress",
  receiver: "0xReceiverAddress", // Optional, defaults to fromAddress
  chainId: 1,
  amountIn: ["1000000000000000000"],
  tokenIn: ["0xTokenInAddress"],
  tokenOut: ["0xTokenOutAddress"],
  slippage: "50", // 0.5%
  routingStrategy: "router",
});

钱包余额

获取钱包的符号余额 :

// Example: Get all token balances for an Ethereum address
const balances = await ensoClient.getBalances({
  eoaAddress: "0xYourAddress",
  chainId: 1, // Ethereum mainnet
  useEoa: true, // Default is true - get balances for the EOA, not the Enso wallet
});

捆绑交易

将多个DeFi动作装入单一交易中,并在交易之间使用结果.

// Example: Convert ETH to USDC, deposit into Aave V3, then send the aUSDC to the user
const bundleData = await ensoClient.getBundleData(
  {
    fromAddress: "0xYourAddress",
    chainId: 1,
    routingStrategy: "router",
  },
  [
    {
      protocol: "enso",
      action: "route",
      args: {
        tokenIn: "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", // ETH
        tokenOut: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC
        amountIn: "1000000000000000000", // 1 ETH
        slippage: "100", // 1%
      },
    },
    {
      protocol: "aave-v3",
      action: "deposit",
      args: {
        tokenIn: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", // USDC
        tokenOut: "0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c", // aUSDC v3
        amountIn: {
          useOutputOfCallAt: 0, // Use output from the first action
        },
        primaryAddress: "0x87870Bca3F3fD6335C3F4ce8392D69350B4fA4E2", // Aave V3 pool
      },
    },
    {
      // With `router`, deposit outputs stay in the router until transferred out
      protocol: "erc20",
      action: "transfer",
      args: {
        token: "0x98C23E9d8f34FEFb1B7BD6a91B7FF122F4e16F5c", // aUSDC v3
        receiver: "0xYourAddress",
        amount: {
          useOutputOfCallAt: 1, // Use output from the deposit
        },
      },
    },
  ],
);

连接池地址

使用 getLayerZeroPool 获取正确的集合信息,并将其用作 primaryAddress 联 合 国 bridge 动作。 。 。 .

const poolInfo = await client.getLayerZeroPool({
  chainId: 42161, // Arbitrum
  destinationChainId: 999, // HyperEVM
  token: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9", // USDT
});

const stargatePoolInfo = await client.getStargatePool({
  chainId: 42161,
  destinationChainId: 999,
  token: "0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9",
});

CCTP 帮助者

使用 CCTP 帮助 发现 TokenMessengerV2 合同, 当 CCTP 转账为可索赔时获取债权交易 .

const tokenMessenger = await client.getCctpTokenMessenger({
  chainId: 1,
});

const claim = await client.getCctpClaimTransaction({
  chainId: 42161,
  txHash: "0xTransactionHash",
});

非辅助职位

通往一个非托肯化位置的路线. positionOut 是一个 positionId 从 getNonTokenizedPositions数字 :

// Example: Supplying USDC to a Morpho Blue market
const nonTokenizedRoute = await ensoClient.getRouteNonTokenized({
  fromAddress: "0xYourAddress",
  chainId: 1,
  tokenIn: ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"], // USDC
  positionOut:
    "0x30a0da8cabf25a31805d9f3eca9005540e419f408beecf5cf715c67f3958ee55", // Morpho USDC/PENDLE-LPT market
  amountIn: ["1000000000"], // 1000 USDC
  receiver: "0xYourAddress",
  slippage: "300", // 3%
  routingStrategy: "delegate",
});

调试数据

获取有关信使的信息:

// Example: Get details about wstETH including metadata
const tokenData = await ensoClient.getTokenData({
  chainId: 1,
  address: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", // wstETH
  includeMetadata: true,
  type: "defi", // Filter by token type - can be "defi" or "base"
});

Token 定价

获取象征性价格数据 :

// Example: Get current price of WETH
const priceData = await ensoClient.getPriceData({
  chainId: 1,
  address: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH
});

// Example: Get prices for multiple tokens
const multiPriceData = await ensoClient.getMultiplePriceData({
  chainId: 1,
  addresses: [
    "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", // WETH
    "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
  ],
});

协议支持

获取关于所支持的协议的信息 :

// Get all protocols
const protocols = await ensoClient.getProtocolData();

// Get protocols for a specific chain
const ethereumProtocols = await ensoClient.getProtocolData({ chainId: 1 });

// Get a specific protocol
const aaveProtocol = await ensoClient.getProtocolData({ slug: "aave-v3" });

处理大数字

SDK正确处理区块链交易中常见的大量:

// Using string representation for large numbers (recommended)
const largeAmount = "1000000000000000000000000"; // 1 million tokens with 18 decimals

// You can also use JavaScript numbers for smaller values
const smallAmount = 1000000; // 1 USDC with 6 decimals

支持的行动

Bundle API 支持多种 与 DeFi 协议互动的动作。 。 。 .

对于所有可用动作及其参数的最新参考,您可拨打:

// Get all available actions
const actions = await ensoClient.getActions();

// Get actions for a specific protocol
const aaveActions = await ensoClient.getActionsBySlug("aave-v3");

支持的网络

获取关于 支助网络数字 :

// Get all supported networks
const networks = await ensoClient.getNetworks();

// Get a specific network
const ethereumNetwork = await ensoClient.getNetworks({
  chainId: "1",
  name: "Ethereum",
});

API 参考

关于所有可用方法和参数的详情,见我们 API 参考文档。 。 。 .

主要客户方法

方法说明
getApprovalData获取批准交易数据
getRouteData在符号之间获得最佳路由
getBalances获取钱包符号余额
getTokenData获取符号信息
getPriceData获取象征性价格数据
getMultiplePriceData获得多个符号的价格
getProtocolData获取协议信息
getBundleData将多个动作装入单一交易
getRouteNonTokenized获得一个非切入位置的最佳路径
getIporShortcut为 IPOR 操作获取交易数据
getStandards获得捆绑的现有标准
getActions获取可以捆绑的动作
getNonTokenizedPositions获得非肯德基职位
getProjects获得支持的项目
getProtocolsByProject在工程中获取协议
getNetworks获得支持的网络
getAggregators获得支持的聚合器
getLayerZeroPool获取图层Zero/星门池数据
getStargatePool获取星门池数据
getCcipRouter获取 CCIP 路由器地址
getBridgeStatus获取桥接交易状态
getCctpTokenMessenger获取 CCTP 信使V2 地址
getCctpClaimTransaction获取 CCTP 索赔交易状况/数据

捐款

欢迎捐款! 请随意提交拉力请求.

许可证

这个项目根据麻省理工学院的许可证获得许可.

版本与发布记录

@ensofinance/sdk 共发布 54 个版本,首次发布于 2024/12/25;过去 12 个月发布了 8 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.7.1latest2026/11/103 天前
2.7.02026/11/085 天前
2.6.12026/11/0211 天前
2.6.02026/09/251 个月前
2.5.02026/07/144 个月前
2.4.12026/05/195 个月前

其他发布通道:beta → 1.1.0-beta.8。

关于 @ensofinance/sdk 的常见问题

@ensofinance/sdk 是什么?

与 Enso API 交互的 SDK

如何安装 @ensofinance/sdk?

在项目目录运行 npm install @ensofinance/sdk,或使用 pnpm add / yarn add / bun add。

@ensofinance/sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@ensofinance/sdk 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@ensofinance/sdk 可以商用吗?

@ensofinance/sdk 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@ensofinance/sdk 的下载量有多少?

根据 npm 官方下载统计,@ensofinance/sdk 在 2026/10/14 – 2026/11/12 这 30 天内被下载 20,288 次,日均约 676 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ensofinance/sdk 还在维护吗?

最新版本 2.7.1 发布于 2026/11/10(3 天前);至今共发布 54 个版本,其中过去 12 个月发布了 8 个;首次发布于 2024/12/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。