加密和解密呼叫数据

LiFi 合约能够将多个交易组合成一个交易调用。 为了使用此功能,目前需要对某些网桥(connext / NXTP)的必要呼叫数据进行加密和解密。

为此,您可以将钩子传递给 resumeRoute 和 executeRoute 的 ExecutionSettings。

interface ExecutionSettings {
  getPublicKeyHook?: () => Promise<string | undefined>
  decryptHook?: (data: string) => Promise<string>
  // ...
}

getPublicKeyHook 需要从用户的钱包返回一个公共加密挂钩。 此密钥用于在执行开始时加密呼叫数据。

在第一笔交易被执行后,第二笔交易的交易数据必须被解密才能被执行。 这必须使用decryptHook 处理。 它提供加密的呼叫数据,并期望开发人员处理它的解密。

您可以构建自己的挂钩或使用 SDK 中提供的帮助程序。 目前,SDK 助手仅支持符合 EIP-1193 的提供程序。

示例代码片段

以下代码片段使用 SDK 帮助程序对通话数据进行加密和解密。

import LiFi, {
  getEthereumDecryptionHook,
  getEthereumPublicKeyHook,
} from '@lifinance/sdk'
// ... prepare a transfer ...

const settings: ExecutionSettings = {
      // ...
      // the following hooks are present in the SDK
      decryptHook: getEthereumDecryptionHook(await signer.getAddress()),
      getPublicKeyHook: getEthereumPublicKeyHook(await signer.getAddress()),
    }

const route = await LiFi.executeRoute(signer, chosenRoute, settings)

Last updated