SDK 生态系统提供者简介
LI.FI SDK 支持不同的区块链生态系统,允许您与 EVM、Solana、Bitcoin、Sui 和 Tron 网络集成。在内部,提供者充当每个生态系统的抽象,在路由/报价执行期间处理关键任务,例如地址解析、余额检查和交易处理。 这些生态系统提供者在设计时考虑了模块化,并且完全可以进行 tree-shake,确保如果不使用它们,就不会给您的捆绑包增加不必要的重量。 SDK 提供五个提供者包,每个包都有各自生态系统相应的类似配置选项:@lifi/sdk-provider-ethereum- 用于 EVM 兼容链@lifi/sdk-provider-solana- 用于 Solana@lifi/sdk-provider-bitcoin- 用于 Bitcoin(UTXO)@lifi/sdk-provider-sui- 用于 Sui@lifi/sdk-provider-tron- 用于 Tron
不同类型的钱包/账户
要通过特定提供者执行GET /quote 或 POST /advanced/routes,该提供者必须能够签署交易。SDK 提供者支持通过以下类型的钱包/账户签署交易:
- 本地账户(例如私钥/助记词钱包)。
- JSON-RPC 账户(例如浏览器扩展钱包、WalletConnect 等)。
window.ethereum)进行连接,并在浏览器或移动环境中管理用户的账户。此设置在 dApp UI 中很受欢迎,通常与 Wagmi、@solana/wallet-adapter-react 或 @mysten/dapp-kit 等库一起使用。
这些账户类型和交互方法允许开发者选择最适合将 SDK 与其应用程序集成的方法。
设置 EVM 提供者
EVM 提供者执行逻辑基于Viem 库构建,使用了它的一些类型和术语。
用于配置 EVM 提供者的可用选项:
getWalletClient: 返回 ViemClient实例(通常是通过createWalletClient创建的WalletClient)的函数。switchChain: 用于在不同网络之间切换的钩子。返回目标链的更新后Client。disableMessageSigning: 一个可选的布尔值,用于禁用 EIP-712 消息签名(例如,用于 Permit 授权)。对于不支持类型化数据签名的钱包或智能账户很有用。fallbackTransportConfig: 可选的 Viem 回退传输配置。safeApiKey: 用于 Safe 多签钱包的可选 Safe API 密钥。
本地账户
使用本地账户时,开发者需要一个预定义的链列表,以便在交易执行期间切换链。这些链可以来自viem/chains 包,也可以从 LI.FI API 获取并适配到 viem 的 Chain 类型。
以下是使用 viem/chains 中的链的基本示例:
JSON-RPC 账户
与 JSON-RPC 账户交互并将WalletClient 传递给 EthereumProvider 的最佳方式是使用 Wagmi 库。开发者可以通过使用 viem/chains 包中的链,或从 LI.FI API 获取链并将其适配到 Viem 的 Chain 类型来配置 Wagmi 链。
以下是如何将 LI.FI API 中的链与 Wagmi 和 React 结合使用来设置 EVM 提供者的简化示例。
我们提供了一个 useSyncWagmiConfig 钩子,它将获取的链与 Wagmi 配置同步并更新连接器。请注意,我们不使用连接器初始化 Wagmi 配置。此外,我们将 reconnectOnMount 设置为 false,因为在链与配置和连接器同步后,reconnect 操作将在 useSyncWagmiConfig 钩子中被调用。
更新提供者配置
此外,提供者允许通过setOptions 函数动态更新其初始配置。
以下是如何修改 EthereumProvider 初始配置的示例:
支持 Ethers.js 和其他替代方案
开发者仍然可以在其项目中使用 Ethers.js 或任何其他替代的 Web3 库,并在将Signer/Provider 对象传递给 EVM 提供者配置之前将其转换为 Viem 的 WalletClient。
设置 Solana 提供者
Solana 提供者执行逻辑基于 @solana/kit 库和 Wallet Standard 构建,使用了它们的一些类型和术语。 用于配置 Solana 提供者的可用选项:getWallet: 返回 Wallet StandardWallet实例的函数。skipSimulation: 一个可选的布尔值,用于在发送前跳过交易模拟(默认值:false)。
本地钱包
标准 Solana 库不提供直接从私钥创建 wallet-standard 钱包的内置方法。为了解决此限制,我们提供了KeypairWalletAdapter。此自定义适配器使用户能够从 base58 编码的密钥创建钱包。
值得注意的是,KeypairWalletAdapter 专为后端或测试目的而设计,不应在面向用户的代码中使用,以防止暴露您私钥的风险。
JSON-RPC 钱包
要与用户钱包交互并将 wallet-standardWallet 传递给 Solana 提供者,我们建议使用 @solana/wallet-adapter-react 库。来自 useWallet() 的 wallet.adapter 实现了 wallet-standard Wallet 接口。与 Wagmi 不同,React 的 Solana 配置没有全局配置。因此,我们需要使用 React 钩子在运行时更新 SDK 配置。
以下是如何设置 Solana 提供者的简化示例。
设置 Sui 提供者
Sui 提供者执行逻辑基于 @mysten/sui v2 库构建,使用了它的一些类型和术语。 用于配置 Sui 提供者的可用选项:getClient: 返回ClientWithCoreApi实例(来自@mysten/sui/client)的函数。getSigner: 返回Signer实例(来自@mysten/sui/cryptography)的函数。
JSON-RPC 钱包
要与用户钱包(如 Sui Wallet 等)交互并将客户端和签名者传递给 Sui 提供者,我们建议使用 @mysten/dapp-kit-react 库。旧版
@mysten/dapp-kit 包(SuiClientProvider / WalletProvider / createNetworkConfig)已弃用,且仅支持即将停用的 JSON-RPC API。新集成应使用 @mysten/dapp-kit-react 配合 createDAppKit / DAppKitProvider。设置 UTXO(Bitcoin)提供者
Bitcoin 提供者执行逻辑基于 Bigmi 库构建,使用了它的一些类型和术语。 用于配置 UTXO 提供者的可用选项:getWalletClient: 返回Client实例(来自@bigmi/core)的函数。
JSON-RPC 钱包
要与 Phantom、Xverse 等用户钱包交互,请使用getConnectorClient 操作返回 SDK 所需的 Bigmi Client 对象。
设置 Tron 提供者
Tron 提供者执行逻辑基于 TronWeb 库和 @tronweb3/tronwallet-abstract-adapter 适配器接口构建。 用于配置 Tron 提供者的可用选项:getWallet: 返回Adapter实例(来自@tronweb3/tronwallet-abstract-adapter)的函数。multicallBatchSize: 一个可选的数字,用于配置 multicall 余额请求的批处理大小。
JSON-RPC 钱包
要与用户钱包(如 TronLink)交互,请使用 @tronweb3/tronwallet-adapter-react-hooks 库将Adapter 传递给 Tron 提供者。
以下是如何设置 Tron 提供者的简化示例。
SDKProviders.tsx

