当前位置: 首页 > news >正文

北大肖臻《区块链技术与应用》学习笔记

区块链学习笔记 \huge{区块链学习笔记} 区块链学习笔记
这是关于北京大学肖臻老师的《区块链技术与应用》课程的学习笔记。

BTC的数据结构

hash pointers:既保存结构体的对应地址位置(指针),又保存结构体对应映射的hash值(hash)。
区块链:本质就是一个一个区块组成的链表。
Block chain is a linked list using hash pointers.
在这里插入图片描述
后区块的hash pointer存放的是前区块的地址以及hash值。
对于一个区块的hash是连同这个块中所有的内容来取hash值的。
tamper-evident log:因为区块链中后区块存放着指向前一个区块的指针,如果其中的一个区块发生了变化,那么后续的区块指针都会变化,最终导致最后一个区块的hash pointer发生变化,从而可以侦测数据的变化以及变化的位置

Merkel tree:相对于binary tree来讲,使用了哈希指针来代替了普通的指针。
在这里插入图片描述
树顶的块拥有的是根哈希值(对于根节点取hash 的哈希值)
在这里插入图片描述
对于Merkel树上任何一个节点的修改,都能通过根hash值来进行检索。

block header:存放hash值,但是不保存交易的具体信息。
block body:保存交易的具体信息。
Merkel proof:
在这里插入图片描述
树中最低层的交易(叶子节点),双亲节点中存储的hash值组合,然后逐级向上寻找节点,最后找到根节点,然后比较接收的Merkel proof中存储的信息与最终找到的信息是否一致,如果一致就说明这个交易就是发生在这个区块中。
collision resistance
proof of membership:O(logn)复杂度
proof of non-membership:O(n)复杂度
sorted Merkel tree:排序方便查询节点。

小细节:
在这里插入图片描述
对于普通的指针,上述结构是成立的,但是对于哈希指针就不成立,因为hash指针中的hash要根据指向的块的信息来确定,从而使得上述结构出现循环依赖。

相关文章:

  • MyBatis深度面试指南之三
  • 数据结构1 ——数据结构的基本概念+一点点算法
  • Java Optional 详解:优雅处理空指针异常
  • 【Docker基础】Docker容器管理:docker stats及其参数详解
  • 【笔记】 Docker目录迁移脚本
  • centos指令
  • 现代串口通讯UI框架性能对比
  • 机器人磁性夹具如何选?IXTUR气控永磁铁 MAP/MRP/LI-120系列负载能力与适用场景解析
  • 开源项目推荐:MCP Registry——管理MCP服务器的利器
  • Vue.js 中的 v-model 和 :value:理解父子组件的数据绑定
  • Python 可迭代的对象、迭代器 和生成器(何时使用生成器表达式)
  • Linux基本指令篇 —— more指令
  • Linu压缩解压
  • 平台组成-报表平台
  • 从台式电脑硬件架构看前后端分离开发模式
  • FPGA设计的用户约束
  • 基于微信小程序的旅游景点推荐设计与实现
  • PG靶机复现 Squid
  • ARM64 linux系统的一般执行过程
  • ​​Git提交代码Commit消息企业级规范