论文《基于区块链技术的物联网数据感知与自动交易系统设计与实现》学习报告

《基于区块链技术的物联网数据感知与自动交易系统设计与实现》

  • 相关介绍
    • 智能合约模型
  • 数据感知与交易系统架构设计
    • 系统网络架构
    • 系统总体架构设计
  • 平平台区块链层的实现
    • 1.Fabric 区区块链平台环境搭建
    • 2.智能合约的部署

相关介绍

智能合约模型

论文《基于区块链技术的物联网数据感知与自动交易系统设计与实现》学习报告_第1张图片
当输入的数据或事件符合预先设定的响应条件,智能合约被自动触发执行,合约将按照预先设定的响应规则进行运算,最终将输出发送给用户,并将已改变的合约状态和合约值记录到区块中。

数据感知与交易系统架构设计

系统网络架构

论文《基于区块链技术的物联网数据感知与自动交易系统设计与实现》学习报告_第2张图片
数据共享物联网架构
该架构由云计算层、边缘计算层及物联网设备层组成的三层网络架构。网络架构中的相邻层之间采用通信协议进行通信,三层的功能分别描述如下:
(1)云计算层
云计算层由高性能的服务器集群组成,具备强大的计算及存储能力。在本系统中,由多个云服务器构建基于 Fabric 的分布式区块链交易平台,为后续基于区块链技术的物联网数据交易奠定基础。
(2)边缘计算层
边缘计算层由多个边缘网络设备(如宏基站、网关、微基站旁接的边缘计算服务器)构成,它们有一定的计算及存储能力,可以进行简单的数据处理。在边缘计算层中,利用边缘计算设备靠近用户的优势,实现物理设备到虚拟设备映射并加以存储。而虚拟设备进一步封装成标准 API 接口,供用户调用。此外,边缘计算设备依据用户的需求与云服务器交互获取相关的信息和服务,同时将重要的、有需求的数据上载至云服务器集群实现数据共享。除此之外,物联网应用中产生的全部数据及业务均可发送至边缘计算设备群中进行并行处理,从而降低业务响应时延,并降低骨干网的数据传输压力。
(3)物联网设备层
物联网设备层由物联网设备构成。通过将物联网设备映射为虚拟设备,可以在边缘计算设备中生成虚拟设备库,实现资源的共享和重用。同时,碎片化的物联网设备在这一层之后被完全隔离,解决不同应用类型终端的统一接入问题。
由图可以看出,整个架构中云计算层是交易核心,用于构建基于区块链的交易平台;边缘计算层是调用核心,用统一化的映射方法,解决用户调度远程设备的问题;物联网设备层是设备核心,用于整合普通个体用户掌握的物联网感知设备。因此,为了完成数据感知与交易工作,首先,将普通个体用户所掌握的物联网感知设备组网,形成数据共享物联网;其次,通过边缘计算设备进行虚拟化映射,将物理设备映射成虚拟设备,物理设备和虚拟设备之间一一对应并封装有的通信协议、方法;之后,向其他用户开放虚拟设备的 API 调度接口,方便数据购买方快速高效的获取数据;最后,为了保证设备持有方的利益,将 API 调用动态写入区块链智能合约,购买方一旦调用 API 就会触发智能合约,执行支付程序,并将结果存在区块链中。

系统总体架构设计

