概要比特币是一种能够在互联网上实现两个实体无需信任而交换价值的新兴技术。如果将这两个实体设想为机器,我们就可以展现一个系统,在此系统架构中传感器可将其测量数据值上传至世界范围的数据市场中。因此我们要描述下面这样一个传感器及数据请求方利用比特币网络进行数据交易过程的原型实现,进而也探讨其目前的局限性。
简介比特币诞生于2008年,是一种无需中央机构,交易转账方不依赖信任机制的点对点电子货币。而这一切要归功于这套系统巧妙的结合了数字签名,区块链(使用工作量证明记录交易转账交易历史的点对点网络),以及吸引早期介入者的奖励机制。六年之后,一个比特币价值500美元(原作者发文时),每日转账交易达6万笔。正因为比特币为开源软件,因其内置脚本系统使比特币作为可编程程序,数以万计开发者为比特币生态系统做出贡献。比特币可以当做货币的API调用,使机器设备直接参与到经济场景中。
因此,我们期待比特币在促进物联网建设中发挥其潜力。物联网络的架构基础之一就是传感器铺设。然而,当今大部分传感器都掌握在私属传感网络中,只为单一应用服务。这种现状违背了真正的物联网愿景。一些云平台,如Xively,Thingspeak,Thingful支持个人分享传感器数据,但由于没有对数据拥有者的奖励机制,使其不愿意提供良好结构并持续稳定的元数据。因此,第三方无法大范围撬动当前的传感器部署局面。
比特币作为一种互联网原生货币,理论上可以首次实现支付购买传感器测量数据。使传感器拥有比特币地址,即能让其参与到全球数据市场,无需银行或paypal账户及其带来的法律事务。有了比特币,仅仅是创建一个私匙/公匙这么简单。可以举个例子,一个前私属气象监测站的空气质量传感器现在可以售卖其数据。类似耐克的运动应用可以购买该数据并为其用户提供无污染跑步路线。
本案介绍通过比特币区块链进行传感器测量数据交易的概念和原型实现。因此,首先要解释比特币转账交易工作方式,及如何用以传递测量数值。接着我们将描述整个系统的基础架构及原型实现需要完成的任务。最后将讨论其局限性和未来发展方向。
比特币交易转账一笔比特币交易转账包含输入及输出。输入与前一笔转账输出相连,都包含一个脚本。与输出相关脚本决定了输入脚本的请求,用来实现兑换输出值。通常可以理解为,一笔交易转账即为转移一定数额比特币所有权。而该所有权由私匙归属决定,通过私匙可以恢复特定输出。
用下面例子说明。比如下列输出脚本
Pay-to-PubkeyHash:
0P_DUP 0P_HASH160 <pubKeyHash> 0P_EQUALVERIFY OP_CHECKSIG
与该输出相关数额可以通过连接下列格式输入脚本获取
<sig><pubKey>
该脚本运行值应该为真(true)。当公匙pubKey与所需pubKeyHash(0P_EQUALVERIFY)计算匹配,签名<sig>为对应私匙(OP.CHECKSIG)所创建时方可成立。将pubKeyHash理解为比特币地址,我们就明白把比特币发往某个地址的含义。但更有趣的是通过发挥脚本编写能力,比特币可以实现更多的交易转账方式。一个重要的例子就是需要多个私匙签名实现的多重签名转账。近期还实现了第一个assurance contract(此处指crowdfund请见原文),可以理解为类似Kickstarter的非信任去中心比特币众筹应用。
在第一个数据交易应用原型实现中,我们计划将数据直接加入转账交易中,也就是记录在区块链中。值得注意的是,比特币转账交易没有提供增加元数据的空间。漏洞便是增加数据无可避免的会增加额外的输出,并需要将数据编码为公匙哈希值。如是便有了下列缺点。
首先,数据量将严格受限,其次比特币网络的每个节点都认为该笔转账为未结算交易,并永久储存在网络中。后者,我们可以通过下属输出脚本解决:OP .RETURN <data>。OP .RETURN 操作符保证比特币节点该输出为不可花费,因此无需记录。然而,作为区块链的一部分仍然会储存在硬盘当中。目前OP RETURN只允许40个字节的自定义数据。
系统构造及要求我们的系统由三部分组成。传感器端,请求端,传感器库。三部分互相间及与比特币网络间协作方式见下图。
传感器端传感器端需要完成的任务是:通过接收比特币来感知数据请求,可以创建并发布一个包含对方所需数据的转账交易。
请求端请求端需要向传感器端地址支付比特币。接着需要接收传感器端传送的带有所需数据的转账交易。
传感器库另外,我们建议建立一个传感器库,传感器可在其中注册,为请求端检索查找用。进入该传感器库需要传感器带有比特币地址,其所能提交的数据,价格,及其他元数据,如地址,标签等等。
原型实现传感器端
在该原型实现中,为了感知获得一笔付款,即一次数据请求,我们用一个websocket客户端注册一个websocket API. 该Websocket服务器将交易转账连接到传感器比特币地址。随后该转账将用作解读请求端比特币地址。
大部分情况下,会有来自于不同地址的多路输入。但是在该原型实现中我们假设请求方只用单一比特币地址。因此,创建了一笔内含请求端比特币地址,具有 Pay-to-PubkeyHash输出的交易转账,并在比特币网络中发布。
请求端
请求端在传感器库中获取传感器信息。用户选择所需传感器,并对该传感器地址付款。另一个websocket客户端等待传感器端含有数据的交易转账。一旦到达确认,数据解码后交付用户。
传感器库
传感器库作为一个带RESTful HTTP API的数据库及网络前端。两者都可以用作注册传感器或检索用。比如,可以用关键字或区域进行检索(thingful.net有该功能,译者注),并返回带有符合检索要求的传感器列表。
后续讨论我们呈现的是基本概念及传感器与请求者间数据和电子货币交易的原型实现。对未来的愿景是建立去中心的SaaS( Sensing-as-a-Service)模式识别构架,传感器可在其中将测量数值直接上传给覆盖全球范围的数据市场。
我们的第一个概念展示了最简单使用比特币网络实现上述数据交换的流程,其具有一定的局限性。第一,购买到的数据在区块链中公开,可被免费获取。这个问题可以通过请求方公匙加密,然后请求端利用私匙解密来解决。第二,为迅速提供测量数据,我们可以接受零确认支付,这样有被请求端双花利用的风险。第三,很明显有扩展问题。一面是区块链臃肿,并且交换数据永久储存在每个比特币全节点中。另一面是传感器端会有非常多的微小未花费交易输出。
尽管如此,密码学货币,可编程货币和区块链技术仍处于婴儿期。小额支付,侧链,树链开发都是旨在缓解确认时长和扩展性问题。实现机器的数据及虚拟货币交易仅仅是时间问题,将为普适计算开阔全新的领域。(普适计算的促进者希望嵌入到环境或日常工具中去的计算能够使人更自然的和计算机交互。而普适计算的显著目标之一则是使得计算机设备可以感知周围的环境变化,从而根据环境的变化做出自动的基于用户需要或者设定的行为。)
摘自:
巴比特资讯