我正在使用Python 3和erdpy发送事务。当交易以状态"成功"结束时,我在交易数据中有一个时间戳,我认为这是交易进入区块链的时间。但是,是否有一种方法可以知道事务解决时间的另一个时间戳?
我想知道处理单个事务需要多少时间。
我想说(在我写这篇文章的时候)计算一个事务的处理时间并不是一项微不足道的任务。发生这种情况的原因是因为分片以及跨分片的处理方式。大概的想法(据我所知)如下:
- 检索源分片块的时间戳,事务首次在 上发布。
- 检索目标分片块的时间戳,事务或最后一次SC结果最后一次发布在 上
- 减去两个
您必须注意这样一个事实:事务在其目的方面可以有很大的不同。它的范围可以从一个账户到另一个账户的简单价值转移,分片内或跨分片,到疯狂的菊花链操作,如智能合约调用,反过来可能调用另一个智能合约,每一个都可能生成智能合约结果,这些结果必须以类似的方式传播回一个简单的交易(这些基本上也是交易)。因此,您必须从第一个时间戳(通常是包含发送方分片上交易的第一个块的时间戳)一直计算到包含交易处理触发的最后一个事件的目标块的时间戳。
从技术上讲,你必须通过几个tx数据解析来挖掘这些块,在这些不同的哈希之间交叉数据,我相信它会像这样:
- 从你的tx哈希开始,找到包含在 中的tx的小块哈希
- 转到公证atsourceinmetahash并查找包含您的迷你块哈希的块,并获得其时间戳。这将是您的事务开始执行流的时间。
- 转到公证atdestinationinmetahash并查找包含您的迷你块哈希在内的块,并获得您应该用来减去第一个时间戳的最终时间戳。如果事务具有SCResults,那么您必须获取最新生成的SCResult的公证atdestinationinmetahash,并查找包含该SCResult哈希的块。这将是您应该从中减去的最后一个时间戳。
也可以用一点盐来看待这个信息,因为我不是100%确信这是正确的方法来做这个计算。