新型冠状病毒已肆虐了半个多月,各单位各部门早已开始了每日健康状况汇报打卡,实时监督自身和家人的健康状况,只要发现存在一定根据的疑似病例就必须上报。这对于疫情的及时发现与早期隔离都非常重要。 在此呼吁大家务必重视健康上报过程,不要心存侥幸心理。因为任何误报、谎报、不报,理论上都能够用技术手段挖掘出来! 别说现有的上报系统是集中式收集与管控的,就是在更加复杂、更加难以协调的完全分布式区块链系统中,也能找到是谁在作恶。 众所周知,共识机制是区块链技术的灵魂,主要用来解决去中心化的网络中如何维护全网数据一致性的关键问题。它的目标就是让分布式网络中的各个节点对数据达成一致。换句话说,就是能够让每个人都正确地知道全网所有其他人的健康状况。 拒绝上报者 假设有人私自隐匿不报,我们就用如下算法: 共同战疫 2020年 2?月 2 日 让我把 Python 伪代码换成人类的语言解释一下: 有 ABCD 四个人,假设我是 A,view_A 表示我对另外三个人的健康状态的了解情况,也就是说若 view_A[B]=0,那么就代表我知道 B 是健康的,若 view_A[B]=null,就代表我不知道 B 的健康状态。若 B 私自不按规定上报,则算法的过程可以简述为: 第一轮: 第一阶段: 上报我自己的健康状态;接受CD发送给我的他们的状态(recfrom_A[C] = 0,recfrom_A[D] = 0) 第二阶段: 汇总我接收到的新消息,得知 C 和 D 也是健康状态。 第二轮: 第一阶段: 上报我在第一轮中得知的 C 和 D 的健康状态; 第二阶段: 没有收到新知识,算法结束。 那么此时,所有 ACD 都知道了 ACD 是健康的,唯独不知道 B。 好,此时,我们找出了不按规定上报的 B。 谎报乱报者 这个情况比较复杂,B 是谎报甚至乱报的,可能向 C 报了健康,向 D 报了不健康,同时又不告诉我 (A) 任何有关他自己的信息。这个时候,我就要采用如下的算法了: 换成人类的语言就是: 第一阶段: 我上报自己的健康状况,并接收了 CD 告诉我的他们的健康状态。(rec1_A[C]=0, rec1_A[D]=0),没有收到 B 的消息rec1_A[B]=null,但 B 告诉了 C 和 D,rec1_C[B]=0,rec1_D[B]=1 第二阶段: 我和 CD 都分别上报了第一步中得知的消息,那么我的rec2_A(A)=[0,null,0,0], rec2_A(B)=[null,null,null,null], rec2_A(C)=[0,0,0,0], rec2_A(D)=[0,1,0,0],之后,我取 max 汇总这些消息,得知,view=[0,1,0,0]。也就是说,我知道了 B 是有问题的。那么同理可证,所有人都知道了 B 是有问题的。 好,此时,我们又找出了谎报乱报的 B。 你看,不管是不报、谎报,还是乱报,最终都必被抓出原形。 所以呼吁大家,珍视生命,重视疫情!接受防疫检查,按时上报健康状况! 我们有信心打赢疫情阻击战。 期待节后顺利正常工作生活。 知识拓展 在传统的分布式一致性算法中,拒绝上报即等价于节点崩溃故障(错误进程发生崩溃后停止执行)或遗漏故障(错误进程间歇性不发送消息或发生崩溃);谎报即等价于拜占庭故障(错误进程可以随意改变自身状态,发送错误消息或广播不一致消息)。在最复杂的 Byzantine 故障下,采用交互一致性算法,能够使系统容忍的错误进程数上限是 n/3(n是进程总数)。 传统的分布式一致性算法是区块链共识机制的基础,上述只是在简单的分布式同步系统中的典型共识算法,此外尚有分布式异步系统共识和一致性算法,学习之后,对于理解主流的区块链共识机制(如Pow、PoS、DPOS、RPCA、PBFT、PoV、CoT 等)大有裨益。 ●本文旨在呼吁大家重视疫情,技术之处若有疏漏,敬请谅解!?● —- 编译者/作者:三六舞文化艺术中 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
技术探讨:用区块链算法找出疫情谎报者
2020-02-05 三六舞文化艺术中 来源:区块链网络
- 上一篇:没有人能随随便便成功
- 下一篇:EOS在Investing.com上上涨了14%
LOADING...
相关阅读:
- 代币一年增长300%:市场高峰报告平台发展前景2020-08-03
- 2020年,在这里遇见PWE的下一场革命2020-08-03
- 西尔贝超级公链布局全球技术路演2020-08-03
- 链人区周播报:央行发文规范金融行业区块链应用Seele主网兑换通道开通2020-08-03
- 恒讯云受邀参加2020第三届深圳国际分布式存储行业大会2020-08-03