我如何使用上一个块的哈希链接2个块

How exactly do I link 2 blocks using the hash of the previous block?

本文关键字:哈希 链接 2个块 何使用 上一个      更新时间:2023-10-16

我是区块链的新手,并希望自己在C 中实现基本区块链。我正在与链接列表进行类比,并且想知道,如何使用哈希而不是指针将块链链接在一起?

考虑C 中的链接列表实现片段:

struct node
    {
        node *prev;
        string data;
    }
main()
{
    node *first=new node;
    node *second=new node;
    second->prev=first;
}

现在考虑区块链的这种信房区块结构:

class block
    {
        string hash;
        string prev_hash;
        string data;
        public:
        string calc_hash();
    }
main()                       
{
    block genesis;
    genesis.data="name,gender,age";
    genesis.hash=calc_hash(data);
    genesis.prev_hash=0000;
    block second;
    second.data="name,gender,age";
    second.hash=calc_hash(data);
    second.prev_hash=genesis.hash;
}

现在,如何使用哈希而不是指针将这些块链接在一起?还是应该像指针一样实现,但具有一些函数以验证块的完整性?

块包含一个标题和一些数据(通常是事务)。用于计算哈希的唯一部分是块标头。

块标头包含以下内容:

块标头

{版本4b} {上一个块哈希32B} {merkle root hash 32b} {time 4b} {bits 4b} {nonce 4b}