CN112380555B - 一种基于区块链智能合约的农产品溯源信息上链方法 - Google Patents
一种基于区块链智能合约的农产品溯源信息上链方法 Download PDFInfo
- Publication number
- CN112380555B CN112380555B CN202011358400.1A CN202011358400A CN112380555B CN 112380555 B CN112380555 B CN 112380555B CN 202011358400 A CN202011358400 A CN 202011358400A CN 112380555 B CN112380555 B CN 112380555B
- Authority
- CN
- China
- Prior art keywords
- information
- agricultural product
- standard
- intelligent contract
- uplink
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000012795 verification Methods 0.000 claims abstract description 59
- 230000007246 mechanism Effects 0.000 claims abstract description 19
- 230000001360 synchronised effect Effects 0.000 claims description 16
- 238000003491 array Methods 0.000 claims description 9
- 238000004806 packaging method and process Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 8
- 238000013461 design Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 6
- 238000012856 packing Methods 0.000 claims description 5
- 230000008901 benefit Effects 0.000 abstract description 5
- 238000011161 development Methods 0.000 abstract description 2
- 238000012423 maintenance Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 16
- IJGRMHOSHXDMSA-UHFFFAOYSA-N Atomic nitrogen Chemical compound N#N IJGRMHOSHXDMSA-UHFFFAOYSA-N 0.000 description 10
- 229910052757 nitrogen Inorganic materials 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 239000003337 fertilizer Substances 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000004720 fertilization Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 235000013311 vegetables Nutrition 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2151—Time stamp
Abstract
本发明公开一种基于区块链智能合约的农产品溯源信息上链方法,包括:智能合约的算法编译与合约在联盟链上部署;农产品溯源校验标准信息上链;农产品溯源信息上链时智能合约验证数据和预警的运行机制。本发明通过FISCO BCOS联盟链架构智能合约,可实现在联盟链内对农产品溯源上链信息的智能验证和预警。本发明可广泛应用于智慧农业信息化管理体系与产业供应链大数据共享体系,应用成本低,维护简单,并具有功能性优势与广阔的开发前景。
Description
技术领域
本发明涉及一种基于区块链智能合约的农产品溯源信息上链方法,尤其涉及的是基于联盟链FISCO BCOS架构的智能合约编译和部署,以及链数据智能验证和预警方法,属于区块链技术领域。
背景技术
目前,市场上现有的基于区块链的农产品溯源信息上链方法,仅仅实现了基础的数据上链功能,然而对农产品上链溯源数据的达标程度没有进一步的判断与反馈。
现有技术中,农产品生产加工中的供应链业务存在如下两个方面的缺陷:一方面,农产品质量安全问题发现总是滞后,可在事后溯源追查问题源头时,却无法提前在农产品流入市场前截留有问题的农产品;另一方面,农产品溯源信息上链成本与获得的业务效益投入产出比太低,没有达到应有的实时监管和管控效果。
发明内容
发明目的:针对现有技术中农产品溯源上链技术的低业务效益、无法实现自动验证预警等评价行为的缺陷,本发明提供一种高效能的、可智能自动化运行验证预警行为的基于区块链智能合约的农产品溯源信息上链方法,本发明通过基于FISCO BCOS联盟链架构的智能合约程序模块,自动判断上链的农产品溯源信息是否符合现实中农产品质量安全标准的参数指标,并对不达标的农产品上链数据向各区块链节点进行预警提示。
技术方案:一种基于区块链智能合约的农产品溯源信息上链方法,包括:智能合约的算法编译与合约在联盟链上部署;农产品溯源校验标准信息上链;农产品溯源信息上链时智能合约验证数据和预警的运行机制。
智能合约的算法编译实现过程为:
首先在计算机上启动FISCO BCOS的架构环境程序和Docker容器引擎程序作为基础环境准备,再打开solcjs编译台,创建一个sol格式智能合约文件;对所述sol格式智能合约文件代码进行编辑,编辑内容包括版本声明、对农产品溯源信息的结构定义、对校验标准的结构定义与校验函数设计和执行返回方法。
所述农产品溯源信息的结构定义是给农产品质量安全关键节点需要上传的数据创建的标准信息录入结构。
所述校验标准的结构定义是农产品质量安全关键节点操作指标标准的数据结构。
所述农产品溯源信息的结构体是溯源信息结构体数组traceInfo [],由多个溯源信息结构体traceInfo组成;其中单个溯源信息结构体traceInfo包括字段:操作名称operationName、是否有投入品ifHasInput、投入品名称inputPrdt、多个溯源关键点指标数组Index[];Index[]是包含多个溯源关键点指标结构体Index的数组;所述单个溯源关键点指标结构体Index包括字段:关键指标名称keyIndex、指标单位unit和指标数值num。
所述校验标准的结构,是校验标准结构体数组standardInfo[],由多个校验标准结构体standardInfo组成;其中单个校验标准结构体standardInfo包括字段:操作名称operationName、是否有投入品ifHasInput、投入品名称inputPrdt、多个溯源关键点指标数组Index[];
Index[]是包含多个溯源关键点指标结构体Index的数组;所述单个溯源关键点指标结构体Index包括字段:关键指标名称keyIndex、指标单位unit和指标数值num。
所述校验函数用于校验录入的溯源信息数据是否符合校验标准数据。校验函数中创建一个存储比较结果的数组对象Count,轮次对比的计数变量i和k,以及创建3个比较结果布尔对象tk1、tk2和tk3;如果农产品溯源信息的是否有投入品字段符合校验标准,tk1为true;如果农产品溯源信息的是否有投入品字段不符合校验标准,tk1为false;如果农产品溯源信息的投入品名称字段符合校验标准,tk2为true;如果农产品溯源信息的投入品名称字段不符合校验标准,tk2为false;设定tk3初始值为true;然后,创建轮次对比的计数变量j,一旦关键点指标数组内有不符合标准的信息,tk3变false并结束循环;把tk1、tk2、tk3的与值赋予变量z,把z的值逐个写入数组对象Count中。
所述校验函数实现(1)查找单个溯源信息结构体和校验标准结构体中包含操作名称operationName 相同的校验标准,(2)如果查找到条件匹配的校验标准,逐项对比两者的以下信息是否吻合:是否有投入品ifHasInput、投入品名称inputPrdt、多个溯源关键点指标数组Index[]。
所述执行返回方法实现:(1)如果找不到单个溯源信息结构体和校验标准结构体中操作名称operationName相同的校验标准,则返回“无可参考标准”;(2)如果单个溯源信息结构体和校验标准结构体完全吻合,则返回 “符合标准”;(3)如果单个溯源信息结构体和校验标准结构体存在至少一项字段不吻合,则返回“不符合标准,预警”。即:如果Count中没有存入任何值,则赋予结果值“无可参考标准”,如果z值为true,则说明所有信息符合标准,赋予结果值“符合标准”,如果z值为false,则说明有信息符合不标准,赋予结果值“不符合标准,预警”。
使用solcjs对所述sol格式智能合约文件代码进行编译;由原始代码转译成二进制码和字节码。
所述智能合约在联盟链上的部署过程为:将创建的sol格式智能合约文件,以部署交易的方式上链至联盟链;发送智能合约文件二进制码和字节码放入区块链交易的InputData中,编辑接收地址以0x0开头,打包成交易区块;区块链根据0x0的地址头,判定这一交易区块中的交易类型为“发送合约,部署上链”,验证信息正确性后执行区块上链,即将智能合约部署上链。此时智能合约拥有合约地址并存在链上。
所述智能合约部署交易将被联盟链同步至所有节点,即所有节点将可通过EVM(以太坊栈式虚拟机)读取并调用该智能合约。
所述实现农产品溯源校验标准信息上链,包括:将农产品溯源校验标准信息打包成区块并加密、区块上链并同步至所有联盟链内节点。
将溯源校验标准信息打包成区块并加密具体为:某一负责校验标准信息上传的节点A调用SDK工具包,按照一个区块的结构将校验标准信息写入Input Data,并写入时间戳、调用合约地址,然后对校验标准信息进行一次哈希处理,并对哈希进行签名。
将包含校验标准信息的区块上链并同步至所有联盟链节点具体为:包含校验标准信息的区块信息被联盟链广播至所有节点,在数据写入格式符合要求的情况下,通过共识机制将该区块信息同步至所有节点,并更新整条区块链。
所述农产品溯源信息上链时智能合约验证数据和预警的运行机制主要分为信息上链并同步至所有节点、节点调用智能合约判断农产品溯源信息数据、获得判断返回结果、执行回调。如下步骤301~步骤306:
步骤301,信息上链并同步至所有节点,包括:将农产品溯源信息打包成区块并加密、区块上链并同步至所有联盟链内节点。
步骤302,步骤301中提到的将农产品溯源信息打包成区块并加密具体为:某一负责农产品溯源信息上传的节点B调用SDK工具包,按照一个区块的结构将农产品溯源信息写入Input Data,并写入时间戳、调用合约地址等,然后对农产品溯源信息进行一次哈希处理,并对哈希进行签名。
步骤303,将包含农产品溯源信息的区块上链并同步至所有联盟链节点具体为:该包含农产品溯源信息的区块信息被联盟链广播至所有节点,在数据写入格式符合要求的情况下,通过共识机制将该区块信息同步至所有节点,并更新整条区块链。
步骤304,节点调用智能合约判断农产品溯源信息数据机制方法为,节点B自动通过EVM(以太坊栈式虚拟机)读取智能合约的字节码,将农产品溯源信息结构的对应参数值带入智能合约代码,之后执行智能合约。
步骤305,通过步骤304所述将农产品溯源信息结构的对应参数值带入智能合约代码并执行智能合约后,获得三种返回结果类型的其中一型,三种返回结果类型包括:"符合标准"、"不符合标准,预警"、"无可参考标准"。
步骤306,节点B自动将步骤305中所获得的返回结果返回给SDK工具包。
有益效果:与现有技术相比,本发明提供的基于区块链智能合约的农产品溯源信息上链方法,通过所述FISCO BCOS联盟链架构智能合约,可实现在联盟链内对农产品溯源上链信息的智能验证和预警。本发明可广泛应用于智慧农业信息化管理体系与产业供应链大数据共享体系,应用成本低,维护简单,并具有功能性优势与广阔的开发前景。对比现有溯源信息上链技术,本发明核心优势总结如下:
(1)不影响数据上链效率的情况下,拓宽了单次数据上链的业务应用层次,实现了自动验证和预警的评价行为;
(2)智能合约自动化运行,避免传统人工评判溯源数据达标度的错漏问题,避免传统管控系统在半自动评判后不作为的徇私作弊行为。
(3)本发明可在常见服务器上进行部署,并可兼容常见通信设备和采集端口,产业适用度广,应用成本适中,易于联盟链成员机构学习与上手操作。
附图说明
图1是本发明实施例的方法流程图。
具体实施方式
下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
如图1所示,基于区块链智能合约的农产品溯源信息上链方法,包括:智能合约的算法编译与合约在联盟链上部署;农产品溯源校验标准信息上链;农产品溯源信息上链时智能合约验证数据和预警的运行机制。
一,实现用以判断验证农产品溯源信息的智能合约的算法编译,与智能合约在联盟链上的部署过程为:
步骤101,为实现智能合约的算法编译,首先在Linux系统计算机上启动FISCOBCOS的架构环境程序和Docker容器引擎程序作为基础环境准备,再打开solcjs编译台,创建一个sol格式智能合约文件。
步骤102,对步骤101所提到的sol格式智能合约文件代码进行编辑,编辑内容包括版本声明、对农产品溯源信息的结构定义、对校验标准的结构定义与校验函数设计、执行返回方法。
步骤103,对步骤102中提到的版本声明进行编写,调用pragma语句声明使用solidity语言版本为高于0.4.0低于0.7.0。如下:
pragma solidity ^0.5.8;
步骤104,对步骤102中提到的结构定义与校验函数设计进行编写。结构定义包括对农产品溯源信息结构的定义和对校验标准结构的定义。农产品溯源信息的结构定义是给农产品质量安全关键节点需要上传的数据创建的标准信息录入结构。同理,校验标准结构定义是农产品质量安全关键节点操作指标标准的标准信息录入结构。
步骤105,定义农产品溯源信息的结构如下(注:此处所列结构体为最基础的农产品溯源信息结构体,实际业务应用场景中可对结构体进行调整与结构复杂度升级):
struct Index{
string keyIndex;
string unit;
uint num;
}
struct traceInfo{
string operationName;
bool ifHasInput;
string inputPrdt;
Index[] idx;
}
traceInfo[] tif;
溯源信息的结构,是溯源信息结构体数组traceInfo [],由多个溯源信息结构体traceInfo组成;其中单个溯源信息结构体traceInfo包括字段:操作名称operationName、是否有投入品ifHasInput、投入品名称inputPrdt、多个溯源关键点指标数组Index[]。
Index[]是包含多个溯源关键点指标结构体Index的数组。所述单个溯源关键点指标结构体Index包括字段:关键指标名称keyIndex、指标单位unit和指标数值num。
步骤106,定义校验标准的结构如下:
struct standardInfo{
string operationName;
bool ifHasInput;
string inputPrdt;
Index[] idx;
}
standardInfo [] stdif;
所述校验标准的结构,是校验标准结构体数组standardInfo[],由多个校验标准结构体standardInfo组成。其中单个校验标准结构体standardInfo包括字段:操作名称operationName、是否有投入品ifHasInput、投入品名称inputPrdt、多个溯源关键点指标数组Index[]。
Index[]是包含多个溯源关键点指标结构体Index的数组。所述单个溯源关键点指标结构体Index包括字段:关键指标名称keyIndex、指标单位unit和指标数值num。
步骤107,定义校验函数体如下:
struct Count{
bool z;
}
Count[] cnt;
function verifyTest(traceInfo[] memory tif,standardInfo[]memorystdif) public{
for(uint i = 0; i < traceInfo.length; i++) {
for(uint k = 0; k < standardInfo.length; k++){
bool tk1;
bool tk2;
bool tk3;
if(keccak256(abi.encodePacked(tif[i].operationName)) == keccak256(abi.encodePacked(stdif[k].operationName))){
if (tif[i].ifHasInput == stdif[k].ifHasInput){
tk1 = true;
}else{
tk1 = false;
}
if (keccak256(abi.encodePacked(tif[i].inputPrdt)) == keccak256(abi.encodePacked(stdif[k].inputPrdt))){
tk2 = true;
}else{
tk2 = false;
}
tk3 = true;
for(uint j = 0; j < tif[i].idx.length; j++){
if(tif[i].idx[j] != stdif[k].idx[j]) {
tk3 = false;
break;
}
}
z=tk1 && tk2 && tk3;
cnt.push(Count(z));
}
}
}
}
对溯源信息的结构定义,和对校验标准的结构定义,将作为校验函数的定义域的结构定义,带入到校验函数的设计中。校验函数用于校验录入的溯源信息数据是否符合校验标准数据。校验函数中创建一个存储单个溯源信息结构体和校验标准结构体的比较结果的数组对象Count,轮次对比的计数变量i和k,以及创建3个比较结果布尔对象tk1、tk2和tk3;如果农产品溯源信息的是否有投入品字段符合校验标准,tk1为true;如果农产品溯源信息的是否有投入品字段不符合校验标准,tk1为false;如果农产品溯源信息的投入品名称字段符合校验标准,tk2为true;如果农产品溯源信息的投入品名称字段不符合校验标准,tk2为false;设定tk3初始值为true;然后,创建轮次对比的计数变量j,一旦关键点指标数组内有不符合标准的信息,tk3变false并结束校验函数的比较循环过程;把tk1、tk2、tk3的与值赋予变量z,把z的值逐个写入数组对象Count中;
该校验函数实现(1)查找单个溯源信息结构体和校验标准结构体中包含操作名称operationName 相同的校验标准,(2)如果查找到条件匹配的校验标准,逐项对比两者的以下信息是否吻合:是否有投入品ifHasInput、投入品名称inputPrdt、多个溯源关键点指标数组Index[]。
步骤108,对步骤102中提到的执行返回方法进行编写。如下:
function getresult() public view returns(Count[] memory){
string memory returnValue;
if(count.push == 0){
returnValue = "无可参考标准";
//如果Count中没有存入任何值,则赋予结果值“无可参考标准”
}else if(z == true){
returnValue = "符合标准";
//如果z值为true,则说明所有信息符合标准,赋予结果值“符合标准”
}else if(z == false){
returnValue = "不符合标准,预警";
//如果z值为false,则说明有信息符合不标准,赋予结果值“不符合标准,预警”
}
return returnValue;
//返回响应的结果值
}
该执行返回方法实现:(1)如果找不到单个溯源信息结构体和校验标准结构体中操作名称operationName相同的校验标准,则返回“无可参考标准”;(2)如果单个溯源信息结构体和校验标准结构体完全吻合,则返回 “符合标准”;(3)如果单个溯源信息结构体和校验标准结构体存在至少一项字段不吻合,则返回“不符合标准,预警”。
步骤109,使用solcjs对步骤101所提到的sol格式智能合约文件代码进行编译。由原始代码转译成二进制码和字节码。
步骤110,为实现智能合约在联盟链上的部署,即:将创建的sol格式智能合约文件,以部署交易的方式上链至联盟链。发送智能合约文件二进制码和字节码放入区块链交易的Input Data中,编辑接收地址以0x0开头,打包成交易区块。区块链根据0x0的地址头,判定这一交易区块中的交易类型为“发送合约,部署上链”,验证信息正确性后执行区块上链,即将智能合约部署上链。此时智能合约拥有合约地址并存在链上。
步骤111,智能合约部署交易将被联盟链同步至所有节点,即所有节点将可通过EVM(以太坊栈式虚拟机)读取并调用该智能合约。
二,实现农产品溯源校验标准信息上链,包括:将农产品溯源校验标准信息打包成区块并加密、区块上链并同步至所有联盟链内节点。
步骤201,将溯源校验标准信息打包成区块并加密具体为:某一负责校验标准结构体(校验标准信息)上传的节点A调用SDK工具包,按照一个区块的结构(区块头、区块体)将校验标准信息写入Input Data,并写入时间戳、调用合约地址等,然后对校验标准信息进行一次哈希处理,并对哈希进行签名。
步骤202,将包含校验标准信息的区块上链并同步至所有联盟链节点具体为:该包含校验标准信息的区块信息被联盟链广播至所有节点,在数据写入格式符合要求的情况下(如果数据写入格式不符合要求将不被上链),通过共识机制将该区块信息同步至所有节点,并更新整条区块链。
三,农产品溯源信息上链时智能合约验证数据和预警的运行机制主要分为信息上链并同步至所有节点、节点调用智能合约判断农产品溯源信息数据、获得判断返回结果、执行回调。
步骤301,信息上链并同步至所有节点,包括:将农产品溯源信息打包成区块并加密、区块上链并同步至所有联盟链内节点。
步骤302,步骤301中提到的将农产品溯源信息打包成区块并加密具体为:某一负责农产品溯源信息上传的节点B调用SDK工具包,按照一个区块的结构(区块头、区块体)将农产品溯源信息写入Input Data,并写入时间戳、调用合约地址等,然后对农产品溯源信息进行一次哈希处理,并对哈希进行签名。
步骤303,将包含农产品溯源信息的区块上链并同步至所有联盟链节点具体为:该包含农产品溯源信息的区块信息被联盟链广播至所有节点,在数据写入格式符合要求的情况下(如果数据写入格式不符合要求将不被上链),通过共识机制将该区块信息同步至所有节点,并更新整条区块链。
步骤304,节点调用智能合约判断农产品溯源信息数据机制方法为,节点B自动通过EVM(以太坊栈式虚拟机)读取智能合约的字节码,将农产品溯源信息结构的对应参数值带入智能合约代码,之后执行智能合约。
步骤305,三中获得判断返回结果为,通过步骤304所述将农产品溯源信息结构的对应参数值带入智能合约代码并执行智能合约后,获得步骤108中所提到的三种返回结果类型的其中一型:"符合标准"、"不符合标准,预警"或"无可参考标准"。
步骤306,三中提到的执行回调为,节点B自动将步骤305中所获得的返回结果返回给SDK工具包。
假设节点Y是一家农产品质量安全技术机构,负责上传指定品种水培菜的溯源校验标准信息。其调用SDK工具包,按照一个区块的结构(区块头、区块体)将溯源信息(如下方示例所示)写入Input Data,并写入时间戳、调用合约地址等。然后对溯源信息进行一次哈希处理,并对哈希进行签名。
‘standardInfo’:{
‘operationName’:‘施肥’;
‘ifHasInput’:‘true;
‘inputPrdt’:‘氮基肥’ ;
‘Index’:{
{‘keyIndex’=’单次施用氮含量’ ;
‘unit’=’毫克’;
‘num’=50;
};
{‘keyIndex’=’施用次数’ ;
‘unit’=’次’;
‘num’=2;
}
}
该区块信息被联盟链广播至所有节点,在数据写入格式符合要求的情况下(如果数据写入格式不符合要求将不被上链),通过共识机制将该区块信息同步至所有节点,并更新整条区块链。因为该区块包括溯源校验标准信息,因此该校验标准信息已上链并同步至所有节点。
假设节点X是一家水培菜生产企业,负责上传本企业的产品溯源信息。其调用SDK工具包,按照一个区块的结构(区块头、区块体)将溯源信息(如下方示例所示)写入InputData,并写入时间戳、调用合约地址等。然后对溯源信息进行一次哈希处理,并对哈希进行签名。
‘operationName’:‘施肥’;
‘ifHasInput’:‘true;
‘inputPrdt’:‘氮基肥’ ;
‘Index’:{
{‘keyIndex’=’单次施用氮含量’ ;
‘unit’=’毫克’;
‘num’=50;
};
{‘keyIndex’=’施用次数’ ;
‘unit’=’次’;
‘num’=3;
}
}
该区块信息被联盟链广播至所有节点,在数据写入格式符合要求的情况下(如果数据写入格式不符合要求将不被上链),通过共识机制将该区块信息同步至所有节点,并更新整条区块链。
节点X自动通过EVM(以太坊栈式虚拟机)读取智能合约的字节码,将溯源信息数据结构的对应参数值带入智能合约代码,之后执行智能合约。
在上述的溯源信息和校验标准的验证比较中,我们能够发现溯源信息的“氮基肥”的“施用次数”3次,不符合校验标准中记录的2次,因此智能合约会判定本次验证的返回结果是“不符合标准,预警”。之后,节点Y将自动将获得的返回结果“不符合标准,预警”返回给SDK工具包。完成本次的溯源信息上链与验证预警。
Claims (3)
1.一种基于区块链智能合约的农产品溯源信息上链方法,其特征在于,包括:智能合约的算法编译与合约在联盟链上部署,农产品溯源校验标准信息上链,以及农产品溯源信息上链时智能合约验证数据和预警的运行机制;
智能合约的算法编译实现过程为:
首先在计算机上启动FISCO BCOS的架构环境程序和Docker容器引擎程序作为基础环境准备,再打开solcjs编译台,创建一个sol格式智能合约文件;对所述sol格式智能合约文件代码进行编辑,编辑内容包括对农产品溯源信息的结构定义、对校验标准的结构定义与校验函数设计和执行返回方法;
所述农产品溯源信息的结构定义是给农产品质量安全关键节点需要上传的数据创建的标准信息录入结构;所述校验标准的结构定义是农产品质量安全关键节点操作指标标准的标准信息录入结构;
所述农产品溯源信息的结构,是溯源信息结构体数组traceInfo [],由多个溯源信息结构体traceInfo组成;其中单个溯源信息结构体traceInfo包括字段:操作名称operationName、是否有投入品ifHasInput、投入品名称inputPrdt、多个溯源关键点指标数组Index[];
所述校验标准的结构,是校验标准结构体数组standardInfo[],由多个校验标准结构体standardInfo组成;其中单个校验标准结构体standardInfo包括字段:操作名称operationName、是否有投入品ifHasInput、投入品名称inputPrdt、多个溯源关键点指标数组Index[];
Index[]是包含多个溯源关键点指标结构体Index的数组;单个溯源关键点指标结构体Index包括字段:关键指标名称keyIndex、指标单位unit和指标数值num;
对溯源信息的结构定义,和对校验标准的结构定义,将作为校验函数的定义域的结构定义,带入到校验函数的设计中;
所述校验函数实现(1)查找单个溯源信息结构体和校验标准结构体中包含操作名称operationName 相同的校验标准,(2)如果查找到条件匹配的校验标准,逐项对比两者的以下信息是否吻合:是否有投入品ifHasInput、投入品名称inputPrdt、多个溯源关键点指标数组Index[];
在所述校验函数中创建一个存储比较结果的数组对象Count,轮次对比的计数变量i和k,以及创建3个比较结果布尔对象tk1、tk2和tk3;如果农产品溯源信息的是否有投入品字段符合校验标准,tk1为true;如果农产品溯源信息的是否有投入品字段不符合校验标准,tk1为false;如果农产品溯源信息的投入品名称字段符合校验标准,tk2为true;如果农产品溯源信息的投入品名称字段不符合校验标准,tk2为false;设定tk3初始值为true;然后,创建轮次对比的计数变量j,一旦关键点指标数组内有不符合标准的信息,tk3变false并结束循环;把tk1、tk2、tk3的与值赋予变量z,把z的值逐个写入数组对象Count中;
所述执行返回方法实现:(1)如果找不到单个溯源信息结构体和校验标准结构体中操作名称operationName相同的校验标准,即Count为空,则返回“无可参考标准”;(2)如果单个溯源信息结构体和校验标准结构体完全吻合,即Count中存值z全为true,则返回 “符合标准”;(3)如果单个溯源信息结构体和校验标准结构体存在至少一项字段不吻合,即Count中存值z至少有一个为false,则返回“不符合标准,预警”;
所述农产品溯源信息上链时智能合约验证数据和预警的运行机制主要分为信息上链并同步至所有节点、节点调用智能合约判断农产品溯源信息数据、获得判断返回结果、执行回调;如下步骤301~步骤306详述:
步骤301,农产品溯源信息上链并同步至所有节点,包括:将农产品溯源信息打包成区块并加密、区块上链并同步至所有联盟链内节点;
步骤302,步骤301中提到的将农产品溯源信息打包成区块并加密具体为:某一负责农产品溯源信息上传的节点B调用SDK工具包,按照一个区块的结构将农产品溯源信息写入Input Data,并写入时间戳、调用合约地址,然后对农产品溯源信息进行一次哈希处理,并对哈希进行签名;
步骤303,将包含农产品溯源信息的区块上链并同步至所有联盟链节点具体为:该包含农产品溯源信息的区块信息被联盟链广播至所有节点,在数据写入格式符合要求的情况下,通过共识机制将该区块信息同步至所有节点,并更新整条区块链;
步骤304,节点调用智能合约判断农产品溯源信息数据机制方法为,节点B自动通过EVM读取智能合约的字节码,将农产品溯源信息结构的对应参数值带入智能合约代码,之后执行智能合约;
步骤305,通过步骤304所述将农产品溯源信息结构的对应参数值带入智能合约代码并执行智能合约后,获得返回结果;
步骤306,节点B自动将步骤305中所获得的返回结果返回给SDK工具包。
2. 根据权利要求1所述的基于区块链智能合约的农产品溯源信息上链方法,其特征在于,使用solcjs对所述sol格式智能合约文件代码进行编译;由原始代码转译成二进制码和字节码;所述智能合约在联盟链上的部署过程为:将创建的sol格式智能合约文件,以部署交易的方式上链至联盟链;发送智能合约文件二进制码和字节码放入区块链交易的InputData中,编辑接收地址以0x0开头,打包成交易区块;区块链根据0x0的地址头,判定这一交易区块中的交易类型为“发送合约,部署上链”,验证信息正确性后执行区块上链,即将智能合约部署上链。
3.根据权利要求1所述的基于区块链智能合约的农产品溯源信息上链方法,其特征在于,实现农产品溯源校验标准信息上链,包括:将农产品溯源校验标准信息打包成区块并加密、区块上链并同步至所有联盟链内节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011358400.1A CN112380555B (zh) | 2020-11-27 | 2020-11-27 | 一种基于区块链智能合约的农产品溯源信息上链方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011358400.1A CN112380555B (zh) | 2020-11-27 | 2020-11-27 | 一种基于区块链智能合约的农产品溯源信息上链方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112380555A CN112380555A (zh) | 2021-02-19 |
CN112380555B true CN112380555B (zh) | 2024-03-12 |
Family
ID=74587479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011358400.1A Active CN112380555B (zh) | 2020-11-27 | 2020-11-27 | 一种基于区块链智能合约的农产品溯源信息上链方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112380555B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115409619A (zh) * | 2021-05-28 | 2022-11-29 | 华为技术有限公司 | 一种基于区块链的数据处理方法及区块链节点装置 |
CN113411348B (zh) * | 2021-07-02 | 2022-02-11 | 江西农业大学 | 一种1+n多链溯源系统的数据保护方法以及系统 |
CN113506117A (zh) * | 2021-07-15 | 2021-10-15 | 上海海洋大学 | 一种水产品区块链溯源优化系统及方法 |
CN113849543B (zh) * | 2021-09-30 | 2022-07-12 | 北京荷月科技有限公司 | 一种对账信息查询系统、数据更新方法及对账查询方法 |
CN114663119B (zh) * | 2022-05-25 | 2022-10-11 | 南京金宁汇科技有限公司 | 一种基于联盟链智能合约的供应链溯源管理方法及系统 |
CN115601177B (zh) * | 2022-11-15 | 2023-04-28 | 南京知麦信息科技有限公司 | 基于畜产品养殖加工全过程管理模型的智能合约生成方法 |
CN116385030B (zh) * | 2023-06-06 | 2023-09-15 | 北京农夫铺子技术研究院 | 一种基于区块链的溯源方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109727043A (zh) * | 2018-12-29 | 2019-05-07 | 厦门物之联智能科技有限公司 | 一种基于区块链的产品溯源方法、系统及存储介质 |
CN109766722A (zh) * | 2019-01-22 | 2019-05-17 | 苏州同济区块链研究院有限公司 | 一种区块链中构建智能合约的方法及其系统 |
CN109936457A (zh) * | 2019-02-20 | 2019-06-25 | 深圳前海微众银行股份有限公司 | 区块链多方见证方法、装置、设备及计算机可读存储介质 |
CN110516965A (zh) * | 2019-08-27 | 2019-11-29 | 北京工商大学 | 基于区块链的粮油食品全供应链可信追溯模型及构建方法 |
CN111127042A (zh) * | 2019-12-24 | 2020-05-08 | 杭州浙大恩氏网络科技有限公司 | 一种基于区块链的数据溯源系统及其方法 |
CN111681017A (zh) * | 2020-08-14 | 2020-09-18 | 支付宝(杭州)信息技术有限公司 | 基于区块链的货物批量验真方法及装置、电子设备 |
CN111680865A (zh) * | 2020-04-26 | 2020-09-18 | 中化现代农业有限公司 | 基于区块链的农产品品控溯源平台 |
-
2020
- 2020-11-27 CN CN202011358400.1A patent/CN112380555B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109727043A (zh) * | 2018-12-29 | 2019-05-07 | 厦门物之联智能科技有限公司 | 一种基于区块链的产品溯源方法、系统及存储介质 |
CN109766722A (zh) * | 2019-01-22 | 2019-05-17 | 苏州同济区块链研究院有限公司 | 一种区块链中构建智能合约的方法及其系统 |
CN109936457A (zh) * | 2019-02-20 | 2019-06-25 | 深圳前海微众银行股份有限公司 | 区块链多方见证方法、装置、设备及计算机可读存储介质 |
CN110516965A (zh) * | 2019-08-27 | 2019-11-29 | 北京工商大学 | 基于区块链的粮油食品全供应链可信追溯模型及构建方法 |
CN111127042A (zh) * | 2019-12-24 | 2020-05-08 | 杭州浙大恩氏网络科技有限公司 | 一种基于区块链的数据溯源系统及其方法 |
CN111680865A (zh) * | 2020-04-26 | 2020-09-18 | 中化现代农业有限公司 | 基于区块链的农产品品控溯源平台 |
CN111681017A (zh) * | 2020-08-14 | 2020-09-18 | 支付宝(杭州)信息技术有限公司 | 基于区块链的货物批量验真方法及装置、电子设备 |
Non-Patent Citations (3)
Title |
---|
基于区块链的农业投入品智能管控平台设计;钱建平等;农业大数据学报;第2卷(第2期);38-46 * |
基于区块链的农业科学数据溯源应用初探;王姝;孙善鹏;樊景超;刘佳;郭志斌;王丽娟;李成赞;周国民;周园春;;农业大数据学报(第02期);全文 * |
基于区块链的农产品安全可信溯源应用研究;高阳阳;吕相文;袁柳;李勐;;计算机应用与软件(第07期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112380555A (zh) | 2021-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112380555B (zh) | 一种基于区块链智能合约的农产品溯源信息上链方法 | |
CN108388445B (zh) | 一种基于“平台+应用”模式的持续集成方法 | |
CN110309196A (zh) | 区块链数据存储和查询方法、装置、设备及存储介质 | |
CN109240835B (zh) | 一种plm系统与erp系统对接方法 | |
CN106293664A (zh) | 代码生成方法及装置 | |
CN107193917B (zh) | 基于iid的全站系统配置文件无损数据更新方法 | |
CN109032631B (zh) | 应用程序补丁包获取方法、装置、计算机设备及存储介质 | |
CN106598581A (zh) | 基于xml的asterix报文解析代码生成方法 | |
CN102339298A (zh) | Sql脚本元数据的更新方法、装置及系统 | |
WO2011116471A1 (en) | Method and system for generating updated test data | |
CN102289774A (zh) | 金融交易处理系统中的图形化报文处理与测试系统及方法 | |
CN104991810B (zh) | 自动添加apk到安卓系统中的方法及处理系统 | |
CN100407663C (zh) | 一种电信智能业务的通用测试系统及方法 | |
Sanchez et al. | Bigraphical modelling of architectural patterns | |
CN112148343A (zh) | 规则发布方法、装置及终端设备 | |
CN116382815B (zh) | 基于dag模型的合约并行化方法 | |
CN112685487A (zh) | 在浏览器环境下通过IndexedDB模拟关系型数据库的方法和装置 | |
CN116954607A (zh) | 多源异构实时任务处理方法、系统、设备和介质 | |
CN103984540A (zh) | 生成硬件接口运行程序的方法及装置 | |
CN111431664A (zh) | 基于json数据协议的派工数据包封装下达方法及装置 | |
CN107749800B (zh) | 一种实现通信设备自动化测试配置隐式删除的方法 | |
CN107317716A (zh) | 一种终端管理系统及其应用方法 | |
CN104158903B (zh) | Oam协议栈编码方法及系统 | |
CN115601177B (zh) | 基于畜产品养殖加工全过程管理模型的智能合约生成方法 | |
CN110162480B (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 |