公有许可链是未来

在前两期秘猿科技区块链小课堂中,我们理解了什么是区块链,以及区块链的发展史。那么,区块链能够为我们带来什么呢?想要实现真正的商业应用落地需要准备哪些必要条件?2017 年,秘猿科技 CEO 谢晗剑分享了对区块链技术带来现实意义的理解,以及第一次提出公有许可链的想法。而这个想法照进现实,被 Facebook 所实现。我们很高兴看到两年前的预言变成现实。未来是有迹可循的,幸运的是这一次我们自己将是创造它的那群人。

秘猿科技区块链小课堂第 3 期

作者:Jan Xie
Architect and Researcher
Founder at Cryptape, former researcher & developer at the Ethereum Foundation focused on Casper & Sharding, co-founder of ethfans.org, and former architect at Peatio.

我们用区块链解决数字世界信任难题

人类是一种群居动物,人类学家通过对不同动物群落的分析发现,对于人类而言,最自然的群落人数上限是 150,这代表了我们在日常生活中可以维护的比较亲密的关系数量。从古至今,人类一直在尝试各种发明创造,以期通过不同的工具、制度来突破这个限制。

因此,我们有了公司这个非常伟大的发明。

用机器管理流程

在公司内部,我们会制定各种各样的制度来激励人,用于维持一个团体向同一个目标迈进;在公司与公司之间,我们会制定公司法等一系列法规,用于保证公司与公司之间商务合作的顺利进行。公司制度下充斥着各种各样的商业流程,诸如下单、采购、制造、发货、开票、收款等等,它们把各环节上所有的人串起来,保证他们在既定流程中可以有效协同地完成一个任务。

但当计算机出现后,计算机的能力在不断增强,而人类的能力却相对没有变化,这个时候我们开始思考,是否应该把计算机运用到这些流程之中,用它们来管理流程。

这和我们把机器用于工厂是相反的。 在工厂里,机器人是工人,管理者是人,但是在流程管理里,我们尝试的是用机器去管理人,这就是我们所描述的“流程自动化”。 所以在今天,我们看到了各种各样基于网络和计算机技术的信息系统,比如说ERP、商业智能。

基于这样的信息系统,我们能够组建起越来越多的大公司,那些跨国公司也早已司空见惯。但如果我们想要把这个自动化的流程再向外扩张,延伸到公司边界之外时,我们就会发现各种各样的问题。公司及组织本身是一个信任边界,内部能有很好的协作,但一旦脱离组织边界,我们就没法去相信流程上的其他人也会忠于他该做的事情。

这是我常常思考的一个问题: 能不能通过技术的手段,使得企业与企业之间,而并非仅限于企业内部,也能做到流程自动化呢?在互联网的技术环境下,我一直没有找到答案,直到以太坊的出现。

以太坊给的答案

以太坊通过去中心化的技术为我们构造了一个共享的数据库,在这个共享数据库之上又为我们构造了一个共享的计算机,我们可以把代码部署到以太坊这个分布式系统上,让机器来帮我们执行代码。我们可以把在商业世界中用自然语言写成的合约改为用代码写,把由人来执行的合约改为由机器来执行。另外,我们还在以太坊上创建了两种不同的账户,这和诸如比特币等任何其他的区块链都有很大不同。在其他的区块链上,只有一种人类控制的账户,你可以通过你的资料去管理你账户里的余额。

但在以太坊上,只有一种叫做合约账户的东西,它由机器控制,合约账户里储存了用代码写成的逻辑,这个世界上没有任何人可以控制它,只有这段代码可以控制它。

这是一个破天荒的发明。 它代表机器在历史上第一次实现了经济独立。 在以太坊系统里面,机器和人的地位是一样的。在以太坊上,我们不区分人或者机器,机器也可以在以太坊上面开户,因此机器有了经济自主权。也正是因为这一点,机器能够在这个世界里成为一个可靠的中间人。在我们现在的商业世界里,所有的中间人都由人来担任,你可能没办法相信他能够妥善保管你的财产;但是当机器有了经济自主权之后,你可以相信机器能够安全保管你的财产。

