区块链演讲稿
鄙人才疏学浅,不足之处还望指正。
https://www.zhihu.com/question/37290469
拜占庭失效
在容错的分布式计算中,拜占庭失效可以是分布式系统中算法执行过程中的任意一个错误。这些错误被统称为“崩溃失效”和“发送与遗漏是实效”。当拜占庭失效发生时,系统可能会做出任何不可预料的反应。
这些任意的失效可以粗略地分成以下几类:
进行算法的另一步时失效,即崩溃失效; 无法正确执行算法的一个步骤; 执行了任意一个非算法指定的步骤 。
各个步骤由各进程执行,算法就是由这些进程执行的。一个错误的进程是在某个点出现了上述情况的进程。没有出现错误的进程是正确的进程。
拜占庭指拜占庭将军问题,这是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。
拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。拜占庭容错协议必须处理这些失效,并且这些协议还要满足所要解决的问题要求的规范。这些算法通常以其弹性t作为特征,t表示算法可以应付的错误进程数。
很多经典算法问题只有在t<n/3是才有解,如拜占庭将军问题,其中n是系统中进程的总数。
中性化例子
网上购买一本书的流程:
第一步,你下单并把钱打给支付宝;
第二步,支付宝收款后通知卖家可以发货了;
第三步,卖家收到支付宝通知之后给你发货;
第四步,你收到书之后,觉得满意,在支付宝上选择确认收货;
第五步,支付宝收到通知,把款项打给卖家。流程结束。
你会发现,虽然你是在跟卖家做交易,但是,所有的关键流程都是在跟支付宝打交道。这样的好处在于:万一哪个环节出问题,卖家和买家都可以通过支付宝寻求帮助,让支付宝做出仲裁。这就是一个最简单的基于中心化思维构建的交易模型,它的价值显著,就是建立权威,通过权威来获得多方的信任,同时依赖权威方背后的资本和技术实力确保数据的可靠安全。
但是,假如说,支付宝程序发生重大BUG,导致一段时间内的转账记录全部丢失,或者更彻底一点,支付宝的服务器被ISIS恐怖组织的一个导弹全部炸毁了。而我刚刚转出去的100元找谁说理去,这个时候,你就成了刀殂上的鱼肉;支付宝有良心,会勉为其难承认你刚刚转账的事实,但他不承认你也没辙,因为确实连他自己也不知道这笔转账是否真实存在。
去中心化
第一步,你下单并把钱打给卖家;
第二步,你将这条转账信息记录在自己账本上;
第三步,你将这条转账信息广播出去;
第四步,卖家和支付宝在收到你的转账信息之后,在他们自己的账本上分别记录;
第五步,卖家发货,同时将发货的事实记录在自己的账本上;
第六步,卖家把这条事实记录广播出去;
第七步,你和支付宝收到这条事实记录,在自己的账本上分别记录;
第八步,你收到书籍。至此,交易流程走完。
刚才“人为刀俎我为鱼肉”的情况在这个体系下就比较难发生,因为所有人的账本上都有着完全一样的交易记录,支付宝的账本服务器坏了,对不起卖家的账本还存在,我的账本还存在;这些都是这笔交易真实发生的铁证。
去中心化的特点:
- 分布式存储,通过多地备份,制造数据冗余
- 让所有人都有能力都去维护共同一份数据库
- 让所有人都有能力彼此监督维护数据库的行为
拉斯洛·汉耶茨