@ekubo/yul-router-sdk (英语)
构建组合的交换调用数据 爱波 在EVM链上的Yul路由器, 读取同一路线价格报价的调用数据.
路由器采用自定义打包的调用数据,而不是传统的ABI编码函数调用.
此 SDK 是生成这些字节的: 您将路径描述为跳动列表, 它返回
页:1 0x… 调用数据以发送到路由器地址.
安装
npm install @ekubo/yul-router-sdk
# or
bun add @ekubo/yul-router-sdk
viem 是同级依赖.
构建互换交易
encodeRoutes(...) 编号 : generateCalldata(...) 带一组多跳并返回调用数据
为交换。 每次多跳都从同一个开始 specifiedToken 并结束于
calculatedToken; 路由器在一个核心锁下全部执行, 汇总金额,
应用一次滑行检查,然后一次结算.
import { generateCalldata, YUL_ROUTER_ADDRESS } from "@ekubo/yul-router-sdk";
const data = generateCalldata({
multiHops: [
{
specifiedAmount: 10n ** 18n,
hops: [{ poolKey, sqrtRatioLimit: MIN_SQRT_RATIO }],
},
],
specifiedToken: tokenIn,
calculatedToken: tokenOut,
calculatedAmountThreshold: minimumOut, // required; guards slippage
recipient,
});
// Send with any EVM client:
await walletClient.sendTransaction({ to: YUL_ROUTER_ADDRESS, data, value });
calculatedAmountThreshold ——精确输入路线的正最小输出,a
精确输出的负最大输入值。 而不是默默地编码一个
无限制的滑行阈值.
实际投入额为正数;实际投入额为正数.
取得报价
generateQuoteCalldata(...) 编号 : encodeQuoteCalldata(...) 生成路由器的调用数据
quote(bytes) 输入点,在核心锁定内运行相同的路径,并返回
所得数额未结算。 不需要象征性余额和批准,也不需要所有现金池
并滚动扩展状态更改.
import { generateQuoteCalldata } from "@ekubo/yul-router-sdk";
const data = generateQuoteCalldata({ multiHops, specifiedToken, calculatedToken });
const { data: result } = await publicClient.call({ to: YUL_ROUTER_ADDRESS, data });
// decodes to (specifiedToken, calculatedToken, specifiedAmount, calculatedAmount)
直接执行、转发和引用全部返回同一路线的同一种四字图案 和起始状态, 所以一个引和 交换从它建立 保持字节对字节的可比性.
跳跃类型
| 跳下来 | 使用 |
|---|---|
CoreHop | 与爱库博核心池互换 |
ForwardedHop | 通过扩展前方召回的交换 |
SignedExclusiveSwapHop | 以签名独家报价填充的互换 |
WrapperHop | 符号包装或未包装步骤 |
还出口
encodeRoute(...)——编码单一路线正文encodeSignedSwapMeta(...)——将元数据编码为签名专用互换encodePoolBalanceUpdate(...)——编码池余额三角洲calldataSize(...)——编码调用数据的字节长度YUL_ROUTER_ADDRESS, (中文(简体) ),YUL_ROUTER_ABI,以及 sqrt-ratio 和阈值界限
许可证
见 仓库。 。 。 .