APP下载

基于区块链的种子供应链信息溯源及信用度提升的方案设计与研究*

2022-06-27贺吉范晓飞姚竟发孙磊李旭东索雪松

中国农机化学报 2022年7期
关键词:以太区块数据库

贺吉,范晓飞,姚竟发,孙磊,李旭东,索雪松

(1. 河北农业大学机电工程学院,河北保定,071000;2. 河北农业大学信息科学与技术学院,河北保定,071000)

0 引言

农作物种质资源是国家战略性、基础性核心事业发展的基础[1]。加强对种子流通信息监管,维护种子交易链条各个环节的合法权益,确保种植户用上质量合格、信息透明的种子,已经成为国家与社会关注的热点问题。建立农作物种子质量溯源体系,为种子质量追溯与监管提供技术支撑,种子质量溯源是对农作物育苗育种、种植、加工、仓储、流通和销售等环节中所产生的信息进行采集、处理、上传、存储以及追溯[2-3]。将区块链技术融入到传统的种子质量溯源系统中,改进了传统溯源方式的中心化严重、数据可信度低、信息存储不安全等特点[4]。准确查询种子的来源、去向与基本信息,明确追溯责任主体,保证种子流通全链条的质量安全,促进种业的健康持续发展,保障农民和商家的合法权益。

国外对于溯源研究较早,Beamon[5]设计、建立全产业链条对农业产品重要信息与指标进行检测、追溯;Abenavoli等[6]设计了一个基于云平台的可实时上传、查询产品数据信息的意大利橄榄油溯源系统,平台包含电脑与手机等多端应用。2008年Satoshi(中本聪)提出比特币的底层技术——区块链[7],经过国内外研究人员不断深入研究,区块链由单纯的去中心化支付系统发展成为更加成熟的分布式数据库。将区块链技术与传统供应链相结合,构成基于区块链的质量溯源系统,再加以改进和优化。如Xie等[8]提出了双链存储结构方式的溯源系统,来跟踪追溯有机农产品,使用私有链存储完整的溯源信息,生成哈希值并将其锚定到公有链上,从而实现有机农产品信息的高效、安全存储;Tian[9]提出将物联网和区块链结合,对信息进行HACCP(危害分析和关键控制点)分析,系统中加入去中性化数据库BigChainDB,提高溯源系统的可扩展性;任守纲等[10]提出了优化的共识机制CSBFT,使得搭建的农作物信息溯源平台具有更高的安全性和更小的时延;杨信廷等[11]提出“数据库+区块链”的链上链下双种类数据库存储,应用Hyperledger Fabric与CouchDB结合进行农产品追溯信息试验,验证了此方式可提高数据查询的可靠性与时效性,解决链式结构信息追溯效率低的问题。区块链技术为农业信息的有效溯源提供了可能性,技术本身的发展和开发人员的推动使其在溯源方面的应用更加丰富,众多学者提出了关于区块链技术的多种方案来解决农业信息溯源问题。种子供应链具有部门环节多、种子种类丰富、数据繁杂等特点,由于区块链技术本身的交易延迟、数据不可更改、信息源头真实性不可靠等特性的限制。目前未能直接应用区块链技术完全解决种子供应链信息的溯源问题。

本文设计了一种基于以太坊结合IPFS和MongoDB数据库的种子质量信息溯源模式,构建“区块链+多数据库”种子数据存储私有链。分析种子供应链信息存在的问题,结合网站技术设计,加入系统用户信用度智能合约算法,搭建种子质量信息溯源系统。

1 区块链种子追溯模型

1.1 问题分析

种子供应链与其他产品供应链有相同之处,又区别于其他供应链。相同之处在于参与主体均包括生产部门、加工部门、运输部门、销售部门、消费者等,产品在这些主体间单向流通从而形成链式供应。不同之处在于种子供应链的生产部门包含消费者,消费者中又包含生产部门,即是购买种子又是生产种子的参与主体,从而形成种子流通的闭环结构。传统的种子供应链各部门之间只关注种子的实体流通,没有把控种子数据源头的真实性,未注重与上下游企业、用户形成的透明、有效的数据共享,且整个供应链上的所有企业与用户众多,存储信息的标准、规范与模式存在较大差异。进而形成了种子供应链上单个部门主体的“数据孤岛”。数据的有效共享不仅影响种子供应链的信息监管和追溯,而且影响到种子质量问题,下游部门不能得到上游部门的种子信息,导致流通种子的质量优劣掺杂,父代种子质量参差不齐导致子代质量下降,在种子供应链的闭环结构下形成恶性循环。

