Enso SDK 软件
Enso SDK提供了一套与Enso快捷键交互的工具和方法. 它包括自动互换路由、多链路由、象征性批准、引用和平衡核对的功能.
导言
Enso API提供了两个强大的路由组件:
-
路由 API: 找到跨越多个DeFi协议的最佳执行路径,包括流动性池,出借平台,自动化市场制造者,收益优化器等. 它自动决定两个符号或位置之间的最佳路径.
-
套装 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 索赔交易状况/数据 |
捐款
欢迎捐款! 请随意提交拉力请求.
许可证
这个项目根据麻省理工学院的许可证获得许可.