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

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

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

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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • spssχ2检验_一致性检验和配对卡方检验的SPSS实例操作图文详解[通俗易懂]

    spssχ2检验_一致性检验和配对卡方检验的SPSS实例操作图文详解[通俗易懂]一致性检验和配对卡方检验的SPSS实例操作图文详解,配对计数资料的卡方检验。一、问题与数据有两种方法可用于诊断某种癌症,A方法简单易行,成本低,患者更容易接受,B方法结果可靠,但操作繁琐,患者配合困难。某研究选择了53例待诊断的门诊患者,每个患者分别用A和B两种方法进行诊断(表1),判断两种方法诊断癌症有无差别,A方法是否可以代替B方法。表1进口药和国产药治疗效果二、对数据结构的分析之前介绍过成…

  • 回归分析数学建模_matlab 回归分析

    回归分析数学建模_matlab 回归分析一元线性回归变量之间的关系大致可分为两大类:确定性的关系:可以用精确的函数关系来表达。例如矩形面积S与边长a,b的关系。非确定性的关系:变量之间既互相联系但又不是完全确定的关系,称为相关关系。例如人的身高与体重、农作物产量与降雨量等的关系。从数量的角度去研究这种非确定性的关系,是数理统计的一个任务.包括通过观察和试验数据去判断变量之间有无关系,对其关系大小作数量上的估计、推断和预测,等等.回归分析就是研究相关关系的一种重要的数理统计方法.一元正态线性回归模型只有两个变量的回归分析,称

    2022年10月31日
  • idea中设置热部署

    idea中设置热部署首先我们再pom.xml中添加依赖和插件(下图两个红框)然后再进入idea左上角的file->setting,找到里面的compiler,把下图中红色的选项打钩,确定即可接下来要用到四个手指头了,依次按住Ctrl+Shift+Alt+/四个键,则会出现下面对话框,选中Registry然后出现下图,将compiler.automake.allow.when.app.running选项打钩然后把idea关掉再打开一下最后进去Chrome浏览器中,按F12,则出现下图,然后将下图中的

  • 常用的oracle数据库备份方式

    常用的oracle数据库备份方式小白都能看懂的oracle数据库备份方式!!!

  • Centos7配置IP地址和DNS

    Centos7配置IP地址和DNS1.配置IP地址终端上输入ifconfig,找出网卡名称进入配置目录,找出对应网卡配置文件cd/etc/sysconfig/network-scripts/ls编辑配置文件vimifcfg-ens33修改成如下信息TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=noneDEFROU…

  • STL vector用法介绍

    STL vector用法介绍介绍这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。 Vector总览vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种

发表回复

您的电子邮箱地址不会被公开。

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