跳转到主要内容

概述

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()

新的操作类型

TOKEN_ALLOWANCE 流程类型已拆分为更细粒度的操作类型:
  • CHECK_ALLOWANCE:检查代币授权额度
  • RESET_ALLOWANCE:重置代币授权额度
  • SET_ALLOWANCE:设置代币授权额度
此外,还新增了 NATIVE_PERMIT 操作类型。

之前(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. 更好的可测试性:更容易模拟和测试
  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