重放过去的交易
基础知识
你可以使用 aptos move replay
命令在本地重放过去的交易。
该命令相当简单,但需要你指定两个必需的信息:
--network
- 这是你想要重放的网络
- 可能的值:
mainnet
、testnet
、devnet
或<自定义 REST 端点的 URL>
--txn-id
- 这是你想要重放的交易的 ID
- 这有时也被称为浏览器上的
version
- 特别注意这不是十六进制的交易哈希值
让我们以主网交易 581400718(一个简单的代币转账交易)为例。
Terminal
aptos move replay --network mainnet --txn-id 581400718
输出
从 RestApi 获取了 1/1 个交易。
正在重放交易...
{
"Result": {
"transaction_hash": "0x1ba73d03a0442a845735a17c7be46f3b51e2acb0e5cf68749305c5a17539ac63",
"gas_used": 7,
"gas_unit_price": 100,
"sender": "c94e16736910cc160347d01de345407fe2d350fce5635ac1150319b0fbf5630e",
"sequence_number": 14637,
"success": true,
"version": 581400718,
"vm_status": "status EXECUTED of type Execution"
}
}
另外,如果你想模拟一个新的交易,请查看本地模拟、基准测试和气体分析。
替代模式
与本地模拟类似,重放命令可以通过以下选项之一进行增强:
--benchmark
:对交易进行基准测试并报告运行时间。--profile-gas
:对交易进行气体使用情况的详细分析。
基准测试
Terminal
aptos move replay --network mainnet --txn-id 581400718 --benchmark
输出
从 RestApi 获取了 1/1 个交易。
正在对交易进行基准测试...
运行时间(冷代码缓存):914.821µs
运行时间(热代码缓存):820.189µs
{
"Result": {
"transaction_hash": "0x1ba73d03a0442a845735a17c7be46f3b51e2acb0e5cf68749305c5a17539ac63",
"gas_used": 7,
"gas_unit_price": 100,
"sender": "c94e16736910cc160347d01de345407fe2d350fce5635ac1150319b0fbf5630e",
"sequence_number": 14637,
"success": true,
"version": 581400718,
"vm_status": "status EXECUTED of type Execution"
}
}
值得注意的是,这些运行时间仅作为信息参考,因为它们取决于你的本地机器的规格,并可能受到噪声或其他随机因素的影响。
如果你打算优化你的合约,应该根据气体分析结果来做出决策。
ℹ️
为了最小化测量误差,基准测试工具会多次执行相同的交易。因此,基准测试任务可能需要一段时间才能完成。
气体分析
Aptos 气体分析器是一个强大的工具,可以帮助你了解 Aptos 交易的气体使用情况。一旦激活,它将使用仪器化的虚拟机模拟交易,并生成基于 Web 的报告。
气体分析器还可以作为调试器,因为报告还包括完整的执行跟踪。
Terminal
aptos move replay --network mainnet --txn-id 581400718 --profile-gas
输出
从 RestApi 获取了 1/1 个交易。
正在分析交易...
气体报告已保存到 gas-profiling/txn-1ba73d03-0x1-aptos_account-transfer。
{
"Result": {
"transaction_hash": "0x1ba73d03a0442a845735a17c7be46f3b51e2acb0e5cf68749305c5a17539ac63",
"gas_used": 7,
"gas_unit_price": 100,
"sender": "c94e16736910cc160347d01de345407fe2d350fce5635ac1150319b0fbf5630e",
"sequence_number": 14637,
"success": true,
"version": 581400718,
"vm_status": "status EXECUTED of type Execution"
}
}
然后你可以在 gas-profiling 目录中找到生成的气体报告:
- index.html
要了解气体报告,请参阅本地模拟教程的这一部分。