Thanos 开发故事 — 3

  • 0x6e616d
  • 发布于 2024-08-30 19:17
  • 阅读 8

本文介绍了Thanos网络的SDK,该SDK使用Typescript编写,主要功能包括:存入和提取ERC-20代币、ETH以及原生代币(TON),验证并完成提款交易,以及预估L1/L2的Gas费用。文章重点介绍了CrossChainMessenger类和L2Provider,并提供了使用SDK进行ETH存取款的示例。

Thanos 开发故事 — 3

Thanos SDK

TOP 项目团队计划在 12 月推出 Thanos 主网,并在 7 月 1 日向世界展示新的测试网络 Thanos-Sepolia。Thanos 网络是一个 L2,专注于基于 optimistic rollup 扩展以太坊主网,并使用 ERC-20 作为原生代币。

为了与 Thanos 网络交互,我们应该使用 Typescript 编写的 SDK,我们已将其发布在 NPM 上。

Thanos 开发故事系列

  1. Thanos 基础设施优化
  2. L2 原生代币特性
  3. Thanos SDK
  4. 预部署合约:USDC 桥
  5. 预部署合约:UniswapV3
  6. Thanos 网络的基础设施
  7. 网络升级:Span batch 和 Proto-danksharding

首先,让我们谈谈 Thanos 的 SDK 功能:

  • 存入和提取 ERC-20 代币
  • 存入和提取 ETH
  • 存入和提取原生代币 (TON)
  • 证明和完成提款交易
  • 估算 L1/L2 gas 费用

CrossChainMessenger

CrossChainMessenger 类帮助我们在以太坊主网和 Thanos 网络之间转移资产。

例如:从以太坊主网向 Thanos 存入 ETH,或者从 Thanos 发起提款交易返回以太坊,跟踪交易状态以便在以太坊上完成,并在挑战时间过后完成交易。

CrossChainMessenger 类

存入和提取

CrossChainMessenger 类中,我们支持存入和提取原生代币:

  • approveNativeToken:在从以太坊存入到 Thanos 之前,使用 L1Bridge 合约批准 L1 上的原生代币
  • bridgeNativeToken:通过 L1Bridge 合约将原生代币从以太坊存入到 Thanos
  • withdrawNativeToken:通过 L2Bridge 合约将原生代币从 Thanos 提取回以太坊

并且,CrossChainMessenger 支持存入和提取预定义的 ERC-20 代币:

  • approveERC20:在从以太坊存入到 Thanos 之前,使用 L1Bridge 批准 ERC-20 代币
  • bridgeERC20:通过 L1Bridge 合约将 ERC-20 代币从以太坊存入到 Thanos
  • withdrawERC20:通过 L2Bridge 合约将 ERC-20 代币从 Thanos 提取回以太坊

此外,CrossChainMessenger 支持存入和提取 ETH:

  • bridgeETH:通过 L1Bridge 合约将 ETH 从以太坊存入到 Thanos
  • withdrawETH:通过 L2Bridge 合约将 ETH 从 Thanos 提取回以太坊

证明和完成提款交易

为了支持使用 OptimismPortal 合约证明和完成提款交易,我们有以下内容:

  • proveMessage:证明从 L2 发送到 L1 的跨链消息。仅适用于 L2 到 L1
  • finalizeMessage:完成从 L2 发送到 L1 的跨链消息。仅适用于 L2 到 L1

L2Provider 和相关实用程序

Thanos SDK 具有一些用于处理 Thanos gas 模型的实用程序,我们有以下内容:

  • getL1GasPrice:获取 L2 上看到的当前 L1 gas 价格
  • estimateL1Gas:估算给定 L2 交易所需的 L1 gas 量
  • estimateL1GasCost:估算给定 L2 交易的 L1 gas 成本(以 Wei 为单位)
  • estimateL2GasCost:估算给定 L2 交易的 L2 gas 成本(以 Wei 为单位)
  • estimateTotalGasCost:估算给定 L2 交易的总 gas 成本(以 Wei 为单位)
  • asL2Provider:返回一个包装为 Thanos L2 提供程序的提供程序。添加了一些额外的辅助函数,以简化估算 Optimism 上交易的 gas 使用情况。返回原始提供程序的副本。

Portal

为了与 OptimismPortal 合约交互,我们可以初始化一个 OptimismPortal 实例

我们支持以下功能:

  • waitingDepositTransactionRelayed:等待从以太坊到 Thanos 的存款交易被中继
  • getMessageStatus:获取消息状态(从 L1 到 L2 通过收据或从 L2 到 L1 通过收据)
  • waitingDepositTransactionRelayedUsingL1Tx:等待通过 L1 交易收据中继从以太坊到 Thanos 的存款交易
  • calculateReplayedDepositTxID:计算中继的存款交易 ID
  • getL2BlockNumberInOO:获取 Optimism Portal 合约中的 L2 区块号
  • calculateWithdrawalMessage:计算提款消息
  • waitForWithdrawalTxReadyForRelay:等待提款交易准备好进行中继
  • getChallengePeriodSeconds:获取挑战期(以秒为单位)
  • getProvenWithdrawal:获取已证明的提款
  • getFinalizedWithdrawalStatus:获取已完成的提款状态
  • depositTransaction:通过 Optimism Portal 合约存入 L2 原生代币交易
  • initiateWithdrawal:从 Optimism Portal 合约发起提款交易
  • proveWithdrawalTransaction:证明提款交易
  • waitForFinalization:等待完成提款交易
  • finalizeWithdrawalTransaction:完成提款交易

使用 Thanos SDK

这是一个将 ETH 从以太坊存入到 Thanos 的示例:

  1. 我们基于这些配置初始化一个 CrossChainMessenger 实例
  2. 使用交易量作为输入参数调用 brigeETH
  3. 调用 wait 以等待此交易成功

存款交易示例

或者将 ETH 从 Thanos 提取到以太坊:

  1. 我们基于这些配置初始化一个 CrossChainMessenger 实例
  2. 在 L2 上使用 amount 作为输入调用 withdrawETH 函数
  3. 等待此交易准备好在 L1 上证明
  4. 在 L1 上证明该交易
  5. 等待此交易准备好在 L1 上完成
  6. 在 L1 上完成此交易

  • 原文链接: medium.com/@0x6e616d/tha...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
0x6e616d
0x6e616d
江湖只有他的大名,没有他的介绍。