哪怕最菜鸟的格子党都会知道,软件的几个基本要素,例如:
1、正确性
2、安全性
3、性能
4、可靠性
5、合规性等等
有一种特性是无法通过事先的手段进行保证,并且有意无意的被我们忽略的,那就是:”你确定最终的结果会如实按照设计的逻辑得到的吗“(我们称为因果性)。实际上,只有控制住软件运行平台的人才知道答案,例如传统的C/S、B/S模式的S端,用户不知道啊,只能信任S端,这种信任其实是一种简化与假设。然而当S端不可信时,我们如何来保证因果性?
由于业务逻辑的复杂性,一个最简单最通用的想法就是,客户端运行同样一套一模一样的系统,然后对结果进行比对。
然而,这不现实啊,用户根本负担不起这样的系统,另外,出现争议听谁的?
于是,我们会想,可以找其他土豪帮忙啊?
但是,土豪就可信吗?(联合作恶)
没问题,我们可以多找几个土豪同时干(分布式系统/开源软件)
土豪又不是慈善家,凭什么给你帮忙,服务器不要用电么?
当然有好处啦,系统创造一些虚拟的资产或者服务费(挖矿、交易费)
万一土豪们一起干坏事咋办?(联合作恶)
那就搞点激励与惩罚机制,给他们制造竞争与矛盾,让他们联合不到一起咯。(博弈、共识机制、51%法定集合)
那万一不幸大多数节点都被少数人控制了怎么办?(挖矿垄断)
那也有办法,人是靠不住了,只能靠科学。因果性本质上是时间,时间的本质是不可逆,不可逆的本质是熵垒,计算机系统里面什么东西可以作为熵垒?唯有算力啊!于是有了PoW,大幅提高可逆性的成本。这种情况下,当前是靠不住了,历史还是靠得住的。
坏人的计算能力提高了也能逆转历史啊,怎么办?那就每隔一段时间(一个区块),重新在原来的熵垒之上叠加一个新的熵垒(Hash),进一步强化过去的熵垒(形成链状结构)。
什么,整个链都能逆转?别逗了,你当现在的有钱人都闲的蛋疼吗?
——于是,成功的把对S端的信任假设,转换为对于区块链系统的具有高概率的确定性认知。
领取专属 10元无门槛券
私享最新 技术干货