Hi Guest

More contents, please log on!

Bitmere.com 区块链技术 Content

nonce是个啥意思?根据bitcoin wiki

The “nonce” in a bitcoin block is a 32-bit (4-byte) field whose value is set so that the hash of the block will contain a run of leading zeros. The rest of the fields may not be changed, as they have a defined meaning.

nonce是一个4-byte大小的区域,nonce的值设定使得该块的hash是以一串0开头的。

对于块数据的一点点改变(比如nonce)都会引起block hash的巨大变化。由于逆向预测hash值相对应的一组bit值(hash原文)是不可行的,在尝试足够多的nonce值且计算每个nonce值相对应的block hash之后可以找到一个满足有指定数量 0 bits (0比特位) 的hash值。而 0 bits的数量值是由difficult设定的。最终产生的hash须得是一个小于当前difficulty值。

因为这个迭代的计算耗费时间和资源,块的出现也就是得到了正确的nonce值,这构成了proof of work

以太坊里的nonce和比特币里的nonce还不太一样!!

关于以太坊里的nonce 网上很多解释,很多一上来就是交易计数器, 然而却把跟POW有关的丢了吗?事实上以太坊里的nonce有两种意思,一个是proof of work nonce,一个是account nonce。

**Proof of Work nonce:**一个无意义的值,可以通过调整值得大小来试图满足proof of work的condition。这其实就是挖矿的本质。这个值使得 找出满足proof of work condition的值 变成了一个依靠运气的计算密集型的工作。

**Account nonce:**每个帐户中用来防止重放攻击的交易计数器。例如,一笔从A到B发送20个币的交易可以被B不断重复来消耗A的余额。

这是为了防止双花攻击啦。举个例子比如说

你发出了一笔带有normal GASPRICE的交易,正等着被矿工加到块里。

你发出了另一笔带有high GASPRICE的交易想使得在第一次交易之前进行第二次交易, 使得第一笔交易无效。

在以太坊中交易中有一个nonce域,double-spends就不会发生,nonce2的交易不会在nonce1的交易之前被添加进块(也就是be mined),还要注意的是nonce不能被跳过,也就是说要是你发送了一个nonce3的交易但是没有发送nonce2,那么这个交易就没用。nonce一定要是顺序的, no skips.

那智能合约呢?合约也算是Account的一种,那也有nonce吗?

是的,而且合约里面的nonce也差不多,也是一个counter。在智能合约里,nonce的值代表的是该合约创建的合约数量。只有当一个合约创建另一个合约的时候才会增加nonce的值。但是当一个合约调用另一个合约中的method时 nonce的值是不变的。

在以太坊中nonce的值可以这样来获取(其实也就是属于一个账户的交易数量):

eth.getTransactionCount(accountAddress)

但是这个方法只能获取交易once的值。目前是没有内置方法来访问contract中的nonce值的,除了自己定义一个counter来计数…

那好,再来看一下Ethereum Block中的nonce:

以太坊和比特币区块链一样,也需要proof of work(计划转移到股份证明也早已在做了)。在比特币区块链中,pow应该是要算出一个符合难度要求的值,通常是以一串0开头的。这个难度一直在变化。可以查看比特币区块链的POW难度变化。
BitMere.com is Information release platform,just provides information storage space services.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
You have to log in before you can reply Login | 立即注册

Points Rules

Write the first review

李悔之2015 初中生
  • Follow

    1

  • Following

    0

  • Articles

    13

Promoted