你可以把财产托付给智能合约,即托付给机器,因为机器没有办法从区块链上跑路。到了这个时候,我觉得当初我们想要达到的企业与企业之间的流程自动化就有可能实现了。那么是不是就 OK 了?很遗憾还有很多事情要做。

如果我现在问大家,区块链里最靠谱的应用是什么?你会想到地下市场还是 1CO?我们能够看到的是,这些应用都离我们商业世界里的应用很远。我们需要去中心化的 Uber、去中心化的阿里巴巴,但我们不需要去中心化的地下市场,那与我们普通人没有关系。在我看来,造成这种现象的原因是,现有的公有链是一个无需许可链,任何人都可以匿名的身份在这个环境里做一些事情。 但是对于每一个正常人来说,我们需要的不是匿名而是隐私 ,这是不同的东西。

数字世界的信任

在现有的公有链里,我们也很难看到稳定货币的存在。如果我们真的要把现在的商业世界搬到数字世界里,我们就需要稳定货币的支持,那样我们才能对卖出的商品、提供的服务给出一个稳定的定价,才能很好地核算成本和收益。但你又会发现,汇率稳定在公有链里很难,它难以用一种去中心化的方式去实现。商业世界必然需要监督,但是在数字世界里,怎么做到这一点呢?

作为前以太坊的成员,我也经历过去年发生的区块链历史上最最最有名的黑客事件。(关于 TheDAO 事件的还原,可以收听国内首个中文区块链博客 Forkit #2为什么 The DAO 的发生是个必然?」)

在很短的时间内,价值五千万美元的以太币被偷走,这些以太币是由一个智能合约、一个机器保管的。 当时整个社区发生了剧烈的争论,讨论我们是应该尊重《代码及法律》(认为黑客是合理合法的利用了代码漏洞)不去管它,还是立即采取措施把这笔钱找回来?

当时我们联合了几个团队做了一个投票的网站,尝试去收集社区的投票,最后的共识是应该采取措施把损失降到最低,所以最后以太坊也确实采取了这样的行动。我们在代码里硬编入了更改数据状态的代码,把这笔钱找了回来。

但当时这个行为也引起了非常大的争议。有人说这违反了区块链上数据不可篡改的性质, 这样做区块链还有什么意义?但是我想说,区块链的不可篡改究竟指的是什么?它指的是交易的历史不可篡改,这和我们的现实世界非常相似。

因为你在不停的转账,比特币上的账本每时每刻都在更改,每个人账户里的余额都在变化,但是一个交易一旦发送到区块链上,它就不能再被撤销。在以太坊上,从来没发生过交易撤销的事情,只有这个世界的状态改变过,这是我们应该保证的一个原则。但是我常常会想,也许我们可以做得更好,也许我们可以通过某种方式,而非硬性的更改代码来完成这个事情。

身份认证是许可链的基础

怎么做?近年(指本演讲发生于 2017 年)来出现了一种新型的区块链,我们把它叫做许可链。它跟公有链有很大的不同,许可链很好的回答了这些问题。

在许可链里,无论是节点还是用户,可能都需要先通过身份认证才能获得一定的许可,才能够加入这个链及使用这个链提供的服务。 身份是许可链的基础,有了这个基础,我们才能够去更好地构建一个数字商业。

在许可链里,由于有了身份,我们可以很容易地把现实世界中有信用的机构引入,由这些有信用的机构承担我们称之为法币网关的决策,由这些法币网关去发行对于稳定货币 1:1 汇率的代币。

在许可链里使用这种基于信任的稳定货币机制可能是最容易的,而且在未来数字货币真正推出的时候,法币网关的机制也更能够让许可链接入真正的数字货币。

有身份的许可链上,我们也能够构造不一样的治理机制,我们可以形成一个链外的治理委员会,在有紧急状况发生时,可以由治理委员会在链外形成人的共识,达成决议来决定我们是否要去做一些操作。

这样一种做法的好处是说,我们不仅没有修改历史,还将当时发生了什么以及我们做出了何种决议,都以交易的形式保存到了历史中。在这样的情况下,区块链可以成为一个非常好的信息记录工具。

但是,这样就够了吗?很可惜还差一点点。我们现在看到世界各地有许多大大小小的许可链正在建设当中,但它们都是分割的网络, 而区块链是一个具有网络效应的技术,即:网络越大,网络中资产的价值就越大。 我们需要有一个大大的所有人一起用的许可链。

公有许可链是未来

许可链现在存在的第二个问题是经济激励机制。区块链里的节点是通过使用自己的计算能力提供存储空间,为区块链上的所有用户提供服务。 但是在许可链里,这个服务是免费的,我们缺乏经济激励的机制来激励这些节点提供服务。

如果没有这样的经济激励,我们很难想像许可链可以长久稳定的运行下去。在可遇见的未来,如果没有经济激励,许可链还是不是区块链呢?或者说只是区块链的一个分布式数据库。所以我们该怎么办呢?

现在有一种叫公有链的技术,和许可链比较两者各有好处。首先你会发现,公有和许可的定义并不矛盾,公有说的是希望有尽可能多的用户来使用它,许可说的是希望用户在进入这个链使用服务之前先获得一定的许可,或者说通过一定的身份认证。

这两个定义并不矛盾,我们为什么不可以把它们弄在一起?这是我们觉得未来可能会出现的一种新的区块链,我们把它叫做公有许可链。它既是一个公有链,有很多人一起使用;又是一个许可链,这上面的用户还有节点都是有身份的,这在技术上是可行的。

它的形态可能是说在共有的无许可链上再增加一个许可层或身份认证层,也有可能是完全构造一个独立的公有许可链,和公有无许可链平行。我们相信在未来,这两种类型的区块链会是非常好的互补。 (PS:很重要的一句话)

在这样一个分布式的、支持智能合约的、有身份的平台上面,我们可以把今天的商业世界整个的搬到这个数字世界当中,我们可以实现企业与企业之间的商业流程自动化。

换句话说它其实是信任的自动化。

什么是信任呢?

信任就是说,我认识你,什么都别说了,把我的钱拿走,这就是信任。

我不明白为什么以太坊出现甚至比特币出现之后才有了答案。企业与企业之间的合作为什么没有人想到利用拜占庭共识?是什么阻止了 2008 年之前的人只关注 fail-stop 类型的共识算法在企业内分布式集群中的作用而对 Byzantine 类型的算法关注不多?是有新的需求出现了吗?但是就算是新的需求出现了,直觉是也不应该是以太坊的功劳,为什么以太坊之后好像大家突然醒悟的样子?

public 与 private 相对,准确说应该是“公开”的意思。这里似乎和我的理解不同,有什么证据支持“公有说的是希望有尽可能多的用户来使用它”这个定义的吗?

这个我也不赞同,“permissioned”原本是用来形容共识算法的,定义非常明确。但是这里的“服务”使得定义变得模糊。我的理解中,“许可”说的是只有获得许可的用户才能参与共识,共识协议中是可以确信总共有多少节点参与共识的。

所以我觉得文中这个“许可”的定义不够好,掩盖了一些内在的不同。在这个定义下,公有的无许可链上加一个许可层就变成了许可链,实际上它的行为和安全模型与真正的 BFT 类的许可链完全不同,它更类似于比特币这种非许可链。但是如果采用“许可只形容共识算法“的描述,它就会被划分为非许可链,我觉得这更合理。

鬼知道!就像你永远也不知道你明天早上醒来的第一个 念头 是什么一样。

我感觉这里的 许可 在谈 谁能使用链谁能提供链服务 更多一些。