【BTC】数据结构

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

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

btc交易数据结构,区块链,数据结构,区块链

一、区块链

所谓的区块链是由一个个区块构成的链,其中,每一个区块包括两个部分,分别是块头(block header)和块身(block body),块头中包含了指向前一个区块的哈希值指向块身中 Merkle Tree 的 merkle root hash时间戳等信息,块身中包含了交易数据列表。

区块链与普通链表相似,但是存在一定的区别:

(1)区块链用哈希指针代替了普通指针

(2)区块链具有防篡改、易验证的性质

区块链这种数据结构具有防篡改(tamper-evident log)的性质,这与普通链表是不同的。当对普通链表中的任意元素进行修改时,对其他元素是没有影响的,而区块链是牵一发而动全身的,由于每个区块都保留了由前一区块计算得到的哈希指针,因此,改变前面的任意一个区块,都会导致后面区块的哈希指针完全对不上,从而引发多米诺骨牌效应,实现对数据篡改的定位。

二、Merkle Tree

所谓的 Merkle Tree 是一种与 Binary Tree 类似的数据结构,用于组织和存储区块链中的交易信息,且主要存放在每个区块的块身中。在 Merkle Tree 中的每个叶节点对应一个交易数据块,其他节点用于存储左右子节点的块哈希值。

Merkle Tree 与 Binary Tree 相似,但是存在一定的区别:

(1)Merkle Tree 用哈希指针代替了普通指针

(2)Merkle Tree 可以高效验证某笔交易写入了区块链

在区块链的系统中,可以将网络中的节点分为全节点和轻节点,全节点存放了区块链的完整数据信息(既保留了区块的块头又保留了完整的块身),轻节点如 BTC 钱包等应用只存放了区块的部分数据信息(仅保留了区块的块头)。如果与某一轻节点之间进行交易,且需要向该轻节点证明某个交易是写入区块链了,则这时可以使用上 Merkle Tree 这一数据结构的 merkle proof。

btc交易数据结构,区块链,数据结构,区块链

merkle proof 的验证过程是这样的,假设待验证交易是颜色为黄色的 tx 块(如上图),则轻节点可以在本地计算出指向该 tx 的 H()(图中最下层的绿色 H()),并向网络中其他全节点请求验证需要的其他 H()(图中所有的红色 H()),之后,利用请求得到的红色 H() 和指向 tx 的 H(),从叶子节点一路向根节点方向计算块哈希(除指向 tx 的 H() 外的其他绿色 H()),当达到最顶层时,利用最顶层的两个 H()(图中最顶层中一红一绿的 H())计算出 root hash,最后将计算得到的 root hash 与区块头中存储的 merkle root hash 比较,如果相同,则证明该交易已经写入区块链。

当然利用 Merkle Tree 结构也可以证明交易数据中没有包含某一交易块,这时需要全节点将完整的树结构发给轻节点,轻节点通过依次比对交易块哈希值进行验证,时间复杂度为 Θ ( n ) \Theta(n) Θ(n) 。另一种比较高效的方法是使用 Sorted Merkle Tree,即是交易的哈希值按大小排序的 Merkle Tree(需要排序),此时验证的时间复杂度是 Θ ( l o g ( n ) ) \Theta(log(n)) Θ(log(n))。然而,由于 BTC 中没有涉及这一验证需求,因此,BTC 中使用的是未经过排序的 Merkle Tree 数据结构。文章来源地址https://www.toymoban.com/news/detail-791595.html

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

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

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

相关文章

  • BTC交易数据 - 文章索引

    如果你对比特币交易技术感兴趣,这一系列深度解析文章绝对值得一读。从 BTC 交易数据的总览、VarInt 类型的详解,到 nLockTime 的应用和比特币脚本的执行过程,每篇文章都揭示了比特币交易背后的精妙机制。无论你是初学者还是经验丰富的开发者,这些文章都提供了对比特

    2024年02月21日
    浏览(39)
  • BTC交易费激增,LTC活跃地址数飙升! BRC-20爆火背后,区块链网络经历了什么?

    BRC-20 代币和 Ordinals 协议的日益普及推动了对比特币区块空间的需求,比特币区块链的费用已飙升至两年来的高点。 BRC-20代币标准在 Ordinals 协议上运行。Ordinals 允许用户通过将对数字艺术的引用写入基于比特币的小型交易中,来将数据嵌入比特币区块链。Ordinals最初实现了在

    2024年02月15日
    浏览(50)
  • BTC交易模式 - UXTO

    我们常用的 支付宝,银行卡 都是以账户的形式,根据每笔交易,进行余额的增减。 UXTO(Unspent Transaction Output),在一笔BTC交易中,包含 输入 和 输出 。可以将 付款人支付的BTC 理解为 输入 ,输入 就是 上次交易获得的UXTO ;输出可以理解为 收款人收到的BTC ,以及付款人付

    2024年02月21日
    浏览(41)
  • BTC交易模式 - UXTO - 工具整理

    UXTO 相关工具分析 https://mempool.space/signet/ 测试网浏览器 https://bitcoin.org/zh_CN/choose-your-wallet BTC钱包 正文链接:BTC交易模式 - UXTO

    2024年01月25日
    浏览(39)
  • btc交易得不到确认,被卡

    你有没有经历过比特币转账卡在等待状态,无法得到确认而束手无策? 当被卡在内存池时(mempool),如何验证被卡住的BTC交易? 跟着我们往下看,一起了解交易被卡住的原因和解决方案。 交易被卡往往是因为你设置的交易费过低。简单来说,手续费太低意味着矿工会优先考

    2024年01月19日
    浏览(37)
  • 区块链技术3--BTC协议

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

    2024年02月09日
    浏览(41)
  • 区块链笔记4--BTC实现

    区块链是一个去中心化的账本,比特币采用了 基于交易的账本模式 。然而,系统中并无显示记录账户包含BTC数,实际上其需要通过交易记录进行推算。在比特币系统中,全节点需要维护一个名为 UTXO(UnspentTransaction Output尚未被花掉的交易输出) 数据结构。 如图:A转给B五个B

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

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

    2024年01月19日
    浏览(42)
  • 无需主网结算来进行 BTC 交易?Tectum 提出了新的解决方案

    撰文:Tom,CryptoBooster  下载TechubNews APP,探索Web3的无限可能!掌握最新动态,发现更多相关资讯,与行业领袖共同探索未来趋势。立即下载,开启您的Web3之旅! 区块链发展至今,公链开发者的努力方向都是更高效的智能合约公链,从 Avanlanche 的子网,到 NEAR 的分片,再到

    2024年01月17日
    浏览(38)
  • 【区块链学习笔记01】BTC-密码学原理-哈希函数

    区块链中最基础的密码学原理就是哈希算法,以下为哈希函数的简单介绍: 哈希函数是一种只只能加密但是不能解密的算法,哈希函数可以将任意长度的信息转化为固定长度的字符串。类似“8b46ec792e943de34605981980751a3c1e008218f77eeb27e474b594f7685019”这样。 当输入相同的值时,得到

    2024年02月03日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包