建立源头可信、结构合理、数据透明、信息互通的种子供应链信息存储、追溯系统是解决以上问题的关键,具备高度可信任的数据源头是一个完善种子追溯系统的前提,通过查询用户信用度高低来了解其对应系统内种子信息可信度程度,激励用户上传真实信息,提高系统可信度。拥有完整、公开信息的数据库是系统的核心和基础,数据库记录的信息包含种子和作物的基本属性、作物的生长信息、种子和作物加工的流程和操作参数、各环节的环境信息、各环节的管理信息等[10]。

1.2 种子供应链信息存储与追溯模型

通过物联网技术和移动网络采集并上传种子数据,利用区块链技术对上传数据打包、上链、存储以及共享。种子供应链信息存储与追溯体系包含种子流通闭环结构所有环节与主体:培育苗种、作物种植、种子加工、仓储、运输、交易、监管、质检等。整个种子质量溯源体系,参与主体众多,环节复杂,需求差异性大,体系上各环节种子信息存储需完善、合理,保证信息记录的时效性、有效性和完整性,种子信息追溯需便捷、可信,参与主体之间可以有效共享数据[12]。如图1所示,规范所有参与主体的数据传输方式,以作物种植为例,通过自身系统采集作物在生长期间的环境信息,如温度、湿度、CO2浓度和光照强度等,录入作物的生长状态信息,如发芽率、株高、成熟时间、拍摄图片等。系统对数据进行处理并存入本地数据库,将处理过后的种子数据视为区块链的交易,进入节点交易池,再由节点通过P2P网络将交易广播给其他节点,各节点通过数字签名技术验证交易的真实性,最后将交易打包、上链,通过共识机制来保证所有节点更新同样的区块。参与主体和监管部门等用户通过网站平台发送查询请求,调取区块链种子数据,返回结果。

图1 种子信息存储与追溯模型图

2 区块链种子信息追溯系统架构设计

根据种子质量溯源信息需要高度公开透明、供多方组织和人员可查询等特点,此方案采用区块链2.0阶段较成熟的以太坊平台为核心来构建种子质量溯源系统,具备较高的系统吞吐量,满足所需要求。如图2所示,该设计采用三层架构模式:应用层、物联网层和数据存储层。

图2 种子信息追溯系统三层架构图

引入智能合约与可编程底层,基于其架构开发种子数据传输、上链、存储与查询的分布式种子质量追溯应用。为弥补以太坊在数据存储与查询相对较慢的问题,系统设计结合分布式数据库IPFS与本地数据库MongoDB。

基于以太坊的可追溯、不可篡改、去中心化等特性构建种子质量溯源系统框架。提出多库存储、不可篡改、快捷查询的新溯源模式来优化系统性能,进而提升种子供应链信息的安全性和透明性。

2.1 应用层设计

应用层包括业务层和终端层。业务层为种子供应链上所有环节的参与主体和监管部门与追溯系统的交互。一方面参与主体通过平台上传作物的种植、生长和种子的流通、交易等产生的数据,另一方面监管部门、消费者和流通环节企业等对种子信息进行追溯,查询种子从生产到销售的全部信息。参与主体接收、存储账户地址、私钥、公钥,设定密码,业务层对账户根据相应功能进行权限分类。

终端层为设计搭配以太坊溯源系统的前端应用。种子数据Web前端门户网站基于TCP/IP协议,以JavaScript、Html、Css等作为开发语言进行设计。使用layuimini模板制作系统的浏览器可视化操作窗口。通过浏览器前端数据管理网站调用服务器提供的API接口,与后端数据库对接,进行用户注册、权限管理、信息上传与查询等功能。所有用户在网站公共前端的注册、登录界面,触发用户注册命令,发送请求并接收后端发送的以太坊地址和公、私钥。网站登录账户、密码即为接受的以太坊地址和私钥,则保证前端用户和在以太坊私有链上发布消息的人为同一参与主体,将链上种子数据与发布人绑定在一起。对账户进行功能权限分类,例如种子加工商用户地址可以调取种子加工信息传输界面,上传公司、环境、种子加工等信息,对于其他种子数据和用户信息只有查询权限。所有用户共有查询界面,两种查询方式:种子批次和用户地址,通过发送查询种子批次请求,获取并显示同批次种子从生产到销售的所有数据,通过发送查询用户地址请求,获取并显示同一用户发布过的所有种子信息。作为种子信息查询的主要方式,更加轻量、便捷地连接用户与服务。

2.2 物联网层设计

物联网层包括物理层和网络层。物理层主要是移动终端手机、电脑端和测量、传输数据的传感器等硬件设备,对数据的采集与传输形成物理依托,农作物的生长环境数据、种子加工数据、物流运输数据等可通过传感器测量的信息,经由通讯设备自动上传,其他部分数据如厂家名称、联系方式等信息通过手机、电脑等结合终端软件Web、微信小程序等通过网络机制进行传输。

