区块链在精准扶贫中的应用研究

2018-07-13 16:45张力李秦伟邱恋
关键词:溯源区块链

张力 李秦伟 邱恋

摘 要:针对区块链的技术原理及应用优势进行了研究,对实际扶贫面临的具体问题进行了调查。提出了MC+nSC的精准扶贫应用模型和跳块溯源(Hop-Trace)方法,MC为一条主链,记录扶贫过程中扶贫物资和扶贫代币交易简要信息,nSC为多条次链,记录用户属性和物资属性的简要信息。该模型把用户数据、物资数据和行为数据分离成三条区块链和两种数据存储方式即文件存储和数据库存储,形成分层存储、多链协同查询的溯源方法即跳块溯源(Hop-Trace),提高精准扶贫的数据查询效率。

关键词:区块链;哈希树;溯源;链架构

中图分类号:TP311.12

文献标识码: A

区块链是一条由无数个数据块连接的数据链。起源于2008年“中本聪”(Satoshinakamoto)发表《比特币:一种点对点电子现金系统》[1],其特点是:数据共享、数据防篡改、数据溯源。其发展历程可归纳为:以比特币为代表的1.0数字货币模式,以可编程金融系统为主要特征的2.0数字资产与智能合约模式和以可编程社会为主的3.0模式[2]。目前,区块链正处于2.0初期[3],其技术特点和应用优势很快引起了社会广泛的关注,例如:2016年1月,英国政府发布专题报告,积极推进区块链在金融和政府事务中应用[4];中国人民银行召开数字货币研讨会探讨采用区块链技术发行虚拟货币的可行性,以提高金融活动的效率,便利性和透明度;《贵阳区块链发展和应用》白皮书于2016年12月31日正式发布,旨在五年建成主权区块链应用示范区[5];2017年中国国际大数据产业博览会把区块链作为七个主要板块之一展开五场论坛等,去中心化的比特币已经依靠算法信用创造出与欧洲小国体量相当的全球性经济体。预计2027年,全球10%的GDP 將会通过区块链技术存储[6]。

文献[7] 提出以能源区块链为支撑的能源互联网基本框架,该框架把能源流分为利用、传输和供应模块共同纳入一条能源区块链中,使得链下实体和链上信息有映射关系,文献[8]设计了多中心认证架构,并以煤炭行业为实例构建了相应的认证模型。部分区块链应用中链架构都是单链,而通用的一条链设计不符合实际数据存储需求,也涉及到用户隐私保护问题。文献[9]所设计的双链结构把账户信息分离出来单独成链,保证了隐私性,通过并行计算提升效率也节省算力,用于公信和金融服务。

本文将以区块链数据存储技术为基础,改进其原有数据链结构,提出一条主链和n条次链的MC+nSC应用模型,应用于精准扶贫管理过程。

1 区块链技术原理

区块链数据可分为两类:当前数据(待共识数据)、历史数据(链数据),其运作过程就是把当前数据转化为历史数据。

1.1 区块链当前数据

共识即在多方共享数据的网络体系中如何对某一提案达成正确性和一致性。决策权越分散的系统达到共识的效率就越低,但系统稳定性和满意度就越高;而决策权越集中的系统更易达成共识,但同时更易出现专制和独裁[10]。从1.0到目前为止其共识机制包括:工作量证明(Proof of work,PoW)机制,俗称挖矿,该机制解决了双重支付问题和拜占庭将军问题[2,11];权益证明(Proof of stake, PoS)机制[12],本质是由系统中具有最高权益而非最高算力的节点获得记账权利;授权股份证明(Delegated proof of stake, DPoS)机制[13],让每一个持有比特股的人进行投票;实用拜占庭容错算法(PBFT)[14] 是一种容错共识算法,相比起较早的Byzantine fault-tolerant algorithms算法[11]的复杂度从指数级降低到多项式级,使其能够应用在分布式系统中,其本质是针对异步状态机(Finite State Machine)拜占庭系统[15]并能够容纳相当于整个分布式系统节点数1/3的拜占庭节(恶意节点)。

1.2 区块链历史数据

