时间:2023-07-11|浏览:194
既然如此,我想尝试一下另外一种方式,写一篇文章来解释区块链中一些重要的概念,完全不涉及任何编程知识。看看能否让零编程基础的同学理解区块链的生成原理,并理解区块链为什么具有去中心化、安全不可篡改的特性。同时解释一下世界上第一个区块链应用——比特币,为何在运作时耗费如此多的计算机资源。
这一切都源于去中心化货币的一个核心概念:共识算法。在这篇文章中,我尝试以不使用任何编程知识的方式来解释共识算法是什么,为何需要共识算法以及共识算法的原理。
一、分布式账本
我们需要从账本开始讲起。假设有一座城市,城市里的每笔交易都通过记账的方式进行。例如,张三给李四理发,收到50块钱。然后张三去市场买肉,花了30块钱。那么张三的账面上还剩下20块钱。在张三收到更多钱之前,他不能支付超过20块钱。整个城市只有一份账本,它记录了城市里每个人的每一笔交易,以便在每个时期计算每个人账面上的余额。过去通常是选择一个记账人来负责记录每笔交易的流水账。
然而,这种做法存在一个问题,就是账本只有一个,如果记账人故意造假怎么办?记账人可以故意漏记一些账单,甚至伪造账单。例如,张三支付给王五的30块钱可能不会被记入账本,这样张三就可以不断地重复使用账面上的50块钱。或者伪造一张赵六支付给张三100块钱的账单,这样张三就可以在没有收入的情况下额外支付100块钱。由于账本只有一个,所以根本无法查证这些操作。所有的人必须相信记账人是诚实可信的。
为了解决这个问题,后来采取了另一种方式。只要通过记账资格认证的人,都可以成为记账人。每个记账人都持有一本账本,这样城市里就有很多个账本。记账人变得很难作假,因为如果他们作假,账本就会和其他的账本不一致。
然而,这种方式带来了新的问题。有这么多的账本记录着整个城市的每一笔交易,如何保证所有的账本是一致的呢?这时就涉及到共识算法。
二、账本的统一性,解决方案:共识算法
为了保持这么多个账本的统一,过去通常的做法是将城市划分为区域,每个区域有一个记账人负责记账,定时将所有的账本汇总到一起。然而,这种方式存在漏洞。例如,如果张三在一个区域消费后,马上跑到另一个区域消费。由于账本还没有汇总,张三可以利用这个时间差重复消费。
账本需要实时,任何时刻都不能有差异。因此,让很多个账本保持统一的方式只能是在每次记账时定义唯一的记账人。这个记账人记录一批账单后,其他记账人必须将这批账单抄录在自己的账本上,这样才能形成任何时刻统一的账本。而指定唯一的记账人的方式就是共识算法。共识算法描述了规则,所有的记账人如何确定其中一人解决方案就很简单,每次财务中心指定一个记账人来记账,其他人负责抄写。但财务中心自身也会存在信任问题。城市里的每个记账人都是独立的、平等的,没有一个中心机构来监管他们。每个记账人还有自己的作息时间,因此无法对他们进行编号次序来轮流记账。
因此,当一批账单产生并等待被记录时,需要一个竞争机制。在这个时刻工作的所有记账人通过某种竞赛形式进行竞争,竞争成功的记账人负责记账,而其他人只能抄录。同时,基于公平的原则,竞争方式不能与记账人自身某种素质有关。例如,不能竞赛举重,这样最强壮的人总是负责记账;不能竞赛跑步,这样最快的人总是负责记账。任何一种有偏见的竞争方式都会导致记账权力集中,从而引发信任问题。
因此,唯一的选择就是:运气。
热点:区块链