网络层主要包括3部分,第一部分检测设备的传输方式,RFID、ZigBee、二维码、蓝牙等,应用检测设备与技术来减少人为因素在种子数据源头的影响度,种子批次通过RFID、二维码等增加标识度,ZigBee、蓝牙等便于种子数据在源头的传输。第二部分基础传输机制,以太网、5G、WIFI等,保证数据正常上传的网络连接基础。第三部分区块链协议,Ethereum节点之间互相通信的传输协议RLPx,链接的双方均生成随机私钥,通过随机的私钥得到公钥,双方再交换各自公钥,通过自己的随机私钥和对方的公钥来生成一个同样的共享密钥。后续的通讯使用这个共享密钥作为对称加密算法的密钥,保证私钥泄露后之前通讯的安全性。矿机与矿池软件之间的通讯协议stratum,数据格式json,矿机通过mining.subscribe方法向矿池建立订阅连接,矿池通过mining.notify返回订阅号、ExtraNonce1和ExtraNonce2_size,矿池与地址之间通过bitcoinrpc接口进行通讯,用于构建交易。

2.3 数据存储层设计

数据库层包括区块链层和链下数据库层。区块链层是整个种子质量溯源系统的核心部分,其最主要功能是防止信息篡改,提高数据库数据透明度,种子信息追溯安全性。用户拥有区块链网络提供的唯一的密钥,用于权限验证。服务器对获取到的前端表单数据和实时传输数据进行处理,统一数据格式,调用智能合约。以种子加工为例,合约中定义用户上传种子信息的数据结构,struct Produce {uintid;string clarity;string seedmoisture;stringsolution;……},定义合约事件event Produce (uint_id,string_clarity,string_seedmoisture,string _solution,……),构造部署函数function add ProduceToChain (string memory_clarity,string memory_seedmoisture,string memory_solution,……) public {Produce memory produce = Produce (seedIndex,_clarity,_seedmoisture,_solution,……);emit Produce (id,_clarity,_seedmoisture,_solution,……)},上传数据到区块链网络数据池,区块验证、上链成功后,拥有唯一的数据ID,返回数据在区块链上的状态信息。利用区块链时间戳技术记录种子数据上传的顺序并区块化存储,通过共享机制对区块链数据透明化呈现,实现种子从生产到销售的整体流通追溯。

链下数据库层为以太坊区块链提供辅助存储功能。以太坊在存储大文件和图片时不具备优势,随着链上的数据传输越来越多,全节点存储整个区块的数据需要巨大的存储空间。引入IPFS分布式文件系统,实现二级存储,减少私有链存储容量,节约资源。在终端层调用ipfs-api库接口,将大文件和图片传输到ipfs系统内,并返回对应hash值,再与其他数据一同编码进行传输、验证、上链,在数据查询时,通过链上存储的hash值调取ipfs内的存储数据和图片。直接在区块链上调用数据会有时间延迟,引入MongoDB数据库,MongoDB为分布式存储,以二进制json格式存储数据。创建数据存储实体文件,定义数据对象,var Schema = mongoose.Schema;var Product Schema1 = new Schema ({Id:Number,clarity:String,seedmoisture:String,solution:String,……}),调用mongoose库接口上传数据,实现多数据库存储,对接前端查询管理界面,实现快速查询种子信息。

3 溯源系统实现与算法模拟验证

设计搭建的系统环境为Ubuntu 20.04。系统运行内存为4 GB,硬盘为20 GB,带宽为100 Mb/s。基于Solidity语言的Dapp开放框架Truffle,NodeJS,Ethereum测试私有链搭建工具Ganache,浏览器轻量级的以太坊钱包MetaMask。网络包括10个用户节点。每个账户默认分配100个以太币,如表1所示。

表1 私有链模拟实验用户地址表

3.1 种子数据上传

3.1.1 分布式多数据库与数据上传

在以太坊区块链私有链上的节点存储整个种子供应链的数据,数据的不断增长需要全节点主机具备相当大的存储容量。在系统内引入IPFS-分布式星际文件系统,用来存储种子信息的大文件或者图片,节约存储资源。区块链存在交易、查询延迟性,在系统内引入备份数据库MongoDB-分布式数据库,便于查询、过滤种子数据。IPFS、MongoDB的融入,对区块链本身存在的问题进行补充优化。种子数据存入数据库过程如图3所示。

图3 种子数据入库流程图

