利用以太坊管理物联网设备 - 论文及源代码
本文介绍一个利用以太坊区块链管理物联网IoT设备的身份识别、验证和声誉的IoT设备管理系统。该系统使用Web界面在以太坊智能合约中注册物联网设备,并通过密码学签名消息验证Iot设备对平台的
使用权。
以太坊教程链接:Dapp入门 | 电商Dapp实战 | ERC721实战 | Php对接 | Java对接 | Python对接 | C#对接 | Dart对接
1、区块链物联网设备管理系统的基本概念
__物联网/IoT设备的标识__:通过默克尔树(Merkle Tree)的利用,无需暴露设备的私有属性即可完成IoT设备的注册。使用公钥(或其衍生表示)作为IoT设备的标识ID。
__物联网/IoT设备的消息签名与验证__:系统中的每个消息都需要由发送端的IoT设备签名,并在接收端的IoT设备处进行验证。
发送端IoT设备的消息签名生成:
接收端IoT设备的消息签名验证:
__物联网/IoT设备的固件指纹__:通过保存IoT设备的固件哈希,可以验证设备所运行的固件是否被非法篡改。
__物联网/IoT设备的信誉机制__:基于Web的信任原理,设备可以形成一个信任网络。一个IoT设备从其他
有信誉的设备得到越多的签名,该设备就越可信。
2、区块链物联网设备管理系统的整体说明
系统主要组成部分包括:实体、设备和IoT平台:
系统开发基于以下技术栈:
- Ethereum
- Solidity
- Truffle Framework
- Web3.js
- React
项目主要目录内容说明如下:
- contracts - Solidity智能合约
- frontend - Web前端,基于React开发
- simulations - IoT设备和平台仿真
系统中IoT设备的配置文件示例如下:
{
"identifier": "0xf34d4c8f79657f1086f55b817837439c303dff19",
"metadataHash": "43af4ba721cd8c9ba432ed6aca9adb96d16f82c25ba76...",
"firmwareHash": "b01d2af9ea9dd59dd9c8af3f1639da03c79b7ed28adaa...",
"metadata": [
"Olive grove",
"45.0270,14.61685",
"Espressif Systems",
"00:0a:95:9d:68:16"
],
"firmware": "333f14cdb0a8520199257479ba126a10bca96b229b7924085...",
"address": "0xf34d4c8f79657f1086f55b817837439c303dff19",
"publicKey": "d627bbb0a7c150f814a1960ebe69f0d8b4494e1033d9e72...",
"privateKey": "48a2e48b2d178e7d1f1508f2964a89079f1f8a301ebb85a...",
"curve": "secp256k1",
"deviceId": 0
}
3、区块链物联网设备管理系统的主要用户界面
网络状态界面:
实体历史记录界面:
IoT设备ID管理界面:
元数据管理界面:
IoT设备固件信息维护界面:
IoT设备维护确认界面:
配置下载界面:
IoT设备列表界面:
IoT设备ID维护界面:
IoT设备历史数据查看界面:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MN9aoRpT-1580862797775)(ethereum-iot-device-management/merkle-tree.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MN9aoRpT-1580862797775)(ethereum-iot-device-management/merkle-tree.png)]](https://img-blog.csdnimg.cn/20200205083422229.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Mrimgpt-1580862797776)(ethereum-iot-device-management/sign.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Mrimgpt-1580862797776)(ethereum-iot-device-management/sign.png)]](https://img-blog.csdnimg.cn/20200205083433875.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDluZLzb-1580862797777)(ethereum-iot-device-management/verify.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDluZLzb-1580862797777)(ethereum-iot-device-management/verify.png)]](https://img-blog.csdnimg.cn/20200205083442850.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6fk6sIbq-1580862797777)(ethereum-iot-device-management/arch.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6fk6sIbq-1580862797777)(ethereum-iot-device-management/arch.png)]](https://img-blog.csdnimg.cn/20200205083447346.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BddfNuHO-1580862797778)(ethereum-iot-device-management/network-status.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BddfNuHO-1580862797778)(ethereum-iot-device-management/network-status.png)]](https://img-blog.csdnimg.cn/20200205083505912.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WKvqLabw-1580862797778)(ethereum-iot-device-management/history-event.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WKvqLabw-1580862797778)(ethereum-iot-device-management/history-event.png)]](https://img-blog.csdnimg.cn/20200205083511913.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XWUQg2iQ-1580862797779)(ethereum-iot-device-management/device-registration.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XWUQg2iQ-1580862797779)(ethereum-iot-device-management/device-registration.png)]](https://img-blog.csdnimg.cn/20200205083522284.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VvcCAuyw-1580862797780)(ethereum-iot-device-management/device-metadata.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VvcCAuyw-1580862797780)(ethereum-iot-device-management/device-metadata.png)]](https://img-blog.csdnimg.cn/2020020508352910.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NHSvJkf8-1580862797781)(ethereum-iot-device-management/device-firmware.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NHSvJkf8-1580862797781)(ethereum-iot-device-management/device-firmware.png)]](https://img-blog.csdnimg.cn/20200205083529925.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DveWgz7p-1580862797783)(ethereum-iot-device-management/device-confirm.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DveWgz7p-1580862797783)(ethereum-iot-device-management/device-confirm.png)]](https://img-blog.csdnimg.cn/20200205083545183.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z3MkRNE5-1580862797784)(ethereum-iot-device-management/download-config.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z3MkRNE5-1580862797784)(ethereum-iot-device-management/download-config.png)]](https://img-blog.csdnimg.cn/20200205083553572.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-toH9DlMM-1580862797784)(ethereum-iot-device-management/list-device.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-toH9DlMM-1580862797784)(ethereum-iot-device-management/list-device.png)]](https://img-blog.csdnimg.cn/20200205083559459.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g5Fr3cft-1580862797785)(ethereum-iot-device-management/edit-device.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g5Fr3cft-1580862797785)(ethereum-iot-device-management/edit-device.png)]](https://img-blog.csdnimg.cn/20200205083558558.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=,size_16,color_FFFFFF,t_70)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f7kiG1PG-1580862797786)(ethereum-iot-device-management/history-event-device.png)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f7kiG1PG-1580862797786)(ethereum-iot-device-management/history-event-device.png)]](https://img-blog.csdnimg.cn/20200205083615509.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NoZWJhbzMzMzM=,size_16,color_FFFFFF,t_70)