与现有分布式存储方式不同,区块链分布式账本是同步的,而不是在一个账本形成之后,再复制成多个备份,系统的各个节点对当前数据达成一致后将数据块纳入链中。此时,当前块数据变为历史数据并始终不能修改。以比特币为例,块中主要数据项如图1。

2 区块链应用需求与架构设计

2.1 区块链应用需求

文献[16] 以多能源系统协同4个场景为例说明区块链技术在能源互联网中的具体应用方式,文献[17-18]分别描述区块链技术应用在食品安全溯源,中医药的医疗、教学和防伪方面都有极大的应用价值,但缺少具体应用方案。

首先,扶贫区块链应用需解决实名制问题,链上虚拟用户和链下实际用户有绝对的单射映射,链上代币和链下真实货币或扶贫物质必须价值对等。扶贫区块链应用并不像比特币那样有海量的用户,随便任何用户都可以接入共识网中,入链必须经过严格的审核并出示相关部门的证书方可加入。

其次,扶贫区块链应用必须摒弃比特币的巨大算力消耗的PoW机制,选择或设计一种符合实际情况的共识算法。

再次,扶贫区块链应用需根据具体的需求设计链架构,各链各自溯源或协同溯源以求信息的精准、全面、迅速。

2.2 区块链应用架构设计

扶贫区块链应用中,用户为各级部门和贫困户,如市扶贫办、市民政局、市发改委等。凡是扶贫资金流过的点都必须成为链上用户节点纳入共识体系中,形成第一条次链-用户链;扶贫资金以代币模式在系统中流通,同时,必须以建立特定的物资供应点,该物质供应点只接受扶贫代币,物资总价值与扶贫代币对等,形成第二条次链-物资供应链。架构设计中,主链的设计以行为为基本粒度即两条次链交互形成以行为为主要数据项的行为链;用户链以用户属性变化为依据进行溯源;物资链以物资供应变化为依据进行溯源,三条链形成MC+nSC模型,如图2。

次链1(UC)-用户链(User_Chain),主要数据字段为:

(1)扶贫项目期数(Version);

(2)区块大小(Block_Size);

(3)标记共识算法(Consensus);

(4)最高区块的Hash值(PreBlock_hash);

(5)时间戳(Timestamp);

(6)区块编号(Block_Number);

(7)标记(Flag):扶贫部门或贫困户;

(8)部门属性(Property):记录部门在体系中的权限、责任、信誉、办事效率、服务态度等;贫困户属性,记录贫困级别、应获资助量、资金用途、信用等级等;

(9)代币流(Token_Flow):记录代币流入部门和代币流出部门;

(10)AC索引(Pre_Action_Index):记录交易行为的区块号;

(11)索引值(Index),该值是生物信息、图片、音视频的对应Hash值,通过index可快速查询数据库中的具体信息。

次链2(GSC)-物质供应链(Goods_Supply_Chain),主要数据字段为:

(1)记录扶贫项目期数(Version);

(2)区块大小(Block_Size);

(3)标记共识算法(Consensus);

(4)最高区块的Hash值(PreBlock_hash);

(5)时间戳(Timestamp);

(6)区块编号(Block_Number);

(7)物质属性(Property):价格、用途、供应商、专用供应点、限制用途以及物品本身物理和化学属性等;

(8)物质流(Goods_Flow):记录扶贫物质的发放接受单位;

(9)AC索引(Pre_Action_Index):记录交易行为的区块号;

(10)索引值(Index),该值是生物信息、图片、音视频的对应Hash值,通过index可快速查询数据库中的具体信息。

主链(AC)-行为链(Action_Chain),主要数据字段为:

(1)记录扶贫项目期數(Version);

(2)区块大小(Block_Size);

(3)标记共识算法(Consensus);

(4)最高区块的Hash值(PreBlock_hash);

(5)时间戳(Timestamp);

(6)区块编号(Block_Number);

(7)智能合约编号(Contract_Number);

(8)以Merkle树记录代币和物质的兑换记录,该记录中包含所调用的UC和GSC的区块号码(Transactions);

(9)用户链的最新Hash值(UC_Hash);

(10)物质供应链的最新Hash值(GSC_Hash);

