中心化的原罪
它掌握所有信息。
它制定规则。
它运营整个系统。
最重要的是:它是商业组织,扩大利润是它以上工作的原动力。
有信任问题?请区块链来帮忙
假如我们用以太坊来实现订车服务,我们用智能合约实现一份乘客和司机的匹配算法。当叫车的时候,把乘客的位置、目的地、时间、赏金、要求、当前在线的司机的位置、车辆信息、价格……可能还有别的,统统作为参数带给智能合约。
估计花上几个ETH、等上个把小时就能帮您匹配上一辆出租车了。假如它还在原地没动的话。
显然,智能合约的可信性将叫车服务的可用性彻底杀死了。
去中心DApp
乘客也有手机,司机也有手机。我们让乘客在手机上广播一个乘车消息;司机收到以后自己决定是否要接单;乘客看到应答的司机,选择一位司机,完成叫车。
整个过程没有中心化参与,除了乘客,没有人能决定如何匹配订单,每位乘客和司机都可以按自己的喜好来双向选择。似乎很完美?
很遗憾的是手机程序很难长时间在线,网络信号也可能不好。如果司机经常无法听单接客,相信这个DApp是没人用的。
从能用到可(好)用
我们可以这样改进,每位司机打开家里的PC,在PC上运行听单程序,自动筛选和过滤,当有合适订单的时候再推送给手机。这样就不怕错过好生意。
接下来的问题就是,万一司机填写虚假信息怎么办?自己篡改数据记录怎么办?DiDi是有司机审核机制的,虽然不是总有效,也有各种防作弊和惩罚机制,这也是中心化存在的理由。
从可用到可信
为了解决这最后一步,我们可以采用Elastos的可信运行时环境。它类似一个运行在电脑/手机里的虚拟机(VM)。
这个虚拟机有如下特点:
VM与宿主存储互相隔离,互相不能访问;
VM的网络被接管,无法使用传统的TCP/IP/HTTP;
代码(App)与数据分离;
需要使用DID登录,只能访问对应DID的数据存储;
举个简单例子,这个VM就像是一个外壳,里面运行CD播放器程序,用户的个人存储就像是CD盘。插入你的光盘(Login DID)就会播放你的内容;拿走光盘(Logout DID)这里什么都不会存。
我们这个播放程序(或者听单程序)的代码可以开源,任何人都可以按标准方法编译并生成二进制和对应的hash值,再用这个hash来检查运行环境中执行的App是否匹配。从源码级别保证代码是所见即所运行。