区块链和传统的分布式系统有什么区别?
一旦搞清楚这个问题,我们也就自然能够搞清楚区块链能干什么了。
相同点:数据共享在分布式系统的经典教材Distributed Computing:Principles, Algorithms, and Systems里面有写到,分布式系统一个非常重要的作用就是资源共享(Resources sharing)。当然广义上的资源包括了计算、存储资源和数据等等,我们不考虑未来区块链是否能演变成计算资源共享的技术(毕竟现阶段以太坊也只是高度冗余的图灵完备计算机),但数据共享这一点确实是区块链和传统分布式系统的相同之处。
进一步地,区块链甚至做到了极致:所有节点都共享全量数据。某些定义里面提到的“分布式账本”,其实就是指的这个意思。需要指出,还有些说法谈到区块链实现了“数据共享”和“价值传递”,后者其实本质上也是在互信场景下的某种特殊数据共享,作为比特币每个节点所共享的数据单位,每个区块实际上就可以看做是转账记录的集合(加上一些附加信息)。当然如何保证在不可信场景下的数据共享,这就是区块链的不同之处了,后面会提到。
如果仅仅是为了数据共享,尤其是单个业务主体内部的数据共享,大可不必采用区块链,传统分布式架构的实现有更好的性能更低的开销,至于数据安全问题,也可以用一些灾备技术去解决。曾经有某国企部门领导问我,把自己部门的业务数据全部用区块链存储,能不能变得更快或者更省钱,我这种老实人只能回答:都不能。
好吧,那到底有什么不一样呢?
不同点1:多方维护首先,传统数据库仍然存在一个管理员的概念,无论是分布式架构还是集中式架构。而区块链中对数据的操作则不由单一主体控制,理论上来说区块链就是一个任何节点都能写入的数据库(这里我们先忽略联盟链中的CA等元素),至于写入能否成功当然也受共识机制的影响(不管能不能成功,至少它有写入的权限了)。
从每个节点的写入操作来看,不同于传统数据库具有增加、删除、更改和查找四个操作,区块链放弃了“删改”,仅保留了“增查”两个操作(实际上删和改是通过增来实现的),这样的好处是除了查找之外的所有操作都能留下记录,并且通过哈希函数保证了所有历史数据严格按照时间顺序记录(多节点数据写入的时序由共识机制保证),这就是我们经常提到的可溯源特性。
说到共识,由于多方写入操作的存在,整个系统的共识机制也变得更为复杂。同时多个节点操作变得更加难以控制,类似于Raft(Paxos)这样的经典共识机制并不能满足拜占庭容错(Byzantine-Fault Tolerant )。一些区块链(主要是联盟链)受到传统共识机制的启发,采用了基于领袖的策略(Leader-based):先选出一个领袖,再由领袖来提出区块,剩下的人达成一致,这类算法以PBFT为代表;而比特币的做法则另辟蹊径:干脆不要领袖,所有人都能出块,也别指望马上就能达成一致,最后最长的那个链就算是大家达成一致的结果。实际上这种机制是放弃了强一致性,仅仅保证最终一致性(听起来好像很弱的样子,但可怕的是这个系统已经运行了十一年还没出过什么大问题)。共识就不展开讲了,这里只是想强调由于多方维护的原因,区块链共识机制也和传统分布式系统有了一些区别。
简单地总结一下,多方维护的意思是,区块链中所有的参与方(或者叫节点,注意这里我们还将节点和参与方等价)都能查找和写入数据,并且写入操作只能以增加新记录的方式进行,这样的特性传统分布式系统并不能完全满足(或者需要一些改动)。如果存在这么一个分布式系统,每个节点都可以执行写入查询操作,并且所有的历史数据都会记录下来(可以不采用区块+链的形式),那么它是不是就等同于区块链了?
我的回答是:从技术上来看可能是,而从应用上来看,也可能不是。这就延申到第二个不同之处了。
不同点2:多智能体系统之前同事问了我一个角度刁钻的问题:假设区块链系统中有五个节点,“一个人一口气租了五台服务器当做节点”和"五个人各自用自己的服务器当节点"有什么不同?
我当时想了想,只能回答:如果单从技术层来看并没有太大不同(没错,我当时的回答又憨憨了)。
后来和另一个搞博弈论的同事聊这件事,他提到一个概念启发了我:Multi-Agent Systems(中文通常翻译成多智能体系统),我仔细研究了一下,发现关于MAS的定义比区块链还要抽象:“由在一个环境中交互的多个智能体组成的计算系统”。但是看了下具体的MAS例子后,意识到多智能体系统(MAS)其实也是一种分布式系统,很多MAS在底层就是一个P2P网络,比如传感器网络或者车联网,但Multi-Agent System和传统的Multi-Node System最大的不同就是这个Agent(或者叫智能体),后者是指具有自治性、社会性、反应性和预动性的基本特性的实体(人或者机器等),换句话说每个智能体都能管理自身的行为并做到自主的合作或者竞争。
好了,这里我们再总结一下,对于“一个人同时管理所有服务器”这种情况,我们可以说这些服务器组成了一个分布式系统,但所有服务器实际上都只属于一个智能体,因此不能算作是多智能体系统。而一个理想的区块链网络,则应该是一个多智能体系统。
简单地说,多智能体系统存在合作或者竞争,那么怎么样让区块链网络中的所有智能体进行合作或者竞争呢?
答案很简单:激励(Incentives)
说到激励,我们很容易想到比特币中的挖矿,所有人参与到记账的过程中,竞争获取出块奖励(同时也共同维护了系统的安全和稳定性),类似地还有PoS机制下的质押金没收惩罚机制(slashing),这些都是激励机制。
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。