(11)索引值(Index),该值是生物信息、图片、音视频的对应Hash值,通过index可快速查询数据库中的具体信息。

模型MC+nSC的三链交互形态形成数据层:数据底层(数据库层)和数据上层(文件系统层)。

(1)数据库层:该层存储资金流、物资流和用户的具体细节数据,数据量庞大,数据种类多样,例如声音、图片、视频和生物信息等多种数据,此层数据并不纳入区块中;

(2)文件系统层:该层为区块链层,分成三条链,链中块数据分别以Merkle树存储来自于数据库层数据的Hash值,如图2。

物资链和用户链的最新Hash值作为行为链的数据项嵌入行为链的块头,该三链架构把静态数据(不常变数据)、动态数据(常变数据)、重量级数据(不宜纳入链的数据,如视频、图片等)和轻量级数据(区块溯源数据)分开存储但又可以同时协同溯源,既加强了信息验证的多样性、全面性和完整性又提高了溯源效率。其溯源流程如图3。

3 区块链形成过程及跳块溯源

3.1 区块链形成

(1)认证

用户认证:要接入共识网络的用户从CA取得证书,接入系统后从全网各节点以P2P方式取得用户链(UC)数据(按需求和权限自行下载数据)并纳入用户链中。

物资认证:扶贫物资入链时需认证是否属于法律允许范围、扶贫区域范围等。

行为认证:主要认证用户使用扶贫物资的权限、范围、用途等。

(2)共识

采用自行改进的PBFT算法,在信息流数量上大幅度减少,效率得到提升。

(3)成链

可根据需求寻找溯源切入点,如图3中的行为链区块号(Action_Block_Number,ABN)、用户链区块号(UC_Block_Number, UBN)、物资链区块号(GSC_Block_Number, GBN)三链交叉溯源,得到具体数据的Hash值后再查找数据库寻求细节,重量级数据存储在数据库中,与之对应的轻量级数据可存储在PC端或移动端,可随时通过用户链(UC)和物资链(GSC)中的Pre_Action_Index项进行跳块溯源(Hop-Trace)下载(下载与自己相关的区块)并认证。

3.2 跳块溯源

跳块溯源(Hop-Trace)即三条链协同溯源,如图4,PAI=Pre_Action_Index,T.GBN和T.UBN是行为链数据块中Transaction字段中所包含的GBN和UBN,该图从UC入口溯源,反之从AC和GSC入口亦然。

①用户得到最新用户链块编号UBN;②从字段PAI中得到行为链块号ABN;③从T.GBN找到关联物资链中的块号;④通过GSC中的PAI反向查询ABN;⑤从T.UBN找到关联用户链中的块号。

X

3.3 实验测试

实验环境:CPU(Corei7-4710),内存16 G,Windows8.1,编程语言Python,数据库MySQL。

在MySQL中提取1 G的物资交易数据,以此数据为基础生成单链的区块数据链,如图5所示。以1024笔交易为一个区块,共生成1000万笔交易10000个区块,此条链为传统意义上的单链结构。为保证每笔交易的精准性,每次新来的交易都必须从头溯源,而传统的单链想要验证区块信息的真伪,需要从最新区块开始,逐步向后溯源。如图6中实线所示从第18块溯源到13块,当前交易要追溯用户和物资的最初始状态区块才能确保交易的正确性,而中途的区块中的交易可能根本与本次交易无关。

以此单链数据为基础,分离出两条数据链,用户链和物资链。块体结构如图7所示。

次链状态变更中添加状态来源项,记录本次状态变换的前一地址,在交易层面提供链接结构,同时,块体的Merkle树,除最顶层外,更改为一层一交易模型,准确地记录了每一笔交易的坐标。

实验结果:区块动态地从1块增加到10000块时,每当有新交易产生时对交易进行溯源验证。在交易层通过状态地址和状态来源进行验证,在区块层通过跳块溯源跨越不需要的区块。单链模型和MC+nSC模型溯源验证时间如图8所示。由图可知,MC+nSC模型明显比原有的单链模式消耗更少的时间。单链溯源模式随着区块的增多,时间近似线性增加;MC+nSC曲线跳动的原因是,因为跳块溯源不是顺着链往上溯源,当两个逻辑相邻的交易在物理层相差较多的区块时,就会把当前载入的区块换出,而从外存里换入相关区块。

