快讯:
据媒体报道,近日,爱奇艺创始人、CEO龚宇指出,未来增长的空间在科技创新,但中国企业家在科技方面仍需知识结构上的补充。视频行业有三个较大的创新点,一是VR(虚拟现实),二是AI(人工智能),三是区块链。AI领域布局及时,而区块链技术最终选择放弃。
据外媒近日报道,美国前国会议员罗恩·保罗(Ron Paul)在11月15日曾发起一项推特问卷调查:如果不得不将1万美元以一种形式保存10年,人们希望以哪种形式保存这1万美元。在受访者中,50%的人表示更愿意接受1万美元的比特币,其次是黄金(37%),第三是美国10年期国债(11%),最后是美元(2%)。
据Coindesk今日报道,德勤美国金融服务行业区块链工作组负责人Linda Pawczuk说,近期服务客户一直咨询关于SEC调查ICO公司或者其他非法使用比特币或加密货币的新闻,显得有些焦虑。
据媒体报道,近日,爱奇艺创始人、CEO龚宇指出,未来增长的空间在科技创新,但中国企业家在科技方面仍需知识结构上的补充。视频行业有三个较大的创新点,一是VR(虚拟现实),二是AI(人工智能),三是区块链。AI领域布局及时,而区块链技术最终选择放弃。
据外媒近日报道,美国前国会议员罗恩·保罗(Ron Paul)在11月15日曾发起一项推特问卷调查:如果不得不将1万美元以一种形式保存10年,人们希望以哪种形式保存这1万美元。在受访者中,50%的人表示更愿意接受1万美元的比特币,其次是黄金(37%),第三是美国10年期国债(11%),最后是美元(2%)。
据Coindesk今日报道,德勤美国金融服务行业区块链工作组负责人Linda Pawczuk说,近期服务客户一直咨询关于SEC调查ICO公司或者其他非法使用比特币或加密货币的新闻,显得有些焦虑。
据媒体报道,近日,爱奇艺创始人、CEO龚宇指出,未来增长的空间在科技创新,但中国企业家在科技方面仍需知识结构上的补充。视频行业有三个较大的创新点,一是VR(虚拟现实),二是AI(人工智能),三是区块链。AI领域布局及时,而区块链技术最终选择放弃。
据外媒近日报道,美国前国会议员罗恩·保罗(Ron Paul)在11月15日曾发起一项推特问卷调查:如果不得不将1万美元以一种形式保存10年,人们希望以哪种形式保存这1万美元。在受访者中,50%的人表示更愿意接受1万美元的比特币,其次是黄金(37%),第三是美国10年期国债(11%),最后是美元(2%)。
据Coindesk今日报道,德勤美国金融服务行业区块链工作组负责人Linda Pawczuk说,近期服务客户一直咨询关于SEC调查ICO公司或者其他非法使用比特币或加密货币的新闻,显得有些焦虑。

发挥比原特性和融合PPk开放协议的经验分享(3)

PPk兴趣组 2018-10-26 13:51 发布在 技术指南 56860

基于比原链开发物联网软硬件结合DAPP

