CN112463265A - 一种基于联盟链的农产品物联网信息上链方法 - Google Patents
一种基于联盟链的农产品物联网信息上链方法 Download PDFInfo
- Publication number
- CN112463265A CN112463265A CN202011454048.1A CN202011454048A CN112463265A CN 112463265 A CN112463265 A CN 112463265A CN 202011454048 A CN202011454048 A CN 202011454048A CN 112463265 A CN112463265 A CN 112463265A
- Authority
- CN
- China
- Prior art keywords
- information
- internet
- interface
- things
- enterprise
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 58
- 239000004744 fabric Substances 0.000 claims abstract description 16
- 238000012545 processing Methods 0.000 claims abstract description 4
- 230000006870 function Effects 0.000 claims description 49
- 230000008520 organization Effects 0.000 claims description 32
- 230000007246 mechanism Effects 0.000 claims description 16
- 238000013461 design Methods 0.000 claims description 7
- 238000012163 sequencing technique Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 31
- 230000004044 response Effects 0.000 description 12
- 230000006855 networking Effects 0.000 description 5
- 235000011430 Malus pumila Nutrition 0.000 description 4
- 230000001105 regulatory effect Effects 0.000 description 4
- 244000081841 Malus domestica Species 0.000 description 3
- 241000581835 Monodora junodii Species 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 241000222455 Boletus Species 0.000 description 1
- 241000220225 Malus Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 235000021384 green leafy vegetables Nutrition 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q50/00—Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
- G06Q50/02—Agriculture; Fishing; Forestry; Mining
-
- G—PHYSICS
- G16—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
- G16Y—INFORMATION AND COMMUNICATION TECHNOLOGY SPECIALLY ADAPTED FOR THE INTERNET OF THINGS [IoT]
- G16Y10/00—Economic sectors
- G16Y10/05—Agriculture
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Agronomy & Crop Science (AREA)
- Economics (AREA)
- Health & Medical Sciences (AREA)
- Primary Health Care (AREA)
- Marine Sciences & Fisheries (AREA)
- Animal Husbandry (AREA)
- General Health & Medical Sciences (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Mining & Mineral Resources (AREA)
- Strategic Management (AREA)
- Tourism & Hospitality (AREA)
- General Engineering & Computer Science (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Computing Systems (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开一种基于联盟链的农产品物联网信息上链方法,基于Hyperledger Fabric联盟链架构的Chaincode对农产品物联网信息数据结构进行定义,对Chaincode调用函数进行设计,开发Chaincode接口并对接口进行部署,实现农产品物联网信息数据的上链,并通过Chaincode接口获取到的有效农产品物联网信息数据上链存证,机构和企业可凭不同权限,查看不同范围的农产品物联网数据。本发明是一种可高效处理数据的、信息安全不易被篡改的、可智能自动化实现分权限治理的、基于Hyperledger Fabric联盟链架构的农产品物联网信息上链的实现方法。
Description
技术领域
本发明涉及一种基于联盟链的农产品物联网信息上链方法,属于物联网信息上链技术领域。
背景技术
目前,市场上现有的农产品物联网信息录入到有关管理系统和数据库的方法,仅仅实现了基础的数据录入和存储功能,无法做到对农产品物联网数据做到严格的数据权限管理,和关键信息的有效存证。致使农产品物联网信息采集和存储存在如下问题:
(1)农产品物联网信息无法做到一经存储不被人为篡改;
(2)在后期追溯中较难找到某一关键时刻或操作节点的相关物联网信息数据;
(3)监管机构较难在某一地区范围实现对多家企业多种农产品的物联网信息数据,实现自动的、严格的分权限治理。
发明内容
发明目的:针对现有农产品物联网信息数据录入与存储方案易被篡改数据、数据追溯效率低下、且无法自动进行严格化分权限治理的业务弊端,提供一种可高效处理数据的、信息安全不易被篡改的、可智能自动化实现分权限治理的、基于Hyperledger Fabric联盟链架构的农产品物联网信息上链的实现方法。
技术方案:一种基于联盟链的农产品物联网信息上链方法,基于HyperledgerFabric联盟链架构的Chaincode对农产品物联网信息数据结构进行定义,对Chaincode调用函数进行设计,开发Chaincode接口并对接口进行部署,实现农产品物联网信息数据的上链,并通过Chaincode接口获取到的有效农产品物联网信息数据上链存证,机构和企业可凭不同权限,查看不同范围的农产品物联网数据。
一,启动Hyperledger Fabric的架构环境程序作为基础环境准备;创建Chaincode源代码文件,定义“机构/企业”、“产品”和“物联网信息”三个类,并对三个类的数据结构和变量类型进行定义;
类“机构/企业”的子信息包括:机构/企业名称CoName、行政地区代码Areacode、机构/企业账号地址CoAccount、机构/企业账号公钥CoPublicKey、机构/企业账户私钥CoPrivateKey、所包含的多个产品账号地址PrdtAccount、是否是机构IfInstitute。
类“机构/企业”的函数包括:
createCooperation添加一个机构/企业;
writeCooperation写入新创建的机构/企业;
getCooperationByAccount通过机构/企业账号地址获取机构/企业的信息;
enrollProduct企业关联一个产品(返回企业信息)。
类“产品”的子信息包括:产品名称ProductName、产品账号地址PrdtAccount、产品公钥PrdtPublicKey、过往物联信息编号HistoryIotInfoId。
类“产品”的函数包括:
createProduct添加一个新产品;
writeProduct写入新创建的产品;
getProductByAccount通过产品的账号地址访问产品的信息;
类“物联网信息”的子信息包括:企业账户地址CoAccount、企业签名CoSign、产品账户地址PrdtAccount、产品公钥PrdtPublicKey、物联网信息编号IotInfoId、设备分组编号DvcGroupId、设备编号DvcId、设备属性DvcNature、设备读数DvcData、读数单位Unit、读数时间Datatime、是否关键记录IfKey。
类“物联网信息”的函数包括:
writeIotRecord写入物联网信息记录;
getIotRecordById通过物联网信息编号获取数据记录;
getIotRecordByDvcId通过设备编号获取数据记录;
getIotRecordByGroupId通过设备分组编号获取物联网信息记录;
getKeyIotRecords获取全部关键物联网信息记录。
二,Chaincode调用函数(function)设计,函数及各自实现的功能如下:
Init(),初始化函数;
Invoke(),调用合约内部的函数;
main()主函数,作为chaincode的入口。
三,实现基于联盟链Hyperledger Fabric架构的Chaincode接口设计:
接口1:/createCooperation添加一个机构/企业;
接口2:/createProduct添加一个产品;
接口3:/enrollProduct企业关联一个产品;
接口4:/writeCooperation写入新创建的机构/企业;
接口5:/writeProduct写入新创建的产品;
接口6:/writeIotRecord写入物联网信息记录;
接口7:/getProductByAccount通过产品的账号地址访问产品的信息;
接口8:/getCooperationByAccount通过机构/企业账号地址获取机构/企业的信息;
接口9:/getIotRecordById通过物联网信息编号获取数据记录;
接口10:/getKeyIotRecords获取全部关键物联网信息记录;
接口11:/getIotRecordByDvcId通过设备编号获取数据记录;
接口12:/getIotRecordByGroupId通过设备分组编号获取物联网信息记录。
四,实现基于联盟链Hyperledger Fabric架构的Chaincode接口部署:即通过set操作将Chaincode源代码文件安装到Peer节点上,然后实例化Chaincode代码(将类创建为对象)。
五,农产品物联网信息数据上链步骤,包括(1)调用Chaincode写入数据,(2)领导节点(leader peer)将上链信息广播至所有节点。
101、调用Chaincode接口/writeCooperation、接口/writeProduct、接口/enrollProduct、接口/writeIotRecord,写入机构/企业(Cooperation)、产品(Product)和物联网信息(IotRecord)三个类的相应数据,并按照一个区块的结构(区块头、区块体)将数据写入区块体中的Input Data,且写入时间戳、调用合约地址等,然后对数据进行一次哈希处理,并对哈希进行签名。在数据写入格式符合要求的情况下(如果数据写入格式不符合要求将不被上链),交易排序服务(Ordering Service)将该区块信息同步至领导节点(leaderpeer)。
102、领导节点将上链信息广播至所有节点:该节点将消息发送到预先指定数量(随机选择默认3个节点)的其他节点,接收到消息的每一个节点再将消息转发给预定数量的其他节点,依此类推,直到所有的节点都收到了新的区块同步消息。
五,农产品物联网信息数据查询步骤,包括:(1)节点验证用户的权限等级,(2)调用Chaincode接口查询数据。
201、节点验证用户权限等级,即通过用户提交的机构/企业账号地址和账户私钥验证是否匹配机构企业信息,如果匹配则得到不同的根CA和签名,机构获得查看所有企业产品物联网信息的高级权限,企业则获得仅产看自己企业产品物联网信息的一般权限。
202、调用Chaincode接口查询数据,包括:接口/getCooperationByAccount、接口/getProductByAccount、接口/getIotRecordById、接口/getKeyIotRecords、接口/getIotRecordByDvcId、接口/getIotRecordByGroupId,共计6种查询方式。可见数据范围受到201所提及的权限等级控制。
有益效果:本发明提供的基Hyperledger Fabric联盟链架构Chaincode合约的农产品物联网信息上链的方法。通过所述Hyperledger Fabric联盟链架构Chaincode合约,可实现在联盟链内对农产品物联网信息的实时上链与分权限等级高效检索。本发明可广泛应用于智慧农业信息化管理体系与产业供应链大数据共享体系,应用成本低,维护简单,并具有功能性优势与广阔的开发前景。对比现有物联信息上链技术,本发明核心优势总结如下:
(1)严格保障农产品关键物联网信息的数据安全和不易篡改性;
(2)不影响数据上链效率的情况下,拓宽了单次数据上链的业务应用层次,实现了分权限等级查看不同数据范围农产品物联网信息的目的,提升了重要物联网数据的隐私性和加密存储等级;
(3)联盟链共识机制和Chaincode合约自动化运行共同作用下,避免传统物联网系统常见的账号泄露问题,避免因数据泄露引发的徇私作弊行为。
(4)本发明可在常见服务器上进行部署,并可兼容常见通信设备和采集端口,产业适用度广,应用成本适中,易于联盟链成员机构学习与上手操作。
附图说明
图1是本发明基于联盟链的农产品物联网信息上链方法流程图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
实施例1
1)在Linux系统计算机上启动Hyperledger Fabric的架构环境程序作为基础环境准备。
2)在指定路径创建目录,然后创建Chaincode源代码文件,创建代码文件的命令如下:
vi IotChaincode.go
在该文件内编写代码。代码以以下包载入代码开头。
3)Chaincode农产品物联网信息数据结构的设计,包括对“机构/企业”、“产品”和“物联网信息”的数据结构与变量类型的定义。
类“机构/企业”的子信息包括:机构/企业名称CoName、行政地区代码Areacode、机构/企业账号地址CoAccount、机构/企业账号公钥CoPublicKey、机构/企业账户私钥CoPrivateKey、所包含的多个产品账号地址PrdtAccount、是否是机构IfInstitute。用代码(此处代码编译语言为Go语言,下文相同,不再重复说明)定义类的结构、变量类型如下:
createCooperation函数实现的功能为:在KV数据库中新建一个Cooperation的表单,表单字段包含Cooperation struct中所有子信息变量名,并自动定义主键格式为Cooperation:{Id}(此处Id为KV数据库自动按先后顺序递增生成),如果新建进程发生错误,则将发生的错误信息返回,如果新建进程无误则返回“错误为空”,无论进程是否发生错误,都返回已修改的Cooperation数据字节信息。
writeCooperation函数实现的功能为:以Cooperation.Id作为主键,存入Cooperation信息数据,如果写入进程无误则返回“错误为空”,如果写入进程发生错误,则将发生的错误信息返回;无论进程是否发生错误,都返回已修改的Cooperation数据字节信息。
getCooperationByAccount函数实现的功能为:以CoAccount作为主键,读取Cooperation信息数据,如果读取进程无误,则将该CoAccount关联的Cooperation数据字节信息返回,如果读取进程发生错误,则将发生的错误信息返回。
enrollProduct函数实现的功能为:以prdtAccount作为主键,写入Cooperation信息数据中的PrdtAccount[]变量数组,如果写入进程无误则返回“错误为空”,如果写入进程发生错误,则将发生的错误信息返回。无论进程是否发生错误,都返回已修改的Cooperation数据字节信息。
类“产品”的子信息包括:产品名称ProductName、产品账号地址PrdtAccount、产品公钥PrdtPublicKey、过往物联信息编号HistoryIotInfoId。用代码定义类的结构、变量类型如下:
createProduct函数实现的功能为:在KV数据库中新建一个Product的表单,表单字段包含Product struct中所有子信息变量名,并自动定义主键格式为Product:{Id}(此处Id为KV数据库自动按先后顺序递增生成),如果新建进程发生错误,则将发生的错误信息返回,
如果新建进程无误则返回“错误为空”,无论进程是否发生错误,都返回已修改的Product数据字节信息。
writeProduct函数实现的功能为:以Product.Id作为主键,存入Product信息数据,如果写入进程无误则返回“错误为空”,如果写入进程发生错误,则将发生的错误信息返回。无论进程是否发生错误,都返回已修改的Product数据字节信息。
getProductByAccount函数实现的功能为:以PrdtAccount作为主键,读取Product信息数据,如果读取进程无误,则将该PrdtAccount关联的Product数据字节信息返回,如果读取进程发生错误,则将发生的错误信息返回。
类“物联网信息”的子信息包括:企业账户地址CoAccount、企业签名CoSign、产品账户地址PrdtAccount、产品公钥PrdtPublicKey、物联网信息编号IotInfoId、设备分组编号DvcGroupId、设备编号DvcId、设备属性DvcNature、设备读数DvcData、读数单位Unit、读数时间Datatime、是否关键记录IfKey。用代码定义类的结构、变量类如下:
writeIotRecord函数以IotInfoId作为主键,存入IotInfo信息数据,如果写入进程无误则返回“错误为空”,如果写入进程发生错误,则将发生的错误信息返回。无论进程是否发生错误,都返回已修改的IotInfo数据字节信息。
getIotRecordById/函数实现的功能为:以IotInfoId作为主键,读取IotInfo信息数据,如果读取进程无误,则将该IotInfoId关联的IotInfo数据字节信息返回,如果读取进程发生错误,则将发生的错误信息返回。
getIotRecordByDvcId函数实现的功能为:以DvcId作为主键,读取IotInfo信息数据,如果读取进程无误,则将该DvcId关联的所有IotInfo数据字节信息返回,如果读取进程发生错误,则将发生的错误信息返回。
getIotRecordByGroupId函数实现的功能为:以DvcGroupId作为主键,读取IotInfo信息数据,如果读取进程无误,则将该DvcGroupId关联的所有IotInfo数据字节信息返回,如果读取进程发生错误,则将发生的错误信息返回。
getKeyIotRecords函数实现的功能为:以IotInfoId作为主键,读取IfKey值为true的IotInfo信息数据,如果读取进程无误,则将该IotInfoId关联的IotInfo数据字节信息返回,如果读取进程发生错误,则将发生的错误信息返回。
4)Chaincode调用函数(Function)设计,Function及各自实现的功能如下:
5)实现基于联盟链Hyperledger Fabric架构的Chaincode接口设计。
接口1:/createCooperation添加一个机构/企业
request参数:
args[0]机构/企业名称
args[1]机构/企业行政地区代码
response参数:
机构/企业信息的字节数组(当创建一所新机构/企业时,该机构/企业产品账户地址列表为空)
接口2:/createProduct添加一个产品
request参数:
args[0]产品的名称
response参数:
产品信息的字节数组表示(刚创建时过往物联网信息列表为空)
接口3:/enrollProduct企业关联一个产品
request参数:
args[0]机构/企业账户地址
args[1]机构/企业签名
args[2]产品账户地址
response参数
返回修改记录的字节数组表示
接口4:/writeCooperation写入新创建的机构/企业
request参数:
Cooperation
response参数
err nil为成功(无报错为成功)
接口5:/writeProduct写入新创建的产品
request参数:
Product
response参数
err nil为成功(无报错为成功)
接口6:/writeIotRecord写入物联网信息记录
request参数:
IotRecord
response参数
err nil为成功(无报错为成功)
接口7:/getProductByAccount通过产品的账号地址访问产品的信息
request参数:
args[0]PrdtAccount
response参数:
产品信息的字节数组表示
接口8:/getCooperationByAccount通过机构/企业账号地址获取机构/企业的信息
request参数
args[0]CoAccount
response参数
机构/企业信息的字节数组表示
接口9:/getIotRecordById通过物联网信息编号获取数据记录
request参数
args[0]物联网信息编号(IotInfoId)
response参数
物联网信息的字节数组表示
接口10:/getKeyIotRecords获取全部关键物联网信息记录
response参数
获取全部关键节点物联网信息数组
接口11:/getIotRecordByDvcId通过设备编号获取数据记录
request参数
args[0]设备编号(DvcId)
response参数
该设备的全部物联网信息的字节数组表示
接口12:/getIotRecordByGroupId通过设备分组编号获取物联网信息记录
request参数
args[0]设备分组编号(DvcGroupId)
response参数
该设备分组下的全部物联网信息的字节数组表示
6)实现基于联盟链Hyperledger Fabric架构的Chaincode接口部署。即通过set操作将Chaincode源代码文件安装到Peer节点上,然后实例化Chaincode代码(将类创建为对象)。
7)农产品物联网信息数据上链步骤,包括(1)调用Chaincode写入数据,(2)领导节点(leader peer)将上链信息广播至所有节点。
101、调用:接口/writeCooperation、接口/writeProduct、接口/enrollProduct、接口/writeIotRecord,写入数据Cooperation、Product和IotRecord,按照一个区块的结构(区块头、区块体)将数据写入Input Data,比如:
写入Cooperation数据:
Cooperation{CoName:"绿思果业有限公司",Areacode:"320102000000",
CoAccount:"0x986386Ca2c61c5afe6fe6f491cFe3be502af3975A06",CoPublicKey:"
600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408",CoPriv ateKey:"
18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725",
IfInstitute:"false"}
写入Product数据:
Product{ProductName:"花牛苹果",PrdtAccount:
"0x9863869K2c61ckx345g66f491cFe3be587af3934K52",PrdtPublicKey:"
CCA46CC18394419100600FFE422B4E0A447BDB20731A59557A56324D98D4B408"}
写入IotRecord数据:
IotInfo{CoAccount:"0x986386Ca2c61c5afe6fe6f491cFe3be502af3975A06",CoSign:"
C419100600FF4A447BD4B408DB20731A59557A56 E422B4E0CA46CC1839324D98",
PrdtAccount:"0x9863869K2c61ckx345g66f491cFe3be587af3934K52",PrdtPublicKey:"
CCA46CC18394419100600FFE422B4E0A447BDB20731A59557A56324D98D4B408",
IotInfoId:"2",DvcGroupId:"1",DvcId:"1",DvcNature:"温度",DvcData:"20.1",Unit:"℃",
Datatime:"2020-06-22T10:24:47.000+800",IfKey:"true"}
关联一个Product到Cooperation:
Cooperation{CoAccount:"0x986386Ca2c61c5afe6fe6f491cFe3be502af3975A06",CoSign:"
C419100600FF4A447BD4B408DB20731A59557A56E422B4E0CA46CC1839324D98",
PrdtAccount:"0x9863869K2c61ckx345g66f491cFe3be587af3934K52"}
以上四个接口调用完成了写入绿思果业有限公司信息、写入花牛苹果信息、写入花牛苹果种植环境中温度传感器的物联网信息(且为关键信息)、将花牛苹果关联到绿思果业有限公司。
并且写入时间戳、调用合约地址等,然后对数据进行一次哈希处理,并对哈希进行签名。在数据写入格式符合要求的情况下(如果数据写入格式不符合要求将不被上链),交易排序服务(Ordering Service)将该区块信息同步至领导节点(leader peer)。
102、领导节点将上链信息广播至所有节点:该节点将消息发送到预先指定数量(随机选择默认3个节点)的其他节点,接收到消息的每一个节点再将消息转发给预定数量的其他节点,依此类推,直到所有的节点都收到了新的区块同步消息。
8)农产品物联网信息数据查询步骤,包括:(1)节点验证用户的权限等级,(2)调用Chaincode接口查询数据。
201、节点验证用户权限等级,即通过用户提交的机构/企业账号地址和账户私钥验证是否匹配机构企业信息,如果匹配则得到不同的根CA和签名,机构获得查看所有企业产品物联网信息的高级权限,企业则获得仅产看自己企业产品物联网信息的一般权限。
202、调用Chaincode接口查询数据,包括:接口/getCooperationByAccount、接口/getProductByAccount、接口/getIotRecordById、接口/getKeyIotRecords、接口/getIotRecordByDvcId、接口/getIotRecordByGroupId,共计6种查询方式。可见数据范围受到201所提及的权限等级控制。
比如绿思果业有限公司调用接口/getIotRecordById,传参IotInfoId:=2,得到接口返回指定一条物联网信息如下:
IotInfo{CoAccount:"0x986386Ca2c61c5afe6fe6f491cFe3be502af3975A06",CoSign:"C419100600FF4A447BD4B408DB20731A59557A56E422B4E0CA46CC1839324D98",PrdtAccount:"0x9863869K2c61ckx345g66f491cFe3be587af3934K52",PrdtPublicKey:"CCA46CC18394419100600FFE422B4E0A447BDB20731A59557A56324D98D4B408",IotInfoId:"2",DvcGroupId:"1",DvcId:"1",DvcNature:"温度",DvcData:"20.1",Unit:"℃",Datatime:"2020-06-22T10:24:47.000+800",IfKey:"true"}。
绿思果业有限公司的权限验证为企业,因此只能看到自己公司关联产品的指定物联网信息。
再比如某市场监管机构(现实中负责绿思果业有限公司所在地管辖片区),调用接口/getKeyIotRecords,此接口无需传参,但由于市场监管机构的权限等级为机构,经由201所述节点验证用户权限等级,可查看所有企业产品物联网信息,因此此处会返回所有企业的产品的10条关键物联网信息,如下:
IotInfo{
“1”:[{CoAccount:"0x986386Ca2c61c5afe6fe6f491cFe3be502af3975A06",CoSign:"C419100600FF4A447BD4B408DB20731A59557A56E422B4E0CA46CC1839324D98",PrdtAccount:"0x9863869K2c61ckx345g66f491cFe3be587af3934K52",PrdtPublicKey:"CCA46CC18394419100600FFE422B4E0A447BDB20731A59557A56324D98D4B408",IotInfoId:"2",DvcGroupId:"1",DvcId:"1",DvcNature:"温度",DvcData:"20.1",Unit:"℃",Datatime:"2020-06-22T10:24:47.000+800",IfKey:"true"}],
……(此处省略8条返回值)
“10”:[{CoAccount:"0x6c1c5afe6fe6f491986386Ca2cFe3be5975A0602af3",CoSign:"BD4B408DB2073C410CA46CC1839324D98910471A59557A0600FF4A456E422B4E",PrdtAccount:"0x1ckx345g66f499863869K2c61cFaf3934K52e3be587",PrdtPublicKey:"4D419100600FFE422B498D4B408CCA46CC18394E0A447BDB20731A59557A5632",IotInfoId:"9",DvcGroupId:"5",DvcId:"1",DvcNature:"湿度",DvcData:"56",Unit:"%RH",Datatime:"2020-03-12T15:13:12.000+800",IfKey:"true"}]。
Claims (7)
1.一种基于联盟链的农产品物联网信息上链方法,其特征在于:基于HyperledgerFabric联盟链架构的Chaincode对农产品物联网信息数据结构进行定义,对Chaincode调用函数进行设计,开发Chaincode接口并对接口进行部署,实现农产品物联网信息数据的上链,并通过Chaincode接口获取到的有效农产品物联网信息数据上链存证,机构和企业可凭不同权限,查看不同范围的农产品物联网数据。
2.根据权利要求1所述的基于联盟链的农产品物联网信息上链方法,其特征在于:启动Hyperledger Fabric的架构环境程序作为基础环境准备;创建Chaincode源代码文件,定义机构/企业、产品和物联网信息三个类,并对三个类的数据结构、变量类型和函数进行定义;
所述类机构/企业的子信息包括:机构/企业名称CoName、行政地区代码Areacode、机构/企业账号地址CoAccount、机构/企业账号公钥CoPublicKey、机构/企业账户私钥CoPrivateKey、所包含的多个产品账号地址PrdtAccount、是否是机构IfInstitute;
所述类产品的子信息包括:产品名称ProductName、产品账号地址PrdtAccount、产品公钥PrdtPublicKey、过往物联信息编号HistoryIotInfoId;
所述类物联网信息的子信息包括:企业账户地址CoAccount、企业签名CoSign、产品账户地址PrdtAccount、产品公钥PrdtPublicKey、物联网信息编号IotInfoId、设备分组编号DvcGroupId、设备编号DvcId、设备属性DvcNature、设备读数DvcData、读数单位Unit、读数时间Datatime、是否关键记录IfKey;
所述类机构/企业的函数包括:
createCooperation添加一个机构/企业;
writeCooperation写入新创建的机构/企业;
getCooperationByAccount通过机构/企业账号地址获取机构/企业的信息;
enrollProduct企业关联一个产品,返回企业信息;
所述类产品的函数包括:
createProduct添加一个新产品;
writeProduct写入新创建的产品;
getProductByAccount通过产品的账号地址访问产品的信息;
所述类物联网信息的函数包括:
writeIotRecord写入物联网信息记录;
getIotRecordById通过物联网信息编号获取数据记录;
getIotRecordByDvcId通过设备编号获取数据记录;
getIotRecordByGroupId通过设备分组编号获取物联网信息记录;
getKeyIotRecords获取全部关键物联网信息记录。
3.根据权利要求1所述的基于联盟链的农产品物联网信息上链方法,其特征在于:Chaincode调用函数及各自实现的功能如下:
Init(),初始化函数;
Invoke(),调用合约内部的函数;
main()主函数,作为chaincode的入口。
4.根据权利要求1所述的基于联盟链的农产品物联网信息上链方法,其特征在于:实现基于联盟链Hyperledger Fabric架构的Chaincode接口设计如下:
接口1:/createCooperation添加一个机构/企业;
接口2:/createProduct添加一个产品;
接口3:/enrollProduct企业关联一个产品;
接口4:/writeCooperation写入新创建的机构/企业;
接口5:/writeProduct写入新创建的产品;
接口6:/writeIotRecord写入物联网信息记录;
接口7:/getProductByAccount通过产品的账号地址访问产品的信息;
接口8:/getCooperationByAccount通过机构/企业账号地址获取机构/企业的信息;
接口9:/getIotRecordById通过物联网信息编号获取数据记录;
接口10:/getKeyIotRecords获取全部关键物联网信息记录;
接口11:/getIotRecordByDvcId通过设备编号获取数据记录;
接口12:/getIotRecordByGroupId通过设备分组编号获取物联网信息记录。
5.根据权利要求1所述的基于联盟链的农产品物联网信息上链方法,其特征在于:实现基于联盟链Hyperledger Fabric架构的Chaincode接口部署:即通过set操作将Chaincode源代码文件安装到Peer节点上,然后实例化Chaincode代码。
6.根据权利要求1所述的基于联盟链的农产品物联网信息上链方法,其特征在于:农产品物联网信息数据上链步骤,包括(1)调用Chaincode写入数据,(2)领导节点将上链信息广播至所有节点;
101、调用Chaincode接口/writeCooperation、接口/writeProduct、接口/enrollProduct、接口/writeIotRecord,写入机构/企业、产品和物联网信息三个类的相应数据,并按照一个区块的结构将数据写入Input Data,且写入时间戳、调用合约地址,然后对数据进行一次哈希处理,并对哈希进行签名;在数据写入格式符合要求的情况下,交易排序服务将该区块信息同步至领导节点;
102、领导节点将上链信息广播至所有节点:该节点将消息发送到预先指定数量的其他节点,接收到消息的每一个节点再将消息转发给预定数量的其他节点,依此类推,直到所有的节点都收到了新的区块同步消息。
7.根据权利要求1所述的基于联盟链的农产品物联网信息上链方法,其特征在于:农产品物联网信息数据查询步骤,包括:(1)节点验证用户的权限等级,(2)调用Chaincode接口查询数据;
201、节点验证用户权限等级,即通过用户提交的机构/企业账号地址和账户私钥验证是否匹配机构企业信息,如果匹配则得到不同的根CA和签名,机构获得查看所有企业产品物联网信息的高级权限,企业则获得仅产看自己企业产品物联网信息的一般权限;
202、调用Chaincode接口查询数据,包括:接口/getCooperationByAccount、接口/getProductByAccount、接口/getIotRecordById、接口/getKeyIotRecords、接口/getIotRecordByDvcId、接口/getIotRecordByGroupId,共计6种查询方式;可见数据范围受到201所提及的权限等级控制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011454048.1A CN112463265B (zh) | 2020-12-10 | 2020-12-10 | 一种基于联盟链的农产品物联网信息上链方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011454048.1A CN112463265B (zh) | 2020-12-10 | 2020-12-10 | 一种基于联盟链的农产品物联网信息上链方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112463265A true CN112463265A (zh) | 2021-03-09 |
CN112463265B CN112463265B (zh) | 2023-11-14 |
Family
ID=74800718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011454048.1A Active CN112463265B (zh) | 2020-12-10 | 2020-12-10 | 一种基于联盟链的农产品物联网信息上链方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112463265B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165190A (zh) * | 2018-07-11 | 2019-01-08 | 南京邮电大学 | 一种基于区块链智能合约的电子数据存证方法 |
CN109634810A (zh) * | 2018-12-10 | 2019-04-16 | 广东亿迅科技有限公司 | 基于Fabric的区块链业务平台和运行方法 |
CN110012015A (zh) * | 2019-04-09 | 2019-07-12 | 中国科学院沈阳计算技术研究所有限公司 | 一种基于区块链的物联网数据共享方法及系统 |
CN110717825A (zh) * | 2018-06-27 | 2020-01-21 | 复旦大学 | 一种基于区块链的分布式数据交易记账系统 |
CN110969447A (zh) * | 2019-11-25 | 2020-04-07 | 江苏省农业科学院 | 一种基于区块链技术的产品深度溯源系统 |
CN111539750A (zh) * | 2020-04-27 | 2020-08-14 | 中山大学 | 一种基于区块链和大数据技术的商品溯源系统 |
US20200286041A1 (en) * | 2019-03-06 | 2020-09-10 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Service flow system and service data processing method and apparatus |
CN111681015A (zh) * | 2020-06-10 | 2020-09-18 | 复旦大学 | 基于联盟链的产品溯源方法、系统及设备 |
CN111783150A (zh) * | 2020-06-30 | 2020-10-16 | 北京海益同展信息科技有限公司 | 一种基于区块链的资源分配方法及装置 |
-
2020
- 2020-12-10 CN CN202011454048.1A patent/CN112463265B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110717825A (zh) * | 2018-06-27 | 2020-01-21 | 复旦大学 | 一种基于区块链的分布式数据交易记账系统 |
CN109165190A (zh) * | 2018-07-11 | 2019-01-08 | 南京邮电大学 | 一种基于区块链智能合约的电子数据存证方法 |
CN109634810A (zh) * | 2018-12-10 | 2019-04-16 | 广东亿迅科技有限公司 | 基于Fabric的区块链业务平台和运行方法 |
US20200286041A1 (en) * | 2019-03-06 | 2020-09-10 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Service flow system and service data processing method and apparatus |
CN110012015A (zh) * | 2019-04-09 | 2019-07-12 | 中国科学院沈阳计算技术研究所有限公司 | 一种基于区块链的物联网数据共享方法及系统 |
CN110969447A (zh) * | 2019-11-25 | 2020-04-07 | 江苏省农业科学院 | 一种基于区块链技术的产品深度溯源系统 |
CN111539750A (zh) * | 2020-04-27 | 2020-08-14 | 中山大学 | 一种基于区块链和大数据技术的商品溯源系统 |
CN111681015A (zh) * | 2020-06-10 | 2020-09-18 | 复旦大学 | 基于联盟链的产品溯源方法、系统及设备 |
CN111783150A (zh) * | 2020-06-30 | 2020-10-16 | 北京海益同展信息科技有限公司 | 一种基于区块链的资源分配方法及装置 |
Non-Patent Citations (4)
Title |
---|
CHARLES_LINZC: "区块链之联盟链(三) 认识Fabric", Retrieved from the Internet <URL:《https://www.jianshu.com/p/549122bf32d1》> * |
HAN LIU 等: "Fabric-iot: A Blockchain-Based Access Control System in IoT", 《IEEE ACCESS》, vol. 8, pages 18207 - 18218, XP011769137, DOI: 10.1109/ACCESS.2020.2968492 * |
王可可 等: "基于联盟区块链的农产品质量安全高效追溯体系", 《计算机应用》, vol. 39, no. 8, pages 2438 - 2443 * |
胡敏: "基于Fabric区块链技术的农产品质量安全追溯体系的研究", 《萍乡学院学报》, vol. 37, no. 3, pages 75 - 78 * |
Also Published As
Publication number | Publication date |
---|---|
CN112463265B (zh) | 2023-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Lone et al. | Forensic-chain: Blockchain based digital forensics chain of custody with PoC in Hyperledger Composer | |
US20210349953A1 (en) | Single click delta analysis | |
CN106874461B (zh) | 一种工作流引擎支持多数据源配置安全访问系统及方法 | |
CN109286676B (zh) | 一种基于区块链的电力数据安全信息系统 | |
US20180357578A1 (en) | Storing and depicting organizations that are subject to dynamic event driven restructuring | |
WO2020062972A1 (zh) | 基于区块链的数据处理方法及装置、电子设备 | |
CN107798037A (zh) | 用户特征数据的获取方法及服务器 | |
JP2003216576A (ja) | 脆弱点監視方法及びシステム | |
CN110096551A (zh) | 基于区块链的信用数据存储方法、装置、设备及介质 | |
US20070207773A1 (en) | Remote personnel tracking | |
CN107169094A (zh) | 信息聚合方法及装置 | |
CN112364059B (zh) | 多规则场景下关联匹配方法、装置、设备和存储介质 | |
CN113760958B (zh) | 一种信息查询方法、装置、设备及存储介质 | |
CN105096034A (zh) | 电子政务的实现方法和电子政务系统 | |
CN111429250A (zh) | 一种货押贷款场景中的数据管理方法和装置 | |
CN110807209B (zh) | 一种数据处理方法、设备及存储介质 | |
CN109005167B (zh) | 一种认证数据的处理方法、装置、服务器与存储介质 | |
CN112463265A (zh) | 一种基于联盟链的农产品物联网信息上链方法 | |
CN116596551A (zh) | 基于区块链的供应链产品溯源方法、存储介质和电子设备 | |
CN111427986A (zh) | 一种地图服务数据展示系统及方法 | |
CN116560863A (zh) | 基于区块链的任务管理方法、装置和计算机设备 | |
Buccafurri et al. | Range query integrity in cloud data streams with efficient insertion | |
CN115658794A (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
CN114925033A (zh) | 信息上链方法、装置、系统及存储介质 | |
CN113204427A (zh) | 资源管理方法、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |