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

时间:2018-02-26 00:02:36

标签: c blockchain cryptocurrency

我正在尝试创建自己的区块链,以了解它们的工作原理。我想知道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;
};

2 个答案:

答案 0 :(得分:3)

你想要一个足够大的nonce,以便在这个数字范围内有一个值可以满足你的难度条件,但不要太大以至于浪费空间。

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

设计链条时,请确保不会产生无法满足条件的要求。可能存在这样的情况:即使64位值不足以获得令人满意的散列,因此请确保可以根据需要调整,重新排序或增加其他内容。

32位值似乎真的很大,但实际上它什么都没有。现代比特币采矿硬件每秒可以超过10 terahashes 。这意味着尝试所有32位值大约需要0.4 毫秒

如果您没有extranonce,则需要使用64位值,因为无法对其进行详尽测试,并且当与时间戳结合使用时,您应该在输入上有足够的变化,以获得满意的哈希值永远都能找到。

答案 1 :(得分:0)

4字节unsigned int就足够了。我不知道您打算如何设计区块链,但通常不必为nonce设置太大的值,因为随着新事务的进入,您不断更改块