工作量证明的最长链原则到底说的是什么?

工作量证明的最长链原则到底说的是什么?

大家好,又见面了,我是你们的朋友全栈君。

777.png

 

前几天的一篇关于比特币的标准的文章引起了很多人的关注。在这篇文章中介绍了比特币的标准是什么以及Bitcoin Core(BCE)和Bitcoin Cash(BCH)符合哪些标准不符合哪些标准。最终经过对比,BCH只在白皮书中的工作量证明的最长链原则这一标准中输给了BCE,这也是在众多比特币标准中BCH唯一不符合的标准。

有些朋友看到之后对此产生了疑惑:目前BCH的区块高度不是比BCE要高吗?不已经是最长的链了吗?为什么还说它不符合最长链的原则?今天小编就对这个问题做一个简单的科普,希望能够帮助大家更好的理解。

什么是工作量证明的最长链原则

这一说法最初来自于中本聪的论文《比特币:一种点对点的电子现金系统》。文中提到:“信息尽最大努力在全网传播即可,节点(nodes)可以随时离开和重新加入网络,并将最长的工作量证明链条作为在该节点离线期间发生的交易的证明。”以及“工作量证明机制的本质则是一CPU一票。大多数的决定表达为最长的链,因为最长的链包含了最大的工作量。”

通俗来说就是,比特币区块是依靠矿工们不断进行数学运算而产生的,每一个区块都必须引用其上一个区块。如果想生成一个新的区块并写入区块链,必须解出比特币网络出的工作量证明的迷题。这道题关键的三个要素是工作量证明函数、区块及难度值。工作量证明函数是这道题的计算方法也就是SHA256,区块决定了这道题的输入数据,难度值决定了这道题的所需要的计算量。只有工作量最大的那条链才能被称为最长链,节点永远认为最长链才是有效的区块链,也只有在最长链上挖矿的矿工才能够获得奖励,这就是我们常说的比特币最长链原则。因此也可以说,累积难度值最大的那条链才是最长链。这也是比特币的重要标准之一。

为什么要制定这一规则?

因为比特币是去中心化的,是没有中心机构的,想要让所有的完整节点都有一份相同的公共总帐本,就需要达成共识。这一规则就是一种共识,能够保证比特币不停的在工作量最大的区块链上运转,工作量最大的区块链就是权威的公共总帐本。尤其当两个矿工同时挖出区块的时候,系统就会根据最长链原则进行取舍,即哪个新产生的区块能使其所在的区块链变得更长,则哪个区块得以被记录。如果两者一起记账就会造成区块链的分叉,这时会把其中有更多工作量的一条会继续作为主链,另一条作为备用链保存,如果新添加的区块使备用链累积了更多的工作量,那么这条备用链将被作为新的主链。

为什么BCH不是工作量证明的最长链?

由于BCH的挖矿难度比BCE小,所以现在BCH的区块高度确实比BCE要高,但是这并不是说明最长的链。因为BCH累积的难度值是远远小于BCE的。这一切都归结于BCH诞生之初为了能够在小算力环境下顺利的生存下来,修改了难度值的算法,降低了挖矿难度,所以现在的它还不是那条工作量证明的最长链。

虽然目前来说,BCH不是最长的链,但是BCH却是最符合中本聪白皮书的点对点电子现金系统。而且它现在在不断的高速发展,在未来当BCH的价格、用户和总市值都超过BTC之后,BCH超越BCE成为最长链也是有可能的。

转载于:https://my.oschina.net/u/3797746/blog/1808868

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/107531.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • GiD学习笔记「建议收藏」

    GiD学习笔记「建议收藏」GiD软件初步使用时,与一般传统的三维软件,思维方式很难一下子转变过来。它的最基本结构是几何结构,创建模型从点到线,线到面,面到体的顺序。网格面与几何体有截然不同的意义,所以在使用初期,需要先搞清楚一些基本概念。

    2025年6月8日
    2
  • JAVA保留两位小数(四舍五入)「建议收藏」

    JAVA保留两位小数(四舍五入)「建议收藏」importjava.math.BigDecimal;importjava.text.DecimalFormat;importjava.text.NumberFormat;publicclasstestNumber{ publicstaticdoublenum=3.1015926; publicstaticdoublezero=0.00000;

    2022年9月24日
    1
  • C中 GridView控件的使用

    C中 GridView控件的使用GridView 控件是一个 visualStudio 自带的数据控件 它可以非常快速的将数据以表格方式显示在 web 页面上 下面就是一个利用 GridView 控件进行数据绑定的小例子 内容如下 数据来源自一个 XML 文件 至于如何操作 XML 文件 这里不作详细描述 具体可以参考 http www cnblogs com programsky p 3816073 html1 XML 内容如下 xmlversion 1 0 encoding utf 8 gunbook gunbook

    2025年9月21日
    2
  • KaOS Linux放出最新版ISO镜像喜迎五周岁

    KaOS Linux放出最新版ISO镜像喜迎五周岁

    2022年4月2日
    68
  • 使用BurpSuite对app抓包教程

    使用BurpSuite对app抓包教程使用BurpSuite对app抓包教程1.前言这里给出burp2.0的下载链接:https://pan.baidu.com/s/1-UhPLXcLUEXDcMIWzT50fw提取码:vxym2.流程前提条件是保证安卓手机(模拟器)和笔记本都连在同一wifi下首先导出证书,选择Import/exportCAcertificate,在选择CertificateinDERf…

    2022年6月12日
    85
  • vue生成二维码_html生成二维码

    vue生成二维码_html生成二维码目录qrcodejs2vue-qrqrcodejs2下载qrcodejs2cnpmi-Sqrcodejs2使用<template><spanref=”qrCodeUrl”></span></template><script>importQRCodefrom”qrcodejs2″;exportdefault{data(){return{};},mo

    2022年10月4日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号