区块、链和共识

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

区块、链和共识

💡 区块链的基础数据结构

准备

Hash

  1. Hash也称散列、哈希。基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出(更多解释见知乎)

  2. 特点是:相同的输入一定得到相同的输出,不同的输入大概率得到不同的输出

  3. 举例:用shell命令行下的md5sum 来计算任意的字符的MD5哈希

    $ md5sum <<< haha
    7494ab07987ba112bd5c4f9857ccfb3f  -
    $ md5sum <<< hehe
    e4439267203fb5277d347e6cd6e440b5  -
    $ md5sum <<< hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
    6f2362c812dcfd693da2e3ae537cfb41  -
    
  4. 常见的hash算法:

    1. 文件防篡改:MD5
    2. 比特币挖矿:SHA256
    3. 证明数据片段:Merkle root
    4. 文本去重:SimHash

区块

区块(block)由区块头(block header)和交易列表(transaction list,tx list)组成,block之间通过block header的hash连接成了一个链表结构。

block header

  1. 比特币的block header(Github)
int32_t nVersion;
uint256 hashPrevBlock;
uint256 hashMerkleRoot;
uint32_t nTime;
uint32_t nBits;
uint32_t nNonce;
  1. 以太坊的block header(Github)
ParentHash  common.Hash    `json:"parentHash"       gencodec:"required"`
UncleHash   common.Hash    `json:"sha3Uncles"       gencodec:"required"`
Coinbase    common.Address `json:"miner"            gencodec:"required"`
Root        common.Hash    `json:"stateRoot"        gencodec:"required"`
TxHash      common.Hash    `json:"transactionsRoot" gencodec:"required"`
ReceiptHash common.Hash    `json:"receiptsRoot"     gencodec:"required"`
Bloom       Bloom          `json:"logsBloom"        gencodec:"required"`
Difficulty  *big.Int       `json:"difficulty"       gencodec:"required"`
Number      *big.Int       `json:"number"           gencodec:"required"`
GasLimit    uint64         `json:"gasLimit"         gencodec:"required"`
GasUsed     uint64         `json:"gasUsed"          gencodec:"required"`
Time        uint64         `json:"timestamp"        gencodec:"required"`
Extra       []byte         `json:"extraData"        gencodec:"required"`
MixDigest   common.Hash    `json:"mixHash"`
Nonce       BlockNonce     `json:"nonce"`

// BaseFee was added by EIP-1559 and is ignored in legacy headers.
BaseFee *big.Int `json:"baseFeePerGas" rlp:"optional"`
  1. 当前我们只需要关注其中两个字段(其他字段会在后续课程中解释)
    1. hashPrevBlock /ParentHash,上一个block header的hash
    2. hashMerkleRoot/TxHash,tx list的hash

block body

区块链叔块,区块链基础,区块链

block body

  1. block body就是tx list,block header通过TxHash指向唯一的tx list
  2. 从tx hash list得到TxHash的hash算法叫做默克尔树(Merkle tree),相比其他的hash算法有特殊的性质(可以简洁地证明tx存在其中)

区块链叔块,区块链基础,区块链

  1. block header通过ParentHash指向唯一的上个block header,并最终形成一条链
    1. 高度为0的block称之为Genesis,即创世区块

      1. 写死在程序里(Github)

      2. 也可以在btc.com上看到比特币的创世区块,以及中本聪留下的那句话

        区块链叔块,区块链基础,区块链

        比特币创世区块上记录的报纸头条文章标题

    2. 高度最高的block称之为Tip,即最新区块

    3. 可以在etherscan上观察以太坊链的情况

  2. TxHashParentHash相结合,赋予了区块链不可篡改的特性

共识

只讲对数据结构有影响的知识点,不深入讲共识算法。

block reward

  1. 为什么:激励节点出块

    1. 对tx的有效性达成一致

      区块链叔块,区块链基础,区块链

      比特币的双花攻击(double-spending attack)

    2. 对tx的顺序达成一致

    区块链叔块,区块链基础,区块链

    以太坊的三明治攻击(sandwich attack)

  2. 怎么做:Coinbase

    1. 在block里包含一笔特殊的交易或是记录在block header里

    2. 包含block reward和所有tx fee/gas

    3. block reward一般设置为n年减半或是恒定

      区块链叔块,区块链基础,区块链

      比特币挖矿奖励减半表格