在前期两个各有特点的DAPP--“我画你猜”小游戏(详见 https://www.8btc.com/article/276313)和“趣吧”网络社群(详见https://www.8btc.com/article/287217 )收获的经验基础上, 我们PPk技术社区进一步实现了一个采用PPk开放协议和比原链的物联网应用DEMO——“JoyIOT趣联网”。

可以通过下面两种方式访问: 1. 传统的网址: http://btmdemo.ppkpub.org/joy/iot/

20181025-main-1

2. 基于区块链的PPk ODIN标识网址: ppk:JOY/iot/

 

注:类似DAT、IPFS等正在发展中的WEB3.0开放协议,目前大众使用的电脑和手机浏览器还不能原生支持访问。要访问“ppk:joy/iot/”这样的ODIN标识网址,现在可以运行我们PPk开发的JAVA开源工具的代理服务,就能使用现有浏览器来访问PPK网络资源了,比如 http://btmdemo.ppkpub.org:8088/ 或 http://45.32.19.146:8088/ 就是我们运行的示例服务,在浏览器里打开该代理服务网址然后输入要访问的 PPk ODIN标识网址就可以看到了,如下图所示:

20181025-main-2

“JoyIOT趣联网”是一个基于比原链实现的对等物联网信息交互原型,是区块链和物联网的融合示例,通过比原链的交易特性来发布对设备的控制信息和获取设备产生的信息,结合实现物联数据资产收益,在此过程中融合展现比原数字资产和PPk开放协议的结合特点,并兼容传统的网页浏览器来访问,体现融合区块链技术的对等万维网(WEB3.0)的原型概念。

主要特性:

  1. 将物联网设备视为基于PPk ODIN标识和PTTP协议所构建的对等可信信息交换网络里的AP节点,从而为访问和控制物联网设备所属传感器数据提供了统一、灵活的接口,更好地支持具体应用的开发。
  2. 相比传统的物联网技术,通过PPk PTTP协议将信息交换逻辑切换到通过区块链为信息中介枢纽,这样一旦部署运行,即使无人维护也能持续运行,不用担心服务中断了。
  3. 发挥比原链侧重数字资产的技术特性,支持与物联数据相关功能性数字资产的自主定义和使用。
具体实现方案上,“JoyPub趣联网”示例采用PPk ODIN标识定义了三类开放数据命名:

1.设备(Device): 本示例采用比原链自主注册设备,相应ODIN标识为 ppk;JOY/iot/bytom/txid# 其中的txid取值为对应链上交易唯一ID,例如 ppk:JOY/iot/bytom/9a7c52bad7f9da6821b69739fc756f25bf184cde7dd5ffa9851f3b3fd2abc6df#

内容定义格式示例如下,参考 https://schema.org/ 标准化数据集可以进一步灵活扩展。 { "@context": [ "https://schema.org/", "https://w3id.org/security/v1" ], "@type": "PeerIOT",

"name": "设备名称", "avtar": "设备图像,建议用img_data_url或者url",

"gas_asset_uris":[ "ppk:BTM/asset/asset_id....." ],

"authenticationCredential": [ { "type": "RsaCryptographicKey", "publicKeyPem": "-----BEGIN PUBLIC KEY...END PUBLIC KEY-----" } ], }

注: (1)定义中的gas_asset_uris是用于识别提取属于该设备关联传感器信息的资产标识列表,通过对应区块链Explorer API查询指定资产标识相关的Retired类型交易列表即可过滤出符合“JoyIOT趣联网”定义的传感器数据。 (2)定义中的公钥publicKeyPem可用于对设备下属传感器相关信息的验证。

2.传感器(Sensor): 本示例通过比原链来自主登记设备上的传感器,相应ODIN标识为 ppk;JOY/pub/bytom/txid/sensor_id# 其中的 ppk;JOY/pub/bytom/txid 为设备ODIN标识,sensor_id为自定义的传感器ID。 例如 ppk:JOY/pub/bytom/9a7c52bad7f9da6821b69739fc756f25bf184cde7dd5ffa9851f3b3fd2abc6df/dht1#

内容定义格式采用PPk PTTP协议Data数据报文定义,可以进一步灵活扩展。 JSON格式定义如下: { "ver":协议版本号(目前取值为1),

"data":"数据正文字符串,JSON编码,具体定义见下文";

"sign":"签名算法类型(如SHA256withRSA,SHA1withRSA等):对data字符串的签名对应Base64编码字符串", }

其中data数据正文字符串的JSON格式定义如下: { "uri":"对应传感器信息的ODIN标识",

"utc":到秒值的生成时间戳, "status_code":返回状态码,沿用HTTP协议定义的状态码定义,缺省为200 "status_info":"返回状态附加描述字符串,可选,沿用HTTP协议定义的状态码定义相关描述",

"metainfo":{ //对数据块的元描述信息 "content_type":"正文类型,采用HTTP协议相关定义,如text/html,text/json,image/jpg等)",

"content_encoding":"内容编码形式,参考HTTP协议相关定义,如gzip,base64,deflate等,如果该字段为空则表示内容为原文", "content_charset":"内容字符集,采用HTTP协议相关定义,如utf-8, iso-8859-1,gb2312等,如果该字段为空则缺省为utf-8", "content_length":正文长度, }, "content":"子块正文数据,如果是二进制需要采用Base64编码", }

其中content的JSON格式定义如下: { "@type":"传感器类型,目前定义了两种:DHT温湿度传感器和LED_MATRIX发光二极管阵列", "title":"传感器名称",

"vd_set":{ "algo":"发布数据时所用非对称签名验证算法类型,缺省为SHA256withRSA,可选SHA1withRSA,SHA3withRSA等", "pubkey":"验证所需要的公钥" } } 注: 定义中的公钥pubkey可用于对传感器相关上报数据或接收命令的验证。如果pubkey取值为空字符串,则表示忽略可信验证。

