概述
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)
提供者名称
提供者工厂名称已更新为更具描述性的名称:EVM→EthereumProvider(来自@lifi/sdk-provider-ethereum)Solana→SolanaProvider(来自@lifi/sdk-provider-solana)UTXO→BitcoinProvider(来自@lifi/sdk-provider-bitcoin)Sui→SuiProvider(来自@lifi/sdk-provider-sui)- 新增:
TronProvider(来自@lifi/sdk-provider-tron),新增 Tron 生态系统支持
Solana 提供者:getWalletAdapter → getWallet
Solana 提供者现在使用 @solana/kit 和 Wallet Standard,而非 @solana/web3.js 和旧版钱包适配器。
之前(v3)
之后(v4)
Sui 提供者:getWallet → getClient + getSigner
Sui 提供者现在使用 @mysten/sui v2,需要 ClientWithCoreApi 和 Signer,而非钱包对象。
之前(v3)
之后(v4)
配置管理
之前(v3)
之后(v4)
执行模型:Process → Action
执行追踪模型已重命名以使其更清晰。之前称为 “process” 的概念现在称为 “action”。类型和字段重命名
Execution.process→Execution.actionsProcess→ExecutionActionProcessType→ExecutionActionTypegetProcessMessage()→getActionMessage()+getSubstatusMessage()
新的操作类型
TOKEN_ALLOWANCE 流程类型已拆分为更细粒度的操作类型:
CHECK_ALLOWANCE:检查代币授权额度RESET_ALLOWANCE:重置代币授权额度SET_ALLOWANCE:设置代币授权额度
NATIVE_PERMIT 操作类型。
之前(v3)
之后(v4)
ExecutionOptions 变更
switchChainHook 和 disableMessageSigning 选项已从 ExecutionOptions 中移除,并移至 EthereumProviderOptions,在设置 EVM 提供者时配置。请注意,switchChainHook 在提供者上已重命名为 switchChain(如下例所示)。
之前(v3)
之后(v4)
代币授权函数
代币授权函数现在从 Ethereum 提供者包导出,而非主 SDK 包。之前(v3)
之后(v4)
actions() 辅助函数
如果您不希望每次调用 SDK 函数时都将客户端作为第一个参数传入,可以使用 actions() 辅助函数。它返回一个对象,其中包含所有已预先绑定到客户端的 SDK 操作函数。
新增工具函数
v4 从@lifi/sdk 导出常用工具函数,因此您不再需要 viem 或其他库来进行基本的格式化:
移除的参数
部分配置参数已被移除或更改:chains:不再传递给createClient。链会自动从 API 获取。
客户端实例模式
客户端实例模式允许您:- 创建多个客户端,使用不同的配置
- 更好的可测试性:更容易模拟和测试
- 类型安全:更好的 TypeScript 支持
- 显式依赖:清楚函数依赖什么
示例:多个客户端
迁移清单
- 更新包安装,包含所需的提供者包
- 将
createConfig()替换为createClient()并保存客户端实例 - 更新所有函数调用,将
client作为第一个参数(或使用actions()辅助函数) - 更新提供者导入,使用独立的提供者包
- 更新提供者工厂名称(
EVM→EthereumProvider等) - Solana:将
getWalletAdapter替换为getWallet(返回 wallet-standardWallet) - Sui:将
getWallet替换为getClient+getSigner - 将
switchChainHook(重命名为switchChain)和disableMessageSigning从ExecutionOptions移至EthereumProviderOptions - 更新执行监控代码:
execution.process→execution.actions - 将
getProcessMessage()替换为getActionMessage()和getSubstatusMessage() - 更新代币授权函数的导入为
@lifi/sdk-provider-ethereum - 更新代币授权函数调用,加入
client参数 - 将
config.set()和config.getChains()替换为客户端方法 - 移除对全局
config对象的任何引用 - 如有需要,将
viem的formatUnits/parseUnits替换为@lifi/sdk的导出

