怎么做微信推送 网站,南通市建设工程安全监督站网站,asp图片源码网站,怎么做加盟美容院网站热点账户 所谓的热点账户就是频繁被使用的账户#xff0c;在以太坊中比如交易所的统一出币账户#xff0c;在短时间内频繁发起交易的账户#xff0c;均可被称作热点账户。
replacement transaction underpriced异常 如果系统中的热点账户或普通账户发起交易时出现error: re…热点账户 所谓的热点账户就是频繁被使用的账户在以太坊中比如交易所的统一出币账户在短时间内频繁发起交易的账户均可被称作热点账户。
replacement transaction underpriced异常 如果系统中的热点账户或普通账户发起交易时出现error: replacement transaction underpriced异常那么就需要考虑nonce使用是否正确。
引起此异常原因主要是当一个账户发起一笔交易假设使用nonce为1交易已经发送至节点中但由于手续费不高或网络拥堵或nonce值过高此交易处于queued中迟迟未被打包。
同时此地址再发起一笔交易如果通过eth_getTransactionCount获取的nonce值与上一个nonce值相同用同样的nonce值再发出交易时如果手续费高于原来的交易那么第一笔交易将会被覆盖如果手续费低于原来的交易就会发生上面的异常。
通常发生此异常意味着 - 你的Ethereum客户端中已经有一币处于pending状态的交易。 - 新的一笔交易拥有pending状态交易相同的nonce值。 - 新的交易的gas price太小无法覆盖pending状态的交易。
通常情况下覆盖掉一笔处于pending状态的交易gas price需要高于原交易的110%。
解决方案 针对此问题在不同的使用场景下有不同的解决方案。
依赖钱包 如果该热点账户的私钥信息等都存放在Ethereum客户端中那么在发送交易的时候不传递nonce值Ethereum客户端会帮你处理好此nonce值的排序。
当然此方案有两个弊端。第一个是安全性无法保障未进行冷热账户分离第二在热点账户下如果想覆盖掉一笔交易需要先查询一下该交易的信息从中获取nonce值。
自行管理nonce 自行管理nonce适用于冷热账户模式也就是适用sendRawTransaction发送已经签名好的交易时此时nonce值已经存在于交易中并且已经被签名。
这种模式下需要在业务系统中维护nonce的自增序列适用一个nonce之后在业务系统中对nonce进行加一处理。
此种方案也有限制条件。第一由于nonce统一进行维护那么这个地址必须是内部地址而且发起交易必须通过统一维护的nonce作为出口否则在其他地方发起交易原有维护的nonce将会出现混乱。第二一旦已经发出的交易发生异常异常交易的nonce未被使用那么异常交易的nonce需要重新被使用之后它后面的nonce才会生效。
总结一下
1、以太坊中有两种nonce一种是在区块中的nonce主要是调整挖矿难度一种是每笔交易中nonce。 2、每个外部账户私钥控制的账户都有一个nonce值从0开始连续累加每累加一次代表一笔交易。 3、某一地址的某一交易的nonce值如果大于当前的nonce该交易会被放到交易池的queued列表中直到缺失的nonce被提交到交易池中。 4、地址的nonce值是一个连续的整数设计的主要目的是防止双花。 5、在发生一笔交易时如果不指定nonce值时节点会根据当前交易池的交易自动计算该笔交易的nonce。有可能会出现节点A和节点B计算的nonce值不一样的情况。 6、当交易暂未上链时可通过提高手续费的方式覆盖同样nonce值的交易 7、通常情况下覆盖掉一笔处于pending状态的交易gas price需要高于原交易的110%。