3.传感器数据(SensorRecord):

本示例通过比原链来存储传感器关联的数据,相应ODIN标识为 ppk;JOY/pub/bytom/txid/sensor_id/#record_id 其中的 ppk;JOY/pub/bytom/txid/sensor_id 为设备传感器ODIN标识,record_id为自定义的唯一记录标识(如流水号或时间戳等)。 例如 ppk:JOY/pub/bytom/9a7c52bad7f9da6821b69739fc756f25bf184cde7dd5ffa9851f3b3fd2abc6df/dht1/#1539764770

传感器数据的内容定义格式同样采用上述的PPk PTTP协议Data数据报文定义,可以进一步灵活扩展。 在本示例里涉及的两种传感器的具体定义如下: 1.由DHT温湿度传感器上报的监测数据:需要设备对数据包进行签名,然后通过组织成区块链交易发送到区块链上存储和被访问使用。 其中content的JSON格式定义在本示例里具体定义如下: { "temperature":摄氏温度整数值, "humidity":湿度整数值 }

2.发送给LED点阵显示模块的控制命令:需要控制者对数据包按控制权限要求进行签名或不签名,通过组织成区块链交易发送到区块链上存储,最后被目标传感器所读取验证后执行相应的控制命令。 其中content的JSON格式定义在本示例里具体定义如下: { "width":点阵宽度, "height":点阵高度, "matrix":"点阵显示原始数据字符串", "img_data_url":"采用data:形式的图像数据" }

这里探讨下结合区块链的物联网DAPP应用相比传统的物联网应用有什么本质的改变? 我们PPk社区认为,相比传统的物联网应用常用的“云服务+设备”架构,DAPP应用模式下,设备可以在区块链上自主注册自身和下属传感器标识,并通过区块链存储监测数据和接收控制命令。这样同一份物联网数据,开放、可信、持续地托管到区块链上,可以被其它DAPP应用所自主、可信、稳定地调用和整合,所谓“1+1>2”,自组织成更有生命力的物联网应用生态。

以我们这次做的“JouIOT趣联网”DMEO来说,每一个设备、传感器以及相关检测数据和控制命令都开放、可信地存放在比原链上,拥有能保证跨链唯一性的ODIN标识。

现在我们就可以通过比原链来自主注册一个新的物联网设备,在“趣联网”示例主页点击右上角的“请点击这里注册一个新设备,获得跨链跨平台的ODIN标识”链接,显示新设备注册界面如下:

20181025-newdevice-1

在这里就可以编辑新设备的配置参数,其中name是名称,avtar是设备图像网址,gas_asset_uris是设备相关的数字资产标识,可以通过比原钱包很方便地创建自己设备所对应的数字资产,用于生成相关的retired类型交易来附带存储设备相关的数据。publicKeyPem是设备声明的公钥,用于按RSA非对称算法对设备下属数据进行验证。

生成一对RSA公私钥的方法很多,比如用 http://web.chacuo.net/netrsakeypair 这样的线上工具就可以,如下图所示:

20181025-newdevice-2

将私钥单独备份好,将公钥部分就可以复制到上述注册新设备的参数填写页面里(注意需将原始公钥文本里的换行都替换成“\r\n”)。

待设备参数都编辑输入完整后,点击“确认发布到比原链上”按钮就可以完成新设备的注册了,回到主页后点击设备列表里新注册的设备图标,就可以查看具体信息,如下图所示:

20181025-device-1

这个设备信息展示界面的传统网址是 http://btmdemo.ppkpub.org/joy/iot/device.php?device_odin=ppk:527064.583/iot/bytom/40f0e51109a477bdf9737a36dc792b35494bf2eb9b04c52c70d3ea21594e9222

其中的device_odin参数地址(ppk:527064.583/iot/bytom/40f0e51109a477bdf9737a36dc792b35494bf2eb9b04c52c70d3ea21594e9222) 就是该设备的ODIN标识,可以被跨链跨平台应用所自主可信地访问,通过支持ODIN标识和PTTP协议的工具比如PPk浏览器,间接调用比原链相关API,就能获取到该ODIN标识对应设备定义的JSON数据,如下图所示:

20181025-device-2

同时获取者能自主判断所拿到的设备参数是否是可信的,这里面就用到了区块链技术,其实机制也很简单,就是把公钥可信地存储在区块链上,通过ODIN标识来获得和验证数据块签名即可,具体实现方案可以访问 http://ppkpub.org/#odinproject 深入了解。

