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

问题描述 投票:0回答:3

我正在尝试创建自己的区块链,以了解它们是如何工作的。我想知道

nonce
应该有多大(例如 8 位数字或类似的数字)。我在区块链中使用
PoW
(工作量证明)算法。该区块链使用
SHA256
哈希算法。

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

以下是该块在代码中的样子:

struct Block
{
    /*Block structure*/
    char* hash;
    char* prev_hash;
    char* from;
    char* to;
    long long int nonce;
    double amount;
    time_t timestamp;
};
c blockchain cryptocurrency
3个回答
3
投票

您想要一个足够大的随机数,以便该数字范围内可能有一个值满足您的难度条件,但又不能太大,以免浪费空间。

比特币使用 32 位值,其本身并不够大。这就是为什么哈希中还有其他因素可以更改以生成更广泛的输入,以及交易块的“extranonce”部分。

设计链条时,请确保不会创造无法满足的条件。在某些情况下,即使 64 位值也不够大,无法获得令人满意的哈希值,因此请确保还有其他可以根据需要进行调整、重新排序或递增的内容。

32 位值可能看起来很大,但实际上没什么。现代比特币挖矿硬件每秒可以处理超过 10 terahashes。这意味着尝试所有 32 位值大约需要 0.4 毫秒

如果您没有额外随机数,则需要使用 64 位值,因为它无法进行详尽的测试,并且当与时间戳结合使用时,您应该在输入上有足够的变化,以便始终可以得到令人满意的哈希值找到了。


0
投票

4 个字节

unsigned int
就足够了。我不知道你打算如何设计你的区块链,但你通常不必为随机数设置太大的值,因为当新交易进入时你会不断更改块


0
投票

最大无符号 8 字节,但 4 字节就足够了

© www.soinside.com 2019 - 2024. All rights reserved.