首页 > 区块链 > 正文

区块链(二)

分类:信息不学无术宅不学无术宅 2021-04-06 18:50

  当前存在于人类生活中的互联网十分庞大,大量网络节点彼此交错,点对点的信息交换存在不确定的网络延迟,多个事件在不同节点处的接收时间不可能保持一致,所以区块链要求即使是有网络延迟,不同节点确认多个事件的时间先后顺序也必须保持一致。实现这个过程的算法就是共识算法。

  举例来说,假设A与B达成一次交易,相关信息发布后正在被记录,这个过程需要时间,即使是很短的时间。那么A有可能在等待的过程中,又以同样的条件发起一次与C的交易,并发布对应的信息。网络延迟使得各个节点对两次交易的时间记录有差异,如果没有一个共识算法,彼此之间就会产生矛盾。一般把这种问题称为“双花问题”,这个“花”是“花钱”的意思。

  目前已经被设计出来的共识算法很多,其中最著名的是实用拜占庭容错算法、工作量证明和权益证明。

  实用拜占庭容错算法源于“拜占庭将军问题”,是著名计算机科学家、图灵奖得主莱斯利·兰伯特于1982年在论文《The Byzantine Generals Problem》描述的一种模型:

  多位拜占庭将军分别率领军队围攻一座城市,他们将执行进攻或者撤退两种命令之一。如果一部分军队进攻,另一部分军队撤退,则会造成严重后果,因此各位将军必须通过投票以多数票原则达成统一的进攻或撤退。由于将军分别在不同的军队,所以他们只能通过信使送来的其他将军的投票结果做出判断。但将军之中可能有叛徒,会恶意乱投票干扰决策。

  如果把上述模型应用于计算机网络中,各服务器相当于将军,其中故障的或是被黑客入侵的服务器则是叛徒。

  兰伯特发表论文时就给出了解决方案。整个算法流程也很直接,每个将军在完全接收其他所有将军发送的信息后,采用多数票的决策。

  他证明了,只要叛徒数量少于将军总数的三分之一(n>3f,n是将军总数,f是叛徒总数),那么叛徒将无法影响各位将军达成共识,即“拜占庭容错”。由于算法需要遍历所有的信息,兰伯特给出的解决方案的算法复杂度为指数级(O(n^(f 1))),“叛徒(f)”的数量会严重影响算法复杂度,以至于出现无法计算的情况。

  有鉴于此,著名计算机科学家、图灵奖得主芭芭拉·利斯科夫于1999年提出了实用拜占庭容错算法。实用拜占庭容错算法之所以有“实用”两个字,正是因为它的实现成本更低。简单来说,在这个算法中,利斯科夫在“进攻”和“撤退”之前增加了“预备”的识别过程,各个节点在接收到信息后,会与其他节点进行额外两步验证,确保其执行的是一致正确的命令。实用拜占庭容错算法把算法复杂度降低到多项式级(O(n^2)),“叛徒(f)”的数量不会影响算法的复杂度,所以即使一个分布式系统中出现了较多的故障节点,整个验证过程仍然有很高的效率。

  实用拜占庭容错算法目前已经在如波音飞机在内的航空航天设备中得到了广泛应用。

  工作量证明最早在1990年代由几位计算机科学家提出,但直到2009年以比特币为主采用工作量证明的加密货币出现后才受到广泛关注。工作量证明要求节点执行一个散列函数的运算,由于散列函数的特点是很难实现逆运算,所以节点只能通过穷举法来推算,这就产生了工作量。

  举例来说,一个函数f(x) = x^2 sin(x),在给定x = 1时,可以很容易得到f(1) = 1.84147098…,但如果是f(x) = 2,要求出x的值就会很难。很多时候,只能反复代入不同的x的值,看看能不能找到满足f(x)= 2的值。当然,实际上采用的函数通常是SHA256,比这个f(x)要复杂得多。

  所以为什么矿工都在大量抢购显卡呢?就是为了提高穷举法的速度,以尽早试出对应的值。中本聪在《Bitcoin:A Peer-to-Peer Electronic Cash System》(《比特币白皮书》)中预估了计算机算力的发展趋势,然后基于SHA256设计了一个非常清晰的架构用于实现工作量证明。限于篇幅就不专门讲解这篇论文了。

  应用工作量证明的共识算法将只承认最多工作量。比如在一条区块链中,可能因为种种原因会产生大大小小的分支链,但只有最长的链拥有最多工作量,那么所有节点只会承认最长的链。如果黑客试图攻击这条链,那必须控制网络中大于50%的算力,只有这样才能比剩下小于50%的算力的节点完成更多工作量。这被称为“51%攻击”,通常是无法实现的,但比特币所在的区块链在历史上曾经出现过至少三次短时间内大量算力投入产生分叉,后面再专门说一下这件事。

  为了应对可能发生的“51%攻击”,2011年,比特币论坛的爱好者讨论了另一种共识算法,也就是权益证明。

  在加密货币中,权益证明采用随机的方式选取一个节点作为下一个区块的工作节点。但是这种随机不是完全随机,如果一个节点希望成为下一个区块的工作节点,首先它要质押一部分加密货币,质押量越大、质押时间越长的节点一般会更容易被选为下一个区块的工作节点,但每次产出区块并接入区块链后,质押时间会归零,需要等待一个新的周期才能参与随机选择。这是为了防止资产量大的节点完全垄断区块链。

  权益证明的随机性可以遏制矿工疯狂抢购显卡提升算力,并且如果要控制区块链,则至少需要持有50%以上的流通加密货币才行,这比起控制网络中大于50%的算力更难。此外,由于产出区块链的收益从一开始就被设计为低于质押的加密货币的价值,所以理论上工作节点不会选择造假,否则得不偿失。不过,权益证明也饱受诟病,很大程度上是因为这种随机选择公平性很差,垄断风险高。如果加密货币要发挥经济学价值,显然发生垄断将是灾难性的。

  形形色色的共识算法还有十几种,各自都有应用。“十四五”规划《纲要》提出的“多重共识算法”应该是指不局限于某一种共识算法,而是尽量吸纳更多的设计方案,有效避免各种共识算法自身的问题。希望未来可以看到相关解决方案被提出。

本文标签:区块链

上一篇:互联网覆盖世界,区块链颠覆了互联网!!!

下一篇:云南省出台10大措施助力打造区块链产业高地

猜您喜欢
关于我们联系我们作者投稿APP下载