CN110838064A - 一种基于Fabric区块链平台实现资产溯源的方法及*** - Google Patents
一种基于Fabric区块链平台实现资产溯源的方法及*** Download PDFInfo
- Publication number
- CN110838064A CN110838064A CN201910966324.3A CN201910966324A CN110838064A CN 110838064 A CN110838064 A CN 110838064A CN 201910966324 A CN201910966324 A CN 201910966324A CN 110838064 A CN110838064 A CN 110838064A
- Authority
- CN
- China
- Prior art keywords
- transaction
- information
- article
- public key
- asset
- 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
Images
Classifications
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- 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
- G06Q20/00—Payment architectures, schemes or protocols
- G06Q20/08—Payment architectures
- G06Q20/10—Payment architectures specially adapted for electronic funds transfer [EFT] systems; specially adapted for home banking systems
- G06Q20/102—Bill distribution or payments
Landscapes
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- Engineering & Computer Science (AREA)
- Development Economics (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Economics (AREA)
- Theoretical Computer Science (AREA)
- Marketing (AREA)
- Technology Law (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本发明公开了一种基于Fabric区块链平台实现资产溯源的方法及***,属于区块链技术领域,包括:在资产上链步骤中,获得待上链物品的物品信息列表,生成用于存储物品信息列表的区块,并存储到链外数据库中;生成物品标签,根据物品标签以及生产者的公钥生成交易信息;将区块头信息连同交易信息存储到区块链中;在资产交易步骤中,区块链接收到待交易物品的所有者发起的交易请求后,解析获得所有者和接收者的公钥、以及物品标签,以生成交易信息,并存储到区块链中;在资产溯源步骤中,根据物品标签查询链外数据库和区块链账本,以获取待查询物品的详细信息和流转详情。本发明能够有效解决现有的资产溯源应用所存在的覆盖面窄、链上数据膨胀快的问题。
Description
技术领域
本发明属于区块链技术领域,更具体地,涉及一种基于Fabric区块链平台实现资产溯源的方法及***。
背景技术
当前的供应链是一种直接或间接满足供应需求的线性经济模型,但是这种模式有一些缺点,例如供应链成员之间的关系基于某个中心维系,且消费者难以获取关于产品来源的信息,即难以实现资产溯源应用。研究资产溯源应用具有重要的实际意义,主要有以下原因:(1)传统供应链为中心化设计,该设计无法保证被信任的中心机构在被攻击的情况下供应流程中数据的真实性;(2)去中心化应用发展迅速,具有取代现有中心化应用的潜力,但去中心化应用资产溯源的相关理论及实践并不完整,技术空白较大;(3)未来存证方式必然通过去中心化实现,但去中心化应用的数据保存方式存在弊端,此弊端会导致应用时延十分严重。
中本聪于2008年发表了名为《比特币***:一种点对点的电子现金***》的***,其中指出了基于数字签名实现的数字货币的相关概念,至此比特币进入了大众的视野。比特币结合了经济学理论、密码学、P2P网络、共识机制、智能脚本等多种技术,是一项拥有综合性技术创新的成果,具有良好的理论支持。区块链技术是源于比特币的一种技术,是指基于密码学理论,通过分布式存储,使用点对点网络,通过透明和可信规则,使数据达到一致性,包含可编程服务的一项计算机技术。区块链技术具有去中心化、开放性、不可篡改性等特点,对打击假冒伪劣、追溯物品的供应流程、保障物品安全性、维护消费者权益等方面起到了积极作用。
去中心化应用(DApp)基于区块链思想实现,此类应用去除了交易中第三方公信机构,对推动交易方式的变革具有重要意义。资产溯源为DApp的设计重点,此功能可令用户获取任意物品详细信息和流转详情,保证了交易的透明性,可有效应用于供应链。现有基于区块链实现的溯源应用将物品数据直接存储在区块链中,应用存在覆盖面窄、链上数据膨胀快的问题。
发明内容
针对现有技术的缺陷和改进需求,本发明提供了一种基于Fabric区块链平台实现资产溯源的方法及***,旨在解决现有基于区块链实现的资产溯源应用所存在的覆盖面窄、链上数据膨胀快的问题。
为实现上述目的,按照本发明的第一方面,提供了一种基于Fabric区块链平台实现资产溯源的方法,包括:资产上链步骤、资产交易步骤以及资产溯源步骤;
资产上链步骤包括:
获得每一件待上链的物品的详细信息,从而得到物品信息列表;
生成用于存储物品信息列表的区块,并将该区块存储到链外数据库OuterDB中;
根据物品信息列表生成每件物品的标签,用于唯一标识各物品,之后根据物品标签以及物品生产者的公钥调用智能合约,生成相应的交易信息;
将所生成的区块的区块头信息连同所生成的交易信息存储到区块链的本地数据库中;
资产交易步骤包括:
待交易物品的所有者向区块链发起交易请求,以请求将其所拥有的物品转移给接收者;
区块链接收到该交易请求后,解析获得所有者的公钥、接收者的公钥、以及需要交易的物品标签,并根据获得的信息调用智能合约,生成相应的交易信息;
将所生成的交易信息存储到区块链的本地数据库中;
资产溯源步骤包括:
生成待查询物品的标签;
根据待查询物品的标签查询链外数据库OuterDB,以获取待查询物品的详细信息;
根据待查询物品的标签查询区块链的本地数据库,获得待查询物品的历史交易信息,从而获得待查询物品的流转详情;
其中,链外数据库OuterDB为区块链***之外的数据库。
本发明将物品的详细信息存储在链外数据库OuterDB中,而将物品的存证信息存储在区块链的本地数据库中,既能利用区块链的去中心化、开放性、不可篡改性等特点实现资产溯源,又能防止区块链数据急剧膨胀;本发明利用物品的标签唯一标识物品,与物品实际的信息无关,因此,本发明能够适用于各种物品的溯源应用。总的来说,本发明能够有效解决现有基于区块链实现的资产溯源应用所存在的覆盖面窄、链上数据膨胀快的问题。
进一步地,交易信息包括:与待交易物品相关联的上一笔交易的交易ID,待交易物品的所有者的公钥,以及记录有新的资产所有权关系的交易输出信息;
交易输出信息包括:用于唯一标识待交易物品的标签,用于将接收者的公钥与该交易输出信息进行绑定的锁定脚本,以及所有者对该交易输出信息的数字签名。
本发明采用了未花费输出(UTXO)模型来构造交易信息,能够将一批物品的流转详情保存在一笔交易中,由于区块链账本保存了所有交易,所以用户可通过遍历交易获取流转详情进行任意物品的溯源。
进一步地,在资产上链步骤中,调用智能合约生成的交易信息中,上一笔交易的交易ID为空,以表示当前交易为该物品相关联的第一笔交易;所有者的公钥为物品生产者的公钥;
在该交易信息的交易输出信息中,标签为待上链物品的标签;锁定脚本为物品生产者的公钥与该交易输出信息进行绑定的结果;数字签名为物品生产者对该交易输出的数字签名。
进一步地,在资产交易步骤中,获取到所有者的公钥A、接收者的公钥B、以及需要交易的物品标签M后,根据所获取到的信息,调用智能合约,生成相应的交易信息,包括:
(S1)获取区块链中的最后一笔交易,并从该交易开始进行交易遍历,以获取与公钥A绑定的所有交易输出信息,若获取成功,则转入步骤(S2);否则,交易失败;
(S2)在所获取的交易输出信息中,筛选出包含标签M的交易输出信息O;
(S3)获得交易输出信息O所属交易信息中的所有者公钥C,并利用公钥C对交易输出信息O中的数字签名进行验证,若验证通过,则转入步骤(S4);否则,交易失败;
(S4)创建新的交易输出信息O1,将其中的物品标签设置为标签M;利用公钥B对交易输出信息O1进行绑定,生成新的锁定脚本Script,并将交易输出信息O1中的锁定脚本设置为锁定脚本Script;
(S5)创建新的交易信息Tx,将其中上一笔交易的交易ID设置为交易输出信息O所属交易信息的交易ID,将其中的所有者公钥设置为公钥A,并将其中的交易输出信息设置为交易输出信息O1。
进一步地,利用私钥对交易输出信息进行签名的方法包括:选定任意的随机值a;对于椭圆曲线中的任意一点G,对其进行乘法运算得到aG;对需要签名的数据D通过散列算法获得其哈希值d,并使得b=(d+k1x)/a;由aG和b共同组成生成的信息即为数字签名;k1为用户的私钥,x为点G的横坐标;
利用公钥验证数字签名的方法包括:用户解析数字签名获取aG和b的值;对需要签名的数据D通过散列算法获得其哈希值d;获得签名用户的公钥k2,计算(dG+xk2)/b的值,若该值等于aG,则签名验证成功,否则验证失败。
进一步地,在资产上链步骤和资产交易步骤中,将生成的交易信息存储到区块链的本地数据库中,其方法包括:
对所生成的交易信息的交易ID进行加密,得到用于唯一标识该交易信息的标识符ID1;
对所生成的交易信息进行序列化操作,得到对应的字节流TXbytes;
以标识符ID1为键,以字节流TXbytes为值,生成键值对<ID1,TXbytes>,并将该键值对<ID1,TXbytes>存储到区块链的本地数据库中。
本发明通过加密的方式将物品的使用权进行锁定,能够提高应用的安全性。
进一步地,对所生成的交易信息的交易ID进行加密,包括:
(T1)获得需要加密的交易ID所对应的字符串Str,若字符串Str所占比特数n>264,则转入步骤(T2);否则,直接利用SHA-256哈希算法对字符串Str加密,操作结束;
(T2)将字符串Str划分为m个块,使得前m-1个块所占比特数为264,且第m个块所占的比特数数小于或等264;
(T3)利用SHA-256哈希算法对m个块分别进行加密,并将所得到的m个加密结果进行按位异或运算,将最终得到的运算结果作为加密结果,操作结束。
本发明利用SHA-256哈希算法能够将不等长字符串通过哈希操作散列成定长字符串,由于SHA-256算法只能对小于264比特大小的字符串进行哈希运算,本发明对于长度超过了264比特的字符串作划分处理,能够排除特殊情况,满足大于264比特大小的字符串的哈希运算操作。
进一步地,生成用于存储物品信息列表的区块,包括:
分别计算各物品的详细信息的哈希值,将计算得到的每一个哈希值作为一个数据项;
以每一个数据项为满二叉树的一个叶子节点,并在数据项数不足时,构造空数据节点;
对于满二叉树的非叶子节点Node,若节点Node的右子节点为空数据节点,则将节点Node的左子节点的哈希值作为节点Node的哈希值;否则,利用节点Node的左子节点和右子节点的哈希值生成节点Node的哈希值;
满二叉树中各节点的哈希值均计算完成后,根据满二叉树生成区块,区块头中记录的信息包括满二叉树的根节点哈希值、时间戳以及前一个区块的哈希值。
通过上述生成区块的方式,本发明利用满二叉树结构实现了一种特殊结构的mekle树,因为mekle树中,叶子节点的的哈希值Hash均基于左子节点哈希值Hleft及右子节点哈希值Hright生成,即满足Hash=SHA(Hleft+Hright),若右子节点的哈希值Hright为空值,则Hash=SHA(Hleft),本发明对传统的mekle树的生成过程进行了改进,通过引入空数据节点的方式构建满二叉树,并在节点的右子节点为空数据节点时直接跳过复杂的哈希运算,直接生成该节点的哈希值为Hash=Hleft,在不影响整体merkle树存证结构和内容的情况下,简化了生成算法中对于多空节点情况的处理。
进一步地,本发明第一方面提供的基于fabric区块链平台实现资产溯源的方法及***,还包括:余额查询步骤;
余额查询步骤包括:
用户向区块链发送查询请求,以请求根据该用户的公钥E查询该用户所拥有的物品的详细信息;
区块链接收到该请求后,解析获得公钥E,并进行交易遍历,以获得所有与公钥E绑定的交易输出信息,并从中提取物品的标签,从而得到标签集合;
根据标签集合查询链外数据库OuterDB,从而获得该用户所拥有的物品的详细信息。
按照本发明的第二方面,提供了一种***,包括计算机可读存储介质和处理器,计算机可读存储介质用于存储可执行程序;
处理器用于读取计算机可读存储介质中存储的可执行程序,执行本发明第一方面提供的基于Fabric区块链平台实现资产溯源的方法。
总体而言,通过本发明所构思的以上技术方案,能够取得以下有益效果:
(1)本发明所提供的基于Fabric区块链平台实现资产溯源的方法及***,将物品的详细信息存储在链外数据库OuterDB中,而将物品的存证信息存储在区块链的本地数据库中,既能实现去中心化的、开放的、不可篡改的资产溯源应用,又能防止区块链数据急剧膨胀。
(2)本发明所提供的基于Fabric区块链平台实现资产溯源的方法及***,采用了未花费输出(UTXO)模型来构造交易信息,能够将一批物品的流转详情保存在一笔交易中,由于区块链账本保存了所有交易,所以用户可通过遍历交易获取流转详情进行任意物品的溯源;利用物品的标签唯一标识物品,能够适用于各种物品的溯源应用。总的来说,本发明能够有效解决现有基于区块链实现的资产溯源应用所存在的覆盖面窄、链上数据膨胀快的问题。
(3)本发明所提供的基于Fabric区块链平台实现资产溯源的方法及***,对于长度超过了264比特的字符串作划分处理,并分别进行加密,能够排除特殊情况,满足大于264比特大小的字符串的哈希运算操作。
(4)本发明所提供的基于Fabric区块链平台实现资产溯源的方法及***,利用mekle树来组织物品的详细信息,并对传统的mekle树的生成过程进行了改进,通过引入空数据节点的方式构建满二叉树,并在节点的右子节点为空数据节点时直接跳过复杂的哈希运算,直接生成该节点的哈希值为Hash=Hleft,在不影响整体merkle树存证结构和内容的情况下,简化了生成算法中对于多空节点情况的处理。
附图说明
图1为本发明实施例提供的基于Fabric区块链平台实现资产溯源应用的方法示意图;
图2为本发明实施例提供的资产上链步骤示意图;
图3为本发明实施例提供的资产交易步骤示意图;
图4为本发明实施例提供的资产溯源步骤示意图;
图5为本发明实施例提供的余额查询步骤示意图;
图6为传统的merkle树示意图;
图7为本发明实施例提供的利用满二叉树结构实现的merkle树示意图;
图8为本发明实施例提供的资产溯源应用的整体示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
为了有效解决现有基于区块链实现的资产溯源应用所存在的覆盖面窄、链上数据膨胀快的问题,本发明提供了一种基于Fabric区块链平台实现资产溯源的方法,如图1所示,包括:资产上链步骤、资产交易步骤以及资产溯源步骤;
资产上链步骤会令一批物品与物品生产者的公钥进行绑定,并将物品的详细信息存放在OuterDB中,如图2所示,资产上链步骤包括:
获得每一件待上链的物品的详细信息,从而得到物品信息列表;物品的详细信息可包括生产日期、生产厂家、图片、安全验证证书号等;
生成用于存储物品信息列表的区块,并将该区块存储到链外数据库OuterDB中;
根据物品信息列表生成每件物品的标签(label),用于唯一标识各物品,之后根据物品标签以及物品生产者的公钥调用智能合约,生成相应的交易信息;其中,生成物品的标签,即物品的label,具体可通过哈希运算完成;
将所生成的区块的区块头信息连同所生成的交易信息存储到区块链的本地数据库中;
资产交易步骤会将物品所有者拥有的某件物品转移给另外一名用户(接收者),如图3所示,资产交易步骤包括:
待交易物品的所有者向区块链发起交易请求,以请求将其所拥有的物品转移给接收者;
区块链接收到该交易请求后,解析获得所有者的公钥、接收者的公钥、以及需要交易的物品标签,并根据获得的信息调用智能合约,生成相应的交易信息;
将所生成的交易信息存储到区块链的本地数据库中;
资产溯源步骤可获取物品的详细信息和流转详情,如图4所示,资产溯源步骤包括:
生成待查询物品的标签;
根据待查询物品的标签查询链外数据库OuterDB,以获取待查询物品的详细信息;
根据待查询物品的标签查询区块链的本地数据库,获得待查询物品的历史交易信息,从而获得待查询物品的流转详情;
其中,链外数据库OuterDB为区块链***之外的数据库;Fabric区块链默认使用LevelDB作为本地数据库,也可以使用couchDB或其他数据库,在本发明实施例中,使用LevelDB作为区块链的本地数据库。
如图1所示,上述基于Fabric区块链平台实现资产溯源的方法,还可包括:余额查询步骤;
通过余额查询步骤,用户可以查询自己的物品信息,如图5所示,余额查询步骤包括:
用户向区块链发送查询请求,以请求根据该用户的公钥E查询该用户所拥有的物品的详细信息;
区块链接收到该请求后,解析获得公钥E,并进行交易遍历,以获得所有与公钥E绑定的交易输出信息,并从中提取物品的标签,从而得到标签集合;
根据标签集合查询链外数据库OuterDB,从而获得该用户所拥有的物品的详细信息。
上述基于Fabric区块链平台实现资产溯源的方法,将物品的详细信息存储在链外数据库OuterDB中,而将物品的存证信息存储在区块链的本地数据库中,既能利用区块链的去中心化、开放性、不可篡改性等特点实现资产溯源,又能防止区块链数据急剧膨胀;利用物品的标签唯一标识物品,与物品实际的信息无关,因此,能够适用于各种物品的溯源应用。总的来说,上述基于Fabric区块链平台实现资产溯源的方法,能够有效解决现有基于区块链实现的资产溯源应用所存在的覆盖面窄、链上数据膨胀快的问题。
在本实施例中,交易信息包括:与待交易物品相关联的上一笔交易的交易ID,待交易物品的所有者的公钥,以及记录有新的资产所有权关系的交易输出信息;
交易输出信息包括:用于唯一标识待交易物品的标签,用于将接收者的公钥与该交易输出信息进行绑定的锁定脚本,以及所有者对该交易输出信息的数字签名。
本实施例采用了未花费输出(UTXO)模型来构造交易信息,能够将一批物品的流转详情保存在一笔交易中,由于区块链账本保存了所有交易,所以用户可通过遍历交易获取流转详情进行任意物品的溯源。
基于上述根据UTXO模型构造的交易信息,在资产上链步骤中,调用智能合约生成的交易信息中,上一笔交易的交易ID为空,以表示当前交易为该物品相关联的第一笔交易;所有者的公钥为物品生产者的公钥;
在该交易信息的交易输出信息中,标签为待上链物品的标签;锁定脚本为物品生产者的公钥与该交易输出信息进行绑定的结果;数字签名为物品生产者对该交易输出的数字签名;
基于上述根据UTXO模型构造的交易信息,在资产交易步骤中,获取到所有者的公钥A、接收者的公钥B、以及需要交易的物品标签M后,根据所获取到的信息,调用智能合约,生成相应的交易信息,包括:
(S1)获取区块链中的最后一笔交易,并从该交易开始进行交易遍历,以获取与公钥A绑定的所有交易输出信息,若获取成功,则转入步骤(S2);否则,交易失败;
(S2)在所获取的交易输出信息中,筛选出包含标签M的交易输出信息O;
(S3)获得交易输出信息O所属交易信息中的所有者公钥C,并利用公钥C对交易输出信息O中的数字签名进行验证,若验证通过,则转入步骤(S4);否则,交易失败;
(S4)创建新的交易输出信息O1,将其中的物品标签设置为标签M;利用公钥B对交易输出信息O1进行绑定,生成新的锁定脚本Script,并将交易输出信息O1中的锁定脚本设置为锁定脚本Script;;
(S5)创建新的交易信息Tx,将其中上一笔交易的交易ID设置为交易输出信息O所属交易信息的交易ID,将其中的所有者公钥设置为公钥A,并将其中的交易输出信息设置为交易输出信息O1。
在一个可选的实施方式中,上述基于Fabric区块链平台实现资产溯源的方法中,利用私钥对交易输出信息进行签名的方法包括:选定任意的随机值a;对于椭圆曲线中的任意一点G,对其进行乘法运算得到aG;对需要签名的数据D通过散列算法获得其哈希值d,并使得b=(d+k1x)/a;由aG和b共同组成生成的信息即为数字签名;k1为用户的私钥,x为点G的横坐标;
相应地,利用公钥验证数字签名的方法包括:用户解析数字签名获取aG和b的值;对需要签名的数据D通过散列算法获得其哈希值d;获得签名用户的公钥k2(由于公钥是公开的,签名用户的公钥k2可直接获取),计算(dG+xk2)/b的值,若该值等于aG,则签名验证成功,否则验证失败。
在一个可选的实施方式中,上述基于Fabric区块链平台实现资产溯源的方法,在资产上链步骤和资产交易步骤中,将生成的交易信息存储到区块链的本地数据库中,其方法包括:
对所生成的交易信息的交易ID进行加密,得到用于唯一标识该交易信息的标识符ID1;
对所生成的交易信息进行序列化操作,得到对应的字节流TXbytes;
以标识符ID1为键,以字节流TXbytes为值,生成键值对<ID1,TXbytes>,并将该键值对<ID1,TXbytes>存储到区块链的本地数据库中;
通过加密的方式将物品的使用权进行锁定,能够提高应用的安全性。
作为一种优选的实施方式,上述基于Fabric区块链实现资产溯源的方法,对所生成的交易信息的交易ID进行加密,包括:
(T1)获得需要加密的交易ID所对应的字符串Str,若字符串Str所占比特数n>264,则转入步骤(T2);否则,直接利用SHA-256哈希算法对字符串Str加密,操作结束;
(T2)将字符串Str划分为m个块,使得前m-1个块所占比特数为264,且第m个块所占的比特数数小于或等264;若满足n MOD 264=0,则m=n/(264),否则,m=n/(264)+1,MOD表示取模运算;
(T3)利用SHA-256哈希算法对m个块分别进行加密,并将所得到的m个加密结果进行按位异或运算,将最终得到的运算结果作为加密结果,操作结束;
利用SHA-256哈希算法能够将不等长字符串通过哈希操作散列成定长字符串,由于SHA-256算法只能对小于264比特大小的字符串进行哈希运算,对于长度超过了264比特的字符串作划分处理,能够排除特殊情况,满足大于264比特大小的字符串的哈希运算操作。
作为一种优选的实施方式,上述基于Fabric区块链平台实现资产溯源的方法,生成用于存储物品信息列表的区块,包括:
分别计算各物品的详细信息的哈希值,将计算得到的每一个哈希值作为一个数据项;
以每一个数据项为满二叉树的一个叶子节点,并在数据项数不足时,构造空数据节点;
对于满二叉树的非叶子节点Node,若节点Node的右子节点为空数据节点,则将节点Node的左子节点的哈希值作为节点Node的哈希值;否则,利用节点Node的左子节点和右子节点的哈希值生成节点Node的哈希值;
满二叉树中各节点的哈希值均计算完成后,根据满二叉树生成区块,区块头中记录的信息包括满二叉树的根节点哈希值、时间戳以及前一个区块的哈希值;由此构造的区块中,区块信息包括对应的merkle树存证信息、时间戳、前一个区块的哈希值以及物品的详细信息,而区块头信息则包括merkle树存证信息、时间戳以及前一个区块的哈希值。
merkle树的主要作用为数据存证,merkle树的生成顺序为自底向上,树中的每一个节点均可作为其子节点的存证,因而根节点为所有节点的存证;一般将merkle树的树形结构设计为二叉树,也可以由设计者的需要设计成k叉树(k>2)。在一般情况下,一棵二叉merkle树可以表示成如图6所示。其中data1到data4均为需要进行存证操作的数据,每一项数据均为任意内容的字符串。对于以上4个数据,通过SHA-256算法生成其对应的哈希值,其对应的的哈希值分别为H(2,0)、H(2,1)、H(2,2)、H(2,2),然后从左至右每两个节点的对应哈希值进行计算得到一个新字符串,然后将得到的字符串进行散列操作得到新的哈希值,如此迭代直到根节点。
从图6所示的merkle树生成的过程易知,对于所有数据项,任意一个数据进行了修改,整个merkle树对应的根节点哈希值便会出现变动,只要使用者拥有了merkle树的原生根节点哈希值,任何修改动作很容易被其感知。
上述优选实施方式中,利用满二叉树结构实现了一种如图7所示的特殊结构的merkle树,并利用该特殊结构的merkle树来组织物品的详细信息,此结构可保证对任何物品信息的修改均会导致当前批次物品对应的存证与区块链上的存证不一致,这一修改可被区块链上所有用户感知,从而达到防伪目的;
因为merkle树中,叶子节点的的哈希值Hash均基于左子节点哈希值Hleft及右子节点哈希值Hright生成,即满足Hash=SHA(Hleft+Hright),若右子节点的哈希值Hright为空值,则Hash=SHA(Hleft);如图7所示,上述优选实施方式对传统的merkle树的生成过程进行了改进,通过引入空数据节点(null)的方式构建满二叉树,并在节点的右子节点为空数据节点时直接跳过复杂的哈希运算,直接生成该节点的哈希值为Hash=Hleft,在不影响整体merkle树存证结构和内容的情况下,简化了生成算法中对于多空节点情况的处理。
通过上述Fabric区块链平台实现资产溯源的方法所实现的资产溯源应用,其整体结构如图8所示,应用具体分为两个部分,第一个部分是基于Fabric项目的区块链***,此部分用于数据存证及交易保存;第二部分为链外web应用,web应用通过SDK作为媒介与区块链***产生交互,同时web应用中实现的链外数据库可以用于存储任意对应于区块链上存证信息的物品的详细信息。在上述Fabric区块链平台实现资产溯源的方法中,对智能合约的调用均通过调用SDK完成。
本发明还提供了一种***,包括计算机可读存储介质和处理器,计算机可读存储介质用于存储可执行程序;
处理器用于读取计算机可读存储介质中存储的可执行程序,执行上述基于Fabric区块链平台实现资产溯源的方法。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于Fabric区块链平台实现资产溯源的方法,其特征在于,包括:资产上链步骤、资产交易步骤以及资产溯源步骤;
所述资产上链步骤包括:
获得每一件待上链的物品的详细信息,从而得到物品信息列表;
生成用于存储物品信息列表的区块,并将该区块存储到链外数据库OuterDB中;
根据物品信息列表生成每件物品的标签,用于唯一标识各物品,之后根据物品标签以及物品生产者的公钥调用智能合约,生成相应的交易信息;
将所生成的区块的区块头信息连同所生成的交易信息存储到区块链的本地数据库中;
所述资产交易步骤包括:
待交易物品的所有者向所述区块链发起交易请求,以请求将其所拥有的物品转移给接收者;
所述区块链接收到该交易请求后,解析获得所有者的公钥、接收者的公钥、以及需要交易的物品标签,并根据获得的信息调用智能合约,生成相应的交易信息;
将所生成的交易信息存储到区块链的本地数据库中;
所述资产溯源步骤包括:
生成待查询物品的标签;
根据所述待查询物品的标签查询所述链外数据库OuterDB,以获取所述待查询物品的详细信息;
根据所述待查询物品的标签查询所述区块链的本地数据库,获得所述待查询物品的历史交易信息,从而获得所述待查询物品的流转详情;
其中,所述链外数据库OuterDB为所述区块链***之外的数据库。
2.如权利要求1所述的基于Fabric区块链平台实现资产溯源的方法,其特征在于,所述交易信息包括:与待交易物品相关联的上一笔交易的交易ID,所述待交易物品的所有者的公钥,以及记录有新的资产所有权关系的交易输出信息;
所述交易输出信息包括:用于唯一标识所述待交易物品的标签,用于将接收者的公钥与该交易输出信息进行绑定的锁定脚本,以及所有者对该交易输出信息的数字签名。
3.如权利要求2所述的基于Fabric区块链平台实现资产溯源的方法,其特征在于,在所述资产上链步骤中,调用智能合约生成的交易信息中,上一笔交易的交易ID为空,以表示当前交易为该物品相关联的第一笔交易;所有者的公钥为物品生产者的公钥;
在该交易信息的交易输出信息中,标签为待上链物品的标签;锁定脚本为物品生产者的公钥与该交易输出信息进行绑定的结果;数字签名为物品生产者对该交易输出的数字签名。
4.如权利要求2所述的基于Fabric区块链平台实现资产溯源的方法,其特征在于,在所述资产交易步骤中,获取到所有者的公钥A、接收者的公钥B、以及需要交易的物品标签M后,根据所获取到的信息,调用智能合约,生成相应的交易信息,包括:
(S1)获取区块链中的最后一笔交易,并从该交易开始进行交易遍历,以获取与公钥A绑定的所有交易输出信息,若获取成功,则转入步骤(S2);否则,交易失败;
(S2)在所获取的交易输出信息中,筛选出包含标签M的交易输出信息O;
(S3)获得交易输出信息O所属交易信息中的所有者公钥C,并利用公钥C对所述交易输出信息O中的数字签名进行验证,若验证通过,则转入步骤(S4);否则,交易失败;
(S4)创建新的交易输出信息O1,将其中的物品标签设置为标签M;利用公钥B对交易输出信息O1进行绑定,生成新的锁定脚本Script,并将交易输出信息O1中的锁定脚本设置为锁定脚本Script;
(S5)创建新的交易信息Tx,将其中上一笔交易的交易ID设置为交易输出信息O所属交易信息的交易ID,将其中的所有者公钥设置为公钥A,并将其中的交易输出信息设置为交易输出信息O1。
5.如权利要求4所述的基于Fabric区块链平台实现资产溯源的方法,其特征在于,利用私钥对交易输出信息进行签名的方法包括:选定任意的随机值a;对于椭圆曲线中的任意一点G,对其进行乘法运算得到aG;对需要签名的数据D通过散列算法获得其哈希值d,并使得b=(d+k1x)/a;由aG和b共同组成生成的信息即为数字签名;k1为用户的私钥,x为点G的横坐标;
利用公钥验证数字签名的方法包括:用户解析数字签名获取aG和b的值;对需要签名的数据D通过散列算法获得其哈希值d;获得签名用户的公钥k2,计算(dG+xk2)/b的值,若该值等于aG,则签名验证成功,否则验证失败。
6.如权利要求1所述的基于Fabric区块链平台实现资产溯源的方法,其特征在于,在所述资产上链步骤和所述资产交易步骤中,将生成的交易信息存储到所述区块链的本地数据库中,其方法包括:
对所生成的交易信息的交易ID进行加密,得到用于唯一标识该交易信息的标识符ID1;
对所生成的交易信息进行序列化操作,得到对应的字节流TXbytes;
以标识符ID1为键,以字节流TXbytes为值,生成键值对<ID1,TXbytes>,并将该键值对<ID1,TXbytes>存储到所述区块链的本地数据库中。
7.如权利要求6所述的基于Fabric区块链平台实现资产溯源的方法,其特征在于,对所生成的交易信息的交易ID进行加密,包括:
(T1)获得需要加密的交易ID所对应的字符串Str,若字符串Str所占比特数n>264,则转入步骤(T2);否则,直接利用SHA-256哈希算法对字符串Str加密,操作结束;
(T2)将字符串Str划分为m个块,使得前m-1个块所占比特数为264,且第m个块所占的比特数数小于或等264;
(T3)利用SHA-256哈希算法对m个块分别进行加密,并将所得到的m个加密结果进行按位异或运算,将最终得到的运算结果作为加密结果,操作结束。
8.如权利要求1所述的基于Fabric区块链平台实现资产溯源的方法,其特征在于,生成用于存储物品信息列表的区块,包括:
分别计算各物品的详细信息的哈希值,将计算得到的每一个哈希值作为一个数据项;
以每一个数据项为满二叉树的一个叶子节点,并在数据项数不足时,构造空数据节点;
对于所述满二叉树的非叶子节点Node,若节点Node的右子节点为空数据节点,则将节点Node的左子节点的哈希值作为节点Node的哈希值;否则,利用节点Node的左子节点和右子节点的哈希值生成节点Node的哈希值;
所述满二叉树中各节点的哈希值均计算完成后,根据所述满二叉树生成区块,区块头中记录的信息包括所述满二叉树的根节点哈希值、时间戳以及前一个区块的哈希值。
9.如权利要求1-8任一项所述的基于Fabric区块链平台实现资产溯源的方法,其特征在于,还包括:余额查询步骤;
所述余额查询步骤包括:
用户向所述区块链发送查询请求,以请求根据该用户的公钥E查询该用户所拥有的物品的详细信息;
所述区块链接收到该请求后,解析获得公钥E,并进行交易遍历,以获得所有与公钥E绑定的交易输出信息,并从中提取物品的标签,从而得到标签集合;
根据标签集合查询所述链外数据库OuterDB,从而获得该用户所拥有的物品的详细信息。
10.一种***,包括计算机可读存储介质和处理器,其特征在于,所述计算机可读存储介质用于存储可执行程序;
所述处理器用于读取所述计算机可读存储介质中存储的可执行程序,执行权利要求1-9任一项所述的基于Fabric区块链平台实现资产溯源的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910966324.3A CN110838064B (zh) | 2019-10-12 | 2019-10-12 | 一种基于Fabric区块链平台实现资产溯源的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910966324.3A CN110838064B (zh) | 2019-10-12 | 2019-10-12 | 一种基于Fabric区块链平台实现资产溯源的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110838064A true CN110838064A (zh) | 2020-02-25 |
CN110838064B CN110838064B (zh) | 2022-05-20 |
Family
ID=69575311
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910966324.3A Active CN110838064B (zh) | 2019-10-12 | 2019-10-12 | 一种基于Fabric区块链平台实现资产溯源的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110838064B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111368953A (zh) * | 2020-03-10 | 2020-07-03 | 大仝智能科技有限公司 | 一种产品防伪溯源***以及方法 |
CN111415157A (zh) * | 2020-03-28 | 2020-07-14 | 贵阳大数据交易所有限责任公司 | 一种基于区块链的数据资产安全流通方法 |
CN111833077A (zh) * | 2020-07-14 | 2020-10-27 | 南开大学 | 一种基于区块链技术和基因测序技术的食品防伪方法 |
CN112035504A (zh) * | 2020-11-03 | 2020-12-04 | 支付宝(杭州)信息技术有限公司 | 基于区块链的物品码生成方法、物权转移方法及装置 |
CN112150149A (zh) * | 2020-09-24 | 2020-12-29 | 深圳市中装智链科技有限公司 | 基于区块链的数据追溯方法、装置、计算机设备及存储介质 |
CN112187788A (zh) * | 2020-09-27 | 2021-01-05 | 上海万向区块链股份公司 | 基于区块链的多级资产流转方法、***及溯源方法 |
CN112419059A (zh) * | 2020-11-19 | 2021-02-26 | 中山大学 | 一种基于账户模型的高效数字资产交易方法 |
CN112598426A (zh) * | 2020-12-04 | 2021-04-02 | 深圳市超算科技开发有限公司 | 物品防伪溯源方法 |
CN113094414A (zh) * | 2021-04-29 | 2021-07-09 | 支付宝(杭州)信息技术有限公司 | 流转图谱生成方法及装置 |
CN113468571A (zh) * | 2021-07-15 | 2021-10-01 | 湖北央中巨石信息技术有限公司 | 基于区块链的溯源方法 |
CN114066451A (zh) * | 2021-11-16 | 2022-02-18 | 支付宝(杭州)信息技术有限公司 | 管理资金交易的方法和***、电子设备 |
CN114528600A (zh) * | 2022-02-23 | 2022-05-24 | 江苏大学 | 一种抗复制攻击的区块链追溯方法及*** |
CN114708103A (zh) * | 2022-06-06 | 2022-07-05 | 杭州费尔斯通科技有限公司 | 数据资产交易方法、计算机设备以及可读存储介质 |
CN115599794A (zh) * | 2022-09-29 | 2023-01-13 | 中国人民解放军战略支援部队信息工程大学(Cn) | 跨区块链的联合溯源方法及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107292621A (zh) * | 2017-06-22 | 2017-10-24 | 丁江 | 海量数据确权存证方法和节点 |
KR101837167B1 (ko) * | 2016-10-26 | 2018-03-09 | 주식회사 코인플러그 | Utxo 기반 프로토콜에서 머클 트리 구조를 사용하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버 |
CN109614813A (zh) * | 2018-10-31 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 基于区块链的隐私交易方法、装置及其应用方法、装置 |
CN110110500A (zh) * | 2019-06-04 | 2019-08-09 | 施建锋 | 具备侵权即时检测的去中心化图像版权保护***及方法 |
-
2019
- 2019-10-12 CN CN201910966324.3A patent/CN110838064B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101837167B1 (ko) * | 2016-10-26 | 2018-03-09 | 주식회사 코인플러그 | Utxo 기반 프로토콜에서 머클 트리 구조를 사용하여 통화를 발행 및 지급 결제하는 방법과 이를 이용한 서버 |
CN107292621A (zh) * | 2017-06-22 | 2017-10-24 | 丁江 | 海量数据确权存证方法和节点 |
CN109614813A (zh) * | 2018-10-31 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 基于区块链的隐私交易方法、装置及其应用方法、装置 |
CN110110500A (zh) * | 2019-06-04 | 2019-08-09 | 施建锋 | 具备侵权即时检测的去中心化图像版权保护***及方法 |
Non-Patent Citations (2)
Title |
---|
邵奇峰 等: "企业级区块链技术综述", 《软件学报》 * |
黄瑞: "基于Fabric的资产溯源应用实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111368953A (zh) * | 2020-03-10 | 2020-07-03 | 大仝智能科技有限公司 | 一种产品防伪溯源***以及方法 |
CN111415157A (zh) * | 2020-03-28 | 2020-07-14 | 贵阳大数据交易所有限责任公司 | 一种基于区块链的数据资产安全流通方法 |
CN111833077A (zh) * | 2020-07-14 | 2020-10-27 | 南开大学 | 一种基于区块链技术和基因测序技术的食品防伪方法 |
CN112150149A (zh) * | 2020-09-24 | 2020-12-29 | 深圳市中装智链科技有限公司 | 基于区块链的数据追溯方法、装置、计算机设备及存储介质 |
CN112187788A (zh) * | 2020-09-27 | 2021-01-05 | 上海万向区块链股份公司 | 基于区块链的多级资产流转方法、***及溯源方法 |
CN112187788B (zh) * | 2020-09-27 | 2022-09-16 | 上海万向区块链股份公司 | 基于区块链的多级资产流转方法、***及溯源方法 |
CN112035504A (zh) * | 2020-11-03 | 2020-12-04 | 支付宝(杭州)信息技术有限公司 | 基于区块链的物品码生成方法、物权转移方法及装置 |
CN112419059A (zh) * | 2020-11-19 | 2021-02-26 | 中山大学 | 一种基于账户模型的高效数字资产交易方法 |
CN112419059B (zh) * | 2020-11-19 | 2023-07-21 | 中山大学 | 一种基于账户模型的高效数字法币交易方法 |
CN112598426A (zh) * | 2020-12-04 | 2021-04-02 | 深圳市超算科技开发有限公司 | 物品防伪溯源方法 |
CN113094414A (zh) * | 2021-04-29 | 2021-07-09 | 支付宝(杭州)信息技术有限公司 | 流转图谱生成方法及装置 |
CN113094414B (zh) * | 2021-04-29 | 2023-06-30 | 支付宝(杭州)信息技术有限公司 | 流转图谱生成方法及装置 |
CN113468571A (zh) * | 2021-07-15 | 2021-10-01 | 湖北央中巨石信息技术有限公司 | 基于区块链的溯源方法 |
CN114066451A (zh) * | 2021-11-16 | 2022-02-18 | 支付宝(杭州)信息技术有限公司 | 管理资金交易的方法和***、电子设备 |
CN114528600A (zh) * | 2022-02-23 | 2022-05-24 | 江苏大学 | 一种抗复制攻击的区块链追溯方法及*** |
CN114528600B (zh) * | 2022-02-23 | 2024-04-12 | 江苏大学 | 一种抗复制攻击的区块链追溯方法及*** |
CN114708103B (zh) * | 2022-06-06 | 2022-08-30 | 杭州费尔斯通科技有限公司 | 数据资产交易方法、计算机设备以及可读存储介质 |
CN114708103A (zh) * | 2022-06-06 | 2022-07-05 | 杭州费尔斯通科技有限公司 | 数据资产交易方法、计算机设备以及可读存储介质 |
CN115599794A (zh) * | 2022-09-29 | 2023-01-13 | 中国人民解放军战略支援部队信息工程大学(Cn) | 跨区块链的联合溯源方法及*** |
CN115599794B (zh) * | 2022-09-29 | 2024-06-25 | 中国人民解放军战略支援部队信息工程大学 | 跨区块链的联合溯源方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN110838064B (zh) | 2022-05-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110838064B (zh) | 一种基于Fabric区块链平台实现资产溯源的方法及*** | |
US12021991B2 (en) | Methods and systems for implementing zero- knowledge proofs in transferring partitioned tokens on distributed ledger-based networks | |
CN108876370B (zh) | 一种异构多链架构下跨区块链共享开放数据的体系架构 | |
US20200259804A1 (en) | Manicoding for communication verification | |
Raj | Foundations of blockchain: the pathway to cryptocurrencies and decentralized blockchain applications | |
Reyzin et al. | Efficient asynchronous accumulators for distributed PKI | |
CN109074576A (zh) | 使用区块链实现逻辑门功能 | |
CN110084070B (zh) | 一种基于区块链的制造业跨域异构数据的身份构建及溯源方法 | |
CN109089427A (zh) | 区块链物联网设备的操作*** | |
CN109154885A (zh) | 区块链平台上的业务处理执行 | |
Liu et al. | Merkle tree: A fundamental component of blockchains | |
AU2020102384A4 (en) | A collaborative mining network (cmn) to execute computationally intense mining tasks in mobile blockchain | |
CN110930152B (zh) | 一种基于区块链的数据处理方法及相关设备 | |
CN109087203A (zh) | 一种主链与侧链的区块链异构*** | |
CN111314086A (zh) | 一种区块链隐私协议的实现方法 | |
CN108829691A (zh) | 一种农村电子商务数据存储方法 | |
CN111401927A (zh) | 一种基于区块链主副链技术的食品标签唯一码发布与流通溯源方法 | |
de Ocáriz Borde | An overview of trees in blockchain technology: merkle trees and merkle patricia tries | |
Zhang et al. | Post-quantum blockchain over lattice | |
Bailey et al. | Merkle trees optimized for stateless clients in bitcoin | |
Reno et al. | Utilizing off-chain storage protocol for solving the trilemma issue of blockchain | |
Loporchio et al. | A survey of set accumulators for blockchain systems | |
CN115375329A (zh) | 一种数字藏品交易溯源防伪管理方法及*** | |
Gracy et al. | MTTBA-A Key Contributor for Sustainable Energy Consumption Time and Space Utility for Highly Secured Crypto Transactions in Blockchain Technology | |
Zhang et al. | A Novel High-Efficiency Transaction Verification Scheme for Blockchain Systems. |
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 |