区块链技术与应用2——BTC-数据结构

这篇具有很好参考价值的文章主要介绍了区块链技术与应用2——BTC-数据结构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

比特币-数据结构

区块链技术与应用2——BTC-数据结构

1. 区块链(block chain)

哈希指针:

(1)保存数值的位置
(2)保存数值的哈希值

区块链:一个使用哈希指针的链表
区块链技术与应用2——BTC-数据结构

genesis block:创世块(最开始创建的块)
most recent block:最近创建的块
tamper-evident log:篡改证明记录

每一个当前区块都保存了上一个区块所有内容的哈希值与位置,形成了一个哈希指针,保存在当前区块中,所有区块利用哈希指针形成了区块链。最后一个区块的哈希指针保存在系统内部

当区块链中某一个区块(图中红色区块)的内容遭到篡改,那么这个区块后面的所有区块(图中红色区块右边的区块)中的哈希指针都要修改。因此只需要通过对比最后一个区块的哈希值是否被修改就能够察觉整个区块链上的区块是否遭到了篡改。

有了这个性质,比特币上的某些节点无需保存所有的区块,有的可能只保存了离自己最近的几千个区块。如果要用到更靠前的区块,那么可以向其他人询问,但如何保证询问到的区块是可靠的呢?只需要对比保存的区块的最前面一个区块内保存的的哈希值别人给的区块的哈希值是否一致即可。

2. 默克尔树(Merkle tree)

默克尔树:一个使用哈希指针的二叉树。树中包含数据块(交易记录)和哈希指针。
区块链技术与应用2——BTC-数据结构

区块的结构:

(1)block header:保存了root hash
(2)block body:保存交易记录数据信息

Merkle tree的用途:向轻节点证明某个记录被写入到了区块链。proof of membership或proof of inclusion

比特币中有两种节点(区块):
轻节点:只保存block header
全节点:既有block header,又有block body

Merkle proof:
区块链技术与应用2——BTC-数据结构
图中圈起来的节点就是轻节点。
a. 首先需要向某个全节点请求一个Merkle proof路径,并请求路径上需要的哈希值(图中红色H)
b. 然后计算需要证明的记录的哈希值,然后通过给定的路径一步一步计算哈希值,直到计算到根哈希值(root hash)
c. 因为轻节点中是保存了block header的,而block header中保存的是root hash,因此只需要对比计算出来的root hash是否与保存的root hash一致即可。

Merkle tree的第二个用途:proof of non-membership,证明某个交易不在某个轻节点中。

使用sorted Merkle tree:对交易记录tx的哈希值进行排序,如果计算出待证明tx的哈希值不在这些值里面,而在某两个tx哈希值之间,那么按照Merkle proof的路径计算这两个tx的哈希值,一直算到root hash,看是否被篡改,如果没有被篡改,则证明待证明tx不在该轻节点中。

比特币中没有用到sorted Merkle tree,这是因为比特币中不需要proof of non-membership。

3.哈希指针的问题

只要是该数据结构不存在环,那么就可以使用哈希指针,如果存在环,就会存在循环依赖的问题。
区块链技术与应用2——BTC-数据结构文章来源地址https://www.toymoban.com/news/detail-462066.html

到了这里,关于区块链技术与应用2——BTC-数据结构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《区块链技术与应用》(六)——BTC分叉篇 北京大学肖臻老师《区块链技术与应用》公开课笔记

    BTC分叉篇 https://download.csdn.net/download/djklsajdklsajdlk/87177757 BTC分叉篇 GitHub链接

    2024年02月11日
    浏览(32)
  • [北大肖臻-区块链技术与应用笔记]第八节课——BTC 分叉

    state fork 如果两个节点差不多同时挖到一个区块,这两个区块都是挂在当前的区块上的,不同节点先收到的区块不同,就会各自沿着先收到的区块往下扩展,这种时候就会出现临时性的分叉,称为 state fork ,即由于对区块链当前的状态有意见分歧而产生的分叉。 分叉攻击(

    2024年02月08日
    浏览(22)
  • [北大肖臻-区块链技术与应用笔记]第八节课——BTC 脚本

    比特币系统中使用的脚本语言很简单, 唯一能访问的内存空间就是一个栈 ,这点和通用脚本语言的区别很大。 这个交易有一个输入和两个输出,其中一个输出已经被花出去了,另一个没有被花出去。 输入脚本 输入脚本包含两个操作,分别将两个很长的数压入栈中。 输出脚

    2024年01月21日
    浏览(55)
  • 02-BTC-数据结构

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 二、区块链 三、Merkel tree 总结     今天看了北大肖臻老师《区块链技术与应用》公开课,有很大收获,在此写博客以做笔记,加深印象,若有不当之处,欢迎斧正。 一、比特币中的数据结构

    2024年01月19日
    浏览(38)
  • 【BTC】数据结构

    BTC 中对交易数据的存储主要涉及到了两种数据结构,一种是区块链,一种是 Merkle Tree。这两种数据结构组成了 BTC 中完整的区块链结构(如下图所示),共同完成对数据的存储和验证,确保交易的有效性。 所谓的区块链是由一个个区块构成的链,其中,每一个区块包括两个部

    2024年01月15日
    浏览(29)
  • 《区块链原理与技术》学习笔记(五) ——以太坊的交易、共识机制和数据结构

    《区块链原理与技术》学习笔记 第五部分 5. 以太坊交易 5.1 交易内容 5.2 交易费用 5.3 交易的周期 5.4 交易的执行类型 6. 以太坊的共识机制 6.1 解决以太坊分叉:Ghost协议 6.2 新的共识机制:PoS 7. 以太坊挖矿难度调整 7.1 自适应难度调整 7.2 难度炸弹 8. 数据结构与存储 8.1 区块和

    2024年02月12日
    浏览(32)
  • 区块链技术3--BTC协议

    双花攻击 数字货币本身为带有签名的数据文件,可以进行复制。即:对用户来说,可以将同一货币花费两次。 对货币添加唯一编号(不可篡改),每次支付向货币发行单位查询真伪。 该方法每次交易都需要依赖于第三方机构来判断货币真伪且防止双花攻击。是一个典型的第

    2024年02月09日
    浏览(30)
  • 区块链技术5--BTC网络

    用户将交易发布到BTC网络上,节点收到交易后打包到区块,然后将区块发布到BTC网络上。 比特币工作于网络应用层,其底层(网络层)是一个 P2P Overlay network(P2P覆盖网络) 。比特币系统中所有节点完全平等,不像一些其他网络存在超级节点(super node)。要加入网络,至少需要

    2024年01月19日
    浏览(35)
  • 什么是区块链?区块链技术和比特币背后的故事

    作者:禅与计算机程序设计艺术 区块链是一种分布式的、去中心化的、非国家级的计算机网络技术,它是一个开放的系统,任何人都可以在不受任何约束的情况下进行去信任的数据交易和共识。它的应用场景包括数字货币,数字身份,金融交易,游戏领域,基于区块链的智慧

    2024年02月08日
    浏览(31)
  • 区块链的数据结构(一)——区块、链

            区块(block)由区块头(block header)和交易列表(transaction list,tx list)组成,block之间通过block header的hash连接成了一个链表结构。但这个链表不同于普通链表。 1. block header 比特币的block header: 以太坊的block header: hashPrevBlock / ParentHash ,上一个block header的hash h

    2024年02月13日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包