关于EOS交易过期丢失的问题。

管理员组 缘雨 4月前 121

我是菜鸡,关于这个问题的理解一直困扰着我:我的合约中有一个转账action(后文以A代替),当我调用这个A后,返回正常成功数据。然后在接下来的时间,这个A在区块确认的时候,还没确认为不可逆,过期了,然后丢了。之前的成功就废了。这该怎么办呢,我是不是理解的有问题? 如果没问题,那我在开发dapp的时候应该怎么避免呢,特别是交易的时候。

还没有人收藏过本帖~
最新回复 (6)
  • 管理员组 Surou 4月前
    1 引用 2
    这个上链后被抛弃的交易无法被动通知的,只能自己做主动检查,一般来说上链后自己本地会记录这个交易,并设置当前状态为非不可逆,然后定时检查链上交易,当状态更新时,更新本地数据的状态,当交易被回滚丢弃时,本地数据也做相应的回滚,以及业务回退
  • 一级用户组 CASIS 4月前
    1 引用 3
    正解
  • 一级用户组 fengzi 4月前
    0 引用 4
    1. 区块没有确认为不可逆,过期了,这种情况发生概率较低。为了降低发生的概率,你目前三个节点的私链肯定是不行的,要增加出块节点。
    2. 可以在链外对当前不可逆块的高度,和产生交易的所在块的高度进行对比。(当节点数量不变的时候,最新块与最新不可逆块之间的数据量是基本稳定的,相差的时间也是基本稳定的。)得出交易所在的块是否已经不可逆。如果出现了你说这种情况,一个你要在链外的程序中写下报警日志,第二个可以再链外重新发起交易。
  • 管理员组 缘雨 4月前
    0 引用 5
    我想找到一种简单的方法来快速实现,交易的过期被抛弃的时间是固定的么?过了这个时间,我只需要去查询一次此次交易是否正常,出现回滚则我再次操作。
  • 一级用户组 fengzi 4月前
    0 引用 6
    1. 出块节点的数量,节点之间的网络延迟, 会影响最新不可逆块与最新块之间的时间长短。
    2. 你应该关注的是区块是否按时变成不可逆。当区块没有按时不可逆的时候,链上就很可能出问题了,应该人工干预了。
  • 管理员组 缘雨 4月前
    0 引用 7
    明白!非常感谢各位!
返回