Nakamoto consensus

  1. 为什么:对block的有效性达成一致

    1. 决定每个高度上使用哪个block
      1. tx list
      2. block reward
  2. 怎么做:PoW(Proof of Work)算法

    1. 调节block header:NonceTxHash
    2. 让block header的hash小于Target
      1. 可以看到比特币的block hash都是一堆0开头的(btc.com)
      2. nBits会随着nTime调整,保持区块间隔时间为10分钟
    3. 多个block时的选择
      1. 谁的块先出用谁的

      2. 谁的链更长用谁的

        区块链叔块,区块链基础,区块链

        Youtube上找到的说明最长链法则(longest chain rule)的视频

  3. 分析:这种争抢出块权的方式称作中本聪共识

    1. 去中心化、可用性、终局性的取舍
      1. 去中心化:节点多、permission-less、节点对等(都能出块)、网络差
      2. 可用性/liveness:链持续接受新数据写入、交易随时上链、网络不会停止出块
      3. 终局性/safety:所有节点对数据达成一致、写入的数据不可撤销、状态不可逆
      4. 保证去中心化、可用性,弱化终局性
      5. 用经济手段来强化终局性(比特币交易确认时间是6block)
    2. 中本聪共识的优点在于完全的去中心化、免信任
      1. 不阻止节点破坏共识而是让其付出经济代价
      2. 全网所有节点都是恶意但趋利的就能正常工作
    3. 中本聪共识的风险在于51%攻击/Selfish Mining
      1. 控制全网一半以上的算力,即可无视别人的block,构建只包含自己block的链,并在block选择中胜出
      2. 不断改变算法实现中所依赖的硬件来降低风险
  4. 举例:中本聪共识的实现

    1. Bitcoin(ASIC)、Ethereum(GPU)、Monero(CPU)、Arweave(CPU+IO)
  5. 非中本聪共识(简述)

    1. 市场经济→计划经济:拜占庭共识

      1. 怎么做:
        1. 弱中心化:有限且固定数量的出块节点
        2. 指派:轮到某个节点出块
        3. 投票:超过2/3的出块节点同意
        4. 无难度,出块间隔固定
      2. 分析:保证终局性,弱化可用性、去中心化
      3. 举例:dPoS(delegated Proof of Stake)的算法大都属于拜占庭共识
        区块链叔块,区块链基础,区块链

      Practical Byzantine Fault Tolerance(PBFT)共识

    2. 介于市场经济和计划经济之间:可验证随机数

      1. 怎么做:通过所有节点可验证的随机数生成器来不断指派一个或多个节点出块

        1. 随机数生成器
          1. 链上的随机数
          2. VDF(Verifiable Delay Function)、VRF(Verifiable Random Function)
          3. 第三方随机数服务
        2. 所有节点候选,按power为概率被选中,一个高度可能有0到多个被选中
        3. 有难度调整,出块间隔固定
      2. 分析:和中本聪共识一样保证去中心化、可用性,弱化终局性

        1. 和中本聪共识的区别是在分叉上出块无需额外代价,需要打补丁来强化终局性
        2. 比如stake slashing、revert limit等,限制在分叉上出块
      3. 举例:

        1. Proof of Stake:Qtum、Algorand、Solana
        2. Proof of Storage:Filecoin、Chia

        区块链叔块,区块链基础,区块链

        Filecoin最早期的共识算法

分叉

  1. 分叉的原因:去中心化、区块间隔、终局性的取舍

    1. 去中心化程度越高,网络环境越差
      1. block和tx的全网同步速度变慢
      2. 节点难以时刻保持同步
    2. 区块间隔时间越短,节点越容易在非最新高度上出块
  2. 分叉的结果:

    1. 孤块(orphant block)

    区块链叔块,区块链基础,区块链

    比特币网络中的孤块

  3. 分叉的缓解(Etherscan):

    1. 一个block能包含最多2个(Github)叔块(uncle block)在UncleHash
    2. 奖励
      1. 每包含一个叔块,能增加少量的block reward
      2. 被包含的叔块,能获得大部分的block reward
    3. 激励节点切换到被更多人所共识的链上
      1. 你出的块我已经给你算上了,赶紧切换到最长链吧

    区块链叔块,区块链基础,区块链

    以太坊网络中的叔块

总结

  1. 区块链是去中心化网络环境下,具有极高可用性、较高终局性的数据库设计

  2. coin和block reward是保证区块链在去中心化环境下能够运行的前提

  3. 继完全去中心化的公有链之后又产生了几种弱中心化的链

    1. 减弱去中心化换来更高的终局性和更短的区块间隔

    2. Hybrid:delegated PoS系列

      区块链叔块,区块链基础,区块链

  4. 继blockchain之后又产生了DAG(Directed Acyclic Graph)的数据结构

    1. 允许block/tx的并发,TPS提升
    2. 分叉加剧,终局性降低
    3. IOTA、Conflux、Avalanche

    区块链叔块,区块链基础,区块链文章来源地址https://www.toymoban.com/news/detail-785213.html

