跳转到主要内容

概述

LI.FI SDK v3 经历了一次重大更新,改进了与流行库(如 Viem)的兼容性,并添加了新功能,包括对多个生态系统的支持,从 Solana 开始。因此,如本指南中详细说明的那样,您需要注意一些破坏性更改和弃用。我们还建议查看更新的文档以了解此处未涵盖的其他新功能。 要开始使用,请安装最新版本的 LI.FI SDK。
yarn add @lifi/sdk

配置

我们对 LI.FI SDK 的配置方式进行了重大更改。它不再基于类,因此您不需要创建、维护和共享 LiFi 类实例来使用 SDK 功能。相反,它现在基于函数,允许您配置一次并从任何地方更新配置,而无需维护或共享配置对象的引用。您可以简单地从包中导入所需的函数。阅读更多配置 SDK 在此示例中,您可以使用 SDK v3 从任何地方调用 getQuote 函数,而使用 SDK v2,您必须共享创建的 LiFi 类实例并将 getQuote 作为该类的方法调用。
// SDK v2
import { ChainId, LiFi } from '@lifi/sdk'

const lifi = new LiFi({
  integrator: 'Your dApp/company name'
})

const quote = await lifi.getQuote({
  fromAddress: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
  fromChain: ChainId.ARB,
  toChain: ChainId.OPT,
  fromToken: '0x0000000000000000000000000000000000000000',
  toToken: '0x0000000000000000000000000000000000000000',
  fromAmount: '1000000000000000000',
})

// SDK v3
import { ChainId, createConfig, getQuote } from '@lifi/sdk'

createConfig({
  integrator: 'Your dApp/company name',
})

const quote = await getQuote({
  fromAddress: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045',
  fromChain: ChainId.ARB,
  toChain: ChainId.OPT,
  fromToken: '0x0000000000000000000000000000000000000000',
  toToken: '0x0000000000000000000000000000000000000000',
  fromAmount: '1000000000000000000',
})
由于这些更改,不再需要 LiFi 接口中与配置相关的函数。之前的接口包括:
interface LiFi {
  getConfig(): Config
  getConfigAsync(): Promise<Config>
  getRpcProvider(chainId: number, archive: boolean): Promise<FallbackProvider>
  setConfig(configUpdate: ConfigUpdate): Config
  // ...
}
现在,您可以直接导入配置对象并对其进行任何必要的更改。这简化了流程并提高了代码的可维护性。阅读更多更新 SDK 配置
// SDK v2
import { ChainId, LiFi } from '@lifi/sdk'

const lifi = new LiFi({
  integrator: 'Your dApp/company name'
})

lifi.setConfig({
  integrator: 'Your dApp/company name'
})

// SDK v3
import { config } from '@lifi/sdk';

config.set({
  integrator: 'Your dApp/company name',
});

重命名的方法

基于类的方法之前支持的所有方法现在都是可以直接从 @lifi/sdk 包导入的单独函数。其中一些方法已重命名,以更好地反映其功能或具有更简洁的名称。
  • getContractCallQuote -> getContractCallsQuote
  • getTokenApproval -> getTokenAllowance
  • bulkGetTokenApproval -> getTokenAllowanceMulticall
  • approveToken -> setTokenAllowance
  • moveExecutionToBackground -> updateRouteExecution
有关更多详细信息,请参阅请求合约调用报价管理路由执行代币管理

从 Ethers.js 迁移到 Viem

自 LI.FI SDK 的第一个版本以来,我们一直依赖 Ethers.js 库进行所有 EVM 相关的交互。但是,随着行业的发展,Viem 正在获得广泛采用并开始取代 Ethers.js 为了确保我们的产品保持强大和面向未来,我们决定将整个堆栈过渡到更可靠的解决方案 - Viem(Widget 的 Wagmi)。 有关更多详细信息,请参阅 Ethers v5 → viem 迁移指南。除其他显著变化外,此过渡还将我们之前在 v2 中使用的所有 BigNumber 实用程序替换为原生 bigint 基元。

多生态系统支持

LI.FI SDK v3 现在支持两个生态系统——EVM 和 Solana——还有更多即将推出。为了适应这些新生态系统,我们在 SDK v3 中引入了生态系统提供程序的概念。我们从 SDK v2 中提取了所有 EVM 相关功能并将其集成到一个 EVM 提供程序中。此外,还添加了一个 Solana 提供程序,以在所有 SDK 功能中启用 Solana 相关功能。 这些生态系统提供程序在设计时考虑了模块化,并且完全可以进行 tree-shake,确保如果不使用它们,它们不会给您的捆绑包增加不必要的重量。 以前,必须将 Ethers.js Signer 对象传递给 executeRoute 和其他函数以进行 EVM 交互。随着生态系统提供程序的引入,您只需要在设置 SDK 时配置它们一次。之后,您可以使用 executeRoute 和其他函数而无需传递任何其他选项。SDK 将自动确定适当的生态系统提供程序,如果未配置合适的提供程序,则会通知您。 阅读更多SDK 生态系统提供程序简介

示例

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

更新日志

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