Blockchains and Smart Contracts for the Internet of Things

警告
本文最后更新于 2018-10-22,文中内容可能已过时。

Introduction

缺失可信中介使交易双方之间的协调更快

密码学的大量使用为网络中的所有交互带来了权威性

智能合约允许分布式的,高度自动化的工作流程

Blockchains and IoT

目前的中心化模型中,制造商维护以百万计的设备的软件更新代价是高昂的

用户缺乏对应用从后台是否私自获取数据的信任,需要一个透明度保障的方法

区块链技术可以解决这些问题

制造商的所有物联网设备都在同一个区块链网络上运行,制造商部署智能合约并允许它们在区块链网络上存储最新固件更新的哈希值,这些设备要么将智能合约的地址附加到它们的区块链客户端,要么通过发现服务找到它。然后,它们可以查询合约,了解新的固件更新,并通过分式对等文件系统请求更新并通过哈希验证更新正确性,对该文件的第一次请求由制造商自己的节点(该节点也加入区块链网络)提供服务,但更新文件传播到足够的节点后,制造商的节点可以停止提供服务,由已获得更新的设备向未获得更新的设备提供服务,一切自动进行,没有用户交互。

此外,区块链中加密货币系统的使用可以提供付费层,为设备间的服务市场铺平道路。上面的示例中,非制造商的节点为其它节点提供更新可以收取服务费,以维持设备运行成本和获利。更普遍的,每台设备都可以拥有自己的账户,然后提供资源(服务或设备使用权)给其它设备或用户并获得补偿。如为专门的电子锁设定价格,通过支付房主设定的加密货币数量和正确的签名消息,与锁通信以解锁它,通过让所有这样的电子锁运行在同一区块链上来简化计费。

能量领域,布鲁克林的社区实验,太阳能电池板的能量盈余记录在区块链上,并通过智能合约将其出售给邻近各方。(同样是能量方面,还有能量区块链的那篇)

供应链示例:离开制造商的集装箱,通过铁路到最近的港口,通过海运到目的港口,再送到经销商处,最后到达零售商。这个过程涉及多个利益相关者和检查,每个利益相关方通常都会维护自己的数据库,以跟踪资产,并根据链中其他方的输入更新资产。虽然设置用于跟踪此资产的区块链网络意味着现在有一个共享数据库可以跟踪,其中更新带有加密可验证性,自动沿网络传播,并创建可审计的信息跟踪。例如,当运输公司到达目的地港口时,他们将签名的消息发送到预定的智能合约,以允许链上的每个人知道该集装箱现在的位置。因为交易被签名,它会作为海运公司关于集装箱已到达目的港的加密可验证收据的声明。港口的接收人发布同样的智能合约,以确认它是否在集装箱里面。

或者利用比特币的代币交易模型来完成供应链的整个过程。

和物联网结合,这个过程可以进一步自动化。假设每个利益相关者携带一个智能跟踪器,里面包含BLE,GSM或LTE以使它连到互联网,安装好的区块链客户端。这样的追踪器也放在集装箱的货物上。当两个利益相关者见面并且集装箱也存在时,利益相关者的设备可以自动地将签名的交易发送到区块链而无需任何用户输入,并且这个过程可以随着请求代币(用代币交易模型完成供应链过程里面的名词)被交换而进入下一阶段。BLE用于设备判断它们何时彼此接近,接近时它们可以通过互联网再区块链上进行交易。

Filament提供一种服务,传感器不接入区块链从而降低部署成本,但连到网关,网关形成网状网络,通过称为“telehash”的协议以分布式和安全的方式相互通信,并通过公共区块链上的智能合约相互交互。

Deployment Considerations

物联网进一步和区块链结合时可能面对的问题,解决这些问题的可能方案(包括正在进行的工作)

相比于集中式的数据库,区块链解决方案交易处理吞吐量比较低,交易确认延迟跟高,公链中这个问题尤为突出。

区块链中每个节点执行相同的任务,没有空间用于并行任务执行,即没有分片,以太坊在努力改进这一点。分片主要是为了扩大每个区块的容量,从而提高交易吞吐量。

区块链隐私问题,每个参与者由其公钥标识,交易时只需要知道对方的公钥,但区块链中所有交易都是公开的,通过分析这些数据,可以识别地址和用户之间的关系,推断出用户真实身份,如果隐私对所考虑的场景很重要,有两种方法可以缓解但不能消除这个问题:

  1. 每笔交易使用新的密钥或对每个交易对象使用新的密钥,举了比特币改进的例子;
  2. 对私有区块链,如果其他参与者可以通过跟踪您设备的活动获得竞争优势,建议不要对所有交易使用相同的区块链,通过仅为需要协作的实体设置区块链,并仅将它们用于自己希望协作的进程,最大限度地减少设备地暴露。与单个区块链相比,这增加了协调成本,但减少了隐私暴露的可能性。

同样,交易隐私也很难实现,因为每个交易的内容在链中都是公开的,并以此对其进行验证。同态加密和零知识证明可以解决这个问题,但解决方法都是资源密集型的,在资源受限的IoT设备上适用性有限,所以采用上面第2种办法,使用区块链只服务于特定进程,并在使用后立即丢弃。

另外是矿工问题,矿工虽然不能伪造交易或重写历史,但可以拒绝把有效交易添加到区块链中,所以要慎重选择自己的挖矿节点,最小化它们之间的串通机会,私人网络中应签署法律合同来合理地惩罚合谋。

智能合约的法律可执行性有限。如果交易实体对智能合约操作的结果提出异议,会发生什么?增加法律可执行性的可能性的一种方法是在智能合约中包含对实际真实合同的引用,反之亦然。这是一个称为“双重集成”的过程,它的工作原理如下:(a)部署智能合约,在区块链上记录其地址,并在真实合同中包含该地址(b)哈希相应的真实合同,记录其哈希摘要,将真实合同存储在安全空间(可以集中或分散),(c)向智能合约发送包含真实合约在其元数据中的哈希值的交易;然后智能合约将该信息存储在自己的内部数据库中。如果出现法律纠纷,可以指向存储在智能合约中的哈希值,然后显示真实世界的合约(由该哈希值唯一标识)并证明区块链上的操作与预期结果之间的联系

设备所有权地证明,当希望提取设备在区块链中对应的货币时(比如把设备卖出去了),遇到不支持智能合约的区块链,怎么办,办法是把现实世界的合同哈希值作为元数据放在代表该设备价值的代币里。即任何时候都可以对这些代币进行公证。

智能合约是把双刃剑,里面代码写的有问题,就可能发生严重的安全事故,就像以太坊的the DAO事件。

最后,区块链网络可能需要以下机制来补充其功能,并且这些机制也应是分布式的。

  • 指向区块链中资源的DNS服务,用于查找相应的区块
  • 安全的通信和文件交换,区块链中的消息通信是公开的,如果需要两个节点间专用的通信,需要telehash,Whisper之类的协议,文件共享则可以通过内容寻址的P2P文件系统来解决,例如IPFS

Conclusions

区块链和物联网的组合主要是可以自动化耗时的工作流程,实现加密可验证性,节省大量成本和时间。

支付宝
微信
0%