以太坊交易中的nonce和confirmation
Posted mutourend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以太坊交易中的nonce和confirmation相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章