到了这里,关于区块、链和共识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 区块链的共识与共识机制

    目录 共识定义 为什么要有共识机制? 矿工的本质 共识机制的本质

    2024年02月13日
    浏览(50)
  • 越南的区块链和NFT市场调研

    https://zh.wikipedia.org/wiki/%E8%B6%8A%E5%8D%97 语言文字: 越南语, 文字以国语字(越南罗马字)为主,汉喃文(汉字) 货币:越南盾 人口(2022): 9910万 , 世界排名第15名, 城市人口: 38.05% ( 3765万 ) 农村人口: 61.95% ( 6144万 ) 城市: 胡志明市: 899万 人口 河内(首都): 800万 人口 岘(音

    2024年02月13日
    浏览(45)
  • 泰国的区块链和NFT市场调研

    参考: https://zh.wikipedia.org/zh-hans/%E6%B3%B0%E5%9B%BD 参考: https://hktdc.infogram.com/thsc–1h7k2303zo75v2x zz制度: 君主立宪制(议会制) 国王: 玛哈·哇集拉隆功 总理: 巴育·占奥差 语言文字: 泰语 民族: 86% 暹罗泰族, 3% 高棉人, 2% 马来人, 9% 其他 宗教: 93.5% 佛教, 5.4% 伊斯兰

    2024年02月13日
    浏览(54)
  • 区块链中的共识机制以及共识算法

    目录 什么是共识 什么是共识机制 共识机制类型 1、基于工作证明(Proof of Work PoW) PoW的特点

    2024年02月11日
    浏览(46)
  • 菲律宾的区块链和NFT市场调研

    参考: https://zh.wikipedia.org/wiki/%E8%8F%B2%E5%BE%8B%E5%AE%BE zheng治制度:Zongtong议会制 现任Zongtong: 小费迪南德·马科斯, 是独裁者费迪南德·马科斯之子,人称“小马科斯” 官方语言: 菲律宾语、英语 种族: 米沙鄢人(33.8%)、他加禄人(27.7%)、 伊洛克人(9.8%)、华人(1.2%)、

    2024年02月13日
    浏览(57)
  • 构建现代应用程序:区块链和加密货币架构

    作者:禅与计算机程序设计艺术 本文是结合互联网和金融领域相关的专业背景知识,对比分析区块链和加密货币技术在不同场景下的应用以及优劣势,从而阐述如何构建现代应用程序。我们将阐述以下几个方面: 1)什么是区块链和加密货币? 2)区块链和加密货币的特点、

    2024年02月14日
    浏览(37)
  • 马来西亚的区块链和NFT市场调研

    参考: https://zh.wikipedia.org/wiki/%E9%A9%AC%E6%9D%A5%E8%A5%BF%E4%BA%9A zz制度:联邦议会制 语言文字: 马来语 民族: 69.4%原住民(土著),23.2%华裔, 6.7%印度裔, 8.3%非公民 宗教: 61.3% 伊斯兰教, 19.8% 佛教, 9.2% 基督教, 6.2% 印度教 货币: 马来西亚林吉特(MYR) 人口: 3298万 马来西亚 78.2% 的

    2024年02月13日
    浏览(41)
  • 【时间之外】区块链和BT的技术是孪生的吗?

    #元宇宙#, #NFT#,这些现在大家耳熟能详的概念,其基础都是 #区块链# ,对我这种喜欢搞清楚原理的, 当然喜欢学习一下原理,以便能够从本质上理解,不要被表面的技术概念和资本骗局忽悠。从第一次看到区块链,就感觉跟BT很像(个人观点,肯定会被新新人类和资本歧视

    2024年01月16日
    浏览(37)
  • 【元宇宙】5个视角,重新看待区块链和元宇宙

    我认为,在元宇宙的背景下,以及在整个社会中,有5种视角可用于思考区块链的意义。 5 种视角,赋能区块链的创新理解 第一,它是一种因为炒作和人们一时的狂热而流行起来的技术,且会导致大量的浪费,它受到关注不是因为它的优点,而是因为短期的投机。 第二,区块

    2024年02月07日
    浏览(34)
  • 区块链和人工智能的关系以及经典案例

             目录 1.区块链与人工智能的关系 2.应用案例:基于区块链的医疗数据共享平台 2.1背景 2.2方案 2.3优势 2.4挑战         区块链技术和人工智能(AI)是两种不同的技术,但它们之间存在着互补关系。区块链技术提供了一种安全、透明、去中心化的数据存储和传输

    2024年03月13日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包