区块链基础知识

发布时间 2023-05-09 14:49:23作者: 测试周小白

nonce规则

为了防止交易重播,ETH(ETC)节点要求每笔交易必须有一个nonce数值。每一个账户从同一个节点发起交易时,这个nonce值从0开始计数,发送一笔nonce对应加1。当前面的nonce处理完成之后才会处理后面的nonce。注意这里的前提条件是相同的地址在相同的节点发送交易。

以下是nonce使用的几条规则:

  • nonce太小(小于之前已经有交易使用的nonce值),交易会被直接拒绝。
  • nonce太大,交易会一直处于队列之中。
  • 当发送一个比较大的nonce值,然后补齐开始nonce到那个值之间的nonce,那么交易依旧可以被执行。
  • 当交易处于queue中时停止geth客户端,那么交易queue中的交易会被清除掉。

获取nonce值

在实际应该用中我们如何保障 nonce 值的可靠性呢?这里有两个思路。

第一个思路就是由业务系统维护nonce值的递增。如果交易发送就出现问题,那么该地址下一笔交易继续使用这个nonce进行发送交易。

第二个思路就是使用现有的api查询当前地址已经发送交易的nonce值,然后对其加1,再发送交易。对应的API接口为:eth_getTransactionCount,此方法由两个参数,第一个参数为需要查询nonce的地址,第二个参数为block的状态:latestearliestpending。一般情况使用pending就可以查询获得最新已使用的nonce

 

什么是 GAS?

Gas 是指在以太坊网络上执行特定操作所需的计算工作量。

由于每笔以太坊交易都需要计算资源才能执行,每笔交易都需要付费。 在这个方面上,Gas 是指在以太坊成功进行交易所需的费用。

优先费(小费)

在伦敦升级之前,矿工获得区块中所含全部交易的总燃料费。

由于新的基础费被销毁,伦敦升级引入了优先费(小费),激励矿工将交易添加到区块中。 如果没有小费,矿工会发现开采空区块在经济上可行,因为他们会获得相同的区块奖励。 在正常情况下,一笔金额不大的小费为矿工添加交易提供了极小的激励。 对于需要在同一区块中优先执行的交易,需要提供更高的小费,力争使出价高于竞争交易。

学习的地址:https://ethereum.org/zh/developers/docs/accounts/