Fabric 区块链平台将节点按照功能角色划分为背书节点、记账节点以及排序节点三种类型,背书节点负责对客户端发起的交易进行检查并模拟执行经过多方认证的智能合约。排序节点负责对经过背书节点背书后的交易按时间顺序进行排序,为其分配交易所在账本的唯一序号,排序完成后将交易广播给记账节点。记账节点负责检查排序节点发送来已经按顺序打包进区块的交易请求,执行交易并更新账本数据状态,维护账本结构。这些角色是功能上的划分,彼此并不相互排斥。一般情况下,网络中所有节点都具备记账功能,部分节点具有背书功能,排序节点组成排序集群只拥有排序功能。因此结合上一节提出的数据共享物联网架构设计系统总体架构,如图所示。
论文《基于区块链技术的物联网数据感知与自动交易系统设计与实现》学习报告_第3张图片
系统架构分为两层:区块链层和物联网设备层,每层功能分别描述如下:
(1)区块链层
区块链层为物联网数据感知与自动交易平台提供了底层网络架构,区块链层中的多个云服务器用来构建基于 Fabric 的分布式区块链平台,云服务器上能够搭建多种不同类型的节点,包括排序节点、背书节点和记账节点,这些节点通过 Docker 容器进行资源隔离,使多个节点能够运行在同一个云服务器上。区块链网中各参与节点通过 P2P 网络和 gRPC 协议连通形成分布式账本结构,并通过 Gossip 协议进行彼此之间消息的双向传递,包括信息同步和数据分发。
一些计算能力和存储能力适中的边缘网络设备,如基站、边缘计算服务器、交换机、网关等也可与云服务器一起构建区块链网络,边缘网络设备可作为区块链网络中的背书节点和记账节点。边缘网络设备来自各个不同的组织,其与云服务器上节点共同参与区块链网络的共识服务,避免所搭建的区块链平台成为中心化的第三方交易平台。因此,所设计的感知与交易系统架构是被各方基于技术而非第三方平台信任的公平物联网数据自动交易系统,在技术上保证公平性,解决数据被滥用的问题,保障数据持有者的权益。区块链层中全部的背书节点和记账节点能够通过数据类别访问控制策略加入到任意通道中,通道是将网络中指定的节点和成员连接起来的应用程序,节点只接收所加入通道上的包含相关交易的区块数据,每一个通道的数据(包括账本、交易、智能合约等)彼此相互独立,通道外的节点和成员无法访问通道内数据,为数据提供了隔离性和保密性。在区块链物联网数据感知与自动交易系统中,按参与交易的数据类型的同,将边缘网络设备上的节点和成员配置到不同的通道中,以交易各区域的度数据的通道 channel 1为例,通道由包含湿度数据 API 调用接口的边缘网络设备节点和云服务器节点组成,channel 1 中全体节点共同维护湿度数据交易账本,数据请求方若想购买湿度数据,必须获得 Fabric CA 颁发的包含 channel 1通道 MSP 标识符 (MSP ID)的 X.509 格式的数字证书,只有通过成员 MSP 验证才能加入到通道进行交易以及数据的访问。而通道
channel 2 中的成员参与各地紫外线强弱数据的交易,两个通道数据相互隔离,保证交易数据的安全。通道由云服务器上的排序节点按设定的配置信息进行管理,配置信息支持动态更新,因此管理员可以动态加入节点也可以动态删除作恶节点。
智能合约在超级账本 Fabric 中称为链码 (chaincode),是一个使用 Go 语言编写的应用程序,在Java、Python 等编程语言中实现了指定的接口。智能合约被安装部署在由背书策略定义的背书节点上,并独立运行在 Docker 容器中,通过gRPC 远程服务访问接口与背书节点建立通信,只有背书节点能够运行智能合约。
智能合约的功能逻辑先由各个关联方协商达成一致并在线下完成编写和编译,然后不需要线上再次审核,就能够完成线上的部署安装。智能合约是客户端与Fabric 区块链之间的桥梁,通过客户端发起和查询交易。当交易被提交到背书节点时,背书节点通过其开放的 gRPC 接口执行智能合约的功能,也可以使用命令行或SDK 访问智能合约,智能合约执行原理如图所示。
论文《基于区块链技术的物联网数据感知与自动交易系统设计与实现》学习报告_第4张图片

平平台区块链层的实现

1.Fabric 区区块链平台环境搭建

