# Open-DT-chain **Repository Path**: liangfeii/open-dt-chain ## Basic Information - **Project Name**: Open-DT-chain - **Description**: Sharing data based on blockchain. - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2022-03-18 - **Last Updated**: 2023-11-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: Blockchain, 区块链 ## README # DT-chain ### 介绍 物联网设备已经成为重要的数据生产者,但是其数据源分散的特点进而导致了管理使用成本高、安全性差的问题, 针对上述问题,基于区块链天然的去中心化、可溯源的优势,提出了“DT-chain”——一种新的去中心化的、安全可信的物联网节点间数据的安全共享机制。 #### DT-chain可以做什么 DT-chain通过构建类区块链网络来实现多节点间的数据共享, 类似于经典Block-chain结构,在DT-chain网络中,每个节点平等存在,仅依靠初始化时生成的公钥(public-key)地址确定身份, 单个节点具备的功能包括: - 初始化:初始化生成公私钥对,仅依靠公开的公钥确定身份,且公私钥对不唯一,这意味着单个节点可具备多个身份; - 数据发布:作为数据生产者,将生产的数据打包上传至网络; - 数据请求:作为数据消费者,请求使用已存在于网络中的数据,用于向数据所有者发送使用请求; - 数据共享:作为数据生产者(所有者),同意或拒绝相应的使用请求; - 数据评价:作为数据消费者(获得使用同意的数据使用者),对使用的数据进行评价; - 节点状态查看:查看所有节点的参与情况; 一个完整的DT-chain数据共享流程包括“A上传数据-任意非A请求数据-A共享数据-非A评价数据”四个流程,上述过程中,DT-chain网络还包括: - 所有节点的所有动作均以block的形式成为类区块链网络的一部分,得益于区块链的特点,所有记录均不可篡改、可溯源; - 数据包加密存储,获得许可后得到密钥得以解密使用; - 综合节点的数据发布、数据请求、数据共享和数据评价四种动作对节点的信誉进行度量,该信誉度始终公开可见,在设计的信誉评价机制基础上,高质量数据的上传、合规的数据请求和共享、客观的数据评价将会不同程度对节点信誉度的增加起积极作用,反之则起消极作用; 综合DT-chain的贡献如下: - 改进了tx结构,将数据加入tx中并上传并在网络中共享; - 数据全流程加密,采用RSA交换密钥,使用密钥由AES解密数据; - 加入RP信誉系统,根据节点行为计算节点的信誉值,为网络交互提供参考; (本工作基于工作[pysimpleblockchain](https://github.com/xiaobing94/pysimpleblockchain),*No shoulders of giants, no coder.*) ### 项目说明 1. 程序共分为 **Full-version** 和 **Lite-version** 两种版本,区别在于前者包含实验环境(cnrp_experiment),后者不包含,快速运行建议后者; 2. 程序有 **web** 和 **cmd** 两个用户交互界面,二者基本功能相似,前者包含可视化界面,后者以命令行形式交互,一般及以上设备建议web入口,低算力设备(例如树莓派等)建议cmd入口; 3. 程序运行分为 **数据库(链数据同步)更新程序** 和 **交互界面程序** 两部分,二者互不影响,其中交互界面程序分为即上述2中web和cmd两种,至少启动其中一种; ### 快速运行 运行前首先安装Python环境及package。 > 注:在 windows 上安装 pycryptodome 时极少情况会遇到无法引入的问题,详见 https://www.cnblogs.com/banml/p/10731242.html 。 运行需要多台主机组网(同一局域网内): **启动首台主机**:使用 **命令1** 运行后台(链数据同步)主程序; **启动后续主机**: 1. 修改 conf.py 文件中变量 "bootstrap_host" 的值为任意已启动主机的 IP 地址(一般为内网地址)并保存; 2. 使用 **命令1** 运行后台(链数据同步)主程序; **命令1**: ```bash python action.py ``` > 此时主机之间开始自动通信,链同步已开始。 --- 以下对已加入的任意主机都适用: - 启动web用户界面: ```bash python web_interface.py ``` - 启动cmd用户界面: ```bash python cmd_interface.py ``` (建议:以上两个用户界面至少启动一个) --- 若已启动web用户界面,则可以通过以下地址找到页面: - 主页面:http://127.0.0.1:5000/ - 数据库页面:http://127.0.0.1:5000/db/ 如果运行版本为Full-version,还可以通过以下地址辅助查看实验结果: - 实验结果页面:http://127.0.0.1:5000/exp/ --- > Contact us: caoziwen@iie.ac.cn / liangfei@iie.ac.cn