CN119850203A - 基于区块链的资源兑换方法、装置、设备、介质及产品 - Google Patents
基于区块链的资源兑换方法、装置、设备、介质及产品 Download PDFInfo
- Publication number
- CN119850203A CN119850203A CN202311341400.4A CN202311341400A CN119850203A CN 119850203 A CN119850203 A CN 119850203A CN 202311341400 A CN202311341400 A CN 202311341400A CN 119850203 A CN119850203 A CN 119850203A
- Authority
- CN
- China
- Prior art keywords
- resource
- account
- credential
- chain
- exchange
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/38—Payment protocols; Details thereof
- G06Q20/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/22—Payment schemes or models
- G06Q20/223—Payment schemes or models based on the use of peer-to-peer networks
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/36—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes
- G06Q20/367—Payment architectures, schemes or protocols characterised by the use of specific devices or networks using electronic wallets or electronic money safes involving electronic purses or money safes
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3821—Electronic credentials
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/38—Payment protocols; Details thereof
- G06Q20/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Accounting & Taxation (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- Databases & Information Systems (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了基于区块链的资源兑换方法、装置、设备、介质及产品,涉及区块链技术领域。该方法包括:获取链上资源对应的资源数据集合;在所述兑换状态符合兑换要求的情况下,基于所述凭证数据将所述链上资源从所述第一账户转移至第二账户,并将所述第二账户中与所述链上资源对应的兑换资源转移至所述第一账户;响应于所述链上资源兑换成功,将所述资源数据集合中的所述资源状态标识进行状态重置,并对更新后的所述资源数据集合进行存储。通过以上方式,使得后续账户可通过重置后的资源状态标识直接获取链上资源所对应的历史兑换记录,提高了资源兑换记录的查询效率。本申请可应用于云技术、人工智能、智慧交通等各种场景。
Description
技术领域
本申请实施例涉及区块链技术领域,特别涉及一种基于区块链的资源兑换方法、装置、设备、介质及产品。
背景技术
随着区块链的不断发展,使用区块链技术进行的资源兑换也随之兴起。其中,资源兑换过程即在兑换平台中,第一账户通过对存储于区块链上的目标资源进行挂单,第二账户通过接受第一账户的挂单,完成一次资源兑换,在本次资源兑换过程中,第一账户将目标资源转移至第二账户中,第二账户将目标资源所对应的兑换资源转移至第一账户中。
相关技术中,第一账户通过对目标资源的兑换要求进行签名后将签名进行存储,第二账户利用该签名调用与兑换平台对应的资源兑换合约,资源兑换合约通过验证签名的合法性后,实现第二账户与第一账户之间的资源兑换过程。
然而在相关技术中,当第二账户完成资源兑换后,若想查看自身的历史兑换记录,则需要遍历资源兑换合约中的所有资源兑换记录,并分析每笔资源兑换记录中的兑换过程,从中确定属于第二账户的资源兑换记录,进而降低了资源兑换记录查询效率。
发明内容
本申请实施例提供了一种基于区块链的资源兑换方法、装置、设备、介质及产品,能够提高资源兑换记录的查询效率。所述技术方案如下。
一方面,提供了一种基于区块链的资源兑换方法,所述方法由区块链系统中的节点执行,所述方法包括:
获取链上资源对应的资源数据集合,所述资源数据集合中包括资源状态标识和凭证标识,所述凭证标识对应有凭证数据,所述链上资源是由第一账户部署于所述区块链系统中的资源,所述凭证数据用于指示所述链上资源对应的兑换要求,所述资源状态标识用于指示所述链上资源的兑换状态;
在所述兑换状态符合兑换要求的情况下,基于所述凭证数据将所述链上资源从所述第一账户转移至第二账户,并将所述第二账户中与所述链上资源对应的兑换资源转移至所述第一账户;
响应于所述链上资源兑换成功,将所述资源数据集合中的所述资源状态标识进行状态重置,并对更新后的所述资源数据集合进行存储,其中,重置后的所述资源状态标识用于指示所述链上资源对应的资源数据集合属于已兑换的历史兑换记录。
另一方面,提供了一种基于区块链的资源兑换装置,所述装置包括:
获取模块,用于获取链上资源对应的资源数据集合,所述资源数据集合中包括资源状态标识和凭证标识,所述凭证标识对应有凭证数据,所述链上资源是由第一账户部署于所述区块链系统中的资源,所述凭证数据用于指示所述链上资源对应的兑换要求,所述资源状态标识用于指示所述链上资源的兑换状态;
转移模块,用于在所述兑换状态符合兑换要求的情况下,基于所述凭证数据将所述链上资源从所述第一账户转移至第二账户,并将所述第二账户中与所述链上资源对应的兑换资源转移至所述第一账户;
存储模块,用于响应于所述链上资源兑换成功,将所述资源数据集合中的所述资源状态标识进行状态重置,并对更新后的所述资源数据集合进行存储,其中,重置后的所述资源状态标识用于指示所述链上资源对应的资源数据集合属于已兑换的历史兑换记录。
另一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如上述本申请实施例中任一所述基于区块链的资源兑换方法。
另一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上述本申请实施例中任一所述的基于区块链的资源兑换方法。
另一方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中任一所述的基于区块链的资源兑换方法。
本申请实施例提供的技术方案带来的有益效果至少包括:
在获取包括资源状态标识和凭证标识的资源数据集合后,在资源状态标识对应的兑换状态符合兑换要求的情况下,根据凭证标识对应的凭证数据在第一账户和第二账户之间进行链上资源的兑换,兑换成功后将资源状态标识进行状态重置,并对更新后的资源数据集合进行存储。也即,在资源兑换完成的情况下,将表征链上资源的兑换状态的资源状态标识进行状态重置后,将包含重置后资源状态标识的资源数据集合进行存储,使得后续账户可通过重置后的资源状态标识直接获取链上资源所对应的历史兑换记录,无需再通过分析资源兑换过程中的兑换内容从而确定所兑换的链上资源,提高了资源兑换记录的查询效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个示例性实施例提供的分布式系统应用于区块链系统的一个结构示意图;
图2是本申请一个示例性实施例提供的区块结构的示意图;
图3是本申请一个示例性实施例提供的实施环境示意图;
图4是本申请一个示例性实施例提供的基于区块链的资源兑换方法的流程图;
图5是本申请又一个示例性实施例提供的基于区块链的资源兑换方法的流程图;
图6是本申请再一个示例性实施例提供的基于区块链的资源兑换方法的流程图;
图7是本申请另一个示例性实施例提供的基于区块链的资源兑换方法的示意图;
图8是本申请一个示例性实施例提供的基于区块链的资源兑换装置的结构框图;
图9是本申请一个示例性实施例提供的基于区块链的资源兑换装置的结构框图;
图10是本申请一个示例性实施例提供的服务器的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
首先,针对本申请实施例中涉及的名词进行简单介绍。
区块链:区块链是信息技术领域的一种分布式账本技术,一般由共识、交易区块和状态数据存储、密码学身份安全等内容构成,由于账本是分布式存储的,而且区块是经过共识的,所以具有不可篡改、可追溯、共同维护等特征。
智能合约:智能合约是一种运行在区块链上的程序。和普通程序不同的是,智能合约要保证在区块链网络的每一个节点中运行的结果完全相同,这样才能使任何一个节点都可以验证区块中智能合约执行的结果是否正确。
去中心化数字身份(Decentralized Identity,DID):去中心化数字身份是基于区块链技术建立起来的一种数字身份。它可以保证账户的身份数据真实可信,同时也能保护账户的相关的隐私,确保与账户身份相关的数据归属于账户所有。
可验证凭证(Verifiable Credential,VC):可验证凭证是有指定权威机构向具体对象(例如:账户)发送的身份证明、能力证明、权限说明或者报告等凭证数据。其本质是指将物理身份凭证的实用性和可移植性转移到数字设备中。
相关技术中,基于区块链技术的资源兑换发展迅速,使用对象通常在指定兑换平台上进行资源兑换,例如:第一账户使用私钥对所要进行兑换的目标资源的相关信息(例如:目标资源所对应的合约地址、资源标识等)以及兑换要求进行签名,从而利用该签名发起对于目标资源的兑换请求,第二账户基于该签名与第一账户进行资源兑换,也即,从外部来看,处于数据安全考虑,第二账户只能接收到第一账户发起的兑换请求,但并不能直接获取兑换请求中关于目标资源的具体兑换信息,因此,第二账户在兑换得到目标资源后,若想查看自身所属的资源兑换记录,也需要遍历所有兑换记录,分析其具体兑换信息,从而从中确定属于自身的兑换记录,因此,降低了对于资源兑换记录的查询效率。
在本申请实施例中,在获取包括资源状态标识和凭证标识的资源数据集合后,在资源状态标识对应的兑换状态符合兑换要求的情况下,根据凭证标识对应的凭证数据在第一账户和第二账户之间进行链上资源的兑换,兑换成功后将资源状态标识进行状态重置,并对更新后的资源数据集合进行存储。也即,在资源兑换完成的情况下,将表征链上资源的兑换状态的资源状态标识进行状态重置后,将包含重置后资源状态标识的资源数据集合进行存储,使得后续账户可通过重置后的资源状态标识直接获取链上资源所对应的历史兑换记录,无需再通过分析资源兑换过程中的兑换内容从而确定所兑换的链上资源,提高了资源兑换记录的查询效率。
需要说明的是,本申请所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关地区的相关法律法规和标准。例如,本申请中涉及到的链上资源、资源数据集合等内容都是在充分授权的情况下获取的。
本申请实施例涉及的系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。
以分布式系统为区块链系统为例,参见图1,图1是本申请实施例提供的分布式系统100应用于区块链系统的一个可选的结构示意图,由多个节点(接入网络中的任意形式的计算设备,如:服务器、用户终端)和客户端形成,节点之间形成组成的点对点网络,点对点协议是一个运行在传输控制协议(Transmission Control Protocol,TCP)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
参见图1示出的区块链系统中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币。
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询第二账户所购买商品的物流状态,在第二账户签收货物后将第二账户的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
参见图2,图2是本申请实施例提供的区块结构(Block Structure)一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(Block chain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
在一个可选的实施例中,对本申请实施例中涉及的实施环境进行说明,本申请实施例提供的基于区块链的资源兑换方法由区块链系统中的节点执行实现。
示意性的,请参考图3,该实施环境中涉及资源发布方310、区块链系统中的节点320以及资源兑换方330。其中,资源发布方可实现为第一账户,资源兑换方可实现为第二账户。
在一些实施例中,资源发布方310用于在区块链系统中发布链上资源,以使得区块链系统中的节点320获取至少一个链上资源。其中,链上资源是部署在区块链系统中的资源。
在一些实施例中,区块链系统中的节点320还会接收配置指令。示意性的,配置指令是资源发布方310发布的用于对链上资源的兑换要求进行参数配置的指令,配置指令中包括至少一个凭证数据,配置指令用于将凭证数据配置在区块链系统中,凭证数据用于表征链上资源对应的兑换要求。
在一些实施例中,区块链系统中的节点320基于配置指令存储链上资源对应的资源数据集合,资源数据集合中包括资源状态标识以及凭证数据对应的凭证标识,其中,资源状态标识用于指示链上资源的兑换状态。在另一种情况下,节点320中包括多个不同链上资源分别对应的资源数据集合,本实施例中仅以其中一个进行详细说明。
在一些实施例中,资源兑换方330用于向区块链系统中的节点320发送状态查询请求,状态查询请求用于请求查看链上资源所对应的兑换状态。区块链系统中的节点320在接收到状态查询请求后,将链上资源对应的资源数据集合发送至资源兑换方330。
资源兑换方330接收到资源数据集合后,若根据资源状态标识确定链上资源处于待兑换状态,且根据凭证标识所对应的凭证数据确定当前资源兑换方330所持有的兑换资源符合链上资源的资源兑换数量要求的情况下,由资源兑换方330向区块链系统中的节点320发送兑换请求,用于请求兑换链上资源。
区块链系统中的节点320接收到兑换请求后,基于凭证数据将链上资源从资源发布方310所对应的第一账户转移至资源兑换方330所对应的第二账户,并将第二账户中与链上资源对应的兑换资源转移至第一账户。
在链上资源兑换成功的情况下,区块链系统中的节点320将资源数据集合中的资源状态标识进行状态重置,并对更新后的资源数据集合进行存储,其中,重置后的资源状态标识用于指示链上资源对应的资源数据集合属于已兑换的历史兑换记录。
在一些实施例中,区块链系统中的节点320可以实现为服务器,资源发布方310和/或资源兑换方330可以实现为终端;或者,区块链系统中的节点320可以实现为服务器等,以上实施环境仅为示意性的举例,本申请实施例对此不加以限定。
值得注意的是,上述终端包括但不限于手机、平板电脑、便携式膝上笔记本电脑、智能语音交互设备、智能家电、车载终端、飞行器等移动终端,也可以实现为台式电脑等;上述服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
其中,云技术(Cloud technology)是指在广域网或局域网内将硬件、应用程序、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。
结合上述名词简介和应用场景,对本申请提供的基于区块链的资源兑换方法进行说明,以该方法应用于区块链系统中的节点为例进行说明,如图4所示,该方法包括如下步骤410至步骤430。
步骤410,获取链上资源对应的资源数据集合。
其中,资源数据集合中包括资源状态标识和凭证标识,凭证标识对应有凭证数据,链上资源是由第一账户部署于区块链系统中的资源,凭证数据用于指示链上资源对应的兑换要求,资源状态标识用于指示链上资源的兑换状态。
示意性的,将进行上链处理后的资源称为链上资源,上链处理用于指示第一账户将资源(数据)上传到区块链系统上,以使得区块链系统中的各个节点对该资源的上链过程达到共识,则该资源就可以称之为链上资源。
在一些实施例中,在第一账户铸造得到资源的过程中,该资源会存储在区块链系统中的节点,多个节点达到共识后的资源即为链上资源,从而使得区块链系统获取得到至少一个链上资源。本申请实施例中,第一账户也指资源发布方。
在一些实施例中,基于区块链的资源兑换方法涉及的链上资源的类型,还可以通过用于记录链上资源生成、兑换等情况的资源合约执行完成基于区块链的资源兑换方法。
示意性的,不同的链上资源对应不同的资源数据集合,也即,链上资源所对应的资源数据集合对于链上资源而言具有唯一性。
在一些实施例中,资源状态标识是用于表示当前链上资源所对应的兑换状态的标识。可选地,资源状态标识包括待兑换状态、兑换完成、不可兑换状态三种标识类型,例如:待兑换状态对应“1”,兑换完成对应“0”,不可兑换状态对应“2”。
可选地,不同链上资源所对应的资源状态标识在处于同种兑换状态的情况下相同;或者,不同链上资源所对应的资源状态标识均不同。
在一些实施例中,凭证数据用于表示链上资源所对应的兑换要求,包括:链上资源所对应的合约地址、兑换链上资源所需的兑换资源要求(包括兑换资源类型要求和兑换资源数量要求中至少一种)、兑换资源要求所对应的合约地址、兑换起始时刻、兑换截止时刻、可兑换的链上资源数量、兑换状态、资源标识、签名、凭证标识、账户文档所对应的账户身份标识等子数据中至少一种。
其中,合约地址是指在以太坊或其他智能合约平台上创建的合约所对应的唯一标识符号。其中,合约是一种能够自动执行特定任务的代码片段,合约地址是用来唯一标识存储着合约代码和数据的地方。
其中,账户文档所对应的账户身份标识用于表示该链上资源所归属的账户。
可选地,凭证数据是由第一账户根据各项兑换要求参数自行构造的;或者,第一账户向区块链系统中的节点发送数据配置指令,在数据配置指令中包括各项兑换要求参数,从而由区块链系统中的节点根据数据配置指令构造得到凭证数据。
示意性的,凭证标识是凭证数据所对应的唯一标识符号。
可选地,区块链系统中的节点接收第一账户发送的资源数据集合;或者,区块链系统中的节点接收第一账户发送的凭证数据,基于凭证数据从区块链系统中的节点中获取已存储的资源数据集合。
值得注意的是,本申请实施例中所涉及的唯一标识符合是针对指定数据而言的,也即,合约所对应的合约地址,与凭证数据所对应的凭证标识,是两种不同的标识符号,所指代的对象也不同。
步骤420,在兑换状态符合兑换要求的情况下,基于凭证数据将链上资源从第一账户转移至第二账户,并将第二账户中与链上资源对应的兑换资源转移至第一账户。
可选地,当获取资源数据集合中的资源状态标识,根据资源状态标识的标识内容确定链上资源的兑换状态,当兑换状态处于待兑换的情况下,认为链上资源的兑换状态符合兑换要求。
可选地,除上述兑换状态处于待兑换的情况之外,当根据资源数据集合中的凭证标识获取对应的凭证数据的情况下,将凭证数据中兑换链上资源所需的兑换资源数量要求与第二账户中所拥有的兑换资源的数量进行比较,若第二账户中所有的兑换资源的数量满足链上资源所对应的资源数量要求,则认为链上资源的兑换状态以及第二账户的兑换资源余额均符合兑换要求。
在一些实施例中,在兑换状态符合兑换要求的情况下,调用兑换函数,将凭证数据中的相关兑换要求参数填入兑换函数中,利用兑换函数将链上资源从第一账户转移到第二账户,并利用兑换函数将第二账户中与链上资源对应的兑换资源转移至第一账户中,完成链上资源的兑换过程。
可选地,针对链上资源的几种转移方式进行举例:
·在第一种情况下,在将链上资源从第一账户转移至第二账户的过程中,将凭证数据中的资源归属账户由第一账户对应的账户身份标识改写为第二账户对应的账户身份标识。
其中,账户文档是用于描述账户所对应的数字身份的特征,当采用DID表征一个账户所对应的账户数字身份的情况下,该账户所对应有具备唯一性的DID文档,可以理解为,该DID文档中包含了所有能表征该账户所对应的数字身份信息的数据。而第一账户对应的账户身份标识是第一账户文档指定的唯一标识符,也即,账户文档对应的账户身份标识与账户文档存在一一对应关系。
·在第二种情况下,链上资源属于第一账户时,在第一账户对应的第一账户地址中存储有链上资源对应的资源标识,通过兑换函数将第一账户地址中的资源标识转移至第二账户对应的第二账户地址中。
其中,账户地址是用于区块链系统中使用对象对应的账户地址,用于接收和存储数字资产(例如:链上资源、兑换资源)。
示意性的,每个账户地址与账户存在一一对应关系。
可选地,多个链上资源分别对应有资源标识;资源标识对链上资源进行唯一标识。
示意性的,每一个链上资源都是独一无二的,且每一个链上资源分别对应一个资源标识,通过该资源标识能够对与之对应的链上资源进行唯一表征。例如:链上资源1对应资源标识A,链上资源2对应资源标识B等。
·在第三种情况下,在将链上资源从第一账户转移至第二账户的过程中,将链上资源对应的资源数据集合直接写入第二账户中。
示意性的,将第二账户中与链上资源对应的兑换资源转移至第一账户的过程中,当兑换资源属于第二账户的情况下,第二账户地址中存储有兑换资源对应的兑换资源标识(包括资源类型和资源数量,与资源标识属于不同的标识),通过兑换函数,将兑换资源标识从第二账户地址中删除,并在第一账户地址中进行添加,其中,兑换资源标识中所包含的资源类型和资源数量符合链上资源对应的兑换资源要求。
步骤430,响应于链上资源兑换成功,将资源数据集合中的资源状态标识进行状态重置,并对更新后的资源数据集合进行存储。
其中,重置后的资源状态标识用于指示链上资源对应的资源数据集合属于已兑换的历史兑换记录。
示意性的,当链上资源成功从第一账户转移至第二账户,并且,与链上资源对应的兑换资源成功从第二账户转移至第一账户的情况下,视为链上资源兑换成功。
可选地,将资源状态标识进行状态重置的过程中,预先设置一个初始化状态标识,将当前资源状态标识更改为初始化状态标识,作为状态重置结果;或者,将资源状态标识设置为空(包括设置为0或直接作为空格字符),作为状态重置结果。
在一些实施例中,将状态重置后的资源状态标识以及凭证标识作为更新后的资源数据集合。
可选地,在获取更新后的资源数据集合后,将资源数据集合存储至区块链系统的节点中,即,进行链上存储;或者,将资源数据集合存储至指定存储模块中,其中,存储模块是与区块链系统无关的服务器模块,即,进行链下存储。
在一些实施例中,以第一账户为例,若第一账户想证明曾经拥有过某个链上资源,或兑换掉某个链上资源的情况下,通过获取本账户曾经构建的凭证数据,提取凭证数据对应的凭证标识,从而根据凭证标识确定所对应的更新后的资源数据集合,从更新后的资源数据集合中获取资源状态标识,将资源状态标识与凭证数据中所对应的链上资源所对应的合约地址以及资源标识进行匹配,若匹配成功,则表明该更新后的资源数据集合所对应的链上资源属于第一账户曾经拥有的链上资源,且已将其进行成功兑换。
在一些实施例中,以第二账户或者区块链系统为例,通过获取凭证数据,从而根据凭证数据所对应的凭证标识确定更新后的资源数据集合,从而根据更新后的资源数据集合获取该链上资源所对应的历史兑换记录。
示意性的,历史兑换记录是指链上资源从第一账户转移至第二账户的资源流转过程。
综上所述,本申请实施例提供的基于区块链的资源兑换方法,在获取包括资源状态标识和凭证标识的资源数据集合后,在资源状态标识对应的兑换状态符合兑换要求的情况下,根据凭证标识对应的凭证数据在第一账户和第二账户之间进行链上资源的兑换,兑换成功后将资源状态标识进行状态重置,并对更新后的资源数据集合进行存储。也即,在资源兑换完成的情况下,将表征链上资源的兑换状态的资源状态标识进行状态重置后,将包含重置后资源状态标识的资源数据集合进行存储,使得后续账户可通过重置后的资源状态标识直接获取链上资源所对应的历史兑换记录,无需再通过分析资源兑换过程中的兑换内容从而确定所兑换的链上资源,提高了资源兑换记录的查询效率。
在一些实施例中,以将资源状态标识调整为指定重置标识为例进行说明,示意性的,请参考图5,其示出了本申请一个示例性实施例提供的基于区块链的资源兑换方法的流程图,也即,步骤410之前还包括步骤4101至步骤4103,步骤410中还包括步骤411,步骤420中还包括步骤421至步骤423,步骤430中还包括步骤431至步骤433,如图5所示,当前实施例包括如下步骤。
步骤4101,通过资源兑换合约获取链上资源对应的凭证数据。
其中,资源兑换合约是用于协调链上资源进行资源兑换的智能合约。
在一些实施例中,链上资源是资源发布方发布并上链至区块链系统中节点的资源。其中,资源发布方对应为第一账户。
示意性的,在第一账户铸造得到资源的过程中,该资源会存储在区块链系统中的节点,多个节点达到共识后的资源即为链上资源,从而使得区块链系统获取得到至少一个链上资源。
在一个可选的实施例中,接收第一账户发送的资源配置参数。
其中,资源配置参数用于在区块链上生成至少一个链上资源。示意性的,第一账户用于表征制作链上资源的对象,资源配置参数是合成链上资源所需的参数内容,第一账户通过向区块链系统发送资源配置参数,在区块链系统上生成链上资源。
示意性的,将上述通过资源配置参数生成链上资源的过程称为“铸造”过程,“铸造”还可以称为将数字项目(如:图像、音频、视频、文字等内容)写入区块链系统的过程。可选地,通过以太坊智能合约(Ethereum Request for Comment,ERC20)、ERC721,ERC1155等智能合约作为资源铸造过程中遵循的标准要求,通过设置名称、地址、文件参数等各种资源配置参数,实现铸造获得链上资源的目的。
示意性的,以链上资源实现为不可互换的非同质资源(Non-Fungible Token,NFT)为例进行说明。
可选地,可以通过开放平台OpenSea实现铸造NFT的过程。首先,设置加密钱包,该加密钱包视为使用对象在区块链系统上的注册过程,用于在区块链系统中进行资源兑换、资源铸造等情况下,保存使用对象的NFT、加密资源等,本实施例中,加密钱包所对应的钱包地址即为账户地址,也即,钱包与账户对应;
其次,还可以在铸造NFT之前创建一个集合,已确定铸造的NFT所属的集合。例如:通过命名和描述等方式创建一个集合;
最后,通过设置名称、地址、文件参数等各种参数的方式,将资源上传至区块链系统上,从而基于该资源得到由区块链系统中各个节点共识后的链上资源,实现铸造得到链上资源的过程。
示意性的,当第二账户获取第一账户预先构造的链上资源所对应的凭证数据(VCsell)后,从凭证数据中提取得到链上资源对应的兑换资源要求所对应的合约地址以及兑换资源数量要求,其具体代码内容如下所示:
“AssetsContractAddress”:“ZZZAddr”;
“AssetsNumber”:“200”;
其中,“AssetsContractAddress”表示兑换资源要求所对应的合约地址,“ZZZ”表示兑换资源所对应的资源类型,“Addr”代指地址,“AssetsNumber”表示兑换资源数量要求,“200”为具体的要求数量。
也即,根据上述代码内容可知,兑换得到链上资源需要200个ZZZ。此时,第二账户将调用协议合约对兑换资源的额度授权至资源兑换合约。
示意性的,协议合约是用于对账户中的兑换资源进行转移(即,将兑换资源从第二账户转移至第一账户),从而实现资源兑换过程的智能合约。本实施例中,协议合约可实现为ERC20合约。
示意性的,资源兑换合约是一种用于调度多种智能合约,以完成整个资源兑换过程(即,将链上资源从第一账户转移至第二账户,并将兑换资源从第二账户转移至第一账户)的智能合约。本实施例中,资源兑换合约可实现为NFT兑换合约。
本实施例中,第二账户通过调用ZZZAddr所对应的ERC20合约中的额度授权函数,将200个ZZZ的资源额度授权至NFT兑换合约。当授权完成后,NFT兑换合约可通过调用ERC20合约将第二账户中的200个ZZZ转移至其他账户中。
其中,ERC20合约与ZZZAddr具有对应关系,额度授权函数用于执行额度过程,例如:approve函数,通过approve函数将200个ZZZ的控制权由第二账户转移给NFT兑换合约,由NFT兑换合约实现资源兑换过程。
步骤4102,基于凭证数据获取链上资源对应的候选资源状态标识和候选凭证标识。
示意性的,当第二账户将与链上资源所对应的兑换资源授权至资源兑换合约后,由第二账户使用凭证数据向资源兑换合约发起兑换请求,并向资源兑换合约发送凭证数据。
当资源兑换合约收到凭证数据后,对凭证数据进行代码内容分析,从中提取得到链上资源对应的候选资源状态表示和候选凭证标识。
示意性的,候选资源状态表示和候选凭证标识是指通过资源兑换合约接收到凭证数据后对其进行代码内容分析从而得到的代码分析结果。
本实施例中,当NFT兑换合约接收到凭证数据后,对其进行代码内容分析,从而得到凭证数据所对应的候选资源标识、链上资源所对应的候选合约地址以及候选凭证标识,其代码分析结果如下:
“tokenId”:“tokenId”;
“NFTContractAddress”:“NFTAddr”;
“id”:“id”;
其中,tokenId表示资源标识,tokenId表示由NFT兑换合约分析得到的候选资源标识,NFTContractAddress表示链上资源所对应的合约地址,NFTAddr表示链上资源所对应的候选合约地址,id表示为凭证标识。
示意性的,在区块链系统中的节点基于资源配置参数生成至少一个链上资源的同时,针对每一个链上资源分别生成对应的资源标识,该资源标识用于唯一表征该链上资源。
例如:铸造得到的链上资源为NFT,且基于不同的资源配置参数生成多个NFT,每个NFT分别对应生成一个资源标识,以tokenId进行表示,也可以称为资源序号。
在一些实施例中,基于资源发布方和至少一个链上资源,生成与至少一个链上资源分别对应的资源标识。
示意性的,在生成至少一个链上资源后,确定铸造该链上资源的对象,即确定资源发布方(第一账户),将资源发布方与至少一个链上资源之间建立关联关系,并生成与至少一个链上资源分别对应的资源标识,该资源标识不仅能够表征链上资源,还能够表征铸造该链上资源的资源发布方。
可选地,在区块链系统中,资源发布方对应有第一账户地址,资源发布方所铸造的链上资源存储在第一账户地址中,每个链上资源对应一个资源标识。
本实施例中,将链上资源所对应的合约地址+资源标识的形式作为资源状态标识,因此,将链上资源所对应的候选合约地址+候选资源标识的形式作为候选资源状态标识。
步骤4103,通过候选资源状态标识调用凭证合约,获取凭证合约中存储的资源数据集合。
其中,凭证合约是用于存储资源数据集合的智能合约,参考数据集合中包括参考凭证标识。
示意性的,凭证合约中除存储资源数据集合外,还存储凭证数据所对应的兑换状态。
可选地,兑换状态包括待兑换状态(sell)和不可兑换状态(unsell)两种状态情况。
本实施例中,第二账户通过候选资源状态标识调用凭证合约,确定链上资源所对应的兑换状态,当兑换状态为可兑换状态的情况下,获取兑换合约中存储的参数数据集合。其中,参考数据集合中包括参考凭证标识。
示意性的,资源数据集合是由第一账户根据链上资源构建得到的资源数据集合。
另外,当兑换状态为不可兑换状态的情况下,则兑换过程结束。
步骤411,响应于候选凭证标识与资源数据集合中的凭证标识匹配成功,将候选资源状态标识和候选凭证标识作为资源数据集合。
示意性的,在通过凭证合约获取得到凭证标识后,将凭证标识与候选凭证标识进行匹配,若凭证标识与候选凭证标识相等,则表明当前凭证数据处于有效状态。
本实施例中,若匹配得到凭证数据处于有效状态后,对凭证数据进行数据校验,得到数据校验结果。其中,数据校验过程在后续实施例中进行详细说明。
当数据校验结果符合预设校验要求的情况下,将候选资源状态标识和候选凭证标识作为链上资源对应的资源数据集合,即,资源状态标识和凭证标识。
本实施例中,资源兑换合约确定资源数据集合后,通过指定全局变量确定第二账户的账户地址,并调用协议合约对应的额度查询函数,从而根据额度查询函数获取第二账户授权至资源兑换合约的兑换资源的额度是否符合兑换资源数量要求。
其中,指定全局变量为msg.sender,额度查询函数是用于允许任何使用对象查询一个地址给另一个地址的资源额度,其中,地址可实现为账户地址或者合约地址中任意一种。本实施例中,额度查询函数实现为allowance函数。
步骤421,在兑换状态符合兑换要求的情况下,调用资源合约对应的第一兑换函数,以及调用协议合约对应的第二兑换函数。
其中,资源合约是用于转移链上资源的智能合约,协议合约是指转移兑换资源的智能合约。
示意性的,基于上述所有过程完成后,视为链上资源的兑换状态符合兑换要求,因此,通过资源兑换合约调用资源合约所对应的第一兑换函数,并调用协议合约所对应的第二兑换函数。
其中,资源合约是指用于将链上资源从第一账户转移至第二账户的智能合约。
本实施例中,资源合约实现为NFT合约,并且,该NFT合约是合约地址为ZZZAddr的NFT合约,也即,当链上资源不同时,其对应的链上资源合约地址也不同,因此在兑换过程中所调用的NFT合约也不同。
本实施例中,协议合约实现为ERC20合约,并且,该ERC20合约也为合约地址为的ZZZAddr的协议合约。
示意性的,兑换函数是用于执行资源转移过程的函数。
可选地,第一兑换函数和第二兑换函数相同或者不同,对此不做限定。本实施例中,第一兑换函数和第二兑换函数属于同一兑换函数。
步骤422,基于第一兑换函数和凭证数据将链上资源从第一账户转移至第二账户。
本实施例中,NFT兑换合约调用NFT合约的transferFrom函数,并以from为第一账户地址(AddrC),to为第二账户地址(AddrA),tokenId为tokenId,将第一账户持有的tokenId所对应的链上资源从第一账户地址中转移至第二账户地址中。
步骤423,基于第二兑换函数和凭证数据将兑换资源转移至第一账户。
本实施例中,NFT兑换合约调用ERC20合约的transferFrom函数,并以from为第二账户地址(AddrA),to为第二账户地址(AddrC),value为200ZZZ,将第二账户授权给NFT兑换合约的200ZZZ从第二账户地址中转移至第一账户地址中。
步骤431,获取指定重置标识。
示意性的,预先设置空格字符为指定重置标识。
在另一个可选地情况下,指定重置标识也可实现为其他类型的标识,本申请实施例对此不加以限定。
步骤432,将资源数据集合中的资源状态标识调整为指定重置标识,作为重置状态标识。
本实施例中,通过NFT兑换合约调用凭证合约,将资源数据集合中的资源状态标识设置为空格字符,得到重置状态标识。
可选地,将资源状态标识中的链上资源合约地址设置为空格字符,得到重置状态标识;或者,将资源状态标识中的资源标识设置为空格字符,得到重置状态标识;或者,将资源状态标识中的链上资源合约地址和资源标识均设置为空格字符,得到重置状态标识。
步骤433,将凭证标识和重置状态标识以键值对存储格式进行存储。
在一些实施例中,以凭证标识为关键字,并以重置状态标识为值,作为更新后的资源数据集合对应的键值对存储结果;将键值对存储结果进行上链存储至区块链系统中;或者,以凭证标识为关键字,并以重置状态标识为值,作为更新后的资源数据集合对应的键值对存储结果;将键值对存储结果进行本地存储。
示意性的,在获取重置状态标识后,将重置状态标识与凭证标识作为更新后的资源数据集合(Mapdone)进行存储。
本实施例中,重置状态标识与凭证标识以键值对(key-value)存储格式进行存储,其代码内容如下所示:
Mapdone:VCsell的id=>NFTAddr+tokenId
其中,VCsell的id表示凭证标识,NFTAddr+tokenId表示重置状态标识,并且,凭证标识为关键字(key),重置状态标识为值(value)。
可选地,在得到更新后的资源数据集合后,可对其进行链上存储至区块链系统中,或者,将其存储至指定存储模块中,实现链下存储,其中,指定存储模块是与区块链系统无关的服务器模块,也即,本地存储。
本实施例中,当第一账户想要证明自己曾经用拥有过某个NFT,或者兑换过某个NFT时,则可以利用自己曾经签发的凭证数据,得到凭证数据对应的凭证标识,调用凭证合约,从Mapdone获取凭证标识对应的重置状态标,再将重置状态标识和签发的凭证数据中的资源状态标识与中进行比较,如果一致,则说明第一账户曾经拥有过某个NFT,且已经将这个NFT进行兑换。无需去遍历链上NFT交易的所有交易,以及每笔交易的内部交易详情,来完成证明。同时,区块链平台或者第二账户可以在链上存储凭证数据,以快速获取NFT的流转记录。
综上所述,本申请实施例提供的基于区块链的资源兑换方法,在获取包括资源状态标识和凭证标识的资源数据集合后,在资源状态标识对应的兑换状态符合兑换要求的情况下,根据凭证标识对应的凭证数据在第一账户和第二账户之间进行链上资源的兑换,兑换成功后将资源状态标识进行状态重置,并对更新后的资源数据集合进行存储。也即,在资源兑换完成的情况下,将表征链上资源的兑换状态的资源状态标识进行状态重置后,将包含重置后资源状态标识的资源数据集合进行存储,使得后续账户可通过重置后的资源状态标识直接获取链上资源所对应的历史兑换记录,无需再通过分析资源兑换过程中的兑换内容从而确定所兑换的链上资源,提高了资源兑换记录的查询效率。
本实施例中,在链上资源兑换成功的情况下,将资源状态标识调整为预先获取的指定重置标识,从而将凭证标识和重置状态标识以键值对存储格式进行存储的方式,能够使后续账户对兑换记录以及链上资源进行查询时,通过凭证标识确定重置状态标识,从而直接获取链上资源的历史兑换记录,提高了兑换记录的查询效率。
本实施例中,以凭证标识为关键字,以重置状态标识为值作为键值对存储结果进行链上存储或者链下存储,能够使得账户通过链上/链下均能查询链上资源所对应的历史兑换记录,扩展了兑换记录的查询场景。
本实施例中,通过调用资源合约对应的第一兑换函数,以及调用协议合约对应的第二兑换函数,实现将链上资源从第一账户转移到第二账户,并将兑换资源从第二账户转移到第一账户,提高资源兑换的数据流通的准确度。
本实施例中,通过资源兑换合约获取凭证数据后,根据凭证数据获取候选资源状态标识和候选凭证标识,从而根据候选凭证标识和资源数据集合中的凭证标识之间的比对结果,确定凭证数据的有效性,提高了数据安全性以及数据有效性。
在一些实施例中,对凭证数据的生成过程进行详细说明,示意性的,请参考图6,其示出了本申请一个示例性实施例提供的基于区块链的资源兑换方法的流程图,以该方法由区块链系统中的节点执行为例进行说明,如图6所示,该方法包括如下步骤。
步骤610,获取第一账户对应的第一私钥和第一账户地址。
示意性的,在区块链系统中注册并创建账户时,由区块链系统向账户提供的该账户对应的私钥、私钥对应的公钥以及账户地址。
其中,私钥和和公钥是一对通过数学算法生成的,对于账户具有唯一性和对称性的密钥对,其中,公钥是公开的,用于被任何账户进行查看与使用,私钥具有保密性,只能由拥有私钥的账户掌握与控制。
示意性的,不同账户的私钥和公钥不同。
示意性的,账户通过私钥签署和验证资源兑换过程,而公钥可用于验证账户所对应的身份信息。
本实施例中,账户地址也称为钱包地址。
本实施例中,获取第一账户提供的第一私钥PriKeyC、第一公钥PubKeyC和第一账户地址AddrC,并获取第二账户提供的第二私钥PriKeyA、第二公钥PubKeyA和第二账户地址AddrA。
步骤620,基于第一私钥和第一账户地址生成第一账户对应的第一账户文档。
其中,第一账户文档中包括第一账户对应的账户信息、第一账户文档对应的账户身份标识以及第一私钥对应的第一公钥。
示意性的,当接收到第一账户提供的第一私钥后,调用身份合约为第一账户注册对应的第一身份标识,以及生成第一身份标识所对应的第一账户文档。
示意性的,当接收到第二账户提供的第二私钥后,调用身份合约为第二账户注册对应的第二身份标识,以及生成第二身份标识所对应的第二账户文档。
其中,身份合约是区块链系统中用于创建身份标识以及验证凭证数据的智能合约。
示意性的,账户身份标识是用于表征账户在区块链系统中的账户身份所对应的标识符,对于账户而言具有唯一性。不同的账户对应不同的账户身份标识。
示意性的,每一个账户身份标识都会对应有一个账户文档,其中,账户文档用于保证账户身份所对应的具体账户信息,也即,账户身份标识仅用于指示某个账户,通过确定账户身份标识,可以根据账户身份标识所对应的账户文档来获取账户所对应的多个账户信息。
本实施例中,以身份合约为去中心化身份合约(DID合约)为例,第一账户对应的第一账户身份标识为第一去中心化身份标识(DIDC),第二账户号对应的第二账户身份标识为第二去中心化身份标识(DIDA)。
以第一账户为例,当注册得到第一账户身份标识后,由DID合约接收第一账户所对应的第一私钥和第一账户地址,根据第一私钥和第一账户地址计算得到第一账户所对应的第一账户文档(DID文档),其代码内容如下所示:
其中,publicKey表示第一公钥,第一公钥是根据第一私钥推导得到的,id表示第一账户身份标识,其中,账户身份标识的计算方法如下公式一所示。
公式一:DID标识:id=DID前缀+keccak256(publicKey)[12:]
其中,DID标识中包括区块链系统中的使用对象在链上所对应的地址,使用对象包括用户或者指定机构。
以使用对象为第一账户为例,第一账户通过第一私钥推导得出对应的第一公钥后,使用指定哈希函数(例如:keccak256)对第一公钥进行哈希运算,得到一个32字节的字符串,取32字节中后20字节作为DID标识的地址部分,该地址部分与第一账户地址具有对应关系。在DID标识中的前缀did:tdid:f34用于表示该DID标识是在哪个区块链上进行注册的,例如:f34表示以太坊链所对应的链标识。可选地,区块链还包括Stellar链、Tron链、Cosmos链等。
此外,DID文档(json格式)还存在一个controller字段,用于表示该DID文档的控制者,第一账户对应的DID文档的控制者为第一账户,也即,该字段与id字段为相同字段。
至此,第一账户和第二账户,均有一个用户地址,即,AddrC和AddrA,以及DID标识DIDC和DIDA,且AddrC和DIDC具有对应关系,AddrA和DIDA具有对应关系,且第一账户和第二账户分别对应一个DID文档。
步骤630,获取链上资源对应的多种兑换条件参数。
其中,兑换条件参数用于指示链上资源对应的兑换要求。
示意性的,多种兑换条件参数是由第一账户根据链上资源设定的兑换要求,包括链上资源所对应的合约地址、兑换链上资源所需的兑换资源要求(包括兑换资源类型要求和兑换资源数量要求中至少一种)、兑换资源要求所对应的合约地址、兑换起始时刻、兑换截止时刻、可兑换的链上资源数量、兑换状态、资源标识、签名、凭证标识、账户文档所对应的账户身份标识等多种参数中至少一种。
步骤640,基于多种兑换条件参数生成凭证数据。
示意性的,当获取多种兑换条件参数后,根据多种兑换条件参数进行代码编写,从而最终获取链上资源所对应的凭证数据。
在一些实施例中,基于多种兑换条件参数生成第一候选凭证数据;对第一候选凭证数据进行哈希运算,得到第一哈希运算结果;通过第一私钥对第一哈希运算结果进行加密运算,得到签名结果;将签名结果补充至第一候选凭证数据中的签名字段,得到第二候选凭证数据;对第二候选凭证数据进行哈希运算,得到凭证标识;将凭证标识补充至第二候选凭证数据中的标识字段,得到凭证数据。
示意性的,根据上述多种兑换条件参数,构造生成第一候选凭证数据
其中,tokenId表示资源标识,NFTContractAddress表示链上资源所对应的合约地址,issuer表示发布对象(即,第一账户身份标识),statue表示兑换状态(sell表示可兑换状态,unsell表示不可兑换状态),AssetsContractAddress表示兑换资源要求对应的合约地址,AssetsNumber表示兑换数量要求,timestamp表示兑换截止时刻,signature表示签名(引号中为空格字符,表示当前第一候选凭证数据中的签名字段未生成对应代码内容),id表示凭证标识(引号中为空格字符,表示当前第一候选凭证数据中的id字段为生成对应代码内容)。
本实施例中,在得到第一候选凭证数据后,对第一候选凭证数据进行哈希运算,得到第一哈希运算结果,并通过第一私钥对第一哈希运算结果进行非对称加密,生成第一哈希运算结果所对应的签名结果(Sig),将签名结果补充到第一候选凭证数据中的签名(signature)字段,得到增加签名的第二候选凭证数据(VCmiddle)。再对第二候选凭证数据进行哈希运算,得到凭证标识,将凭证标识补充到第二候选凭证中的标识(Id)字段,从而最终得到增加了凭证标识的凭证数据(VCsell)。
可选地,哈希运算还可以称为散列算法,常见的哈希运算包括消息摘要算法(Message Digest,MD)、安全散列算法(Secure Hash Algorithm,SHA)等算法。MD算法家族包括MD2、MD4以及MD5,是对MD算法更新后得到的内容,它们生成的消息摘要都是128位的,通常用16进制表示为32个字符;SHA算法家族包括SHA-1、SHA-224、SHA-256、SHA-384以及SHA-512,SHA-224、SHA-256、SHA-384以及SHA-512有时统称为SHA-2;SHA-1可将一个最大264的数据转换成一串160位的数据摘要,SHA-2生成的摘要长度为它们名字后面的数字,如:SHA-256算法,它生成的摘要长度为256位,因此它的抗穷举性(brute-force)比MD算法更为优良。
步骤650,将凭证数据存储至凭证合约中。
在一些实施例中,基于第一账户文档对凭证数据进行数据校验,得到数据校验结果;响应于数据校验结果符合预设校验要求,将凭证数据和凭证标识存储至凭证合约中。
示意性的,数据校验用于通过凭证合约校验接收到的凭证数据对应的数据准确度,是否为正确的凭证数据。
当数据校验结果符合预先设置的校验要求时,认为凭证数据校验通过,此时将凭证数据和凭证标识存储至凭证合约中。
本实施例中,以第一账户为例,第一账户调用凭证合约,将凭证数据存储至凭证合约中。
其中,当凭证合约接收到该凭证数据后,还会通过第一账户文档对凭证合约进行数据校验,其具体数据校验过程如下:
(1)根据DIDC从对应的第一账户文档中取出地址部分AddrC,调用NFT合约,查询tokenId对应的NFT的持有者是否等于AddrC;
(2)Status字段为sell或者unsell;
(3)截止时间timestamp是否大于等于当前区块时间;
(4)利用DIDC,调用DID合约,查看DIDC是否存在于DID合约中;
(5)查找链上是否存在ZZZAddr所对应的的兑换资源,确保这类兑换资源可以用于兑换得到NFT;
(6)调用DID合约从第一账户文档中获取DIDC的对应的第一公钥PubKeyC;
(7)验证签名是否正确:Verufy(VCsell,PubKeyC);
其中,验证过程大致如下:首先将凭证数据中的id字段置空,得到第二候选凭证数据,然后用PubKeyC对第二候选凭证数据进行解密运算,得到第一运算结果H1,紧接着,将第二凭证数据中的signature字段置空,得到第一候选凭证数据,对第一候选凭证数据进行哈希,得到第二运算结果H2,若H1=H2,则凭证数据验证通过。
本实施例中,在完成以上校验后,凭证合约会存储VCsell的信息,凭证合约存在两个Map结构MapNFR和MapVC,分别如下所示,若Status=sell,则按照以下存储信息:
MapNFT:NFTAddr+tokenId=>VCsell的id
MapVC:VCsell的id=>VCsell
当Status=unsell,代表用户不想售卖,想下架,则将NFTAddr+tokenId对应的值进行状态置空。
其中,Map是一种把键对象和值对象映射的集合,它的每一个元素都包含一对键对象和值对象,也即,以键值对存储格式进行存储。
也即,多种兑换条件参数中包括链上资源的兑换状态参数;将资源状态标识和凭证标识以键值对存储格式作为资源数据集合存储至凭证合约中。
本实施例中,当第二账户想查看合约地址NFTAddr中tokenId对应的NFT是否处可兑换状态,则可通过调用凭证合约,查询NFTAddr+tokenId对应的值是否为空,若为空,则说明该NFT已被第一账户进行兑换,若不为空,则可得到NFT对应的凭证数据,即VCsell。
综上所述,本申请实施例提供的基于区块链的资源兑换方法,在获取包括资源状态标识和凭证标识的资源数据集合后,在资源状态标识对应的兑换状态符合兑换要求的情况下,根据凭证标识对应的凭证数据在第一账户和第二账户之间进行链上资源的兑换,兑换成功后将资源状态标识进行状态重置,并对更新后的资源数据集合进行存储。也即,在资源兑换完成的情况下,将表征链上资源的兑换状态的资源状态标识进行状态重置后,将包含重置后资源状态标识的资源数据集合进行存储,使得后续账户可通过重置后的资源状态标识直接获取链上资源所对应的历史兑换记录,无需再通过分析资源兑换过程中的兑换内容从而确定所兑换的链上资源,提高了资源兑换记录的查询效率。
本实施例中,通过根据多种兑换条件参数生成凭证数据,能够使得凭证数据中包含链上资源所对应的多种兑换要求,丰富了数据内容。
本实施例中,通过生成第一账户对应的第一账户文档,利用第一账户文档和多种兑换条件参数生成凭证数据,使得账户信息和凭证数据能够去中心化存储。
本实施例中,利用第一账户文档对凭证数据进行数据验证,保证了数据安全。
以基于区块的资源兑换方法应用于NFT资源兑换场景为例进行说明,示意性的,请参考图7,其示出了本申请一个示例性实施例提供的基于区块的资源兑换方法的示意图,如图7所示,该方法包括如下内容。
第一部分,基于DID和凭证数据(VC)的凭证存储流程
整个流程包括如下几个模块:
·第一账户710:想要兑换NFT的区块链账户,第一账户中包括第一私钥PriKeyC、第一公钥PubKeyC、第一钱包地址AddrC;
·第二账户720:欲兑换得到NFT的区块链账户,第二账户中包括第二私钥PriKeyA、第二公钥PubKeyA、第二钱包地址AddrA;
·凭证合约730:用于存储第一账户签发的凭证数据以及凭证状态;
·NFT合约740:用于发行和转移NFT的ERC721合约;
·DID合约750:创建账户DID标识以及验证VC的身份合约;
(1)注册DID标识
第一账户和第二账户各自提供一个私钥PriKeyC,PriKeyA,并调用DID合约750,分别注册一个DID标识和相应的DID文档,当DID合约接收到私钥PriKeyC以及PriKeyA后,会计算得到第一账户对应的DID文档,以及第二账户对应的DID文档。
(2)第一账户签发凭证VC
第一账户获取想要兑换的NFT的合约地址NFTAddr和tokenId(例如:1000),同时明确要兑换的资源数量(例如200ZZZ,其合约地址为ZZZAddr)和截止时间timestamp,构造一下VC原文VCOrigin,之后,第一账户对VCOrigin进行哈希运算,然后用私钥PriKeyC对其进行非对称加密,即签名Sig,生成的签名补充到VCjson中的signature字段,得到VCmiddle,此时再对VCmiddle进行哈希运算,得到VC的唯一id,补充到VCmiddle的id字段,进而得到最终的凭证VC,即VCsell。
(3)用户C将凭证VC上链
第一账户调用凭证合约,将VCsell存储到凭证合约中,凭证合约收到VCsell时,会作以下校验:
1.从DIDC取出地址部分AddrC,调用NFT合约,查询tokenId对应的NFT的持有者是否等于AddrC;
2.Status字段为sell或者unsell;
3.截止时间timestamp是否大于等于当前区块时间;
4.利用DIDC,调用DID合约,查看DIDC是否存在;
5.查找链上是否存在ZZZAddr所对应的的兑换资源,确保这类兑换资源可以用于满足NFT的资源兑换数量要求;
6.调用DID合约获取DIDC的公钥PubKeyC;
7.验证签名是否正确:Verify(VCsell,PubKeyC)。
验证过程大致如下,首先将VCsell中的id字段置空得到VCmiddle,然后用PubKeyC对VCmiddle解密,得到一个值H1,紧接着,将VCmiddle的signature字段置空,得到VCOrigin,对VCorigin进行哈希值运算,得到H2,若H1=H2,则VC验证通过。
在完成以上校验后,凭证合约会存储VCsell的信息,凭证合约存在两个map结构MapNFT和MapVC,分别如下所示,若Status=sell,则按照以下存储信息:
MapNFT:NFTAddr+tokenId=>VCsell的id
MapVC:VCsell的id=>VCsell
当Status=unsell,代表第一账户不想兑换,想下架,则将NFTAddr+tokenId对应的值进行状态置空。
注意,不管第一账户想上架兑换NFT,还是下架NFT,均需要签发一个凭证VC并上链,区别是当下架NFT时,即Status=unsell,将NFTAddr+tokenId对应的值进行状态置空。
第二账户所想查看合约地址NFTAddr中tokenId对应的NFT是否处于出售状态,则可通过调用凭证合约,查询NFTAddr+tokenId对应的值是否为空,若为空,则说明该NFT为被上家兑换成功,若不为空,则可得到凭证VC,即VCsell,可用于第二部分,完成NFT的资源兑换。
第二账户可以调用凭证合约,遍历MapCC,可以获取哪些NFT合约中的哪些NFT在出售。
至此,第一账户通过签发VC完成了一笔NFT的挂单操作,并将凭证VC存储在链上的凭证合约中,完成了凭证VC的去中心化存储;任何人都可以通过凭证合约获取第一账户的最新挂单信息,避免平台方垄断用户的挂单信息,致使用户无法正常完成兑换NFT的情况出现。
第二部分,基于DID和凭证数据(VC)的资源兑换流程
·第一账户710:出售NFT的区块链账户,第一账户中包括第一私钥PriKeyC、第一公钥PubKeyC、第一钱包地址AddrC;
·第二账户720:欲兑换NFT的区块链账户,第二账户中包括第二私钥PriKeyA、第二公钥PubKeyA、第二钱包地址AddrA;
·凭证合约730:用于存储第一账户签发的凭证数据以及凭证状态;
·NFT合约740:用于发行和转移NFT的ERC721合约;
·DID合约750:创建账户DID标识以及验证VC的身份合约;
·ERC20合约760:标准资产合约,用于负责兑换资源的转移以完成NFT兑换;
·NFT兑换合约770:用于调度多方智能合约,完成NFT交易。
(1)利用凭证VC授权NFT兑换合约
第二账户可以拿到第一账户的凭证VC,即VCsell,之后,得知兑换该NFT需要200ZZZ,则此时将会调用ERC20合约,即ZZZAddr对应的合约的approve函数,授权200个zzz的额度给NFT兑换合约。完成授权后,NFT兑换合约将可以通过调用ERC20合约转移第二账户200个ZZZ给任何人。
(2)利用凭证VC向NFT兑换合约发起资源兑换
第二账户利用VCsell向NFT兑换合约发起交易,兑换合约收到VCSell时,利用NFTAddr+tokenId调用凭证合约,获取凭证状态,从MapNFT获取对应当前凭证VC的id,与上述VCsell的id进行比较,相等则表明VCsell是有效的。之后,对VCsell进行验证,验证的内容与第(一)部分的步骤3)类似,验证失败当前交易则失败。最后,兑换合约通过msg.sender获取当前交易的发起者地址,即第二账户的地址AddrA,并调用USDCAddr合约的allowance()函数,获取第二账户授权给当前兑换合约的额度是否大于200ZZZ,验证失败当前交易则失败。
(3)调用NFT合约完成NFT转移
NFT兑换合约调用合约地址为NFTAddr的NFT合约的transferFrom函数,并以from为AddrC,to为AddrA,tokenId为tokenId,将第一账户持有的tokenId的NFT转移给第二账户的地址。
(4)调用ZZZ对应的ERC合约完成资产转移
NFT兑换合约调用合约地址为USDCAddr的ERC20合约的transferFrom函数,并以from=AddrA,to为AddrC,value为200ZZZ,将第二账户授权的200ZZZ移给第二账户C的地址AddrC。
(5)重置凭证状态
NFT兑换合约调用凭证合约,将MapNFT中key为NFTAddr+tokenId值设置为空。并将VCsell的id存储到Mapdone中:
Mapdone:VCsell的id=>NFTAddr+tokenId
至此,完成了一个NFT从第一账户到第二账户的交易,将NFT转移给第二账户,将ZZZ资产转移给第一账户。
当第一账户想要证明自己曾经用拥有过某个NFT,或者兑换过某个NFT时,则可以利用自己曾经签发的VCsell,取出id,调用凭证合约,从Mapdone获取id对应的NFTAddr+tokenId,再将NFTAddr和tokenId与VCsell中进行比较,如果一致,则说明第一账户曾经拥有过某个NFT,且已经将这个NFT兑换成功。无需去遍历链上NFT兑换合约上的所有兑换记录,以及每笔兑换记录的内部兑换详情,来完成证明。同时,平台方或者用户可以在链上存储VC,以快速获取NFT的流转记录。
综上所述,本申请实施例提供的基于区块链的资源兑换方法,在获取包括资源状态标识和凭证标识的资源数据集合后,在资源状态标识对应的兑换状态符合兑换要求的情况下,根据凭证标识对应的凭证数据在第一账户和第二账户之间进行链上资源的兑换,兑换成功后将资源状态标识进行状态重置,并对更新后的资源数据集合进行存储。也即,在资源兑换完成的情况下,将表征链上资源的兑换状态的资源状态标识进行状态重置后,将包含重置后资源状态标识的资源数据集合进行存储,使得后续账户可通过重置后的资源状态标识直接获取链上资源所对应的历史兑换记录,无需再通过分析资源兑换过程中的兑换内容从而确定所兑换的链上资源,提高了资源兑换记录的查询效率。
本申请方案所实现的有益效果:
1、本申请提出一种基于DID和VC的NFT去中心化挂单存储技术,通过签发VC完成了一笔NFT的挂单操作,并将凭证VC存储在链上的凭证合约中,完成了凭证VC的去中心化存储;任何人都可以通过凭证合约获取第一账户的最新挂单信息,避免平台方作恶,垄断用户的挂单信息,致使用户无法正常完成兑换NFT的情况出现。
2、本申请提出了一种基于DID和VC的NFT交易流转技术,基于颁发VC来完成一个NFT的交易,使得链上的每一笔NFT的交易都间接地以VC在链下存储,后续可以直接用来证明某个用户曾经拥有某个NFT,或者曾经兑换过某个NFT,这利于用户或者平台方在链上通过存储VC,以快速地构建出一个NFT的交易记录和流转详情。
图8是本申请一个示例性实施例提供的基于区块链的资源兑换装置的结构框图,如图10所示,该装置包括如下部分:
获取模块810,用于获取链上资源对应的资源数据集合,所述资源数据集合中包括资源状态标识和凭证标识,所述凭证标识对应有凭证数据,所述链上资源是由第一账户部署于所述区块链系统中的资源,所述凭证数据用于指示所述链上资源对应的兑换要求,所述资源状态标识用于指示所述链上资源的兑换状态;
转移模块820,用于在所述兑换状态符合兑换要求的情况下,基于所述凭证数据将所述链上资源从所述第一账户转移至第二账户,并将所述第二账户中与所述链上资源对应的兑换资源转移至所述第一账户;
存储模块830,用于响应于所述链上资源兑换成功,将所述资源数据集合中的所述资源状态标识进行状态重置,并对更新后的所述资源数据集合进行存储,其中,重置后的所述资源状态标识用于指示所述链上资源对应的资源数据集合属于已兑换的历史兑换记录。
在一些实施例中,如图9所示,所述存储模块830,包括:
获取单元831,用于获取指定重置标识;
调整单元832,用于将所述资源数据集合中的所述资源状态标识调整为所述指定重置标识,作为重置状态标识;
存储单元833,用于将所述凭证标识和所述重置状态标识以键值对存储格式进行存储。
在一些实施例中,所述存储单元833,用于以所述凭证标识为关键字,并以所述重置状态标识为值,作为更新后的所述资源数据集合对应的键值对存储结果;将所述键值对存储结果进行上链存储至所述区块链系统中;或者,以所述凭证标识为关键字,并以所述重置状态标识为值,作为更新后的所述资源数据集合对应的键值对存储结果;将所述键值对存储结果进行本地存储。
在一些实施例中,所述转移模块820,用于在所述兑换状态符合所述兑换要求的情况下,调用资源合约对应的第一兑换函数,以及调用协议合约对应的第二兑换函数,所述资源合约是用于转移所述链上资源的智能合约,所述协议合约是指转移所述兑换资源的智能合约;基于所述第一兑换函数和所述凭证数据将所述链上资源从所述第一账户转移至所述第二账户;基于所述第二兑换函数和所述凭证数据将所述兑换资源转移至所述第一账户。
在一些实施例中,所述获取模块810,还用于通过资源兑换合约获取所述链上资源对应的所述凭证数据,所述资源兑换合约是用于协调所述链上资源进行资源兑换的智能合约;基于所述凭证数据获取所述链上资源对应的候选资源状态标识和候选凭证标识;通过所述候选资源状态标识调用凭证合约,获取所述凭证合约中存储的所述资源数据集合,所述凭证合约是用于存储所述资源数据集合的智能合约;响应于所述候选凭证标识与所述资源数据集合中的所述凭证标识匹配成功,将所述候选资源状态标识和所述候选凭证标识作为所述资源数据集合。
在一些实施例中,所述获取模块810,还用于获取所述第一账户对应的第一私钥和第一账户地址;基于所述第一私钥和所述第一账户地址生成所述第一账户对应的第一账户文档,所述第一账户文档中包括所述第一账户对应的账户信息、所述第一账户对应的账户身份标识以及所述第一私钥对应的第一公钥;获取所述链上资源对应的多种兑换条件参数,所述多种兑换条件参数用于指示所述链上资源对应的兑换要求;基于所述多种兑换条件参数生成所述凭证数据;将所述凭证数据存储至所述凭证合约中。
在一些实施例中,所述获取模块810,还用于基于所述多种兑换条件参数生成第一候选凭证数据;对所述第一候选凭证数据进行哈希运算,得到第一哈希运算结果;通过所述第一私钥对所述第一哈希运算结果进行加密运算,得到签名结果;将所述签名结果补充至所述第一候选凭证数据中的签名字段,得到第二候选凭证数据;对所述第二候选凭证数据进行哈希运算,得到所述凭证标识;将所述凭证标识补充至所述第二候选凭证数据中的标识字段,得到所述凭证数据。
在一些实施例中,所述获取模块810,还用于调用所述凭证合约对所述凭证数据进行数据校验,得到数据校验结果;响应于所述数据校验结果符合预设校验要求,将所述凭证数据和所述凭证标识存储至所述凭证合约中。
在一些实施例中,所述多种兑换条件参数中包括所述链上资源的兑换状态参数;
所述存储模块830,还用于基于所述兑换状态参数获取所述资源状态标识;将所述资源状态标识和所述凭证标识以键值对存储格式作为所述资源数据集合存储至所述凭证合约中。
综上所述,本申请实施例提供的基于区块链的资源兑换装置,在获取包括资源状态标识和凭证标识的资源数据集合后,在资源状态标识对应的兑换状态符合兑换要求的情况下,根据凭证标识对应的凭证数据在第一账户和第二账户之间进行链上资源的兑换,兑换成功后将资源状态标识进行状态重置,并对更新后的资源数据集合进行存储。也即,在资源兑换完成的情况下,将表征链上资源的兑换状态的资源状态标识进行状态重置后,将包含重置后资源状态标识的资源数据集合进行存储,使得后续账户可通过重置后的资源状态标识直接获取链上资源所对应的历史兑换记录,无需再通过分析资源兑换过程中的兑换内容从而确定所兑换的链上资源,提高了资源兑换记录的查询效率。
需要说明的是:上述实施例提供的基于区块链的资源兑换装置,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于区块链的资源兑换装置与基于区块链的资源兑换方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图10示出了本申请一个示例性实施例提供的服务器的结构示意图。该服务器1000包括中央处理单元(Central Processing Unit,CPU)1001、包括随机存取存储器(RandomAccess Memory,RAM)1002和只读存储器(Read Only Memory,ROM)1003的系统存储器1004,以及连接系统存储器1004和中央处理单元1001的系统总线1005。服务器1000还包括用于存储操作系统1013、应用程序1014和其他程序模块1015的大容量存储设备1006。
大容量存储设备1006通过连接到系统总线1005的大容量存储控制器(未示出)连接到中央处理单元1001。大容量存储设备1006及其相关联的计算机可读介质为服务器1000提供非易失性存储。也就是说,大容量存储设备1006可以包括诸如硬盘或者紧凑型光盘只读存储器(Compact Disc Read Only Memory,CD-ROM)驱动器之类的计算机可读介质(未示出)。
失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。上述的系统存储器1004和大容量存储设备1006可以统称为存储器。
根据本申请的各种实施例,服务器1000还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1000可以通过连接在系统总线1005上的网络接口单元1011连接到网络1012,或者说,也可以使用网络接口单元1011来连接到其他类型的网络或远程计算机系统(未示出)。
上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由CPU执行。
本申请的实施例还提供了一种计算机设备,该计算机设备包括处理器和存储器,该存储器中存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行以实现上述各方法实施例提供的基于区块链的资源兑换方法。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有至少一条指令、至少一段程序、代码集或指令集,至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行,以实现上述各方法实施例提供的基于区块链的资源兑换方法。
本申请的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述实施例中任一所述的基于区块链的资源兑换方法。
以上所述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (13)
1.一种基于区块链的资源兑换方法,其特征在于,所述方法由区块链系统中的节点执行,所述方法包括:
获取链上资源对应的资源数据集合,所述资源数据集合中包括资源状态标识和凭证标识,所述凭证标识对应有凭证数据,所述链上资源是由第一账户部署于所述区块链系统中的资源,所述凭证数据用于指示所述链上资源对应的兑换要求,所述资源状态标识用于指示所述链上资源的兑换状态;
在所述兑换状态符合兑换要求的情况下,基于所述凭证数据将所述链上资源从所述第一账户转移至第二账户,并将所述第二账户中与所述链上资源对应的兑换资源转移至所述第一账户;
响应于所述链上资源兑换成功,将所述资源数据集合中的所述资源状态标识进行状态重置,并对更新后的所述资源数据集合进行存储,其中,重置后的所述资源状态标识用于指示所述链上资源对应的资源数据集合属于已兑换的历史兑换记录。
2.根据权利要求1所述的方法,其特征在于,所述将所述资源数据集合中的所述资源状态标识进行状态重置,并对更新后的所述资源数据集合进行存储,包括:
获取指定重置标识;
将所述资源数据集合中的所述资源状态标识调整为所述指定重置标识,作为重置状态标识;
将所述凭证标识和所述重置状态标识以键值对存储格式进行存储。
3.根据权利要求2所述的方法,其特征在于,所述将所述凭证标识和所述重置状态标识以键值对存储格式进行存储,包括:
以所述凭证标识为关键字,并以所述重置状态标识为值,作为更新后的所述资源数据集合对应的键值对存储结果;将所述键值对存储结果进行上链存储至所述区块链系统中;或者,
以所述凭证标识为关键字,并以所述重置状态标识为值,作为更新后的所述资源数据集合对应的键值对存储结果;将所述键值对存储结果进行本地存储。
4.根据权利要求1至3任一所述的方法,其特征在于,所述在所述兑换状态符合兑换要求的情况下,基于所述凭证数据将所述链上资源从所述第一账户转移至第二账户,并将所述第二账户中与所述链上资源对应的兑换资源转移至所述第一账户,包括:
在所述兑换状态符合所述兑换要求的情况下,调用资源合约对应的第一兑换函数,以及调用协议合约对应的第二兑换函数,所述资源合约是用于转移所述链上资源的智能合约,所述协议合约是指转移所述兑换资源的智能合约;
基于所述第一兑换函数和所述凭证数据将所述链上资源从所述第一账户转移至所述第二账户;
基于所述第二兑换函数和所述凭证数据将所述兑换资源转移至所述第一账户。
5.根据权利要求1至3任一所述的方法,其特征在于,所述获取链上资源对应的资源数据集合之前,还包括:
通过资源兑换合约获取所述链上资源对应的所述凭证数据,所述资源兑换合约是用于协调所述链上资源进行资源兑换的智能合约;
基于所述凭证数据获取所述链上资源对应的候选资源状态标识和候选凭证标识;
通过所述候选资源状态标识调用凭证合约,获取所述凭证合约中存储的所述资源数据集合,所述凭证合约是用于存储所述资源数据集合的智能合约;
所述获取链上资源对应的资源数据集合,包括:
响应于所述候选凭证标识与所述资源数据集合中的所述凭证标识匹配成功,将所述候选资源状态标识和所述候选凭证标识作为所述资源数据集合。
6.根据权利要求5所述的方法,其特征在于,所述获取链上资源对应的资源数据集合之前,还包括:
获取所述链上资源对应的多种兑换条件参数,所述多种兑换条件参数用于指示所述链上资源对应的兑换要求;
基于所述多种兑换条件参数生成所述凭证数据;
将所述凭证数据存储至所述凭证合约中。
7.根据权利要求6所述的方法,其特征在于,所述基于所述多种兑换条件参数生成所述凭证数据之前,还包括:
获取所述第一账户对应的第一私钥和第一账户地址;
基于所述第一私钥和所述第一账户地址生成所述第一账户对应的第一账户文档,所述第一账户文档中包括所述第一账户对应的账户信息、所述第一账户对应的账户身份标识以及所述第一私钥对应的第一公钥;
所述基于所述多种兑换条件参数生成所述凭证数据,包括:
基于所述多种兑换条件参数生成第一候选凭证数据;
对所述第一候选凭证数据进行哈希运算,得到第一哈希运算结果;
通过所述第一账户文档中的所述第一私钥对所述第一哈希运算结果进行加密运算,得到签名结果;
将所述签名结果补充至所述第一候选凭证数据中的签名字段,得到第二候选凭证数据;
对所述第二候选凭证数据进行哈希运算,得到所述凭证标识;
将所述凭证标识补充至所述第二候选凭证数据中的标识字段,得到所述凭证数据。
8.根据权利要求6所述的方法,其特征在于,所述将所述凭证数据存储至所述凭证合约中,包括:
基于所述第一账户文档对所述凭证数据进行数据校验,得到数据校验结果;
响应于所述数据校验结果符合预设校验要求,将所述凭证数据和所述凭证标识存储至所述凭证合约中。
9.根据权利要求6所述的方法,其特征在于,所述多种兑换条件参数中包括所述链上资源的兑换状态参数;
所述方法还包括:
基于所述兑换状态参数获取所述资源状态标识;
将所述资源状态标识和所述凭证标识以键值对存储格式作为所述资源数据集合存储至所述凭证合约中。
10.一种基于区块链的资源兑换装置,其特征在于,所述装置包括:
获取模块,用于获取链上资源对应的资源数据集合,所述资源数据集合中包括资源状态标识和凭证标识,所述凭证标识对应有凭证数据,所述链上资源是由第一账户部署于所述区块链系统中的资源,所述凭证数据用于指示所述链上资源对应的兑换要求,所述资源状态标识用于指示所述链上资源的兑换状态;
转移模块,用于在所述兑换状态符合兑换要求的情况下,基于所述凭证数据将所述链上资源从所述第一账户转移至第二账户,并将所述第二账户中与所述链上资源对应的兑换资源转移至所述第一账户;
存储模块,用于响应于所述链上资源兑换成功,将所述资源数据集合中的所述资源状态标识进行状态重置,并对更新后的所述资源数据集合进行存储,其中,重置后的所述资源状态标识用于指示所述链上资源对应的资源数据集合属于已兑换的历史兑换记录。
11.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一段程序,所述至少一段程序由所述处理器加载并执行以实现如权利要求1至9任一所述的基于区块链的资源兑换方法。
12.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一段程序,所述至少一段程序由处理器加载并执行以实现如权利要求1至9任一所述的基于区块链的资源兑换方法。
13.一种计算机程序产品,其特征在于,包括计算机指令,所述计算机指令被处理器执行时实现如权利要求1至9任一所述的基于区块链的资源兑换方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202311341400.4A CN119850203A (zh) | 2023-10-16 | 2023-10-16 | 基于区块链的资源兑换方法、装置、设备、介质及产品 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202311341400.4A CN119850203A (zh) | 2023-10-16 | 2023-10-16 | 基于区块链的资源兑换方法、装置、设备、介质及产品 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN119850203A true CN119850203A (zh) | 2025-04-18 |
Family
ID=95369741
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202311341400.4A Pending CN119850203A (zh) | 2023-10-16 | 2023-10-16 | 基于区块链的资源兑换方法、装置、设备、介质及产品 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN119850203A (zh) |
-
2023
- 2023-10-16 CN CN202311341400.4A patent/CN119850203A/zh active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11477032B2 (en) | System and method for decentralized-identifier creation | |
| US11533164B2 (en) | System and method for blockchain-based cross-entity authentication | |
| US11025435B2 (en) | System and method for blockchain-based cross-entity authentication | |
| EP3788522B1 (en) | System and method for mapping decentralized identifiers to real-world entities | |
| US20210144011A1 (en) | System and method for verifying verifiable claims | |
| US20200127828A1 (en) | System and method for creating decentralized identifiers | |
| CN110910110B (zh) | 一种数据处理方法、装置及计算机存储介质 | |
| CN119850203A (zh) | 基于区块链的资源兑换方法、装置、设备、介质及产品 | |
| CN117061089B (zh) | 一种投票管理方法、装置、设备及存储介质 | |
| CN119579249A (zh) | 基于区块链的资源兑换方法、装置、设备、介质及产品 | |
| CN118981767A (zh) | 身份鉴权方法、装置、设备、可读存储介质和程序产品 | |
| CN118018602A (zh) | 一种基于区块链的数据处理方法、装置、设备及介质 | |
| HK40024850B (zh) | 基於区块链的数据处理方法、装置、设备及存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication |