区块链的技术世界观:账本的技术演进
本文是基于我在 360 区块链开放日上的分享整理完善而成,演讲时有些逻辑没有讲明白,感觉用文字表述可能更好一些。作为自己区块链系列的开篇第一篇,谈谈怎么从技术的角度理解区块链。 说到区块链技术分享,区块链相关的各种技术词汇就纷至杳来。区块链领域是一个喜欢造新词的领域,这也给想了解这个领域技术的人造成了门槛。我一直想梳理下区块链的技术演进逻辑,试图从互联网技术的发展角度来解释区块链技术,这样可以让互联网领域的技术人更容易理解区块链。 技术有没有世界观? 技术本身的目标是对现实抽象和建模,所以技术实际上有自己对世界的理解和假设。比如编程范式里的面对对象和函数式编程,有完全不同的世界观理解。而区块链对世界是一种怎么样的抽象呢? 我们还是从萧伯纳那句名言开始。
— 萧伯纳 这句话也被很多人用来解释区块链以及互联网的区别。交换苹果代表价值交换,交换想法代表信息交换。信息交换可以保留多个副本,但价值交换就不行。所以流行的一个说法是:
但是交换信息就不需要考虑价值了么?其实也不是,毕竟贡献想法也是需要激励机制的。现在的互联网就没有价值交换了吗?区块链不也是在信息世界的吗?本质的问题实际是: 如何在信息世界进行价值交换?或者说如何通过交换信息的方式进行价值交换? 这个问题其实也不是一个新问题。在没有互联网的时代,人类就在尝试。比如各国都普遍实行的不动产登记制度。你买房买的是房子的控制权吗?或者说买房的时候你住进去就算买到了吗?实际上不是,要不动产登记账本变更后才算,这个登记变更实际上就是信息交换。无论这个账本是原来的纸质账本,还是变成计算机的数据库,甚至再到未来的区块链,载体变了本质上是没变的。再比如银行的财产登记,股票交易所的股票登记,都是一个道理,如果说货币还有纸币这种物理实体代表,股票则是纯信息化的,没人见过股票长什么样子吧。 所以总结一下,信息世界进行价值交换的唯一方式是统一的账本,并且对这个账本的要求是它必须是一个公共知识(common knowledge),可以简单理解成大家常说的共识。唯有这样,信息的副本才不会生效,比如黑客即便是黑了交易所复制了数据,也不可能重新搭建出一个交易所来让大家交易。至于如何达成这样的共识,是通过市场竞争,还是依赖权威机构,这里暂不讨论。 现在区块链来了,要搞去中心化账本。去中心化这个词是个热词,网上一直争论不休。由于时间关系这里不进行详细阐述,等有机会单独写文章阐述。这里只简单说明下我个人思考的去中心化的两个方面:
至于为什么账本会向去中心化账本演进,动力在哪里,这里就不展开了。先从技术演进角度来理解一下,从中心化的账本到去中心化账本之间的技术演进过程。 账本架构演进之路 我总结了这样一个演进过程: 单数据库账本 这个架构图做互联网应用的朋友应该看起来很亲切。早期的企业以及互联网应用都是这个样子的,应用界面面向最终用户,应用本身的程序封装了业务逻辑,应用状态直接存储到数据库中。这时候关注的账本相关技术主要是『事务』。通过数据库提供的事务机制,保证了账本的原子性操作。 分布式数据库账本 当单机数据库无法承载读写或者数据的时候,就有了分布式数据库。分布式数据库的数据分散到了不同的节点,通过分片以及多副本来解决上述问题。但同时带来的问题是如何保证同一个分片在不同节点的数据的一致性以及跨节点的分布式事务。这时候账本相关技术主要是『分布式共识算法(paxos,raft ),分布式事务』。分布式事务由于其复杂性,分布式数据库不一定能够提供,很多情况需要在业务逻辑里处理。 多机房账本 随着账本越来越重要,异地副本都不能满足需求,需要异地多活了,于是有了多机房方案。多机房方案里,不同的机房之间需要同步数据,并且保证一致性。这时候账本技术的挑战主要是『跨机房分布式共识算法,应用状态的复杂性』。前者是说分布式共识算法需要考虑更复杂的网络场景,后者是说大部分应用的状态维护比较复杂,不仅仅在数据库中,只是通过一个跨机房复制工具把数据库状态复制过去,是很难应对多机房应用场景,实际上需要应用架构的改变。 (编辑:ASP站长网) |