区块链目前可分为:公有链、联盟链以及私有链。比特币是公有链的典型代表,个体加入公有链无需任何权限,且公有链中的每个节点都参与账本的维护,因此公有链具有完全去中心化的特点。联盟链由多个组织共同管理和使用,只有指定的一部分节点拥有记账权,新增的区块由记账节点通过共识机制产生,其余各节点可以创建交易但无法参与记账,因此联盟链具有部分中心化的特点。私有链是某个组织
单独管理使用的区块链,具有一定中心化的特点。
综上,本系统搭建私有链环境作为测试平台,主要原因有:第一,私有链相比公有链拥有较少的节点,每一笔交易的共识速率将得到提高,使得事件处理的吞吐量增大、效率提高;第二,私有链账本的数据量小,存储能力有限的设备也可以维护区块链账本;第三,私有链具有更高的交易确认速率,降低交易时延,减少用户等待的反馈时间;第四,Fabric 区块链平台支持联盟链和私有链。因此搭建私有链环境作为测试平台是合理的,系统如果应用到在实际场景中,可以拓展到联盟链中,其原理是完全相同的。
Fabric 官方仅提供了单机多节点部署示例,即在单个机器上搭建由多个节点组成的区块链网络,如图 所示,其中包括一个排序节点,两个节点从属于组织org1,两个节点从属于组织 org2。为了保证各个节点间的通信安全,成员身份管理CA 节点会为各节点颁发对应的 TLS 证书 (TLS-Certs),运用证书私钥对之后的每笔交易进行签名。将部署的所有节点加入到同一通道中,在该通道中的节点能够对交易提案进行背书和维护账本,排序节点则为该通道中的交易提供排序服务。
论文《基于区块链技术的物联网数据感知与自动交易系统设计与实现》学习报告_第5张图片
然而在实际应用场景中的数据交易平台是由多个组织节点共同维护的分布式平台,这些节点不可避免的会分布在不同的物理节点上,因此需要设计并部署多机多节点的 Fabric 区块链开发环境。
2)生成公私钥和证书在启动 Fabric 网络中多个节点之前必须在 docker-compose.yaml 文件中配置各节点的 MSP 结构目录,并且根据通道中节点结构生成创世区块,因此需要为各节点发放相应的证书。Fabric 中为了保证数据传输和访问的安全提供两类公私钥和证书,一种是保证节点间安全通信的 TLS 证书,另一种针对用户登录和权限控制的证书。在测试环境中,使用 Fabric 提供的 cryptogen 工具为用户和节点发放数字证书,cryptogen 基于已配置完成“组织名”、“域名”、“主机规格”、“节点数量”以及“用户数量”相关信息的 crypto-config.yaml 文件,生成对应的公私钥和证书的加密文件。
(3)生成创世区块使用 Fabric 提供的 configtxgen 工具创建创世区块 genesis.block 和通道的访问控制策略信息,configtxgen 基于已配置完成“组织名”、“排序服务名”以及“通道名”等信息configtx.yaml 文件生成创世区块,区块将保存到本地 channel-artifacts 文件夹中。 configtx.yaml 文件还配置了由 4 个组织参与的共识配置 FourOrgsOrdererGen-esis 和由 4 个组织参与的通道配置 FourOrgsChannel。在实际应用场景中,必定有更多的组织加入到区块链中,并且不同类型的数据交易需要更多的通道,此时只需根据模板进行对应的修改即可。
(4)启动 Fabric 的 Docker 环境在不同的云服务器上启动各自的 Fabric 环境容器,需要将 docker-compose.yml拆分为 docker-compose-cli.yml 和 docker-compose-base.yml 进行配置。将配置完成的docker-compose 文件和 MSP 目录通过 sshpass 工具发送到另一台云服务器上。通过脚本使用docker-compose up 命令一键启动两台云服务器上的容器,并使用“ sleep ”命令使进程延时等待,保证排序节点容器完整地启动起来后再启动下一节点容器。

2.智能合约的部署

论文《基于区块链技术的物联网数据感知与自动交易系统设计与实现》学习报告_第6张图片
区块链网络中的各节点为客户端提供了 gRPC 接口以便访问,智能合约部署在背书节点上,可由 gRPC 接口通过命令行或 SDK 访问。集群运行起来后,使用智能合约提供的四个管理命令来安装和运行智能合约,这四个命令分别为打包、安装、实例化以及更新,智能合约部署流程如图所示。
(1)打包
智能合约需要所有参与方在线下对合约的功能逻辑进行协商,达成一致后编写智能合约。之后智能合约将部署到背书节点上,部署前首先需要对合约的源码以CDS(ChaincodeDeploymentSpec) 格式进行打包。云服务器的链码包生成命令为:peer chaincode package ccpack.out −n newcc −p github.com/ −v 1.0根据上述命令,系统进行智能合约实例化,打包完成后将链码包直接上传到云服务器即可。
(2)安装
将已上传的智能合约包安装到由背书策略决定的某些背书节点上,使智能合约的逻辑不会被未授权的节点得到,保证了交易的安全性和隔离性。未安装智能合约的节点无法参与背书,只能对排序节点发送来的交易进行验证并提交到账本中。本文通过一键化脚本中的 sshpass 命令将智能合约分发到每个被指定背书的节点上。智能合约的安装命令为:peer chaincode install −n newcc v 1.0 −p path上述命令行代码表示,对在 $GOPATH/src/path 路径下的名为“newcc”且版本为 1.0 的智能合约进行安装。

(3)实例化
各节点完成智能合约的安装后,智能合约仅仅处于已注册的状态,与通道无关,因此需要对合约进行实例化使其与通道绑定。只有拥有权限的用户才能部署及调用合约,并且智能合约的实例化提交者必须为管理员。在实例化过程中,智能合约被打包成 Docker 镜像,生成 Docker 容器,运行以下命令完成实例化:
peer chaincode instantiate −n newcc −v 1.0
−c′“Args” : [“init”, “user01”, “470”, “user02”, “530”]
′−P“AND(′Org1.mem′,′Org2.mem′)”上述命令行代码表示对智能合约“newcc”进行例化,对初始化状态以及背书策略进行配置。智能合约实例后,应用程序或者命令行可以进行调用等一系列操作。
(4)更新升级
可以对经过实例化的智能合约进行升级,升级时要保证合约的名称与之前一致,将最新的代码安装到指定的背书节点上,然后通过 upgrade 进行更新升级。对名称为“newcc”的智能合约、名称为“newch”的通道完成以上部署,并智能合约实例化的过程中定义了 user01 和 user02 两个账户,其中 user01 的资产为 470

你可能感兴趣的:(学习报告,分布式,区块链)