新设备添加成功后,接下来就可以添加该设备下属的传感器了。 本示例采用树莓派(Raspberry Pi 3)来模拟搭建一个物联网硬件设备,并配置两个常见的传感器模块:DHT11温湿度传感器和MAX7219驱动LED8*8点阵显示模块,如下图所示:

20181025-sensor-1

树莓派的基础Linux环境安装和两个传感器的连接配置方式在网上有比较详细的资料可以查阅,这里不再详述,下面几个网址可供参考:

Raspberry Pi 3简明配置教程: https://medium.com/@molimowang/raspberry-pi-3%E7%AE%80%E6%98%8E%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B-a575f20a7361 树莓派三使用max7219 led点阵: https://blog.csdn.net/zyaiwmy/article/details/70224250 树莓派控制温湿度传感器DHT11: http://guojianxiang.com/posts/2015-11-26-RP_Controle_Dht11.html

通过SSH客户端登录到已安装好Linux的树莓派系统,从本示例的GITHUB上(https://github.com/joyiot/btmdemo/tree/master/python)下载相应的Python源码,先编辑其中 device.json 文件,输入该设备对应的上述ODIN标识和生成的私钥(注意需将原始私钥文本里的换行都替换成“\r\n”)后保存,如下图所示:

20181025-sensor-2

回到树莓派命令行,就可以运行 joyiot_register_sensor.py 这个Python程序来添加新的传感器模块了。

首先我们输入下述命令来添加一个名称为"dht1"的温湿度传感器:

python joyiot_register_sensor.py --id dht1 --type DHT --pubkey SameToDevice

执行结果最后显示如下就说明新的传感器已经在比原链上登记成功了。

Response= {"status":"success","data":{"tx_id":"324b1ca181d66232c153eb64312881c05587803340288a6c4b74704bb359b7f8"}}

编辑 joyiot_dht.py 文件,,如下图所示:

20181025-sensor-3

输入对应的 sencor_id即传感器名称 和 channel即传感器在树莓派上的GPIO接线引脚编号 ,保存后运行下述命令

python joyiot_dht.py

即可将监测到的温湿度数据上传到比原链上。

然后我们输入下述命令再添加一个名称为"led1"的LED显示点阵模块:

python joyiot_register_sensor.py --id led1 --type LED_MATRIX --pubkey ""

注意这里的pubkey参数取值为空字符串,表示新增的这个LED显示点阵是完全开放的,通过区块链接收控制数据时不需要验证权限。如果该参数指定了一个公钥,则通过区块链接收控制数据时会验证需要有相应的私钥签名。

回到设备信息展示页面,刷新后就会列出该设备下属的传感器列表,如下图所示:

20181025-device-3

点击温湿度类型的传感器,可以查看其所上报的最新监测数据,如下图所示:

20181025-dht-1

对于LED点阵,则点击“发送控制信息”,就可以自行编辑简单的点阵图案,并通过区块链传递到硬件上展示,如下图所示:

20181025-led-1

编辑好点阵图案后,然后点击“确认发送到比原链上”按钮,即可通过比原链花费设备设定的数字资产,发送附带图案数据的retired交易。

回到设备信息显示页面,点击相应的LED点阵右侧的“查看最近的控制数据”,就可以查看到如下信息:

20181025-led-2

对应的最新控制数据的ODIN标识为: ppk:527064.583/iot/bytom/40f0e51109a477bdf9737a36dc792b35494bf2eb9b04c52c70d3ea21594e9222/led1/#

回到安装了LED点阵的树莓派上,输入下述命令:

python joyiot_led.py --id led1

就可以通过PTTP协议来读取上述ODIN标识的具体内容,并相应体现,如下图所示:

20181025-led-3

上述示例展示了通过PPk开放协议将比原链和物联网硬件融合到一个应用里的原型概念方案,将比原区块链平台作为物联网的信息存储和传递枢纽,发挥比原链发行数字资产很简单和交易成本低的优势,很好地支持对等可信的物联网DAPP应用。

在上述这个示例基础上,我们PPk技术社区正在结合比原链和更多区块链平台的各自特性,进一步构思和实现更多应用示例,体现PPk开放协议在WEB3.0生态中的独特“衔接”作用,欢迎继续关注。

附:本示例源码的GITHUB网址 https://github.com/joyiot/btmdemo/ 其中WEB部分是PHP+JS编写,硬件控制部分是Python编写。

文章标签: 比原链
评论
登录 账号发表你的看法,还没有账号?立即免费 注册