客服中心

一文道破分布式数据库和区块链的异同

金者

· 1409次阅读 · 2021-01-20
先说结论,分布式数据库和区块链的最大差别在于拜占庭错误的容错。

区块链系统是连拜占庭错误都可以容错,即是在拜占庭错误发生时,也可以保持系统正确性的系统,而一般的通用分布式数据库则无法容忍拜占庭错误。

我们知道设计一个系统是需要容错的(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公链这样的区块链底层平台也是如此,通过去中心化的分布式节点保障了整个网络系统的安全性。
【免责声明】 自媒体用户发布在亚太财经网评论发表的所有信息、言论等仅代表个人观点,与本网站立场无关,不对您构成任何投资建议。用户应基于自己的独立判断,自行决策投资行为并承担全部风险。任何用户私加自媒体用户发布的联系方式由此带来的损失都由用户自行承担。
登录发布

登录可以发布您的资讯
没有账号,请点击注册

Copyright 2024-2040 yzforex.com
上海炯杰信息科技有限公司 版权所有
沪ICP备18016373号-1
申请订阅
关于我们 信息合作 法律声明 加入我们 征稿启事 联系我们 风险提示