前端通过库ipfs-api与IPFS交互,种子生长、加工时的照片等大空间文件上传到IPFS并取得返回的文件hash。NodeJS服务监听到网页种子数据传输请求,检测到MetaMask上添加的Ganache账户地址,到调用合约Seed.sol内的指定传输function,执行seed.deployed().then(function())函数,将其他种子数据与返回hash编码并上传到Ganache区块链网络。合约触发emit事件,被监听到后通过mongoose定义的存储实体将数据备份到MongoDB数据库。

3.1.2 种子智能合约调用

以太坊引入基于Solidity语言的智能合约和相应的运行环境EVM。智能合约将种子数据、交易合同、用户信用度等数字化,再以代码的形式录入到区块链中[13]。如图4所示,设计web端HTML连接url,index.js。window.addEventListener监听外部账户发送请求,调用智能合约,执行add函数对区块链种子信息进行存储。将请求参数id=informationId包含在url里面,调用智能合约,执行get函数将种子信息显示在HTML文件中,供以查询浏览。

图4 种子智能合约调用图

分布式架构、加密算法、数据验证、共识算法等技术保证种子数据在上传以太坊数据库后的可靠性。考虑到在整个种子供应链内有用户上传不真实数据,存储在区块中的数据从根源上就没有参考价值,降低整个溯源系统的可信度。数据源头的可靠性是此问题的关键,除种子信息合约外,设计专门评定用户信用度的智能合约,用户在传输数据时需要调用种子信息合约和用户信用度合约,完成用户的信用度量化并存入区块链数据账本,以此信用机制来约束用户提供真实的种子数据[14-15]。

3.2 种子数据信用度智能合约算法

3.2.1 信用度评估算法

用户信用度是所查询数据可信度的重要考量。设计智能合约得出用户信用度数值,智能合约要依托于算法,算法将用户上传的种子数据量化,影响用户信用度的两个因素融入算法内。

1) 用户种子数据上传节点真实性判定。在外部用户提交或传输作物生长、种子加工、环境信息等数据时,系统节点监管机制对数据进行匹配,进行真实性判断,并调用用户信用度智能合约,根据判定的真实程度计算用户信用度数值。若判定数据真实程度低于设定阈值,则不会将种子数据广播出去。其他节点在收到信息后,同样判断数据真实性,改变用户信用度数值。参与判定的节点越多,用户信用度数值的真实性越高。

2) 种子供应链用户对数据判定。种子供应链下游商家购买种子后,根据种质实际情况对上游商家用户所上传种子数据进行真实性判定,对发生的种子交易进行满意度评价。将真实性和满意度进行量化,以此来计算商家用户的信用度。

用户信用度的高低影响其判定时影响力,在信用度判定时考虑用户当前的信用度数值,用户信用度越高,其对应值越高,则影响力越大。

用户i的信用度算法公式如下所示。

(1)

αi+βi=1

(2)

式中:Rit——用户i在t时刻信用度;

αi——节点对用户i判定权重;

βi——用户对用户i判定权重;

N——参与判定节点数量;

M——参与判定用户数量;

ri、rk——参与判定用户i、k信用度对应值;

RijΔt——节点j对用户i在Δt内判定;

RikΔt——用户k对用户i在Δt内判定。

3.2.2 信用度评估实现

图5 信用度评估流程图

图6 用户信用度走势图

4 结论

本文旨在将区块链技术融入到传统种子质量溯源系统当中,提出基于以太坊平台的种子供应链信息溯源方案,对种子整个生命周期活动环节信息的采集和记录。通过溯源系统可追溯到种子在育种单位、田间管理、加工商、物流运输和销售企业等环节的关键信息。

1) 种子数据因区块链数据信息不可篡改、透明性和可追溯性高的特点,不被他人改动或隐藏,保证查询到种子信息的安全性。

2) 提出了结合IPFS和MongoDB的多数据库二级存储方式的分布式种子数据追溯模型,减少私有链存储容量,节约存储资源,相较于单纯的区块链数据库更易于查询、过滤。

3) 设计用户信用度智能合约算法,激励用户上传真实的种子数据,从源头上降低假种子信息的概率。

本文提出的方案设计和研究不仅可以保证种子消费者的权益、供应链环节企业的竞争力,还能促进种子行业的健康平稳发展,设计逻辑严密、结构合理,有较好的推广价值。方案目前还停留在研究阶段,缺少实际的案例应用,一些具体的功能还不是很完善。因此,后续仍需逐步优化区块链技术和算法,完善种子信息溯源系统,并且通过实践,不断提高执行效率,推动系统的实际应用。

猜你喜欢

以太区块数据库
探索太空奥秘 还原宇宙本真
以太万物理论概述
百度推出“区块链操作系统”BBE平台
区块链产业发展速度放缓
以太坊又爆漏洞黑客大战一触即发
Unicorn正式上线区块链浏览器UIC—Explorer
区块链投机者
数据库
数据库
数据库