关于ETH的NONCE

1 篇文章 0 订阅
1 篇文章 0 订阅

最近我的ETH交易里面出现了一种情况,交易虽然返回了hash,但是却迟迟未被确认,连在区块浏览器上也找不到对应的pending交易, 但是通过节点api调用hash获取记忆记录却有数据返回。这种情况问了人也查了资料,最后得出的结果是,交易可能在矿池,但是却没有被矿工打包。

于是想到了imtoken钱包的加速交易内容。

说到加速交易,不得不说的就是ETH交易内重要的一个内容, nonce
nonce是你这个地址里面产生的发起交易所携带的,目的是ETH防止双花, 如果你当前链上交易确认nocne为(例如)9,那么下一笔交易的nonce必须为10, 如果你大于10 发起了一笔11的交易,那么这笔交易是无法被完成的,除非你补全了中间的nonce为10的交易。

每一笔发起的交易都对应一个nonce。如果你的交易未被确认,或者说仍在矿池, 你可以通过指定nonce,修改GasPrice(加大),去发起一笔新的交易, 矿工会根据你的GasPrice哪个交易里的比较大,而去进行打包,如果说你第二次发起的GasPrice小于你第一笔的GasPrice,那么会报一个错误:
Unreplace xxxx(忘记了)——意思无法替代,因为GasPrice小于第一笔。

关于Nonce的保管:
可以调用节点的api:获取当前地址发起交易的nonce–eth_getTransactionCount 参数为地址,以及Pending或者lastest,选用pending就行, 就可以获取你当前地址的最大nonce数。 但是这种情况需要确保你中间的nonce没有中断过。

也可以自己保管nonce, 通过数据库之类的。—笔者就是通过数据库去保管自己主地址的nonce,在每一次发布成功的交易都做一次++操作,并且在数据库保存对当前这笔交易的nonce保管,以方便自己追踪当前交易的nonce。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值