说起来自认是“区块链从业者”,但其实这个看似简单的问题困扰了我很久。
在回答这个问题之前,我们先做一点准备工作。
我并不打算介绍区块链的定义,什么“地球村记账”的白话例子也不打算举。坦白地说,目前没有任何一个关于区块链的官方定义,即便是在工信部2016年《区块链发展白皮书》里面也只将区块链定义为:一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术在互联网时代的创新应用模式。你看,这种定义说了跟没说一样,而且还容易被很多人误解成为区块链是已有成熟技术的大杂烩。
目前一个公认的说法是,区块链最伟大的应用之一(也可能是最成功的应用没有之一)是比特币。好嘛,比特币的定义倒是在中本聪的白皮书里面写得明明白白,就是“一个不依靠信任的电子交易系统”(A system for electronic transactions without relying on trust)。那除了数字货币之外,我们还能用区块链做什么呢?联盟链是不是伪命题?无币区块链又是不是伪命题?
肯定有人会问:你连“是什么”都回答不了,怎么回答“能干什么”?
这个问题其实是有解的。
虽然给不了具体定义,但从技术角度来看,区块链仍然属于典型的分布式系统(distributed system),于是上面这个问题可以转化为”区块链和传统的分布式系统有什么区别?”
一旦搞清楚这个问题,我们也就自然能够搞清楚区块链能干什么了。
相同点:数据共享
在分布式系统的经典教材Distributed Computing:Principles, Algorithms, and Systems里面有写到,分布式系统一个非常重要的作用就是资源共享(Resources sharing)。当然广义上的资源包括了计算、存储资源和数据等等,我们不考虑未来区块链是否能演变成计算资源共享的技术(毕竟现阶段以太坊也只是高度冗余的图灵完备计算机),但数据共享这一点确实是区块链和传统分布式系统的相同之处。
进一步地,区块链甚至做到了极致:所有节点都共享全量数据。某些定义里面提到的“分布式账本”,其实就是指的这个意思。需要指出,还有些说法谈到区块链实现了“数据共享”和“价值传递”,后者其实本质上也是在互信场景下的某种特殊数据共享,作为比特币每个节点所共享的数据单位,每个区块实际上就可以看做是转账记录的集合(加上一些附加信息)。当然如何保证在不可信场景下的数据共享,这就是区块链的不同之处了,后面会提到。
如果仅仅是为了数据共享,尤其是单个业务主体内部的数据共享,大可不必采用区块链,传统分布式架构的实现有更好的性能更低的开销,至于数据安全问题,也可以用一些灾备技术去解决。曾经有某国企部门领导问我,把自己部门的业务数据全部用区块链存储,能不能变得更快或者更省钱,我这种老实人只能回答:都不能。