先说结论,分布式数据库和区块链的最大差别在于拜占庭错误的容错。 区块链系统是连拜占庭错误都可以容错,即是在拜占庭错误发生时,也可以保持系统正确性的系统,而一般的通用分布式数据库则无法容忍拜占庭错误。 我们知道设计一个系统是需要容错的(fault tolerance),而这里fault又是多种多样的,大多数的分布式数据库可以容忍down机,网络断连,网络延迟所造成的伪down机/伪网络断连等错误。这类问题可以简单的用超时重发+fence token来解决,在需要分布式一致性的系统里,可以用quorum算法来搞定,比如raft,Paxos,Zab。 还有一种错误叫做拜占庭错误(Byzantine fault),出自很有名的拜占庭将军问题(The Byzantine Generals Problem - Microsoft Research),它是双将军问题(Two Generals‘ Problem)的泛化(generalized)版本。 双将军问题:主要是说有两个将军要做一个作战合作计划,然后决定一个共同时间点一起发动进攻,它们的军队分别在两个不同的地点,而这两个将军只能通过信使通信。而信使则可能在送信当中被杀,或者为了躲避抓捕而用超远所需的最短时间把信送达。(这就好像我们的网络包会丢失或者延迟),那么如何在这种情况话,用一种算法保证双方达成一致。 拜占庭将军问题:是说如果有n个将军需要一起制定作战合作计划,最终一起决定一个共同时间点一起发动进攻。它们的军队在n个不同的地点,同样它们只能通过信使通信。而信使除了可能被杀,延迟,将军中还可能有叛徒来发出假的消息,并且没人知道叛徒是那些将军,这些叛徒不但会伪造,篡改信息,还尽力不让自己被发现。拜占庭将军问题有解的关键是,已知多数将军都是忠诚的。那么在这种情况下,如何用一种算法来保证忠诚的将军可以一致的发动进攻。 而拜占庭容错(Byzantine fault tolerance)的系统就是指,如何在一个非授信的环境中,每一个单点唯一知道的就是整个网络中,占多数的点是诚信的,在这种情况下,即使不知道那个点是非法的,还能让所有诚信点取得一致的系统(比如让上亿台计算机一起同意:谁拥有那个币)。 所以,比特币是安全无法被单点甚至多点接入的黑客来攻破系统去伪造系统信息的。因为支持比特币系统的区块链技术是拜占庭容错的。 同样的道理,像UENC公链这样的区块链底层平台也是如此,通过去中心化的分布式节点保障了整个网络系统的安全性。 —- 编译者/作者:通证时代Time 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
一文道破分布式数据库和区块链的异同
2021-01-20 通证时代Time 来源:区块链网络
LOADING...
相关阅读:
- 干货丨一文读懂PBFT共识算法2021-01-19
- 比特币价格创下历史新高29,600美元2021-01-01
- 根据最新数据,自圣诞节以来,BTC鲸鱼积极购买2020-12-29
- (粉红梦庄园空投)从零开始学区块链:分布式账本;拜占庭将军问题2020-12-05
- 经销商进入市场的增加可能导致比特币价格回调。2020-12-04