1. 以太坊交易中的nonce及其价值

1.1 以太坊交易中的nonce值

在以太坊中,每笔交易都有一个nonce值,该nonce值代表的是从该交易发起地址发出的交易数。(当存在使用同一地址从多个客户端发起交易时,客户端需从链上同步nonce值。具体也可参见chainlink中的同步机制。)
在英文中,nonce表示的仅可使用一次的数字。
在密码学中,nonce为以随机或伪随机方式产生的一次性使用的数字,用于保护主密码传输安全,防止重放攻击。

当你发送交易时,需对该nonce值增加1。
符合以下规则的交易可认为是有效交易:

  • 交易必须是有序的。不可能 具有nonce 1的交易 在 具有nonce 0的交易 之前被挖出。
  • nonce值是连续的,不存在跳跃的情况。若不存在具有nonce 0和nonce 1的交易,则不可能挖出具有nonce 2的交易。

1.2 以太坊交易中nonce值的价值

由于以太坊交易中nonce值代表了交易的顺序,因此可防止双花。
当双花交易确实发生时,则通常需遵循以下流程:

  • 交易由某一方发起;
  • 等待交易注册;
  • 需从该笔交易中收集某些信息;
  • 此时有另一笔交易以更高的gas费快速发起;
  • 第二笔交易被优先挖出,从而使第一笔交易失效。

这也是为何交易所要等待一定数量的confirmation之后才允许你对新存入的资金进行交易。
而对于以太坊来说,以上流程不可能成立。因为在以太坊中,第二笔交易(如具有nonce 3)不可能在第一笔交易(比如具有nonce 2)之前被挖出。

2. 区块链中交易的confirmation

区块链中一笔交易的confirmation,意味着该笔交易已验证且已通过挖矿等方式添加到了区块链中。
当一笔交易被挖出,其即被包含在区块链中了,其得到了1个confirmation。

不同的区块链平台其挖出区块的时间各不相同,该时间称为blocktime。
在Bitcoin中,平均每10分钟挖出一个新的区块。当有一个新的区块之后,现有区块链中的每笔交易都额外增加了一个confirmation。当交易被reverse或双花时,confirmation数量会减少。

对于incoming交易,通常需要一定数量的confirmation。当某笔交易的confirmation数量达到一定值之后,可认为该笔交易已接收。

不同平台所需的confirmation和相应的预估时间如下:

参考资料

[1] What Are Blockchain Confirmations and Why Do They Matter?
[2] Why is my transaction “pending”?
[3] Block time and confirmation time
[4] How many confirms is considered ‘safe’ in Ethereum?
[5] What are the differences (and relationship) between the steps used to (1) validate a transaction and (2) confirm a block?
[6] What number of confirmations is considered secure in Ethereum?
[7] What is a Block Confirmation on Ethereum?
[8] What is the required number of confirmations?
[9] What is a Nonce?

以太坊交易中的nonce和confirmation相关推荐

  1. 【区块链】以太坊交易中的R、S、V字段

    最近在做区块链钱包,想让自己的钱包适配小狐狸插件,在小狐狸插件中余额显示.私钥导入都正常,但是在交易发送时出现错误,交易详情如下 {"jsonrpc":"2.0" ...

  2. Infura Http 客户端 以太坊 交易

    web3j Infura 模块提供了一个Infura Http 客户端(InfuraHttpService),它为Infura特定的Infura-Ethereum-Preferred-Client提供 ...

  3. 区块链 以太坊 交易结构、执行、存储 解析 交易中为什么没有包含发送者地址这条数据

    一. 交易的结构 1. Transaction结构 交易结构定义在 core/types/transaction.go 中: type Transaction struct {//交易数据data t ...

  4. 以太坊交易Nonce设置

    1 什么是nonce? 以太坊中的nonce有两个意义: 1.工作量证明:为了证明工作量的无意义的值,这是采矿的本质,这个值将决定采矿的难度, 2.账户的随机数:在一个账户中的防止多重交易的用途.例如 ...

  5. 以太坊交易信息及event、input、logs、topics等概念机制

    文章目录 一.交易信息获取 1.1 合约事件例子定义 1.2 以太坊交易获取 二.input解析 2.1 input内容解析 2.2 input处理逻辑 三.logs解析 3.1 logs解析代码 四 ...

  6. java如何监听以太坊交易

    2019独角兽企业重金招聘Python工程师标准>>> 你可以在web3j库的帮助下使用java轻松监听以太坊交易,但此库无法监听Erc20 Token交易. 要监听Erc20Tok ...

  7. 以太坊地址和公钥_以太坊交易签名解析源码解读

    上篇文章<以太坊交易签名过程源码解析[1]>从源码角度分析了一个合约调用的的签名过程,签名后的交易发送到以太坊节点后,节点需要从签名交易中还原出公钥(从公钥中单向计算出账号地址),进而将交 ...

  8. 以太币转帐速度_燃起来吧!一文带你读懂以太坊网络中的Gas、Gas Fee、Gas Price、Gas...

    曾用过区块链相关应用,不管是交易所.DApp 或是虚拟货币钱包的人,一定都听过矿工费(Gas Fee) 这个词.它是当你要在区块链网路发起一笔交易时,所要支付给矿工的一笔手续费.其实很容易理解,就好比 ...

  9. 观点:以太坊交易费市场泡沫预警,交易费日渐成为用户难以承受之重

    在经历了一次大熊市之后,以太坊已经再次流行起来.受包括 ETH 价格反弹以及所谓"去中心化金融"(DeFi)的采用等因素的综合影响,以太坊区块链的活跃用户和日交易量都出现了强力增长 ...

最新文章

  1. 计算机网络谢希仁第七版课后答案第五章 传输层
  2. 武汉工程大学认识实习报告计算机,武汉工程大学化工认识实习报告
  3. python与或非运算规则_Python逻辑运算符及其用法
  4. 字符串删除首尾_[LeetCode] 459. 重复的子字符串
  5. java gettext用法_Java Context.getText方法代码示例
  6. std::remove
  7. Java中包装类型和基本类型的使用场景(阿里开发规范)
  8. leetcode570. 至少有5名直接下属的经理(SQL)
  9. golang时间类型转换
  10. 如何支撑企业快速构建数字孪生体
  11. android调用文件管理器回调,Android中调用系统管理器选择文件并返回绝对路径
  12. idea启动崩溃问题
  13. 在微型计算机所说的80586,2017年职称计算机考试题库及答案
  14. 层级菜单构造--groupingby
  15. 计算机启动时检测硬盘,电脑总是启动检测硬盘怎么办
  16. Wpf大屏软件开发过程中遇到的若干问题
  17. Flume采集数据利器
  18. python urllib模块
  19. jianx vtritualbox 虚拟镜像的体积
  20. ch340预安装成功,但是就是无法识别 也无法卸载 怎么办?

热门文章

  1. 高等数学18讲(19版)7.31(区间再现公式)
  2. [面试英语] 面试时如何自我介绍
  3. python解压多层压缩包,兼容tar.gz .tgz .zip .7z .gz
  4. R语言绘制空气污染图
  5. 计算机if语句翻译,5.4.1 if 语句的翻译
  6. Vue【vue-seamless-scroll】滚动组件及注意事项
  7. android html5 加密,android studio MD5加密 示例代码
  8. Java免费学习网站
  9. python五角星编程代码绘制
  10. 最后完美解决pip没法用的问题