前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >bitcoin-02-比特币技术体系

bitcoin-02-比特币技术体系

作者头像
潇洒
发布2023-10-23 08:46:16
2760
发布2023-10-23 08:46:16
举报
文章被收录于专栏:石头岛石头岛

学习区块链技术,首先应该了解最经典的 比特币。比特币做为最早的分布式去中心化的区块链应用,其经典设计值得学习。

比特币架构

比特币通过将各项技术进行结合,创造出来的这个产品,其本质的功能是记账,副做用是炒。 比特币的设计是为了保证所有数据是分布式的、去中心化的保存数据,防止数据在中心的节点中保存。

架构图
架构图

自上而下,共分6层

  1. 应用层
  2. RPC 层
  3. 网络层
  4. 共识层
  5. 数据层
  6. 存储层

1.应用层

包括比特币钱包、客户端等种上层的应用,一般是比特币程序本身的外部应用。 以比特币钱包为例,比特币钱包有很多种,可以上官网上下载不同钱包,比如最简单的钱包,早期这个钱包还保留有CPU挖矿功能。现在版本已不支持,可以参考官方 Github 文档:

https://github.com/bitcoin/bitcoin/blob/master/doc/release-notes/release-notes-0.13.0.md

PC钱包
PC钱包

2.RPC 层

RPC 层的作用是进行RPC 通信。测试可以使用 BitCore 这个工具来进行测试。

测试一个 RPC 命令,查看区块信息: getblockchaininfo 命令行

钱包
钱包
代码语言:javascript
复制
{
  "chain": "main",
  "blocks": 680816,
  "headers": 680816,
  "bestblockhash": "0000000000000000000133b07fdf287ddca3cca80162b4a06a05d6904190cd37",
  "difficulty": 23581981443663.85,
  "mediantime": 1619518237,
  "verificationprogress": 0.999995596389184,
  "initialblockdownload": false,
  "chainwork": "00000000000000000000000000000000000000001c943902d1cf6cdd1387c75c",
  "size_on_disk": 1904190175,
  "pruned": true,
  "pruneheight": 679647,
  "automatic_pruning": true,
  "prune_target_size": 1999634432,
  "softforks": {
    "bip34": {
      "type": "buried",
      "active": true,
      "height": 227931
    },
    "bip66": {
      "type": "buried",
      "active": true,
      "height": 363725
    },
    "bip65": {
      "type": "buried",
      "active": true,
      "height": 388381
    },
    "csv": {
      "type": "buried",
      "active": true,
      "height": 419328
    },
    "segwit": {
      "type": "buried",
      "active": true,
      "height": 481824
    }
  },
  "warnings": ""
}

3.网络层

网络层使用 Peer-to-Peer,即点对点通信。每个BTC网络当中的节点中的通信,没有中心化的节点进行转发,需要通过节点发现,进行通信。 这也体现出BTC网络中当,每个节点都是平等的节点,没有哪个节点可以控制其他节点。

这种去中心化的好处就是可以做到节点之间的平等,但是也存在几个问题。

  1. 网络延迟
  2. 联合作敝

3.1 网络延迟很好理解,由于节点之间是平等的,每个节点都会呈现为网状的连接,当一个区块被生产出来后,会同步到相邻的网络节点当中,进行相邻转发。并不是通过中心节点订阅或转发的,一个区块到达所有的节点会有网络延迟。

3.2 联合作敝,去中心化的通信,节点间的数据只能依赖于依赖于各个节点间的验证,那就给做敝留下了空间。

4.共识层

什么是共识,这个非常重要,非常重要。 因为在平等的网络当中,每个节点都是分散的,该如何保证每个节点的验证、转发是一致? 这就需要每个节点与节点之间达成共识。以此来保证所有节点的行为一致。

什么是共识 共识就是,共识即认可,比特币中有很多节点,要让这些节点达成一致性,比特币采用的是:POW 工作量证明。 比特币共识:说白点就是大家通过计算一个随机生成的Hash值的方式,来决定谁先打包。是不是感觉没什么,计算这个Hash并不是一件马上就可以算出来的事情。 大概流程:

  1. 所有比特币中的交易会向所有节点广播,所有节点接收到交易后,放于交易队列当中
  2. 全世界所有节点通过计算 Hash 来决定谁交这些交易打包,先算出者,打包交易成一个区块并广播区块
  3. 打包者,将一个随机数加处块头中,使得计算的哈希结果小于或等于块头中目标值
  4. 其他节点收到区块后,验证区块和区块内的交易,验证正确保留该区块

为什么要给一个随机Hash数来给节点计算 为了证明这个块的正确性。比特币的区块链当中,第一个节点产生的第一个块叫做:创世块,这个块是比特币运行时产生的第一个块,这个块会产生一个随机Hash数,打包进第一个块的块头中,然后广播。 其他节点收到区块后,对这个创世块进行验证。先验出者,证明了这个块是正确的,然后根据这个创建块,将收到的交易进行打包,并链接到这个创世块后面,就成了第二个块,并且这个节点也根据收到的交易产生了个随机Hash,广播给其它节点。 其他节点收到后,重复这个流程,证明这个块的正确性,并进行上链。这个就是 POW 的义意。

5.数据层

数据层是指比特币的数据结构。比特币的数据结构比较典型,很多后来的区块链都借鉴这些数据模型。

  1. 区块
  2. 区块链
  3. Merkle树,也称,默克尔树
  4. Hash
  5. 时间戳
区块

是指将交易进行打构的区块数据结构,包含:区块头、区块体、哈希、时间戳 等。

区块链

是指由区块构成的链条,就是指区块链,比较直白。

Merkle树,也称,默克尔树

Merkle树的作用:防窜改。 这里仅需要知道即可,这些点每一个展开都是一个大点,后续会做很详细的讲解。 Merkle树的构成是通过将每一笔交易的哈希,自上而下,相邻两个节点向上构建出一个新的父哈希值,由此来构建一棵哈希树。

6.存储层

存储主要使用的是 LevelDB,进行存储,LevelDB 是基于 SSTable 进行设计实现的一个数据引擎。很多数据库都是基 LevelDB 进开发。 LevelDB 本身具体高性能读写,通过在内存缓存 和 多层级文件存储而取名 LevelDB。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 比特币架构
    • 1.应用层
      • 2.RPC 层
        • 3.网络层
          • 4.共识层
            • 5.数据层
              • 区块
              • 区块链
              • Merkle树,也称,默克尔树
            • 6.存储层
            相关产品与服务
            区块链
            云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档