1.5 防篡改原理
聪主任被请到别的镇上传授经验,为解答听众关心的问题,他进行了总结。
(1)通过这种“投票”机制,公共账本如同“看不见的手”一样无形地存在:它存在于所有的记账员“之间”,即账本由上述共识的账页组成,若某记账员丢失了自己的账本,那他可以通过“缩放机”照一个最新的共识账页嵌入自己的工作账页中开始记账,在需要时可以通过“缩放机”的恢复功能找回以前的所有页。
(2)公共账本形成一个“链”,这个链是防篡改的。
如图1.5所示,若作恶的记账员篡改账本中的某页,如第101页,则得到该页的“伪页”,称为101'。若他要使“伪页”生效,则要完成两个“高难度”动作。
①在长度上追上已有的区块链。显然,篡改“历史”越悠久的页,需要追赶的距离就越长,而对近期页的篡改则容易追上。
②让超过半数的记账员“改弦易辙”。篡改有两种情况:第一种情况,“伪页”是错误的页,验证通过不了,因为诚实者占多数,他们不会承认该账页;第二种情况,“伪页”是“正确”的页,即账页验证正确,如从源头上修改数据,将某个转账交易的收款人改为作案者,这时即使“伪页”所在的链足够长,如果记账员通过检验没有发现不对的地方,那么他们也会“改弦易辙”。
因动作②中有第二种情况,所以阻止篡改的重任就落在了动作阻止①上,就是要阻止“坏人”追上。为了使“坏人”无法追上“好人”,达到“邪不压正”的目的,就必须使“好人”的力量大于“坏人”的力量。后续章节将谈到如何利用算力阻止“坏人”“作案”,即工作量证明(Proof of Work,PoW)。
图1.5 完成篡改(坏人多)
因此,这个作恶者要么弃恶从善,放弃自己的分支,选择共识链,要么继续作恶,使自己的分支越来越长,但其记账页在检验中得不到半数以上的票,不会被“权威发布”,也是白费劲儿。
有没有篡改成功的情况?假如长度追上后,作恶者联合大家“改弦易辙”,使“伪页”的得票数最多,而且一直保持这种状态,维护着这一分支链,就篡改成功了。这种情况会发生吗?不会。因为社会上的诚实者会超过半数,所以对“伪页”的投票不会是最多的。进一步考虑,当记账员偶尔出错或作恶者临时作恶时,由于账页与记账员的对应关系是保密的,投票时不许讨论,作恶者们因为各有自己的小算盘而达不到“一致”的投票,因此“伪页”就不会得到最多的票。由前一节知道,他们在奖金诱导下,会及时改正,调整到正确的链上来,即诚实者和作恶者共同维护着公共账本。
值得注意的是,这里没有直接对作恶者的惩罚机制。