区块链就是个账本,记录着所有参与交易人的交易记录。账本的每一页叫做一个区块(Block),把他们按顺序装订在一起就是区块链(Block Chain)。
为了防止账本被某个恶意的家伙破坏或者销毁,每个参与交易的人都保留这样一个账本,记一模一样账。这就叫去中心化。
账本的每一页上除了正常的交易记录之外,还要额外记录两串数字:
本页的校验码。就是本页上的那些交易记录经过哈希运算(HASH)得到的一串数字;
本页的标识码。就是用账本前一页的标识码、前一页的验证码和其它一些信息,再进行一次哈希运算得到的一串数字。
有了这两串数字,那么本页和之前所有页上的交易记录就不能够再改动了。因为如果某一页的账目被篡改,它就跟校验码和标识码这两串数字对不上了。这时候大家就纷纷把自己的账本上这一页的内容拿出来对照,能跟这俩码对上的才是真实的原始账目。这就叫通过加密算法实现不可篡改。
实际交易发生的时候,每一笔交易都会由交易人通知给每个有账本的人。大家核对之后都在自己的账本上记一笔。当交易记录又写满了一页的时候,大家就开始计算前面说的那两串数字。第一个计算出来的人,把他的整页交易记录和计算结果和诉大家。大家按着验算一遍,如果无误,那就用这个人的记账内容把各自的这页账本补全。这就叫共识算法。
然而有人想偷懒:让雷锋去记账和计算那两串数好了,我就等着现成的结果进行验算和抄账。当每个人都这么想,就没人愿意当雷锋记账和计算了。于是我们决定给雷锋一些奖励,谁辛苦记账和计算,谁就能从交易中抽取一笔手续费,同时还能得到一笔可观的奖金。
这下热闹了,从没人愿意记账变成了人人争着记账赚钱。那就设计个游戏规则让大家竞争。我们把前面计算校验码的方法稍微改一下,参与哈希计算的除了交易记录之外,另外增加一个随机数。然后对于计算结果的那一串数字做一些要求,比如必须小于某个数才算有效。
当交易记录记满了一叶账本的时候,就开始了一场计算比赛。他们选取一个随机数,和交易记录一起进行哈希运算。之后检查计算结果是否满足要求。如果不满足,那就换一个随机数重新算,循环往复。第一个计算出满足要求的结果的人,像上面讲过的一样,把他的整页交易记录和计算结果,当然还有那个关键的随机数告诉大家。大家验算、抄账。而那个计算出结果的幸运儿则顺利拿到应得的奖励。这就是比特币(BTC)特有的共识算法,叫做工作量证明(POW,Proof of Work)。而为了获得记账奖励而争着计算,就叫做挖矿。
随着挖矿的人越来越多,计算能力的竞争级别越来越高,依靠个人的那点计算能力想要独占奖金越来越不可能。于是大家决定抱团取暖,把各自的计算能力集中在一起组队竞争,赚到的奖金按照贡献分配,实现合作共赢。这就叫做矿场。
为了维持算力竞争,对计算结果的要求条件越来越苛刻,挖矿难度越来越大。使得挖矿成为了又慢又难的活儿。慢直接拖累了交易速度。难直接拖累了挖矿成本,甚至有时挖矿获得的奖金覆盖不住成本。更悲惨的是如果运气不好,也许你刚刚计算出一串满足要求的数字打算发出,却收到了其它竞争对手发来的计算结果。之前的全部计算都打了水漂。
既然算力竞争机制有缺陷,那么选举制度怎么样?废除增加计算难度的随机数和计算结果约束。每当写满一页账本,就搞个全民公投或者股东大会。每个人凭借自己手里的资产多少加权进行投票,选出一个人来记账和简单的哈希计算。这种不用于PoW的共识算法就叫做权益证明(PoS,Proof of Stack)。
可是全民公投这种事偶尔搞一次还好,每记账一页都搞一次就有点不大现实,尤其是选举人数量众多而且分布在世界各地。那既然全民公投不切实际,代议制怎么样?搞个人民代表大会或者董事会。每个人凭借自己手里的资产多少加权进行投票,选出奇数比如21个人来。这些人要么轮流负责记账和计算,要么再进行二次选举,再选出个人来记账和计算。这就是EOS币采用的共识算法,叫做委托权益证明(DPoS,Delegated Proof of Stack)。
今天就说到这里吧,下次再接着说。
领取专属 10元无门槛券
私享最新 技术干货