拜占庭将军问题

这个小姐姐说:你之前所知道的区块链可能都是错的

一世执手 提交于 2019-12-19 23:28:29
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 随着币价的一直下跌,有传言说,比特币价格此次崩盘,只是大 BOSS 吴忌寒为加速淘汰老旧矿机而祭出的绝招。 无论这个阴谋论真假与否,在整个区块链行业的凛冽寒冬中,价格的涨跌已经左右了太多的人头脑之中的理智。可是,众人之中,究竟有几个人真正理解了区块链技术的密码学机制与分布式计算?究竟有几个人还会关心区块链在技术上的创新? 尘归尘,土归土。可能只有巨大的泡沫消散之后,区块链才能通过技术创新显示出真正的影响力。让区块链回归技术与应用的本质,这也是我们一直以来的定位。然而,传播这样的内容和话题,离不开货真价实的技术干货,以及有感染力的人物和故事。 我们今天的内容就来自于这样一个女生: 她是工业与系统工程专业出身,做过顶级投行高盛的分析师,做过著名风投 a16z 的合伙人——这都是许多人梦寐以求的工作。但是,功成名就的路上,她却发现编程才是自己想要的生活。 笨办法学会编程?她没学会。如何用 HTML/CSS 做一个网页?她开始上瘾了。所以,没有选择斯坦福、MIT 的编程学位,她更喜欢 Hack Reactor 的全栈动手实践。先学 JavaScript、React,后面的想法是机器学习、计算机视觉……这个女生就是 Preethi Kasireddy。 接触区块链之后,金融从业背景和全栈编程能力让 Preethi

什么拜占庭将军问题?比特币是如何解决的?——深入浅出分布式共识性(一)

亡梦爱人 提交于 2019-12-04 03:50:06
之前《浅谈分布式CAP定理》简单介绍了数据在分布式系统中存在的必然定理。简单回顾一下,一个数据在一个节点需要同步到另外一个节点的过程中,在未完成同步的时候,会出现数据不一致的情况,所以此时必然存在分区容错性(Partition tolerance)。分布式系统只能从一致性(Consistency)或可用性(Availability)之间去选择。 CAP讲的是分布式一致性,而这次我们来聊聊分布式共识性。很多开发者一直以为一致性与共识性是同一个东西,但两者讲的是完全不同的东西。 一致性:A点同步B点数据,然后两者之间的数据可以达成一致。 共识性:一个或多个节点提议了一个值应当是什么后,采用一种大家都认可的方法,使得系统中所有进程对这个值达成一致意见。 共识性比较常见的场景就是选主,例如redis主挂掉了,集群通用共识性算法选出一个主。比特币之类的电子货币也需要更复杂的共识性算法。 下面我们一步步聊下分布式共识性的一些常见算法与问题。 拜占庭将军问题 Leslie Lamport(论文排版系统LaTeX的开发者,同时也是2013年的图灵奖得主)在其论文中描述了如下系统: 一组拜占庭将军分别各率领一支军队共同围困一座城市。 为了简化模型,将各支军队的行动策略限定为进攻或撤离两种。因为部分军队进攻部分军队撤离可能会造成灾难性后果,因此各位将军必须通过投票来达成一致策略

[区块链]拜占庭问题之我见

匿名 (未验证) 提交于 2019-12-02 23:41:02
链客,专为开发者而生,有问必答! 此文章来自 链客区块链技术问答社区 ,未经允许拒绝转载。 百度描述 拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。拜占庭容错协议必须处理这些失效,并且这些协议还要满足所要解决的问题要求的规范。这些算法通常以其弹性t作为特征,t表示算法可以应付的错误进程数。很多经典算法问题只有在t小于n/3时才有解,如拜占庭将军问题,其中n是系统中进程的总数。 算法核心 主要是分布式系统中最终一致性的解决问题。算法核心在于少数人m服从多数人3m+1这个策略。以四个将军为例OM(1) 如当将军A将信息传递给将军B,C,D。而中间是通过副官传递。且传递一定是有结果,分正确为1,错误为0。而且一次传递中错误为一处的情况下,会有两种情形:当发令者将军A的副官不是叛徒,而传递后的将军中有叛徒的情况下