创建客户端
要开始使用,您需要为 LI.FI SDK 创建一个 SDK 客户端。此客户端包含开发者将使用的其他 SDK 功能正常运行所需的共享设置和数据。该客户端可以配置提供者,并在整个应用程序中使用。import { createClient } from '@lifi/sdk';
const client = createClient({
integrator: 'Your dApp/company name',
});
参数
| 参数 | 必需 | 默认值 | 描述 |
|---|---|---|---|
integrator | 是 | LI.FI SDK 需要集成商选项来识别合作伙伴,并允许他们在合作伙伴仪表板上监控其活动,例如交易量,从而实现更好的管理和支持。通常,集成商选项是您的 dApp 或公司名称。此字符串必须仅由字母、数字、连字符、下划线和点组成,最长为 23 个字符。 | |
apiKey | 否 | 用于访问 LI.FI API 服务的唯一 API 密钥。对于更高的速率限制是必需的。阅读更多 速率限制和 API 密钥 | |
apiUrl | 否 | https://li.quest/v1 | LI.FI API 的基本 URL。这是所有 API 请求路由所经过的端点。例如,可以将其更改为暂存环境以测试新功能。 |
userId | 否 | 您的应用程序用户的唯一标识符。这可用于跟踪 LI.FI 内的用户特定数据和交互。 | |
routeOptions | 否 | 路由的自定义选项,在使用 getQuote、getRoutes 和 getContractCallsQuote 端点时应用。这些选项可以在 SDK 初始化期间配置一次,或每次调用这些函数时传递。 | |
rpcUrls | 否 | 链 ID 到 RPC URL 数组的映射。这些 URL 可用于交易执行和数据检索。 | |
providers | 否 | SDK 提供者的数组(例如 EthereumProvider()、SolanaProvider())。提供者也可以稍后使用 client.setProviders() 进行设置。 | |
executionOptions | 否 | 应用于所有路由执行的默认执行选项。单个执行可以覆盖这些选项。 | |
preloadChains | 否 | true | 启用链数据预加载的标志。启用后,将在创建客户端时从 API 获取链。 |
chainsRefetchInterval | 否 | 从 API 重新获取链数据的间隔(以毫秒为单位)。 | |
disableVersionCheck | 否 | false | 禁用 SDK 版本检查的标志。默认情况下,SDK 在初始化时检查其版本,如果有新版本可用,则在控制台中记录一条消息,提示用户更新 SDK。 |
debug | 否 | false | 在 SDK 中启用调试日志记录的标志。 |
requestInterceptor | 否 | 用于在发送传出 API 请求之前拦截和修改它们的函数。 | |
storage | 否 | 用于持久化 SDK 数据(例如链数据、路由执行状态)的自定义存储实现。默认情况下,在浏览器环境中使用 LocalStorageAdapter,在 Node.js 中使用 InMemoryStorage。 |
要了解如何使用
routeOptions 进行货币化,包括配置费用,请参阅 货币化 SDK 指南。如果您仅使用 SDK 访问 LI.FI API 而不使用报价/路由 SDK 执行功能,并计划独立处理执行,则不需要设置提供者。提供者可以稍后使用
client.setProviders() 方法添加。设置自定义 RPC URL
import { createClient, ChainId } from '@lifi/sdk';
const client = createClient({
integrator: "Your dApp/company name",
rpcUrls: {
[ChainId.ARB]: ["https://arbitrum-example.node.com/"],
[ChainId.SOL]: ["https://solana-example.node.com/"],
},
});
在生产应用中,建议传入您经过身份验证的 RPC 提供者 URL(Alchemy、Infura、Ankr 等)。如果未提供 RPC URL,LI.FI SDK 将默认使用公共 RPC 提供者。公共 RPC 端点(尤其是 Solana)有时会根据位置或在高负载期间对用户进行速率限制,导致诸如余额显示不正确或交易模拟错误等问题。
客户端方法
SDK 客户端提供了各种方法来访问配置和管理提供者。所有方法都在客户端实例上调用。import { createClient } from '@lifi/sdk';
const client = createClient({
integrator: 'Your dApp/company name',
});
客户端 API
| 方法 | 描述 |
|---|---|
config | 返回当前的 SDK 配置(只读)。 |
providers | 返回已配置提供者的数组(只读)。 |
getProvider(type: ChainType) | 返回指定链类型的提供者,如果未找到则返回 undefined。 |
setProviders(providers: SDKProvider[]) | 在 SDK 客户端中设置提供者。如果某个链类型的提供者已存在,它将使用新信息进行更新。 |
setChains(chains: ExtendedChain[]) | 在 SDK 客户端中设置链。对于预加载或覆盖链数据很有用。 |
getChains() | 返回一个解析为可用链列表的 Promise。 |
getChainById(chainId: ChainId) | 返回一个解析为指定链 ID 的链配置的 Promise。如果未找到该链,则抛出错误。 |
getRpcUrls() | 返回一个解析为所有已配置链的 RPC URL 映射的 Promise。 |
getRpcUrlsByChainId(chainId: ChainId) | 返回一个解析为指定链 ID 的 RPC URL 数组的 Promise。如果未找到该链的 RPC URL,则抛出错误。 |
示例:使用客户端方法
import { createClient, ChainId } from '@lifi/sdk';
const client = createClient({
integrator: "Your dApp/company name",
});
// Get all available chains
const chains = await client.getChains();
// Get a specific chain
const ethereumChain = await client.getChainById(ChainId.ETH);
// Get RPC URLs for all chains
const rpcUrls = await client.getRpcUrls();
// Get RPC URLs for a specific chain
const arbitrumRpcUrls = await client.getRpcUrlsByChainId(ChainId.ARB);
// Access configuration
console.log(client.config.integrator);
console.log(client.config.apiUrl);
// Set providers (see Configure SDK Providers section)
client.setProviders([
// ... your providers
]);

