区块链的本质是什么为什么企业需要用区块链
扫描二维码
随时随地手机看文章
我先讲重点:目前很多企业/组织提出的区块链应用,都不需要区块链,而且不用区块链可能还运作得更好。
这不是危言耸听,在真正理解区块链技术的人眼里,很多应用根本就是为了区块链而区块链。
那他们为什么要用区块链?因为用区块链就跟「创新」、「FinTech」等Buzzword 产生连结,瞬间潮度大增。说来可笑,区块链现在对企业的贡献更多是行销曝光,而非实质意义上的技术创新。
如果目的是为了VC 眼中的估值或是媒体曝光,那用区块链当然没问题,但问题是,很多企业的决策者会被这些应用误导,而媒体本身也没有足够的专业素养去辨别这些「区块链假应用」,而对其大书特书,久而久之就越来越多奇怪的区块链应用出现。
现在整个产业的当务之急,是让企业的决策者及开发者能够正确理解区块链的价值,把区块链用对地方,这正是笔者撰文的用意。
区块链的本质是什么?
区块链的本质是多个成员共同维护的协作型资料库系统,比起中心化的资料库,区块链在写入资料时,至少多了三个步骤:
· 决定由谁来写入资料
· 把新增的资料段分给大家(广播区块)
· 运行共识协议,确保大家的资料库都是一致的
就因为多了这三个步骤,在同样的运算资源跟网路频宽的状况下,区块链不可能比中心化的资料库有效率。
相较中心化资料库,区块链是一种缓慢、无效率、计算上昂贵的资料库。
如果区块链注定比较慢,那为什么还这么多人讨论它?原因在于,在某些应用场景中,用这种去中心化的资料库可以解决一些信任或是资讯传递效率的问题。本质上,区块链就是一种用「技术上的无效率」去换取「业务场景的效率」的技术。
乍看之下很难理解,我举个例子:
假设你现在要从台湾汇1000 美金到纽约。台湾银行跟纽约银行存放的美金都是一样的东西——都是数位型态的美金,所以理论上双方只要把银行帐本对一下,一边扣1000,一边加1000,再扣除跨国转帐所需要的手续费,交易就结束了。
听起来很容易,但在真实世界中状况远比这更复杂,由于汇款方跟收汇方的银行的帐本往往不直接相连,我们必须仰赖SWIFT 协议透过中转行把钱转到指定银行的户头,如下图所示:
中转行当然不会免费帮你做事,国际电汇每中转一次,中转行就需要收一次手续费,除此之外还有清算对帐的程序要走,所以即便我们身处于如此数位化的时代,跨国转帐一直都是一件满麻烦的事情。
一次跨国电汇平均需支付10~30 美金,要等1~3 个工作天才会真的到帐
现在我们先把所有法律跟政治问题全部摆一边,假设现在主流货币不是美金而是比特币,比特币跨国转帐需要多少时间& 手续费呢?
大部分的状况下,比特币转帐手续费都低于1 美金,而且10 分钟就能到帐(要安全一点就等1 小时)
比特币是古典公链的代表,其共识算法是顽固到不能再顽固的PoW,可以说是最慢、最没有效率的区块链了,但在跨国汇款的情境下,依然比SWIFT 协议快上不只一个level。
这就是一个典型用「技术上的无效率」换取「业务场景的效率」的例子,因为区块链的共识算法,本质上就是一种自动化对帐的程序,在技术上是比较慢没错,但比起银行跨国汇款所需要牵涉到的繁琐环节(敲汇、手动资料Key In、对帐)还是快多了。
当我们用区块链的时候,一定要先扪心自问,我们到底用「技术上的无效率」到底换取了什么东西,如果一个常规的中心化资料库,一样也能够满足应用场景的需求,那我们就不需要区块链。
接下来笔者想探讨两个区块链常常被误解的地方:
发币只能用区块链
笔者遇过不少企业主都想拿区块链做点事,而他们不约而同都在商业模式里面加上了「XX币」,期望自建一个闭环经济,但奇怪的是,在区块链被广泛讨论之前,他们好像就想不到这种模式,仿佛没有区块链就不能发币一样。
本质上,所谓的「币」不过是被储存在资料库的字串,这个资料库可以是中心化资料库,也可以是去中心化的区块链,这个字串不会因为在区块链上就突然自带价值,若中心化的点数发行机构足以被信任,那用区块链发币意义就不大。
用区块链(公链)发币的好处:
1. 透明公平:币的运作逻辑(如总量限制、转帐条件、增发条件、锁仓期等等)可被公开审计。
2. 流动性高:天生自带全球流动性(global liquidity),因为公链本就是公开大帐本,用去中心化交易所即可与全世界的公链用户做P2P 交易。
3. 稳定:如果发币的公司倒了,币还是继续存在(但有没有价值就是另一回事了)
4. 方便:比起写一个中心化的点数系统,有时候直接在公链上直接用公版的智能合约发币可能会比较方便(如ERC20),毕竟已经有各种conventional 的函式可以直接用了。
5. 互操作性:发在同一条公链上的币,可以透过智能合约实现一些互操作性,譬如持有某A 币一定数量以上的用户,在用B 币跟某智能合约互动时可以有一些优惠。
但缺点也很明显:
1. 交易速度慢:区块链不可能比中心化系统快,在以太坊转帐至少要等3分钟才会被确认,不过用DEXON 就没这个问题了, DEXON 可以做到2 秒内到帐(偷打广告)。
2. 用户门槛高:对一般大众来说,区块链的进入门槛非常高,用户要下载钱包、学会管理自己的私钥、知道地址是啥、知道什么是区块确认数、知道怎么支付手续费等等,这些有的没的规则,就连非常tool smart 的网路重度用户都需要时间学习。
所以说,除非:
1. 你的用户很在乎币的运作逻辑会不会被乱改(但这似乎也意味着你根本不值得被信任?)
2. 点数有强烈的交易需求且需要全球流动性
3. 你家工程师懒得写一套点数系统(这可能不是个理由)
4. 点数需要跟其他点数有互操作性(前提是这些点数要在同条链上)
不然还是别用区块链发币了,你会把用户搞死的。
不过如果你的目的是募资,那就另当别论了,因为无知的大众总是会觉得区块链的币就是潮,就是想买。
智能合约好像很神?
笔者在看一些区块链的应用时,往往会看到「我们可以透过智能合约,实现XXX 自动化功能」类似的字眼,疑?难道不是智能合约就不能自动化吗?
其实绝大多数的人对智能合约的理解是错误的,大部分的智能合约既不智能,也不是合约。
本质上,智能合约就是「被部署在区块链上的程式」,跟一般程式最大的差别,在于智能合约会被每个全节点储存并执行,智能合约被触发执行完毕后,其执行的结果(称为state)会被存到区块链上。你可以把它想像成大家一起做一模一样的事情,得到一模一样的结果,然后存起来,就这么简单。
对于公链来说,智能合约比较接近“persistant script”,是一种一旦条件被触发,就会强制执行的代码。由于部署在去中心化的区块链上,代码是透明公开的,且一但部署,这段代码就永久存在在区块链上了,理论上无人能take down 这段代码(除非hard fork) 。
对于联盟链或私链来说,智能合约比较接近大家约定成俗做某件事情的一种惯例,说白了就是一种形式标准化的作业流程,只是用程式去实现它,好处是降低沟通成本,让大家可以在一个封闭的环境内用同样的协定处理特定业务,而且处理的结果是同步给大家知道的。
以上两种「智能合约」,都不一定是真的合约,因为跟合约互动的人不见得有什么权利义务,其执行的结果也不见得有法律保障,用合约一词去概括解释区块链上的程式,完全就是一种定义上的误导。连以太坊创办人V 神都曾经公开忏悔,他很后悔当初采用智能合约这个词:
所以说到底,智能合约根本没这么神奇,中心化程式一样也可以做到自动化,智能合约是为了达成某种特殊手段才会需要使用的程式,大家清醒点,好吗?
区块链技术的本质以及常被误解的用途,在此篇文章笔者将尝试提供一个泛用、易懂的框架,让企业决策者可以判断应用场景是否需要导入区块链。其实国外已经有不少学者提出了区块链的应用评估框架,像是美国标准技术研究院(NIST)就在其区块链技术回顾的论文中(第42页)提出了以下的框架:
NIST 的区块链评估应用框架
其他学者提出的框架都跟NIST的大同小异,这当中NIST的框架虽然较为全面,但仍然有其局限,理由在于,这些框架都偏向把区块链当作协作型资料库(CollaboraTIve Database),但事实上区块链还有其他的用途,像是博弈类DApp利用公链智能合约开源的特性,解决了线上赌场长久以来的信任问题——庄家可能会操纵随机数来坑玩家,这种将程式逻辑公开换取信任的应用方式,就完全在以上框架的守备范围之外。
正因为如此,笔者希望能设计一个包容性更大、更全面的框架给企业决策者参考。
适合区块链的应用场景
以笔者研究超过上百个区块链应用案例的经验来看,区块链作为一个共享帐本(Shared-ledger),其用途大致上可分为三个种类:
A. 协作型资料库(CollaboraTIve Database)
B. 数字资产发行平台(Digital Asset Issuing Platform)
C. 公正程式平台(Honest Program Platform)
协作型资料库(CollaboraTIve Database)
这个类型的应用适用NIST 的框架,不过NIST 的框架有点太复杂,我把它稍微做了简化,如果你的应用场景有以下特性,可能就适合用区块链做协作型资料库:
1.需要储存资料
2.有多个资料写入者
3.没有适合/可信任的资料储存者
4.资料需要其他成员查核&审计正确性
5.资料一但被写入后就不能被删除或更新
你可能会想,什么样的应用场景会有以上的特性?
通常跨组织的资讯交换会有这种特性,譬如国际船运就是一个典型有多方参与者(贸易商、海关、港口、物流业者),且需要频繁验证资讯正确性的场景。
假设你是一个贸易商,你想把货物从台湾卖到南美洲,因为路途遥远,所以你花钱找了两家船运公司来运东西,但问题来了,每家船运公司都有自己的一套追踪系统,但只看得到自家旗下货物的运输状况,所以你必须不断打电话、写Email 到这两家公司,才能追踪到货品的完整运输状况。
除此之外,船运公司也需要跟其他组织沟通,譬如港口、海关、陆运业者等等。船运巨擘Maersk 就曾经估计过,把一个冷藏货柜从东非运到欧洲需要经手大约30 个人和组织,超过200 次沟通交流才能实现,这些贸易文件处理的相关费用占了实际运输成本的5 分之1。
这些痛点能用区块链解吗?
我们来一一检视国际海运是否需要区块链:
1.需要储存资料
--》打勾,需要有地方能够存货物的运输状况。
2.有多个资料写入者
--》打勾,有很多组织需要写入货物资料,譬如海关写入验货状况,海运业者写入运输到哪里等等。
3.没有适合/可信任的资料储存者
--》打勾,这个场景牵涉太多单位,找谁来存end to end的资料都不适合,找海运公司?找某政府海关?找某大港口?就算有人肯存,其他单位可以完全相信它不会乱来吗?
4.资料需要其他成员查核&审计正确性
--》打勾,譬如船运公司A要接力运输船运公司B的货品时,A必须确认B送进港口的东西已经被海关验过没问题了,这时候A不能片面信任B的说词,还必须要去跟海关再三确认才行。
5.资料一但被写入后就不能被删除或更新
--》打勾,货物运输纪录本身是一种流水帐型的资料(log),理论上只会一直新增纪录,不会修改过去的历史。
Bingo!我们得到了一个合理的区块链应用!
IBM与船运巨擘Maersk在2018年发起的区块链专案—— TradeLens,就是一个让各家船运公司、贸易公司都能够共同分享、上传资讯的协作型资料库,让联盟的成员能够掌握end to end的货物运输资讯,其运作方式如下图所示:
在一次IBM 的测试中,TradeLens 可以有效减少40% 的货物运输时间,这听起来很棒,但专案发展了整整一年之后,这套系统有被业界大规模采用吗?
答案是,没有。
之所以没有被大规模采用,主因并非技术障碍,而是政治问题。其他船运同业并不希望加入一个由Maersk主导的计画,他们担心自己的权利在这个平台无法跟Maersk平起平坐,像是世界第五大的船运公司Hapag-Lloyd就曾公开批评 TradeLens是一个不能用(unusable)的平台,但明眼人都知道,并不是不能用,而是它不想用。
把区块链拿来当协作型的资料库,技术上并不难实现,真正难的地方是如何让各方都愿意参与其中,TradeLens 上如果只有Maersk 一家船运公司,其存在就毫无意义,像国际海运这种由寡头占领的市场,由任何一个寡头出面做平台,其他人难免会不服气。
区块链可以解决资讯传递效率的问题,但无法解决「谁也不服谁」的政治问题。
要避免政治问题,此种应用比较适合由独立的第三方(譬如产业工会或是政府)来推动,像是财金资讯公司推动的金融函证区块链即是如此,财金公司的股东由各大银行跟政府组成,某种程度上可说是银行业的集体意识,这种单位做平台大家比较容易服气,但改成某间银行来主导可能就会失败。
看完了TradeLens 的案例,我们再来看第二个误用区块链的例子——航空公司哩程系统。
有某间航空公司跟数百家餐厅、住宿业者合作,让客户在这些合作商家消费也可以累积航空哩程数,并且宣称在点数系统中导入了区块链技术,大幅度提升后端作业效率并减少人力核对点数成本。(这是真实案例)
这真的需要区块链吗?让我们再套用一次框架:
1.需要储存资料
--》打勾,需要有地方能够存点数余额。
2.有多个资料写入者
--》打勾,有很多合作商家需要写入资料以更新点数余额。
3.没有适合/可信任的资料储存者
--》打叉,航空公司自己做一个中心化的资料库让合作商家串API同步点数余额状况即可,没有信任问题。
4.资料需要其他成员查核&审计正确性
--》打叉,这个应用场景是「一对多」而非「多对多」的关系,亦即商家A跟航空公司串接资料时,并不需要同步让商家B知道,而且商家B也不需要审计「商家A跟航空公司串接资料」的真实性。
5.资料一但被写入后就不能被删除或更新
--》看状况,如果资料库只纪录点数最新的余额,不管中间消费历程,就不需要这个特性。
在「有可信任资料库」的状况下,单纯的资料同步是不需要区块链的,航空公司高管宣称的「后端系统效率提升」,在我看起来可能只是借着区块链专案的名义把原本不够数位化的地方做得更好罢了,看起来是区块链奏效,但实际上并非如此。那为什么要用区块链呢?可能是为了PR 效果,也可能技术顾问公司卖区块链soluTIon 可以开更高的价码吧!谁知道呢?
实务上,协作型资料库通常会用联盟链实现,因为一些机密的资料并不适合/不需要放在公链上给所有人看,不过也有一些应用变体会把资料存公链上,譬如MIT自行研发的数位证书协议Blockcerts,就是让所有需要发数位证书的单位,都可以透过这套协议把证书纪录在比特币的区块链上。
以往发行数位证书的单位需要有一个后台,让用户可以验证证书的有效性,但现在用Blockcert 就只要负担少少的资料上链费用,不用再雇用人开发/维护后台,就可以安心地把证书存在区块链上,而用户也可以用Blockert 协议开发的APP 统一管理不同机构发放的数位证书,解决了数位证书管理不易的痛点。
总结一下把区块链当成协作型资料库的好处以及需要注意的地方:
好处:
1.降低跨单位资讯传输成本
2.解决「没人能存资料」的问题
需要注意的地方:
1.可能会有「谁也不服谁」的政治问题,建议由第三方单位推动
2.在意资料隐私的话建议使用联盟链,反之若资料适合存在公链上,建议不要重复造轮子,先看看是否有开源协议可以使用
上面提到区块链可作为协作型资料库,接下来要介绍另外两种应用类别,数字资产发行平台&公正程式平台:
数字资产发行平台(Digital Asset Issuing Platform)
区块链很适合作为数字资产的发行平台,如果你希望数字资产有以下特性,或许就适合用区块链来发行数字资产:
1.数字资产需要跨地域、跨系统的流动性
2.数字资产需要跟其他数字资产有互操作性(前提是这些资产要发在同一条链上)
3.需要公开数字资产的资讯/运作逻辑以取得信任
区块链本质就是一个共享大帐本,当有越来越多的资产以token的形式发行在区块链上,这些token的流动性就会越来越高,而当一个资产的流动性提升,它本身价值也会被放大。
举例来说,如果有某企业选择用以太坊ERC20 标准发行点数,那这个点数从创建第一天开始就会有二级市场,用户可以透过去中心化交易所把点数换成其他ERC20 token。如果用中心化系统发行数字资产,用户交易「跨单位发行的数字资产」时,往往要透过一个交易清算单位,或是OTC (over the counter) 做线下交易,流动性就比较差。
除了流动性之外,另一个明显的好处就是提升不同数字资产的互操作性(interoperability),譬如持有某A币的用户,每天可以分到一定数量的B币,或是持有C币一定数量以上的用户,用D币买东西的时候可以打折等等,这种数字资产之间的互动可以透过智能合约来实现,用中心化系统不是不能做,只是实作上会比区块链麻烦很多,想想LINE Point如果要和乐天点数实现这种互操作性,系统上的串接会有多麻烦?
最后一点是信任,区块链上数字资产的总供给量、增发逻辑、转帐条件、持有量分布等等,都可以被公开审计。这有什么用呢?如果某游戏厂商用区块链发行虚拟宝物,他可以公开虚宝的总量以证明稀缺性,甚至以程式严格控制虚宝总量必须低于玩家总数的千分之一等等,向玩家证明不会有虚宝通膨问题,这我称之为「可信赖稀缺性」( proven scarcity)。
有一些开源或是带有公益性质的项目,也比较适合用区块链发币,像是FileCoin 和BAT(Basic Attention Token )之所以采用公有链作为发币的平台,除了募资方便之外,也跟其项目本身的性质有关系,这两个项目都是开源的项目,用中心化系统发币未免有点奇怪,用区块链发行代币,让代币自行运作再适合不过。
那有没有缺点呢?当然也是有的,如同上一篇所提到的,区块链的交易速度不可能比中心化系统快,譬如ERC20 代币的转移就先天就受到以太坊的限制,至少要等2~3 分钟才会到帐,如果很在意交易速度,建议可以使用速度较快的公链(如DEXON) 或是联盟链(如币安链)来发行数字资产。
另外就是上手难度的问题,要在区块链上交易数字资产,必须理解私钥、地址、交易手续费、区块确认数等知识,对一般大众来说太难了,需要有配套措施提供更好的UX,譬如客制化钱包、私钥代管服务等等。
总结一下把区块链当成数字资产发行平台的好处以及需要注意的地方:
好处:
1.提升数字资产流动性
2.提升数字资产互操作性
3.可藉由公开数字资产的运作逻辑以取得信任,适合开源或是公益专案
需要注意的地方:
1.交易速度较慢,如果很在意速度建议使用DEXON或是联盟链
2.上手难度高,可能需要搭配客制化钱包&私钥代管服务降低使用门槛
公正程式平台(Honest Program Platform)
当区块链引入图灵完备的程式语言后,就从单纯处理数字货币的帐本变成了一台去中心化的电脑,开发者可在其上透过智能合约实现各种更复杂的逻辑,区块链的智能合约有三个特性:
1.开源
区块链的智能合约代码是公开的,每个与合约互动的人都可以检查其代码有没有问题
2.不可窜改
智能合约的代码跟交易纪录一样,一旦被部署在区块链上之后就无法修改
3.无法被阻止
只要触发一开始写好的条件,智能合约就会自动执行,理论上无人能阻止代码运作。
(2跟3都是在区块链是安全的前提下才成立,如果所有节点共谋作恶,那就不成立了。)
白话一点来说,智能合约属于一种「下好离手」、「运作方式透明公开」的程式,在一些运作机制不透明的产业,譬如线上博奕,人们很难相信程式不会偏袒庄家,毕竟后端的代码都掌握在博弈厂商的伺服器上,但如果改用区块链的智能合约就不一样了,因为程式运作逻辑可被公开审计,玩家不用担心庄家操纵随机数,也可以确保庄家不会跑路,因为智能合约会保证赔付。
智能合约开源特性也可以应用在群众募资上,群众募资一直有个痛点— —项目方拿了钱之后交付成果不如预期,以太坊的创办人Vitalik曾经提倡过一种新型态的募资方式— DAICO,其核心概念是投资人先把钱(ETH)打进智能合约中,这些钱会按一定的速度分批释放给项目方,如果项目方做得不好,投资人可透过代币投票,减慢项目方领取ETH的速度,甚至在必要的时候投资人可以直接撤销专案,把剩余存在智能合约里的钱拿回来,借此降低项目方跑路的风险,也保障投资人的权益。
由募资平台运行中心化的程式也可以实现上述规则,只是会产生新的信任问题,募资平台的利益跟项目方紧密挂钩,难保募资平台不会与项目方共谋,窜改投资人的投票结果,反观智能合约规则透明公开,没有造假空间,更有公信力。
把区块链「公正程式平台」特性发挥得最淋漓尽致的应用类别,莫过于近期大红的DeFi (Decentralized Finance,分散式金融),DeFi利用智能合约开源以及分散式网路的特性,将传统金融产品转变为无需信任且透明的协议,这些协议可以在无须中介机构的情况下运行,且用户无须准入许可,是一种人人可用、运行逻辑与数据全程公开透明的金融协议。
目前最热门的DeFi 项目就是MakerDAO,它是一个去中心化的抵押贷款平台,以往我们可以抵押房子来借钱,譬如抵押市价1000 万的房子来借600 万,以超额抵押来抵销不履约的风险,而在MakerDAO 上我们是超额抵押「以太币」来借「Dai」(Dai 是一种1:1 锚定美金的稳定币),如果抵押品价值下滑,智能合约会自动触发清算机制,最低清算率是150%。
举例来说,我可以抵押市价400 美元的以太币借100 个Dai, 如果以太价格崩盘,抵押的以太币价值从400 美元下滑到150 美元以下,这就触发了清算机制( $100*150%=$150 ),我可以选择抵押更多的以太币,确保抵押品的市值保持在借款的150% 以上,或是不作为任由系统拍卖我的抵押品,而后者必须额外上缴一笔罚款。以上的这一切,都由智能合约完成,无需人力介入,这意味着更低手续费的可能性,DeFi 不但能有效降低用户参与金融市场的成本,也让世界上20 亿无法进入正规金融体系的人,有了另一个新的选择。
讲完了好处跟应用方向,接下来讲区块链智能合约的限制,区块链的智能合约被储存&运行在分散式网路中,这意味着每一次代码执行,都必须在每个节点上被运行一次,假设网路有一万个节点,同样的代码就必须被运行一万次,因为以上的特性,所以区块链的智能合约:
1.只能实现简单的逻辑:一些需要大量运算资源的程式(譬如Deep Learning),并不适合放在智能合约里。
2.不适合应用在高频场景:如果程式会在短时间内接受大量的request,且用户的等待耐心时间极短(低于1秒),那就不适合用区块链的智能合约实现。
还有一点必须注意的是,如果你的智能合约需要外部信息输入,那智能合约如何取得资讯就必须考量进去,实务上一般常见的作法就是投票。
譬如我们刚刚提到,当以太币的市价滑落时可能会触发MakerDAO的清算机制,那么智能合约从哪里得知以太币的市价呢?如果直接拿CoinMarketCap的价格,那似乎有点太过武断,如果有人跟CoinMarketCap官方串通共谋,那岂不是天下大乱?为了保持去中心化的特性,MakerDAO参考了多种价格来源,并且设置了一种特别的智能合约来管理以太币市价的source feed,而所有source feed的增删都是由MKR (MakerDAO的治理代币)的持有者投票决定,有兴趣的读者可以阅读Maker DAO的官方文件。
事实上所谓的多重签名签包(Mutisig Wallet)本质上也是一个智能合约,大家把钱打进去,然后规定只有超过半数的参与者签名后才能拿钱出来,这也是一种投票的概念。
总结一下把区块链当成公正程式平台的好处以及需要注意的地方:
好处:
1.可藉由公开程式的运作逻辑以取得信任
2.降低人力参与/去中介机构,可降低成本
3.条件触发即自动执行,无人能够阻止
需要注意的地方:
1.只能实现简单的逻辑,区块链不适合运行太复杂的程式
2.不适合应用在高频场景,如果程式需要高频、低于1秒延迟的处理速度,可能用中心化的系统更为适合
3.触发条件若需要外部信息输入,需考量设计方式,如果信息输入来源单一,那就失去用区块链的意义了(控制输入来源=控制程式运作)。
结论
希望能让大家更了解区块链的用途和限制。要设计出一个可以容纳区块链所有应用的框架,坦白讲是一件很困难的事情,因为区块链本身并非为了特定应用而被发明的技术,每个人看到的区块链价值可能都不一样,所以设计出的区块链应用也会大异其趣。