概览
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()
新的 action 类型
TOKEN_ALLOWANCE process 类型已被拆分为更细粒度的 action 类型:
CHECK_ALLOWANCE- 检查代币授权额度RESET_ALLOWANCE- 重置代币授权额度SET_ALLOWANCE- 设置代币授权额度
NATIVE_PERMIT action 类型。
之前(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 获取。
客户端实例模式
客户端实例模式允许您:- 创建多个客户端,使用不同的配置
- 更好的可测试性 - 更容易 mock 和测试
- 类型安全 - 更好的 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导出

