不是所有的应用场景都必须用区块链解决,那么什么样的应用适用以太坊区块链呢?区块链上的应用需要是跨越组织边界的,也就是说,在区块链上存储流通的资产(数据)的所有权是属于多个机构的。那么用区块链可解决机构间信任问题,减少摩擦,进而减少成本。这里将应用场景分为如下三大类。
由于区块链上数据区块是持续增长且不可篡改的,所以历史上某个时间发生的事情可以从区块链上得到证明。例如,报纸有一定发行量,很多人手里都有一份,即使撕毁你自己的一份,别人手里还有另一份。通常我们也会用旧报纸上的信息来证明当时发生的事情。区块链的作用与之类似。如图1-6所示,如果在区块3的交易列表中查找到历史某一时刻记录的交易内容“Hello”,则可以证明该交易发生在区块3所代表的时间片段。每个时间点都能得到证明,因此一个事件的来龙去脉就可以得到证明(“溯源”)。因此,很多应用,如食品的处理、加工、运输流程可以在区块链历史数据上进行验证,再如将证书、资格认证一类的数据记录在区块链上也可以证明自己的资历。
图1-6 溯源例子
正如上面介绍的,在以太坊区块链网络,用户可以定义自己的数字资产(虚拟货币、积分、权限等),这些资产可以在以太坊用户之间自如地按照应用定义的规则来转移和流通。资产与资产之间也可以通过定义来进行流通。区块链使得组织、个体、数字资产间的流动性变得可行和可靠。该类的应用包括:商家联盟的积分兑换、游戏代币转移、IoT设备之间的权限转移等。形象地来理解,如在腾讯平台上可以用Q币买东西、玩游戏,Q币也可以在腾讯的用户之间流通,但是Q币无法与支付宝进行流通,因为这两家机构没有建立流通渠道。即使某种应用中两家机构建立了资产流通的渠道,仍然存在难题——这个流通过程中的账本记在谁家?这里只是两家,如果是100家积分共享的应用,这个账本的设计和部署将更加有挑战。而在区块链上的数字资产,比如以太坊上的资产在统一标准(如ERC20标准)下都可以自由地在以太坊用户地址中流通,且流通的记录公开透明。关于以太坊上数字资产的定义将在第7章中介绍。
首先看看图1-7冷链物流的例子。将牛奶从牧场运输到零售商,中间经过食品处理和仓库中转,并由两家物流公司共同完成运送。因为是运输牛奶,为了保持新鲜,需要确保在整个运输过程中牛奶的温度低于8℃,湿度大于60%。我们可以将牛奶放在IoT智能设备运输箱里面,该设备可以报告温度和湿度。假设当物流公司运送到零售商的时候,发现温度为10℃,高于保鲜要求的8℃,物流公司2会被惩罚。在这个例子中先不考虑区块链的解决方案,我们使用传统解决方案,如何部署数据库呢?由于有两家物流公司合作运输,数据库放在哪一家公司我们都无法保证完全信任该公司对数据的记录。因此,大家各自记录数据,结果很难实现数据统一和实时更新。有了区块链技术,企业将各自节点加入区块链网络。我们可以把牛奶温度和湿度的要求定义在智能合约中,IoT设备定时将温度和湿度数据以交易的形式发送到区块链的该合约中,交易的签名由IoT设备来完成,防止人为伪造。当温度超过8℃时,合约对物流公司2的扣款(事先把押金付给合约)将自动完成,没有纠纷。所有机构在权限范围内都可以看到物流的状态。在这里,我们看到区块链是一个可信的、大家共同拥有数据的账本(数据库)。类似的应用还有信用管理、评价、保险等。
图1-7 冷链物流
这些运行在区块链上的应用通常称为去中心化应用(DApp),下一节将详细介绍。