一、信任的条件
现实生活中,一件事情如果源头是可信的,过程也是可信的,那么结果一定也是可信的。
因此如果区块链能产生信任,那么在流程上有两个关键条件:
- (上链前的)数据是真实的
- (上链后的)数据是不可篡改的
满足“数据是真实的”这个条件,大概有两种方式:
- 可以验证:同样的输入导致同样的输出。比如1+1=2,比如print(‘hello world’),比如SHA256。此时本质上是对数学的信任,且因此产生了信任
- 有人保证:有权威机构为此负责。比如公证机构称,小明向慈善组织捐赠了10万元,并提供了转账记录。因为银行是可信的,机构是可信的,因此该行为是可信的。此时本质上是转移了信任
二、区块链中的信任
区块链可以分为公有链和许可链。但任何区块链都包含三个层面:交易,区块,链。
一笔交易通过付款人的数字签名(或引用上一个交易的UTXO再签名)来确保交易本身的不可篡改,通过打包到区块、连接成链来保证整个交易链条的不可篡改。
因此,在大多数情况下,区块链是不可篡改的。但区块链是否可信任,取决于交易中的数据是否真实。
1. 比特币
比特币的交易主要是转账,每一笔转账都可以通过锁定脚本和解锁脚本追溯到由系统生成的coinbase,所在区块有一个通过消耗电力且得到大多数节点验证的挖矿的解,所有人都可以验证其真实性且不可篡改。
但如果你在比特币系统中写下“为了部落!”,其他人其实没法验证你是否真心为了部落,只能看到你写了这句话。
因此比特币在转账上是可信任的,但只是一个可信任的支付系统。
2. 以太坊
以太坊的交易主要有转账和智能合约调用两种方式,其转账方式和比特币略有不同但也是可信任的。
而对同样的输入,智能合约计算出来的结果是确定(但不能保证计算的输入是真实的),所有人都可以验证,且不能更改。
因此以太坊是可信任的支付系统和可靠的计算系统。
3. fabric
那联盟链,如fabric,是可信任的吗?
fabric的交易(提案)主要是调用智能合约(链码),按我的理解,是某事在区块链中的记录。
fabric在信任方面的改变主要在许可、多通道和节点的分拆:
(1)许可指参与的节点在加入前需要认证和许可
(2)多通道指不同节点之间可以建立独立的“链”,保证节点业务的隔离和安全性
(3)节点分拆为背书节点、排序节点和提交节点
- 背书节点负责对交易进行背书和确认
- 排序节点对交易进行排序并打包生成新区块
- 提交节点对交易进行(格式上的)校验并追加到区块链
可以看出,fabric中对交易的验证,实际上主要是节点的背书,即通过“有人保证”来保证数据的真实性。
因此联盟链本身只能保证数据的不可篡改和记账效率的提高,而不能保证数据的真实性。
三、善款溯源
近期看到的基于联盟链的善款溯源的应用,其目标是提高信息的透明度,从而提高公众的信任,主要有三个步骤:
- 背书:机构为数据进行背书并提交到区块链
- 记账:各节点记账
- 公开:在网络上公开数据
区块链参与其中,让各参与方共同维护同一个账本,可以优化各方的关系。
因为账本各方都能看到对方的行为,因此记账的节点要为自己所背书的数据负责,是对不作为机构的施压。
但从慈善机构的角度来看,可以分为公开意愿和公开能力两个维度。善款溯源的主要问题应该是机构的公开意愿。
如果慈善机构的公开意愿足够强,实际上有非常多的方法进行保证和公开来获得信任,而非一定用区块链。
比如直接在微博上公开某医院领取某物资的签字或回执,只要对方也通过一些途径进行公开确认就可以了。
再考虑到区块链目前的部署成本、维护成本、学习成本和迁移成本,在没有规模化的情况下,对比实际上能带来的效益,如果不是国家用行政手段强制推行,区块链在其中可能难以真正落地。
这也侧面说明了在某些场景下,区块链目前最大的需求在G端。
四、结论
综上所述,区块链能实现的,是去中心(介)化和不可篡改。
在特定场景下,真实的线上数据来源在区块链的加成下,可以让用户在无信任的状态下完成任务。
但在大部分场景,如果希望通过区块链获得信任,则需要保证数据的真实性,或者有权威机构对此保证(虽然这和中本聪的设想背道而驰)。