Skip to content

为什么感觉区块链没什么用

宿命般的问题

从事区块链行业已经将近八年的时间了,有个宿命般的问题一直萦绕在我的心头,那就是:区块链有什么用?

公司这么多年也在不同的领域做了很多基于区块链的企业应用,但是每当我满心期待的询问产品的同事:这次的应用场景有什么新鲜的点吗?

得到的回答总是:没什么,本质上就是个存证。

我也曾无数次的追问,跟不同的人讨论,为什么区块链这么优秀的技术,却总是无用武之地?

有人归咎于用户:区块链,请停下你飞奔的脚步,等一等你的用户。

有人归咎于人性:大的企业通过中心化过得美滋滋,没动力去搞什么去中心化,那不是革自己的命嘛。

有人归咎于监管:央妈不让。

总之一句话:错的不是我,而是这个世界。

蛛丝马迹

但是事实真的是这样吗?区块链一骑绝尘般的领先时代,其他所有人都是拖后腿的?

好好回想一下过去几年的一些事情,其实已经有很多蛛丝马迹了。

无交易不出块

这个功能现在几乎是国内联盟链产品的标配。

即区块链在没有交易的时候不出空块,直到有新交易的时候才恢复出块,目的是节省存储空间。

起初我非常不理解这个功能:

  1. 出空块压根占不了多少存储空间。我们测算过,一年可能也就几个G。这点成本对企业来说九牛一毛都算不上。

  2. 这么明显的违反拜占庭容错理念的功能同行也做?作为区块链人的操守呢?我甚至已经写了很长的一篇文章《区块链行业从业者,我要迪士尼》,当然后来怂了。

抛开技术问题不谈,我们换位思考一下企业客户如此纠结这么一点存储成本背后的心理。

其实很简单,在企业成本核算中,“没用”是原罪,哪怕再小的成本,也必定要被揪出来优化掉。

虽然不严谨的说有点像,三个馒头吃饱了,回头后悔不应该吃前两个馒头。

但是反过来也说明了客户最在意的是业务数据,区块链本身产生的区块等数据都是额外的元数据。

这些数据只是在需要对外证明的场景(比如跨链)才会有用,正常情况下根本用不到,自然是要低人一等。

区块链应用的模式

我在19年的时候曾经系统的对比过 UTXO Model 和 Account Model,写了《两个模式》系列文章。

国内联盟链产品基本上都是以太坊的技术路线,使用 Account Model 和 EVM,践行着以太坊的 World Computer 的思路。

按照这种思路,业务的计算逻辑都应该在链上,通过发交易去修改状态,通过call查询状态。

但是事实上并不是这样的,企业级的区块链应用通常都有非常厚的一层应用层。

应用有自己的数据库,有自己的业务逻辑,独自处理来自终端用户的请求。

甚至不要下面的的区块链,应用也可以独立的运行。

说好听点叫解耦,说不好听就是没你也行。

这里面的原因是多方面的:

  1. 区块链的性能不能满足要求(关于国内联盟链动辄十几万TPS的性能测试报告,我也非常想迪斯尼,但是还是不展开了)。应用必须缓存用户的请求,进行排队并记录中间状态。
  2. 区块链的时延太大了。在交易上链期间,应用要能响应用户的请求,维护并返回各种中间状态。

因此,应用通常都会实现比合约更加完整的业务逻辑。

这时就存在一个问题了:既然两层都实现了业务逻辑,万一应用和区块链的数据不一致了,以哪个为准?

很遗憾,通常是以应用的数据为准,对区块链进行数据订正,就像传统系统中对数据库一样。

也正因为如此,应用通常不会通过call查询链上状态,而是直接在合约的log中加上足够的信息。发送交易之后,获取到交易回执,然后解析里面的log信息获取交易执行的信息。

这不又有点像 UTXO Model 了吗?

而且这还跟日常生活中孩子班里收班费的情况非常像。

老师会要求家长用微信把班费转了之后,把转账成功的界面截图发到群里。

为什么要截图呢?是微信本身没有查询账单的功能吗?

可能老师不是实际收钱的人,看不到账单;也可能是短时间内大量转入,账单梳理起来比较麻烦。

不过前几天跟kevin交流的时候,他给这种现象一个非常好的总结:log 是 on-chain 到 off-chain 方向的流动;而交易是 off-chain 到 on-chain 方向的流动。

所以不论是转账后截图,还是发交易后获取log,其实都是脱离了原有系统的一种表现。

在原本的系统设计中,用户在发出交易之后依然应该停留在系统之内,但是因为各种原因,用户选择了脱离系统。

区块链本来以为自己是主角,是掌控者,没想到跟前面一样,变成正常情况下根本用不到的小透明。

只能做存证

我在之前的《两个模式》系列文章里有提过,存证是区块链非常非常基础的应用,根本不能完全发挥出区块链的优势。

用区块链只做存证,不亚于拿超算只做加减乘除。

但是为什么会有这样的情况呢?

最近一段时间,电信让我非常的恼火,月末收到账单,经常发现一些莫名其妙的额外扣费。

打电话过去询问,客服又言之凿凿,说是我某月某日订阅的。

但是我几乎可以肯定,我在那个时间根本没有任何的操作。

但是我拿不出切实的证据,客服又非常爽快的取消了额外服务,所以也就算了。

然后我就想,如果把之前办理业务的录音或者电信宣传页的内容做个存证,是否就可以用来解决这类纠纷呢?

仔细想了想发现不行,如果只是把文件或者图片算个hash存到链上,还是有很多问题。比如谁来存;怎么截取图片,可能稍微偏一个像素 hash 就很不一样了等等。

总之就是还得深入到业务系统里面去,不只是一个文件 hash ,还得有业务系统的信息才行。

但是如前面所说,要往上走,并不是我们一开始想的那么简单,可以说困难重重,所以就只能做最基础的存证了。

不往上走又不行,一个软件下载网站是不会自己演进成苹果应用商店的。

思考

最近跟业界的好友做了一些交流,还跟公司内产品的同事经过了一次比较深入的沟通。

前面的内容中也有不少观点来自这些沟通和交流,也有了一些新的思考。

总结一下,我们可以看到,区块链在整个应用系统中存在感太低。

但是其核心功能还是不可或缺的,那就是验证和证明。

所以想通过增强区块链的性能和功能,代替应用系统,目前看是几乎不可能的。

反而发挥其核心的验证和证明功能,是很有必要的。

而且这块儿还有很大的发展空间,只做 hash 存证肯定是不行的,必须要深入到业务系统中,抓住业务核心意图。

本文篇幅已经有点长了,具体想法的展开再单独开一篇,希望不会拖太久。