作者: Retric

媒体: 橙皮书

日期: 2018 年 12 月 7 日

ArcBlock-Orangepaper

今天早上跟 arcblock 的老冒交流了一个小时,他提到几点我觉得挺有意思的:

1、智能合约可以拿来类比数据库里的「存储过程」的发展。

数据库的存储过程(Stored Procedure)有两个最成功的用法,一个是 validator(验证器),一个是 trigger(触发器)。

1、validator 是用来保证每个字段的数据在一个合理范围内,比如存员工的工资数据,我设计数据库的时候就提前知道一个员工每个月的工资不会超过 100 万,那存进去的数字就有 0-100 万的范围,提前做限制,非法数字就存不进去;

2、trigger 是用来在一些条件下触发执行动作的。比如银行的数据库,如果一个客户的银行余额低于 0 了,那要触发一个通知,告诉银行这个用户要破产了。以前没有触发器,就只能一遍一遍的对数据库进行轮询,现在有了 trigger,就可以很轻松的把一些逻辑写进数据库里。

这两个东西出来的时候,业界曾一度非常激动,认为这是新一代的数据库,甚至有人认为我们可以不需要应用服务器了,所有的代码都写进数据库就行了。但到了今天事实证明,数据库并没有替代应用服务器,它只是提供了很重要的基础设施,但上面还叠加了很多其他层的中间间。

类比区块链的话,智能合约就是存储过程一个很自然的发展。我们在去年也一度以为,以太坊要接管一切,所有的应用都应该跑在以太坊上。但今天大家都知道,智能合约很有用,但大部分应用是在链下的,区块链只是其中一个技术组件。不过这不妨碍区块链的伟大性,就像数据库在今天也是不可替代的地位,只是它的很多市场份额会被应用吃掉。现在的区块链之所以难用,也是因为我们试图让普通用户直接在数据库上通过 SQL 语句来做操作、做交互。

注:所谓的“存储过程”,指的是在大型数据库系统中,一组为了完成特定功能的 SQL 语句集,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。 存储过程是数据库中的一个重要对象。

这个定义,其实真的很像是“智能合约”。

2、R3 之前搞过一个 human readable 的智能合约,相当于折衷地把智能合约跟当下的法律能快速桥接起来,是个有意思的案例。

R3 的 Corda 是一个分布式账本,在 2016 年它里面提出了一个很有意思的创新,就是在链上部署一个合约,会同时生成两份:一份是机器读懂得懂(machine-readable)的机器代码,一份是人类读得懂(human-readable)的法律条款。

很多人说,智能合约把规则写到机器上面进行约束,虽然能在链上强制执行转账之类的操作,但是现实世界和法律世界的映射,还是没办法得到保证。法律可以不承认线上的智能合约。R3 为了解决这个问题,让智能合约部署的同时生成一份有效的法律合约,就能快速解决这个问题,而不用等到法律逐渐完善、明确出智能合约这块的法律究竟怎么制定。

这是一个有趣的尝试,只是不知道现在进展怎么样了。

3、计算机在越来越逼真地模拟现实世界,但人类和技术最终会互相适应去发展。

从数据库的发展来看,以前所有数据的存储和维护都放在一台计算机上就可以了,后来慢慢发展到分布式的场景,我们假设这些机器都是可信的,用中心去统一调度,再到现在,我们又慢慢退回到,假设这些节点并不可信的情况,实际上越来越贴近现实世界真实的情况。

但人类可能也需要跟技术互相适应去发展。这方面我想到了一个例子:人类的协作组织方式其实一直受技术实现方式的限制。过去我们以公司的单位去发展,是因为金融技术只能支撑我们以公司的单位去发展,即使这种组织方式跟传统的家庭、部落相比,已经是一个很大的创新了。现在我们有了新的技术,组织方式也需要新的变化。

未来如果 AI 发展到一定程度,区块链也许会被我们拿来作为一种足够强大的治理工具,保证这些技术不朝着危险的方向发展。

P.S:熊市里关注区块链的人越来越少了,我们今后会写更多类似这样的“文章”——比较简单直接、长度很短的、没什么文采的笔记。现在还肯看文章的应该都是特别硬核的老铁了,真正关注这个行业的人、或者这个行业的相关从业者们,大家时间宝贵,不如来点纯的。让我们回归朴素的讨论与交流。

ArcBlock-Orangepaper

原文链接: https://orange.xyz/p/272