区块链技术中比特币使用的数据结构和对应的哈希算法应用

xinyi1102 2022-05-11 00:09:53

比特币使用的数据结构:

  1. 区块链:比特币中最基本的数据结构就是区块链。区块链就是由一个一个区块组成的链表,区块链和普通的链表的区别就是hash指针代替了普通的指针。
  2. Merkle Tree:区块链利用Merkle树的数据结构存放所有的叶子结点的值,Merkle树的叶子是数据块的hash值,非叶节点是其对应子节点串联字符串的hash。
  3. Merkle Proof:比特币中的节点分为两类,一类是全节点,一类是轻节点,全节点保存整个区块的内容(即有block header和block body),轻节点只保存block header。轻节点不包含block body,但是交易信息是在block body里面的,轻节点想要查询一个交易消息是否存在,则需要Merkle Proof。

比特币对应的哈希算法应用:

  1. collision resistance(哈希碰撞):所谓哈希碰撞就是给出两个不同的输入,通过哈希计算得出相同的散列值。但是目前还没有在数学上证明哈希碰撞的性质,只是实践经验。在比特币中使用的是哈希算法是Hash(SHA—256)。
  2. hiding:加密过程不可逆,也就是可以通过x—>H(x),但是不能通过H(x)计算得到x。由此可以看出这个性质可以进行数据隐藏。
  3. puzzle friendly:哈希算法中通过输入值很难预测出哈希值。在比特币挖矿中,挖矿也就是寻找一个随机数nonce,然后将随机数nonce和区块头中的其他信息作为输出,得到一个符合条件的哈希值H(blockheader)≤target(target为阈值)。所以只能通过输入不同的nonce值测试,使得整个blockheader取哈希小于阈值。
...全文
47 回复 打赏 收藏 举报
写回复
回复
切换为时间正序
请发表友善的回复…
发表回复
相关推荐
发帖
江信Python研究社区
加入

170

社区成员

一个专注于研究python语言的社区
社区管理员
  • 勤奋龙
  • 没有一分是自己的
  • Rye758
帖子事件
创建了帖子
2022-05-11 00:09
社区公告
暂无公告