首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >区块链中的"nonce“应该有多大?

区块链中的"nonce“应该有多大?
EN

Stack Overflow用户
提问于 2018-02-26 08:02:36
回答 2查看 353关注 0票数 0

我正在尝试创建我自己的区块链,以便了解它们是如何工作的。我想知道nonce应该有多大(例如8位或类似的数字)。我在我的区块链中使用了PoW (工作证明)算法。此区块链使用SHA256散列算法。

我使用C编程语言来实现这个区块链。

下面是代码中代码块的样子:

代码语言:javascript
复制
struct Block
{
    /*Block structure*/
    char* hash;
    char* prev_hash;
    char* from;
    char* to;
    long long int nonce;
    double amount;
    time_t timestamp;
};
EN

回答 2

Stack Overflow用户

发布于 2018-02-26 08:18:12

您需要一个足够大的nonce,以便在该数字范围内可能有一个值满足您的难度条件,但又不会太大,从而浪费空间。

比特币使用的是一个32位的值,这个值本身并不够大。这就是为什么散列中还有其他因素,可以更改这些因素以生成更大范围的输入,以及事务块的"extranonce“部分。

在设计你的链条时,要确保你不会创造不可能满足的条件。可能存在这样的情况,即使是64位的值也不足以得到令人满意的散列结果,因此请确保有其他内容可以根据需要进行调整、重新排序或递增。

32位的值可能看起来真的很大,但实际上它并不算什么。现代比特币挖掘硬件每秒可以处理超过10万亿次的数据。这意味着尝试所有32位值大约需要0.4毫秒。

如果你没有extranonce,你将需要使用64位的值,因为它不能被详尽的测试,并且当和时间戳结合使用时,你应该有足够的输入变化,这样总能找到令人满意的哈希值。

票数 3
EN

Stack Overflow用户

发布于 2018-02-26 08:07:37

4字节的unsigned int就足够了。我不知道您计划如何设计您的区块链,但您通常不需要为nonce设置太大的值,因为随着新事务的到来,您会不断更改区块

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48979792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档