4 结论

本文通过分析区块链的数据结构提出一种多链模型MC+nSC和在此结构基础上的数据跳块溯源(Hop-Trace)方法。该模型分离轻、重两种数据,并用不同的方式存储,为扶贫的精准性提供了多媒体证明数据和验证方法,并通过实验测试了MC+nSC模型的溯源验证效率。该模型实际上是利用空间换时间。下一步准备对多链溯源中,区块内外存交换耗时进行研究。

参考文献:

[1]NAKAMOTO S.Bitcoin: a peer-to-peer electronic cash system[EB/OL].[2013-03-27].http://bitcoins.info/bitcoin.pdf.

[2]ANTONOPOULOS A M.Mastering Bitcoin: Unlocking Digital Cryptocurrencies[M].USA: OReilly Media Inc.,2014.

[3]SWAN M.Blockchain: Blueprint for a New Economy[M].USA: OReilly Media Inc.,2015.

[4]The UK Government Chief Scientific Adviser. Distributed Ledger Technology beyond block chain[EB/OL]. [2016-01-19].http://www.gov.uk/government/uploads/system/uploads/attachment_data/file/492972/gs-16-1-distributed-ledger-technology.pdf.

[5]王华.《贵阳区块链发展和应用》白皮书正式发布[N].贵阳日报,2017-01-01(2).

[6]Roman Korizky.World Economic Forum Survery[EB/OL].[2015-9-26].http://www.coinfox.info/news/3184-world/economic/forum-survery-10-of-glo-bal-gdp-may-be-stored-with-blockchain-technology-by-2027.

[7]曾鳴,程俊,王雨晴,等.区块链框架下能源互联网多模块协同自治模式初探[J].中国电机工程学报,2017,37(13):3672-3681.

[8]朱建明,付永贵.基于区块链的供应链动态多中心协同认证模型[J].网络与信息安全学报,2016,2(1):27-33.

[9]蔡维德,郁莲,王荣,等.基于区块链的应用系统开发方法研究[J].软件学报,2017,28(6):1474-1487.

[10]袁勇,王飞跃.区块链技术发展现状与展望[J].自动化学报,2016,42(4):481-494.

[11]LAMPORT L,SHOSTAK R,Pease M.The Byzantine Generals Problem[J].ACM TOPLAS,1982,4(3):382-401.

[12]LARIMER D. Transactions as proof-of-stake[EB/OL].[2013-11-28].http://7fvhfe.com1.z0.glb.clouddn.com/@/wpcontent/uploads/2014/01/TransactionsAsProofOfStake10.

[13]LARIMER D.Delegated proof-of-stake white paper[EB/OL]. [2014-04-03]. http://www.bts.hk/dpos-baipishu.html.

[14]CASTRO M,LISKOV B.Practical Byzantine fault tolerance and proactive recovery[J]. ACM Trans on Computer Systems, 2002,20(4):398-461.

[15]LAMPORT L.Time, Clock, and the Ordering of Events in a Distributed System[J]. ACM Commun,1978,21(7):558-565.

[16]张宁,王毅,康重庆,等.能源互联网中的区块链技术:研究框架与典型应用初探[J/OL].中国电机工程学报,2016,36(15):4011-4023.

[17]孙志国,李秀峰,王文生,等.区块链技术在食品安全领域的应用展望[J].农业网络信息,2016(12):30-31.

[18]王海隆.区块链技术在中医药领域中的应用展望[J].贵阳中医学院学报,2017,39(3):1-4.

(责任编辑:周晓南)

猜你喜欢
溯源区块链
敦煌藏医文献中的“达尔甘”病溯源
毛泽东与党的实事求是思想路线确立
有机RFID标签在农产品食品溯源中的应用
“箪瓢陋巷”典故研究
保险企业的区块链技术应用方向选择研究
区块链技术在金融领域的应用与前景研究
区块链技术的应用价值分析
“区块链”的苟且、诗和远方
基于区块链技术的数字货币与传统货币辨析
“时务文体”溯源