SDK 顺序书
测试覆盖率
| 发言 | 分支 | 职能 | 行数 |
|---|---|---|---|
这个软件包提供了一个全面的API客户端,用于与 CoW 协议命令书的交互. 它处理订单提交,检索,取消,以及使用内置速率限制,重试和错误处理来交换数据.
安装
npm install @cowprotocol/sdk-order-book
or
pnpm add @cowprotocol/sdk-order-book
or
yarn add @cowprotocol/sdk-order-book
使用量
import { OrderBookApi, SupportedChainId, OrderQuoteRequest, OrderCreation } from '@cowprotocol/sdk-order-book'
import { setGlobalAdapter } from '@cowprotocol/sdk-common'
import { EthersV6Adapter } from '@cowprotocol/sdk-ethers-v6-adapter'
import { JsonRpcProvider, Wallet } from 'ethers'
// Configure the adapter
const provider = new JsonRpcProvider('YOUR_RPC_URL')
const wallet = new Wallet('YOUR_PRIVATE_KEY', provider)
const adapter = new EthersV6Adapter({ provider, signer: wallet })
setGlobalAdapter(adapter)
// Initialize Order Book API
const orderBookApi = new OrderBookApi({
chainId: SupportedChainId.MAINNET,
env: 'prod', // or 'staging'
})
// Get a quote
const quoteRequest: OrderQuoteRequest = {
sellToken: '0xA0b86a33E6417b528874E10EB3a95beb4F25A0E3', // GNO
buyToken: '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2', // WETH
from: await wallet.getAddress(),
receiver: await wallet.getAddress(),
sellAmountBeforeFee: '1000000000000000000', // 1 GNO
kind: 'sell',
}
const { quote } = await orderBookApi.getQuote(quoteRequest)
// Submit an order (after signing)
const signedOrder: OrderCreation = {
...quote,
signature: 'SIGNED_SIGNATURE',
signingScheme: 'eip712',
from: await wallet.getAddress(),
}
const orderId = await orderBookApi.sendOrder(signedOrder)
// Get order details
const order = await orderBookApi.getOrder(orderId)
// Get user's orders
const orders = await orderBookApi.getOrders({
owner: await wallet.getAddress(),
limit: 10,
offset: 0,
})
// Get trades
const trades = await orderBookApi.getTrades({
owner: await wallet.getAddress(),
})
使用 CoW SDK 软件
import { CowSdk, SupportedChainId, OrderQuoteRequest } from '@cowprotocol/cow-sdk'
import { EthersV6Adapter } from '@cowprotocol/sdk-ethers-v6-adapter'
import { JsonRpcProvider, Wallet } from 'ethers'
// Configure the adapter
const provider = new JsonRpcProvider('YOUR_RPC_URL')
const wallet = new Wallet('YOUR_PRIVATE_KEY', provider)
const adapter = new EthersV6Adapter({ provider, signer: wallet })
// Initialize the unified SDK
const sdk = new CowSdk({
chainId: SupportedChainId.MAINNET,
adapter,
})
const { quote } = await sdk.orderBook.getQuote(quoteRequest)
const orderId = await sdk.orderBook.sendOrder(signedOrder)
const order = await sdk.orderBook.getOrder(orderId)
const orders = await sdk.orderBook.getOrders({ owner: address })
配置选项
环境配置
const orderBookApi = new OrderBookApi({
chainId: SupportedChainId.MAINNET,
env: 'staging', // Use staging environment
})
自定义 API 终点
const orderBookApi = new OrderBookApi({
chainId: SupportedChainId.MAINNET,
baseUrls: {
[SupportedChainId.MAINNET]: 'https://your-custom-endpoint.com',
[SupportedChainId.GNOSIS_CHAIN]: 'https://your-gnosis-endpoint.com',
},
})
伙伴 API (认证访问)
合作伙伴可以使用伙伴API进行认证的、有费率限制的访问,并有更高的申请配额。 提供您的 API 密钥, SDK 将自动通过伙伴网关路径请求并附加 X-API-Key 头曰.
| 环境 | 伙伴 API 基础 URL |
|---|---|
| 生产 | https://partners.cow.fi |
| 粘贴 | https://partners.barn.cow.fi |
const orderBookApi = new OrderBookApi({
chainId: SupportedChainId.MAINNET,
apiKey: 'your-partner-api-key',
})
要使用 Trading SDK 的伙伴 API, 请通过配置 OrderBookApi 实例:
import { TradingSdk } from '@cowprotocol/sdk-trading'
const orderBookApi = new OrderBookApi({
chainId: SupportedChainId.MAINNET,
apiKey: 'your-partner-api-key',
})
const sdk = new TradingSdk(
{ chainId: SupportedChainId.MAINNET, appCode: 'YOUR_APP_CODE' },
{ orderBookApi },
adapter,
)
速率限制配置
import { RateLimiterOpts } from 'limiter'
import { BackoffOptions } from 'exponential-backoff'
const limiterOpts: RateLimiterOpts = {
tokensPerInterval: 5,
interval: 'second',
}
const backOffOpts: BackoffOptions = {
numOfAttempts: 5,
maxDelay: Infinity,
jitter: 'none',
}
const orderBookApi = new OrderBookApi({
chainId: SupportedChainId.MAINNET,
limiterOpts,
backOffOpts,
})
说明: 这个软件包可以直接访问 CoW 协议令 Book API. 对于自动处理签名和订单管理的更高级交易接口,考虑与本套件并用Trading SDK.