Skip to main content

概览

LI.FI SDK v4 引入了基于客户端的架构,提供了更好的类型安全性、改进的模块化和更清晰的关注点分离。SDK 现在使用客户端实例模式而不是全局配置,使得管理多个 SDK 实例更容易,并提高了可测试性。 要开始使用,请安装最新版本的 LI.FI SDK。

配置

v4 中最重大的变更是从全局配置模式转向基于客户端的架构。您现在无需调用 createConfig() 和使用全局函数,而是创建一个客户端实例并将其传递给所有 SDK 函数。

之前(v3)

之后(v4)

函数签名

所有 SDK 操作函数现在都需要将客户端作为第一个参数。这包括:
  • getRoutes(client, {...})
  • getQuote(client, {...})
  • getContractCallsQuote(client, {...})
  • getChains(client, {...})
  • getTools(client, {...})
  • getConnections(client, {...})
  • getTokens(client, {...})
  • getToken(client, chain, token)
  • getTokenBalance(client, walletAddress, token)
  • getTokenBalances(client, walletAddress, tokens)
  • getTokenBalancesByChain(client, walletAddress, tokensByChain)
  • getWalletBalances(client, walletAddress)
  • getStatus(client, {...})
  • getStepTransaction(client, step)
  • executeRoute(client, route, options)
  • resumeRoute(client, route, options)
  • getGasRecommendation(client, {...})
  • getTransactionHistory(client, {...})
  • getNameServiceAddress(client, name, chainType?)
  • getRelayerQuote(client, {...})
  • relayTransaction(client, {...})
  • getRelayedTransactionStatus(client, {...})
  • patchContractCalls(client, {...})

迁移示例

之前(v3)

之后(v4)

提供者包

在 v4 中,生态系统提供者已被移至单独的包中,以获得更好的模块化和 tree-shaking。您需要单独安装提供者包,并从各自的包中导入提供者。

安装提供者包

仅安装您所需生态系统的提供者包。例如,如果您只支持 EVM 链,则只需要 @lifi/sdk-provider-ethereum

提供者配置

之前(v3)

之后(v4)

提供者名称

提供者工厂名称已更新,使其更具描述性:
  • EVMEthereumProvider(来自 @lifi/sdk-provider-ethereum
  • SolanaSolanaProvider(来自 @lifi/sdk-provider-solana
  • UTXOBitcoinProvider(来自 @lifi/sdk-provider-bitcoin
  • SuiSuiProvider(来自 @lifi/sdk-provider-sui
  • 新增: TronProvider(来自 @lifi/sdk-provider-tron)—— 添加了 Tron 生态系统支持

Solana 提供者:getWalletAdaptergetWallet

Solana 提供者现在使用 @solana/kitWallet Standard,而不是 @solana/web3.js 和旧版钱包适配器。

之前(v3)

之后(v4)

Sui 提供者:getWalletgetClient + getSigner

Sui 提供者现在使用 @mysten/sui v2,并需要 ClientWithCoreApiSigner 而不是钱包对象。

之前(v3)

之后(v4)

配置管理

之前(v3)

之后(v4)

执行模型:Process → Action

执行跟踪模型已重命名以求清晰。之前称为 “process” 的现在称为 “action”。

类型和字段重命名

  • Execution.processExecution.actions
  • ProcessExecutionAction
  • ProcessTypeExecutionActionType
  • getProcessMessage()getActionMessage() + getSubstatusMessage()

新的 action 类型

TOKEN_ALLOWANCE process 类型已被拆分为更细粒度的 action 类型:
  • CHECK_ALLOWANCE - 检查代币授权额度
  • RESET_ALLOWANCE - 重置代币授权额度
  • SET_ALLOWANCE - 设置代币授权额度
此外,还添加了 NATIVE_PERMIT action 类型。

之前(v3)

之后(v4)

ExecutionOptions 变更

switchChainHookdisableMessageSigning 选项已从 ExecutionOptions 中移除,并移至 EthereumProviderOptions,该选项在设置 EVM 提供者时配置。请注意,switchChainHook 在提供者上已重命名为 switchChain(如下例所示)。

之前(v3)

之后(v4)

代币授权额度函数

代币授权额度函数现在从 Ethereum 提供者包导出,而不是主 SDK 包。

之前(v3)

之后(v4)

actions() 辅助函数

如果您希望在每次调用 SDK 函数时无需将客户端作为第一个参数传递,可以使用 actions() 辅助函数。它返回一个对象,其中包含所有预绑定到客户端的 SDK 操作函数。

新的实用工具

v4 从 @lifi/sdk 导出常用实用工具,因此您不再需要 viem 或其他库进行基本格式化:

移除的参数

一些配置参数已被移除或更改:
  • chains - 不再传递给 createClient。链将自动从 API 获取。

客户端实例模式

客户端实例模式允许您:
  1. 创建多个客户端,使用不同的配置
  2. 更好的可测试性 - 更容易 mock 和测试
  3. 类型安全 - 更好的 TypeScript 支持
  4. 显式依赖 - 明确函数依赖于什么

示例:多个客户端

迁移清单

  • 更新包安装以包含提供者包
  • createConfig() 替换为 createClient() 并存储客户端实例
  • 更新所有函数调用以将 client 作为第一个参数包含(或使用 actions() 辅助函数)
  • 更新提供者导入以使用单独的提供者包
  • 更新提供者工厂名称(EVMEthereumProvider 等)
  • 对于 Solana:将 getWalletAdapter 替换为 getWallet(返回 wallet-standard Wallet
  • 对于 Sui:将 getWallet 替换为 getClient + getSigner
  • switchChainHook(重命名为 switchChain)和 disableMessageSigningExecutionOptions 移至 EthereumProviderOptions
  • 更新执行监控代码:execution.processexecution.actions
  • getProcessMessage() 替换为 getActionMessage()getSubstatusMessage()
  • 将代币授权额度函数导入更新为 @lifi/sdk-provider-ethereum
  • 更新代币授权额度函数调用以包含 client 参数
  • config.set()config.getChains() 替换为客户端方法
  • 移除对全局 config 对象的任何引用
  • 如果需要,将 viemformatUnits/parseUnits 替换为 @lifi/sdk 导出

示例

请查看我们在 SDK 仓库 中的完整示例,如果您遇到任何问题,请随时 提交 issue

更新日志

有关所有更改的详细视图,请参阅 CHANGELOG