CN114817395A - 数字资产的关联处理方法、装置、计算机可读介质及电子设备 - Google Patents
数字资产的关联处理方法、装置、计算机可读介质及电子设备 Download PDFInfo
- Publication number
- CN114817395A CN114817395A CN202110083431.9A CN202110083431A CN114817395A CN 114817395 A CN114817395 A CN 114817395A CN 202110083431 A CN202110083431 A CN 202110083431A CN 114817395 A CN114817395 A CN 114817395A
- Authority
- CN
- China
- Prior art keywords
- ledger
- contract
- assertion
- target
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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; CALCULATING OR 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
Abstract
本申请属于区块链技术领域,具体涉及一种数字资产的关联处理方法、装置、介质以及电子设备。该方法包括:基于哈希账本标记语言在资产存储库中构建数字资产的关联执行关系,资产存储库用于存储表示源对象和目标对象之间的关联关系的断言合约,哈希账本标记语言是用于对数字资产进行关联处理的可编译成可执行代码的描述语言;获取源对象的状态数据,并根据源对象的状态数据确定是否满足断言合约的执行条件;当满足断言合约的执行条件时,将目标对象写入目标账本,目标账本是用于存储数字资产的分布式账本。该方法可以使不同账本上存储的数字资产实现互联互通,降低来自不同分布式账本的数字资产的管理成本,提高现有账本资源的利用率。
Description
技术领域
本申请属于区块链技术领域,具体涉及一种数字资产的关联处理方法、数字资产的关联处理装置、计算机可读介质以及电子设备。
背景技术
随着计算机和网络技术的发展,目前的经济活动大多是在跨越国家、地理和司法边界的业务网络中进行的。业务网络通常汇聚在由业务参与方(如生产者、消费者、供应商、合作伙伴等等)云集的市场中,这些业务参与方能够拥有、控制并行使他们在资产上的权利。资产可以是有形的物理资产(比如汽车、住房),也可以是无形的虚拟资产(比如合同、发票和证券)。资产的所有权和转移会在业务网络中创造价值,这个过程被称为交易(transaction)。由企业或者个人拥有或控制的,以电子数据形式存在的资产可以称为数字资产(Digital Assets)。
交易通常会涉及多个不同的业务参与方,比如买家、卖家和中介(比如银行、审计员或者司法人员),这些业务参与方在交易中达成的商业协议、合约、交易过程以及交易结果可以记录在账本(ledger)中。账本是业务参与方对于资产以及资产交易的记录系统,一个业务参与方通常可以使用多个账本来跟踪资产的所有权,以及在其各种业务中的参与者之间的资产转移。
由于不同的账本在基础架构、记录格式、交易方式等方面难以形成统一标准,这些账本大多是相对独立的,相互之间难以形成有效的数据互通,业务参与方在使用多种不同的账本时也需要花费较高的学习成本和管理成本。
发明内容
本申请的目的在于提供一种数字资产的关联处理方法、数字资产的关联处理装置、计算机可读介质以及电子设备,至少在一定程度上克服相关技术中存在的账本数据难以互通的问题。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供一种数字资产的关联处理方法,该方法包括:基于哈希账本标记语言在资产存储库中构建数字资产的关联执行关系,所述资产存储库用于存储表示源对象和目标对象之间的关联关系的断言合约,所述哈希账本标记语言是用于对数字资产进行关联处理的可编译成可执行代码的描述语言;获取所述源对象的状态数据,并根据所述源对象的状态数据确定是否满足所述断言合约的执行条件;当满足所述断言合约的执行条件时,将所述目标对象写入目标账本,所述目标账本是用于存储数字资产的分布式账本。
根据本申请实施例的一个方面,提供一种数字资产的关联处理方法,该方法包括:接收基于哈希账本标记语言编写的断言合约,所述断言合约用于表示源对象和目标对象之间的关联关系,所述哈希账本标记语言是用于对数字资产进行关联处理的可编译成可执行代码的描述语言;执行所述断言合约,以将所述目标对象写入目标账本,所述目标账本是用于存储数字资产的分布式账本。
根据本申请实施例的一个方面,提供一种数字资产的关联处理装置,该装置包括:构建模块,被配置为基于哈希账本标记语言在资产存储库中构建数字资产的关联执行关系,所述资产存储库用于存储表示源对象和目标对象之间的关联关系的断言合约,所述哈希账本标记语言是用于对数字资产进行关联处理的可编译成可执行代码的描述语言;获取模块,被配置为获取所述源对象的状态数据,并根据所述源对象的状态数据确定是否满足所述断言合约的执行条件;写入模块,被配置为当满足所述断言合约的执行条件时,将所述目标对象写入目标账本,所述目标账本是用于存储数字资产的分布式账本。
根据本申请实施例的一个方面,提供一种数字资产的关联处理装置,该装置包括:接收模块,被配置为接收基于哈希账本标记语言编写的断言合约,所述断言合约用于表示源对象和目标对象之间的关联关系,所述哈希账本标记语言是用于对数字资产进行关联处理的可编译成可执行代码的描述语言;执行模块,被配置为执行所述断言合约,以将所述目标对象写入目标账本,所述目标账本是用于存储数字资产的分布式账本。
根据本申请实施例的一个方面,提供一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如以上技术方案中的数字资产的关联处理方法。
根据本申请实施例的一个方面,提供一种电子设备,该电子设备包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器被配置为经由执行所述可执行指令来执行如以上技术方案中的数字资产的关联处理方法。
根据本申请实施例的一个方面,提供一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行如以上技术方案中的数字资产的关联处理方法。
在本申请实施例提供的技术方案中,采用基于哈希账本标记语言构建资产存储库的方式,可以在不更改现存账本数据结构和共识机制的基础上,使不同账本上存储的数字资产实现互联互通,降低来自不同分布式账本的数字资产的管理成本,提高现有账本资源的利用率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了一种区块链系统的组成示意图。
图2示出了在区块链网络上维护的区块链的组成结构。
图3示出了本申请一个实施例中的数字资产的关联处理方法的步骤流程图。
图4示出了本申请实施例在一应用场景中基于资产存储库实现数字资产管理的结构框图。
图5示出了本申请实施例中的资产存储库在一应用场景中展示的存储库页面示意图。
图6示出了本申请实施例在一应用场景中进行数字资产关联处理的交互流程图。
图7示出了本申请实施例实现多种分布式账本互联互通的场景示意图。
图8示出了本申请一个实施例中的资产存储库的系统架构示意图。
图9示出了本申请一个实施例中通过代理节点进行目标账本写入的架构示意图。
图10示出了本申请一个实施例中通过存储库管理器对基于HLML语言的断言合约文件进行交互处理的过程示意图。
图11示出了本申请一个实施例中在代理节点上执行的数字资产的关联处理方法的步骤流程图。
图12示出了本申请实施例提供的配置于用户节点的数字资产的关联处理装置的结构框图。
图13示出了本申请实施例提供的配置于代理节点的数字资产的关联处理装置的结构框图。
图14示意性示出了适于用来实现本申请实施例的电子设备的计算机系统结构框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
本申请涉及对账本进行数据互通互联的方案,其中账本可以包括基于中心化记账的账本,也可以包括基于分布式记账的账本(即分布式账本)。
分布式账本是一种在网络成员之间共享、复制和同步的数据库。分布式账本记录网络参与者之间的交易,比如资产或数据的交换。网络参与者根据共识原则来制约和协商对账本中的记录的更新。与基于中心化记账的账本相比,分布式账本可以没有作为记账中心的第三方(例如金融机构)的参与,交易双方通过点对点网络(peer-to-peer,又称为对等网络)进行信息交换以达成交易。分布式账本中的每条记录都有一个时间戳和唯一的密码签名,这使得账本成为网络中所有交易的可审计历史记录。
作为分布式账本的一个示例,区块链(Block Chain)是一种在对等网络环境下,通过透明和可信规则构建的防伪造、防篡改和可追溯的共享的具有块链式数据结构(chained-block data structure)的数字化账本。块链式数据结构是将一段时间内发生的事务处理以区块为单位进行存储,并以密码学算法将区块按时间顺序连接成链条的一种数据结构。账本分发给网络中的所有成员节点,在通过哈希密码算法链接的区块的顺序链中,永久记录网络中的对等节点之间发生的资产交易的历史记录。所有经过确认和证明的交易都从链的开头一直链接到最新的区块,因此得名区块链。区块链可以充当单一事实来源,而且区块链网络中的成员只能查看与他们相关的交易。
图1示出了一种区块链系统的组成示意图,区块链系统100可以包括至少一个客户端110和区块链网络120,区块链网络120包括至少一个节点设备121。客户端110可以是智能手机、平板电脑、笔记本电脑、台式电脑等各种电子设备。节点设备121可以是终端设备或者服务器等任意形式的电子设备,例如节点设备121可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群,还可以是提供云计算服务的云服务器。
在区块链网络120中,每个节点设备121在进行正常工作时可以接收到输入信息,并基于接收到的输入信息维护区块链网络内的共享数据。为了保证信息互通,各个节点设备121之间可以存在信息连接,各个节点设备121相互可以通过信息连接进行信息传输。例如,当区块链网络120中的任意节点设备121接收到输入信息,并将输入信息在区块链网络120中进行广播时,区块链网络120中的其他节点设备可以根据共识算法获取该输入信息,将该输入信息作为共享数据进行存储。
图2示出了在区块链网络上维护的区块链的组成结构。如图2所示,区块链由多个顺次连接的区块组成,每当有新的数据需要写入区块链时,这些数据会汇总到一个新生成的区块中,新生成的区块将被链接至区块链的末端,通过共识算法可以保证每个节点设备121上新增的区块是完全相同的。在每个区块的区块体中记录了当前区块的数据,同时在其区块头中保存与之相连的前一区块的哈希值(Hash),若前一区块中的交易数据发生变化,那么当前区块的哈希值也将随之改变。因此,上传至区块链网络中的数据难以被篡改,可以提高共享数据的可靠性。
需要说明的是,本申请实施例中涉及的数字资产可以在如区块链一类的分布式账本上,也可以存储在基于中心化记账的非分布式账本上。下面结合具体实施方式对本申请实施例提供的数字资产的关联处理方法、数字资产的关联处理装置、计算机可读介质以及电子设备等技术方案做出详细说明。
图3示出了本申请一个实施例中的数字资产的关联处理方法的步骤流程图,该数字资产的关联处理方法可以由图1所示的客户端设备或者节点设备执行,本申请实施例以客户端设备上执行的方法作为示例进行说明。如图3所示,该数字资产的关联处理方法主要可以包括如下的步骤S310至步骤S330。
步骤S310:基于哈希账本标记语言构建资产存储库,资产存储库用于存储表示源对象和目标对象之间的关联关系的断言合约,哈希账本标记语言是用于对数字资产进行关联处理的可编译成可执行代码的描述语言。
作为业务参与方的个人或者实体可以通过资产存储库(Assets Repository)进行数字资产的管理和维护,该资产存储库可以在客户端设备本地进行保存,也可以保存在与客户端设备进行数据通信的服务器设备或者云端设备上。
哈希账本标记语言(Hash Ledger Markup Language,HLML)是资产存储库的基本构建块。它定义了数字账本对象之间的可读逻辑、行为、成本、状态和操作,将个人或实体的资产存储库的预定义组关联起来,以便在满足前提条件的情况下实现自动或手动触发的执行。
步骤S320:获取源对象的状态数据,并根据源对象的状态数据确定是否满足断言合约的执行条件。
在本申请的一个实施例中,获取源对象的状态数据的方法可以包括:确定与当前断言合约相关联的因果断言合约,因果断言合约的目标对象与当前断言合约的源对象为相同的资产对象;根据因果断言合约的执行结果确定当前断言合约的源对象的状态数据。本申请实施例将至少两个资产对象建立关联关系组成断言合约,当两个断言合约之间具有至少一个相同的资产对象时,这两个断言合约即构成因果断言合约的关系,在当前断言合约的因果断言合约出现数字资产状态变化时,将对该当前断言合约的执行条件和状态产生影响。
步骤S330:当满足断言合约的执行条件时,将目标对象写入目标账本,所述目标账本是用于存储数字资产的分布式账本。
当一个断言合约满足执行条件时,可以将该断言合约的目标对象写入到预先选定的目标账本中。由于断言合约内具有相互关联的源对象和目标对象,基于断言合约的执行,可以将源对象所在的源账本和目标对象所在的目标账本形成关联,实现对两项数字资产的关联处理,同时也实现对不同的分布式账本进行互联互通。另外,基于断言合约之间的相互关联的关系,可以将更多的数字资产以及数字资产对应的分布式账本纳入至资产存储库的管理中,实现对数字资产进行资产整合的同时,实现对不同的分布式账本的高效利用。
在本申请的一个实施例中,将目标对象写入目标账本的方法可以包括:将基于哈希账本标记语言编写的断言合约的源代码文件输入编译器,以通过编译器对源代码文件进行编译处理得到断言合约的二进制文件;使用目标对象的资产持有方持有的私钥对二进制文件进行签名处理;执行经过签名处理后的二进制文件,以将目标对象写入目标账本。
在本申请实施例提供的数字资产的关联处理方法中,采用基于哈希账本标记语言构建资产存储库的方式,可以在不更改现存账本数据结构和共识机制的基础上,使不同账本上存储的数字资产实现互联互通,降低来自不同分布式账本的数字资产的管理成本,提高现有账本资源的利用率。
HLML通过将现有的或待处理的源对象关联到资产存储库中的目标对象而将账本对象彼此链接起来,而不需要在单个账本对象内部或者账本对象之间进行显式引用。账本对象链接(Ledger objects linkages)是存储库的一个基本方面。通过将账本对象关联到资产存储库并将其交叉链接到其他人创建的账本对象,各个业务参与方的资产存储库可以基于链接在不同账本中的关联数据对象之间创建有用的数据交互。
HLML使用“标记”来注释组名、目标、目标属性、相关方、源、源属性、委托代理、承接账本选择、账本配置信息、状态、目标账本中的数据对象地址以及其他内容,以便在存储库页面中进行显示。HLML标记包括特殊的“元素”,如<head>、<target title>、<group>、<assertion>、<add>、<pending>、<active>、<inactive>、<receipt>、<ledger list>、<ledger attribute>、<ledger address>、<concerned parties>、<execution>、<immediateautomatic>、<conditional automatic>、<manual trigger>和许多其他元素。
HLML元素由“tags”与文档中的其他文本隔开,tags由“<”和“>”包围的元素名称组成。其中,标记内的元素名称不区分大小写。
断言合约(Assertion)是在资产存储库中实现资产对象互联的基本结构,每个断言合约至少可以关联源对象(source object)、目标对象(Target object)以及断言合约的执行条件(execution)。其中,源对象以及目标对象可以各自关联对象类型(type)、对象属性(attribute)、对象账本(object ledger)、地址(address)、名称(name)以及生命周期(lifecycle)等信息。执行条件可以包括手动触发执行(manual trigger)、即时自动执行(immediate automatic)和条件自动执行(conditional automatic)等方式。
下面分别对上述断言合约中涉及的各个信息进行说明。
对象类型(type)可以包括账本对象(ledger)和非账本对象(non-ledger),其中账本对象(ledger)可以进一步包括许可账本对象(Permissioned ledger)和非许可账本对象(Permissionless ledger)。
对象属性(attribute)可以是源对象和目标对象的业务属性,例如可以包括合同,发票,支付,身份,公证,教育,金融票据,产权证明等等。
对象账本(object ledger)对源对象和目标对象进行存储的分布式账本或者非分布式账本,例如可以是对资产对象进行上链存储的区块链。对于一个对象账本而言,其账本配置信息至少可以包括账本的资质证明、账本状态(status)、维护所述候选账本的维护群组(maintenance group)、用户编号(user number)以及使用所述候选账本的费用信息(cost)。其中,资质证明可以包括安全认证、功能证书等内容。另外,账本配置信息还可以包括表示账本成熟度、稳定性、安全性、可用性以及价值等信息的其他指标。其中,账本状态(status)例如可以包括活跃状态(active)和非活跃状态(inactive)。
地址(address)表示资产对象在账本或者其他非账本存储区域(如本地数据库或者云端数据库)的存储位置。以分布式账本为例,地址可以是资产对象在区块链上的区块高度。
名称(name)是资产对象在资产存储库中区别于其他对象的名称标识。
生命周期(lifecycle)表示资产对象的存储周期。
图4示出了本申请实施例在一应用场景中基于资产存储库实现数字资产管理的结构框图。
如图4所示,资产存储库401可以包括多个相互独立的资产组402,每个资产组402内可以进一步包括多个相互关联的断言合约403。其中,相互关联的两个断言合约至少具有一个相同的资产对象,相互关联的两个断言合约403会对对方的执行条件判断产生影响,因此互为因果断言合约。
在图4所示的资产存储库401内,包括有第一资产组、第二资产组、第三资产组……第N资产组等N个资产组,每个资产组内可以包括数量不等的断言合约。例如,第一资产组内包括有相互关联的第一断言合约、第二断言合约和第三断言合约。
每个断言合约内可以包括形成链接关系的源对象和目标对象,例如第一断言合约中的源对象是存储在本地数据库或者云端数据库的非账本对象,第一断言合约中的目标对象是在第一账本上存储的第一对象;第二断言合约中的源对象是在第一账本上存储的第二对象,第二断言合约中的目标对象是在第二账本上存储的第二对象;第三断言合约中的源对象是在第二账本上存储的第二对象,第三断言合约中的目标对象是在第三账本上存储的第三对象。其中,存储目标对象的账本即为与断言合约相对应的目标账本。
基于上述各个断言合约中包括的源对象和目标对象,不难看出,第一断言合约的目标对象和第二断言合约的源对象是同一对象,而第二断言合约的目标对象和第三断言合约的源对象也是同一对象。基于对象之间的关联关系,可以使同一资产组内的各个断言合约形成关联,进而实现不同账本之间的数据互通和互联。
资产组内的断言合约可以根据用户指令进行增加、删除、修改和查看等操作。例如,当资产存储库中新增加一个断言合约时,可以根据新增断言合约的源对象和目标对象判断新增断言合约与资产存储库中的某一个或者某几个已有断言合约之间是否存在关联关系,如果存在这样的关联关系,则可以将新增断言合约添加至与之关联的已有断言合约所在的资产组中。另外,在一个资产组中可以根据断言合约的关联关系进一步划分成一个或者多个子分组。即资产组包括多个相互关联的子分组,在资产组中,相互关联的两个子分组至少具有一个相同的断言合约。例如,一个资产组中存在Assertion1、Assertion2和Assertion3三个断言合约,其中Assertion1与Assertion2存在关联关系,Assertion1又与Assertion3存在关联关系,在此基础上,可以将Assertion1与Assertion2划分至第一子分组中,同时可以将Assertion1与Assertion3划分至第二子分组中。在具有多种关联关系的资产组中,可以根据关联关系形成相互嵌套或者交叉的子分组,以便于在清晰的层级结构下对各个断言合约进行执行条件判断。
在本申请的一个实施例中,资产存储库可以基于哈希账本标记语言在用户的终端设备上进行可视化的页面展示,使得用户能够对资产存储库进行查看和编辑。举例而言,本申请实施例可以首先获取基于哈希账本标记语言编写的与资产存储库相对应的页面文件,页面文件包括用于表示存储库内容的内容元素和用于对内容元素进行名称注释的标记元素;然后根据页面文件渲染存储库页面,以在存储库页面中对资产存储库进行可视化展示。
在本申请的一个实施例中,资产存储库可以按照设定时间周期获取代理节点采集的断言合约更新数据,进一步根据断言合约更新数据实时更新存储库页面的展示内容。
在本申请的一个实施例中,通过存储库页面接收用户触发的对资产存储库中的断言合约执行目标操作的操作指示,目标操作包括删除断言合约、增加断言合约、修改断言合约和查看断言合约中的一种或者多种。
图5示出了本申请实施例中的资产存储库在一应用场景中展示的存储库页面示意图。如图5所示,以某一用户注册并持有的资产存储库作为示例,在可视化展示的存储库页面中,以HLML语言对该用户所持有的各类资产进行描述和展示,该用户持有的资产例如可以包括与其他用户进行交易而签订的交易合同、基于交易合同进行交易后产生的发票、基于发票进行的费用支付等等。图5所示的展示信息,主要可以包括资产组的组名(GroupName)、目标(Target)、目标属性(Target Attribute)、相关主体(Concerned Parties)、源(Source)、源属性(Source Attribute)、代表代理(Delegate Agent)、账本选择(LedgerSelection)、账本配置信息(Ledger Profile)、花费(cost)、状态(Status)、数据对象账本地址(Data Object Address@Ledger)、执行条件(Execution)。
组名(Group Name)表示一个断言合约所在资产组的名称,如Project1。
目标(Target)表示断言合约中的目标对象的名称,如XX合同、XX发票、XX支付。
目标属性(Target Attribute)表示断言合约中的目标对象的属性,如合同、发票、支付等等。
相关主体(Concerned Parties)表示与断言合约中的源对象和/或目标对象具有业务相关性的其他业务主体,如XX用户、XX公司。相关主体可以根据用户需求进行选择和指定。
源(Source)表示断言合约中的源对象的来源路径,如本地路径(local path)、云端路径(cloud path)、账本上的已有对象(exist object@ledger),账本上的待定对象(pending object@ledger)等等。
源属性(Source Attribute)表示断言合约中的源对象的对象属性,如非账本对象(non-ledger)、账本上的合同(contract@ledger)、账本上的发票(invoice@ledger)。
代表代理(Delegate Agent)表示为断言合约的执行提供代理服务的代理节点,用户可以根据需要选择维护目标账本的代理节点。
账本选择(Ledger Selection)表示对断言合约中的目标对象进行写入存储的目标账本。
账本配置信息(Ledger Profile)表示所选择的目标账本的配置信息,例如可以包括账本的注册信息、资质证明(如安全认证、功能证书)、账本状态(如活跃状态、非活跃状态)、维护候选账本的维护群组、用户编号、使用所述候选账本的费用信息以及表示账本成熟度、稳定性、安全性、可用性以及价值等信息的其他指标。
花费(cost)表示执行断言合约所需支付的费用,可以包括代理节点收取的代理费用以及目标账本收取的写入费用。在一些可选的实施方式中,用户可以针对每个目标资产在目标账本上的一次写入存储操作支付相应的费用,另外也可以采用按照指定周期或者指定交易次数支付的方式支付固定费用,例如支付月费、年费等等。
状态(Status)表示断言合约的执行状态,例如可以包括表示断言合约执行成功的收据状态(receipt)以及表示断言合约等待执行的待定状态(pending)。
数据对象账本地址(Data Object Address@Ledger)、执行条件(Execution)。
执行条件(Execution)表示触发断言合约执行的触发方式,例如可以包括手动触发执行(manual trigger)、即时自动执行(immediate automatic)和条件自动执行(conditional automatic)。
下面结合图6对图5中示出的资产存储库涉及的各项内容进行详细说明。
图6示出了本申请实施例在一应用场景中进行数字资产关联处理的交互流程图,如图6所示,在该应用场景中对用户持有的数字资产进行关联处理的方法流程主要包括如下步骤:
步骤S601:用户(包括个人或者企业)在用户节点对应的终端设备上,通过客户端应用程序或者通过网络页面申请注册基于哈希账本标记语言(Hash Ledger MarkupLanguage,HLML)构建的数字资产存储库Repository。
在Repository中,可以对具有关联性的数字资产建立断言合约,基于关联条件可以自动触发执行断言合约,从而触发在目标账本的交易。每个关联通过用户断言合约合约进行声明,每个断言合约合约至少包括一个源资产,一个目标资产作为可追溯的因果资产关联,因果资产可存储于用户所选择的分布式账本中。
HLML语言支持通过HLML解析器对源账本或者目标账本的档案信息和状态信息进行如图5所示的可视化展示,展示内容例如可以涉及安全认证、资产类型、地址、成本等等。用户可以通过终端设备的交互界面对展示的存储库页面进行操作处理,例如可以对其中所展示的断言合约进行增加、删除、修改、查看等操作。
步骤S602:获取本地存储或者云端存储的原始合同的签署状态。
由于该原始合同未写入分布式账本,在图5所示的第一断言合约中,对应的源Source显示为本地或云端路径(@local/cloud path),对应的源属性Source Attribute显示为非账本对象non-ledger。
步骤S603:响应于用户触发的针对第一断言合约的执行操作,选择第一代理节点。
参考图5所示,第一断言合约的执行条件Execution为手动触发执行manualtrigger,因此当接收到用户的触发指示时,可以开启执行第一断言合约。在Repository上可以对数字资产进行分类,并根据分类结果向用户提供可供选择的多个代理节点Agent。Agent可以作为分布式账本网络中的网络节点对指定的分布式账本进行维护,一个Agent可以单独维护一个指定的分布式账本,也可以同时维护多个不同的分布式账本。
HLML语言支持被编译后形成二进制文件,用户可以通过repository的非对称密钥对待执行的断言合约进行数字签名处理,向代理节点授权处理数字资产,同时可以防止断言合约内容被篡改。具体可以使用哈希函数对断言合约编译形成的二进制文件提取哈希摘要,再使用用户的私钥对提取到的Hash摘要进行数字签名。
步骤S604:第一代理节点将目标对象“XXX合同”写入第一账本。
第一账本可以是由合同服务提供商维护和运行的合同区块链。第一代理节点在执行第一断言合约时,可以对其中携带的数字签名进行签名验证,具体可以通过用户传送或者在网络上公开的公钥对数字签名做解密处理,得到待验证的哈希摘要,再采用相同的哈希函数对断言合约数据提取哈希摘要,比较两份哈希摘要是否一致。若比较结果为一致,则确认签名验证通过,可以在用户的授权下对用户的数字资产(如本实施例中的XXX合同)进行上链存储操作。如果比较结果为不一致,则确定签名验证失败,可以向用户返回错误提示,以便确认授权失败的原因,并进一步根据调整的授权签名再次进行验证。
代理节点Agent可以适配不同的分布式账本的智能合约,以便实现不同的分布式账本之间进行数字资产的关联处理。例如,Agent通过调用源账本的智能合约可以采集源资产的状态数据,而在满足执行条件时,Agent可以通过调用目标账本的智能合约将目标资产写入到目标账本中。
步骤S605:第一账本向第一代理节点返回XXX合同的写入结果。
以区块链为例,维护第一账本的区块链网络对关于写入XXX合同的上链交易进行共识认证,并在认证通过后,可以将包含XXX合同的最新区块链接在区块链的尾端以完成对XXX合同的上链处理。完成上链后,第一账本向发出写入请求的第一代理节点返回上链结果(即XXX合同的写入结果),该上链结果可以包括XXX合同在第一账本上的区块地址、区块高度、上链时间戳等信息。
步骤S606:第一代理节点向用户节点返回基于XXX合同的写入结果生成的收据receipt。
步骤S607:Repository根据接收到的收据receipt更新第一断言合约中的状态status和数据对象账本地址Data Object Address@Ledger。
参考图5所示,第一断言合约中的状态为“收据状态”,对应的数据对象账本地址为“XXX”。第一断言合约中的目标对象是在第一账本上存储的合同对象,而第二断言合约中的源对象是在第一账本上存储的同一个合同对象。因此第一断言合约与第二断言合约互为因果断言合约,第一断言合约的状态更新将影响第二断言合约的执行。
步骤S608:Repository自动触发执行第二断言合约,选择第二代理节点。
参考图5所示,第二断言合约的执行条件Execution为即时自动执行immediateautomatic。因此当第一断言合约接收到收据后,可以基于因果断言合约之间的关联关系,自动触发执行第二断言合约。具体而言:当接收到针对第一断言合约的收据而更新第一断言合约的状态后,第一断言合约中的目标对象XXX合同将跟随第一断言合约的执行结果更新为已上链存储的收据状态。XXX合同同时又是第二断言合约中的源对象,其状态数据的更新将作为激活条件触发执行第二断言合约。
第二断言合约中的目标对象是XXX发票,Repository可以根据数字资产的分类结果,向用户推荐可供选择的负责维护与发票存储相关的分布式账本的代理节点。需要说明的是,本步骤中选择的第二代理节点与步骤S603中选择的第一代理节点可以是相同的代理节点,也可以是不同的代理节点。
步骤S609:第二代理节点将目标对象“XXX发票”写入第二账本。
步骤S610:第二账本向第二代理节点返回XXX发票的写入结果。
步骤S611:第二代理节点向用户节点返回基于XXX发票的写入结果生成的收据receipt。
步骤S612:Repository根据接收到的收据receipt更新第二断言合约中的状态status和数据对象账本地址Data Object Address@Ledger。
第二代理节点执行针对第二断言合约的操作与前述步骤中第一代理节点的执行过程一致,此处不再赘述。
在图5及图6所示应用场景的基础上,图7示出了本申请实施例实现多种分布式账本互联互通的场景示意图。如图7所示,该场景涉及存在业务交互往来的节点A和节点B,同时包括有在节点A和节点B之间进行互联互通的多条区块链。
通过执行第一条断言合约,节点A与节点B可以签署交易合同,该交易合同存储在由合同服务提供商(Contract Service Providers,CSPs)维护的合同账本701(Ledger forContract)上。
在完成合同签署和上链存储后,可以自动触发第二条断言合约的执行,节点A与节点B之间根据合同约定生成发票,该发票可以在发票账本702(Ledger for Invoice)进行上链存储。
在完成发票的生成和上链存储后,可以在满足其他设定条件的情况下可以触发第三条断言合约的执行,节点A与节点B之间根据生成的发票进行支付交易(PaymentTransaction),并可以将支付结果在支付账本703(Ledger for Payment)进行上链存储。在一些可选的实施方式中,节点A与节点B之间进行的支付交易也可以在各自持有的数字资产存储库Repository上执行,通过将Repository与用户在其他应用程序(如社交应用程序或者支付应用程序)上注册持有的社交账户或者支付账户进行关联,实现线上或者线下的支付交易。
在本申请的一个实施例中,作为用户节点的客户端设备可以直接与维护目标账本的账本网络进行数据交互,例如当一个目标账本是基于分布式账本的区块链时,用户节点可以注册成为区块链网络中的一个区块链节点,从而直接参与到目标账本的管理和维护中。
由于资产存储库提供与多种不同的账本之间进行的互联互通,而不同的账本在账本数据结构和共识机制等方面不尽相同,因此为了提高数字资产管理的数据处理效率,本申请实施例可以使用户节点通过代理节点(Agent)间接地与维护目标账本的账本网络进行数据交互。代理节点可以作为分布式账本网络的网络节点,向用户节点提供针对若干数量的目标账本的代理服务。当用户节点需要向某一类型的账本写入数字资产时,代理节点可以根据用户需求向用户推荐一个或者多个候选账本。在用户节点确定选取某一目标账本后,代理节点可以代为执行资产存储库中的断言合约,以将断言合约中的目标对象写入到用户指定的目标账本中。
图8示出了本申请一个实施例中的资产存储库的系统架构示意图。如图8所示,该系统架构包括自上向下分布的前端展示层810、资产存储库管理层820以及代理对接层830,下面分别对各个部分的内容做详细说明。
前端展示层810是面向用户的对基于HLML语言构建的数字资产存储库Repository进行可视化展示的组成架构,通过前端展示界面811向用户直观展示Repository中的各个断言合约的状态,其中每个断言合约内至少包括一对相互关联的源资产和目标资产,该源资产例如可以是在合同账本上存储的合同,该目标资产是在发票账本上存储的发票。
前端展示界面811可以是与Repository的服务器或者云端设备进行数据通信的客户端应用程序的程序页面,也可以是搭载于浏览器等其他程序软件上的网络页面。
用户通过前端展示界面811提供的交互界面可以查看断言合约、断言合约内的各项数字资产以及数字资产对应账本的最新档案信息和状态数据,与此同时,用户也可以触发操作指示,对断言合约或者断言合约内的数字资产进行增加、删除、修改、查看等操作。
基于前端展示界面811产生的交互数据可以通过统一转发服务器812(统一转发Nginx)发送至反向代理服务器813(Nginx),反向代理服务器813将相应的交互数据传送至网页服务器814(Repo-Web)。
网页服务器814对外提供服务接口815(Repo-API),并通过服务接口815对接资产存储库管理层820。
如图8中所示,作为一个可选的实施方式,为了提高系统架构的可用性,在前端展示层810中,可以配置完整的备用通信链路,即提供包括统一转发服务器812、反向代理服务器813和网页服务器814在内的备份链路,在每个链路节点都可以通过数据备份的方式进行数据同步。另外,在其他一些可选的实施方式中,也可以通过单一的数据通信链路进行数据交互,本申请对此不做特殊限定。
在资产存储库管理层820中,包括一个或者多个存储库管理器821(Repo-Manager),当存在多个存储库管理器821时,可以选择其中一个作为主管理器leader,基于与前端展示层810和代理对接层830的数据交互处理Repository的管理数据。除主管理器leader之外的其他存储库管理器可以作为从属管理器follower对管理数据进行备份。
当资产存储库管理层820中包括多个存储库管理器821时,各个存储库管理器821可以与协调服务组件822(如ZooKeeper)进行数据交互,由协调服务组件822为基于分布式应用的各个存储库管理器821提供配置维护、域名服务、分布式同步、组服务等服务功能。
资产存储库管理层820还可以与系统数据库840对接,进行管理数据以及其他交互数据的数据读写操作。系统数据库840可以是由多个数据库节点841组成的分布式集群,其中每个数据库节点841都可以维护一个完整的数据库副本(如关系型数据库mySQL)。各个数据库节点841之间通过高可用方案MGR(MySQL Group Replication)进行数据同步复制,在提供数据一致性安全保证的同时,获得高容错性和高扩展性的数据同步存储。
资产存储库管理层820通过代理对接层830可以与多个代理节点831进行数据通信,待执行的断言合约文件可以通过代理对接层830传送至相应的代理节点831(Repo-Agent),并进一步通过代理节点831执行断言合约后,进行数字资产向分布式账本的写入操作。代理节点831在完成断言合约的执行操作后,可以即时地向资产存储库管理层820返回数据写入结果,进一步通过前端展示层810在Repository的存储库页面上向用户展示断言合约的执行结果,并进一步触发与该断言合约相关联的其他因果断言合约的执行。
与此同时,代理节点831可以按照预定的时间周期,定时地采集各个账本的状态数据,通过代理对接层830向资产存储库管理层820返回状态数据,进一步通过前端展示层810在Repository的存储库页面上向用户展示断言合约以及断言合约内各项数字资产的最新状态。
图9示出了本申请一个实施例中通过代理节点进行目标账本写入的架构示意图。本申请实施例提供的HLML语言框架支持编译为二进制文件,因此可以进一步实现跨平台对接不同的资产存储库对应的客户端设备、云端设备以及不同的分布式账本的代理节点Agent。
如图9所示,当资产存储库需要执行断言合约以将目标对象写入到某一个目标账本时,可以先将断言合约901由哈希账本标记语言HLML编译形成二进制文件902(BinaryCode),然后将二进制文件902发送至选定的代理节点903,由代理节点903执行该二进制文件后,可以将相应的目标对象写入到指定的目标账本904中。对断言合约901进行编译后再传送至代理节点903执行,可以适用基于不同编程语言(如Python、Java、Go等等)架构下的任意的代理节点。
存储库管理器是对Repository进行数据管理以及与用户侧和账本侧进行数据交互的核心组件。图10示出了本申请一个实施例中通过存储库管理器对基于HLML语言的断言合约文件进行交互处理的过程示意图。不同公司或者团队开发维护和使用的区块链技术栈或多或少会存在一些差异,为了提高基于资产存储库的资产管理方法的普遍适用性,本申请实施例中的HLML可以利用中间态的二进制编码文件实现跨平台特性。
如图10所示,在存储库管理器上的处理对象主要是基于HLML语言编写的格式为“.hlml”的源代码文件1001,通过HLML解析器1002可以对源代码文件1001进行解释执行,从而在用户侧形成集展示和交互为一体的用户交互界面1003,向用户直观展示Repository的项目内容,接收用户操作指示并作出响应。
通过HLML编译器1004(HLML Compiler)可以将格式为“.hlml”的源代码文件1001进行编译处理后得到格式为“.binary”的二进制文件1005,然后将二进制文件传送至多语言驱动器1006(Multi-language drive)。
在多语言驱动器1006内部,首先由二进制载入器1007(Binary Loader)对二进制文件进行加载,在依次经过字节码校验器1008(ByteCode Verifier)和HLML运行时系统1009(HLML Runtime System)进行处理后,传入本地系统1010(Native OS)中运行。通过二进制载入器1007可以加载经过签名处理后的二进制文件中的字节码;通过字节码校验器1008可以对字节码进行语义检查和安全性检查;通过运行时系统1009可以将字节码映射至本地系统1010的可执行代码;通过本地系统1010可以运行可执行代码。
在本申请的一个实施例中,可以将HLML编译器单独配置在用户节点中,同时将多语言驱动器配置在代理节点中。当用户发起目标对象的写入请求时,可以在用户节点完成断言合约的编译后将编译得到的二进制文件发送至代理节点执行。
在本申请的一个实施例中,也可以将HLML编译器和多语言驱动器同时配置在代理节点中。在这种情况下,当用户发起目标对象的写入请求时,可以直接将断言合约的HLML文件发送至代理节点,由代理节点进行编译和运行操作。
继续参考图10,经过HLML编译器1004对源代码文件1001进行编译处理后可以得到二进制文件1005,图中示出了一种符合HLML语言规范要求的“.binary”二进制文件的示意结构,如图中所示,HLML规范要求每一个.binary文件都要由八个部分按照固定的顺序组成,具体内容如下:
1.Magic(魔数)
魔数用于表示所述二进制文件的文件类型。所有的.binary文件的前四个字节都是魔数,例如魔数的固定值可以是0xXXXXXXXX(或者其他规定数值)。魔数放在文件开头,驱动可以根据文件的开头来判断这个文件是否可能是一个.binary文件,如果是,才会继续进行之后的操作。
2.Version(版本号)
版本号用于表示所述二进制文件对应的哈希账本标记语言的版本。版本号为魔数之后的4个字节,前两个字节表示次版本号(Minor Version),后两个字节表示主版本号(Major Version)。
3.Data(数据区)
数据区用于表示二进制文件携带的数据。
4.Access_flag(访问标志符)
访问标志符用于表示二进制文件中的类或者接口的修饰符,可以使用按位或操作来进行描述。
5.This_index(当前索引)
当前索引用于表示断言合约所在资产组的组名索引信息,可以记录一些资产组的组名(GroupName)的索引信息。
6.Col_index(列索引)
列索引用于表示资产存储库的列索引信息,可以记录一些列的索引信息。
7.Fields(字段表)
字段表用于表示资产存储库的属性列。
8.Attributes(附加属性)
附加属性用于表示二进制文件中的类或者接口的附加信息。
在本申请的一个实施例中,为了提高数字资产管理的可靠性,在进行断言合约编译和执行时,可以对其进行签名处理,以使资产存储库向代理节点进行授权,同时可以证实断言合约文件的来源可靠性和完整性。本申请实施例在将断言合约进行编译处理得到二进制文件后,可以对二进制文件进行签名处理。在用户节点自行执行断言合约并对目标对象进行上链存储时,可以由用户节点执行经过签名处理后的二进制文件,将目标对象写入目标账本。
在本申请的一个实施例中,对二进制文件进行签名处理的方法可以包括:使用哈希函数对二进制文件进行摘要处理,得到二进制文件的文件摘要;获取与资产存储库相对应的公钥和私钥,并通过私钥对文件摘要进行加密处理得到数字签名;其中,公钥和私钥组成非对称密钥对;将二进制文件、数字签名以及公钥进行封装处理后得到签名结果。
在本申请实施例中,由于持有和维护资产存储库的用户节点需要同时与多个不同的代理节点以及分布式账本网络进行数据交互,为了证实交互数据的来源有效性和数据完整性,用户节点利用非对称加密技术对交互数据进行签名处理。将公钥与二进制文件、数字签名一起封装传送的好处是可以向与用户节点进行数据交互的其他节点进行点对点的公钥传输,相比于全网公开公钥的方式可以减少资源占用。
在本申请的一个实施例中,对二进制文件进行签名处理的方法可以包括:使用哈希函数对二进制文件进行摘要处理,得到二进制文件的文件摘要;获取与资产存储库相对应的私钥,并通过私钥对文件摘要进行加密处理得到数字签名;将二进制文件和数字签名进行封装处理后得到签名结果。
与前一实施例所不同的是,本申请实施例可以仅封装传送二进制文件和数字签名,而通过全网公开或者其他的密钥交换方式向与用户节点进行数据交互的其他节点传送用于验证数字签名的公钥。
在本申请的一个实施例中,断言合约可以包括与目标账本相对应的智能合约的合约选择信息;基于资产存储库的授权将目标对象写入目标账本的方法可以包括:根据合约选择信息确定用于向目标账本写入数据的智能合约;基于资产存储库的授权调用智能合约,以将目标对象写入目标账本。资产存储库中的断言合约可以向用户提供可供选择的与目标账本相关的智能合约。代理节点向资产存储库返回的与目标账本相关的档案信息和数据中,也可以包括该目标账本支持的智能合约列表。基于该智能合约列表可以对资产存储库中的可供选择的智能合约进行更新。
在本申请的一个实施例中,当用户节点是目标账本对应的分布式网络的网络节点时,可以直接执行经过签名处理后的二进制文件,以生成用于将目标对象写入目标账本的交易;然后将交易广播至维护目标账本的分布式账本网络,以使分布式账本网络对交易进行共识认证,并在认证通过后将目标对象写入目标账本。
在本申请的另一个实施例中,用户节点可以将经过签名处理后的二进制文件发送至维护目标账本的代理节点,以通过代理节点将目标对象写入目标账本。针对一个待写入账本存储的目标对象,可以预先确定需要写入的目标账本,然后再选取向该目标账本提供对象写入服务的代理节点。
作为一种可选的实施方式,本申请实施例可以获取维护目标账本的节点列表,节点列表中包括多个候选节点;然后分别获取各个候选节点的节点属性,节点属性至少包括候选节点向目标账本写入对象的代理费用;最后根据节点属性从节点列表中选取代理节点,并将经过签名处理后的二进制文件发送至代理节点。代理节点执行接收到二进制文件,完成将目标对象写入目标账本的操作。
在将目标对象写入目标账本之后,代理节点或者分布式账本网络可以向用户节点返回经过数字签名的处理的收据(receipt),用以向用户节点提供写入结果的存在证明。具体而言,用户节点可以接收与目标对象的写入事件相对应的收据,收据是经过签名处理的表示目标对象在目标账本上的写入结果的存在证明。用户节点可以根据收据更新断言合约的状态(status),例如将待定状态(pending)更新为收据状态(receipt)。另外,用户节点还可以根据收据更新断言合约的数据对象地址,数据对象地址包括目标对象在目标账本上的存储位置。
在本申请的一个实施例中,目标账本是基于区块链的分布式账本,相应的用户节点收到的关于对象写入结果的收据至少应当包括目标对象所在区块的区块标识、区块高度和区块时间戳。
在本申请的一个实施例中,选取用于存储目标对象的目标账本的方法可以包括:获取包括多个候选账本的账本列表(ledger list);分别获取各个候选账本的配置信息;根据配置信息从账本列表中选取用于存储目标对象的目标账本。
举例而言,在资产存储库的存储库页面中,可以提供包括多个候选账本的账本列表,用户可以通过向代理节点或者向分布式账本网络发送账本信息查询请求的方式获取各个候选账本的配置信息。候选账本的配置信息至少可以包括账本的资质证明、账本状态、维护所述候选账本的维护群组、用户编号以及使用所述候选账本的费用信息。其中,资质证明可以包括安全认证、功能证书等内容。另外,账本配置信息还可以包括表示账本成熟度、稳定性、安全性、可用性以及价值等信息的其他指标。用户可以根据账户配置信息中的某一项或者某几项指标对账本列表中的候选账本进行条件筛选,从中选取一个符合预期的候选账本作为写入目标对象的目标账本。
在本申请的一个实施例中,获取账本列表的方法可以包括:获取目标对象的对象属性;查询与对象属性相匹配的候选账本,并将候选账本组成账本列表。举例而言,目标对象的对象属性为发票,可以根据不同账本的存储属性筛选出具有发票存储功能的候选账本,组成账本列表。
在本申请的一个实施例中,查询与对象属性相匹配的候选账本的方法可以包括:确定提供账本代理服务的代理节点;根据对象属性向代理节点发送账本查询请求;接收代理节点返回的与账本查询请求相对应的查询结果,查询结果包括与对象属性相匹配的候选账本。
在资产存储库或者同一个资产组中,一项断言合约的执行结果将对其他与之关联的断言合约的执行条件产生影响。在本申请实施例中,用户节点可以获取与当前断言合约相关联的因果断言合约的状态,因果断言合约中的目标对象为当前断言合约中的源对象,然后根据因果断言合约的状态确定当前断言合约是否满足执行条件。这里的执行条件例如可以包括手动触发执行、即时自动执行和条件自动执行中的至少一种。手动触发执行表示当前断言合约需要经过用户主动触发才能执行。即时自动执行表示在相应的因果断言合约执行成功并获得收据后,可以即刻开始当前断言合约的执行。条件自动执行表示在相应的因果断言合约执行成功并获得收据后,还需要检测与当前断言合约对应的预设条件是否满足,并在满足条件时自动开始执行当前断言合约。在此基础上,根据因果断言合约的状态确定当前断言合约是否满足执行条件的方法可以包括:
在执行条件为手动触发执行的情况下,若接收到用户触发的断言合约执行指令,则确定当前断言合约满足执行条件;
在执行条件为即时自动执行的情况下,若因果断言合约的状态为收据状态,则确定当前断言合约满足执行条件;
在执行条件为条件自动执行的情况下,若因果断言合约的状态为收据状态,并且满足与当前断言合约相对应的预设条件,则确定当前断言合约满足执行条件。其中,与当前断言合约相对应的预设条件例如可以包括时间条件、费用支付条件等等。
在本申请的一个实施例中,用户节点可以对资产存储库进行监测,以确定与其中各个断言合约相关的资产可信度以及资产组的整体可信度。在一个可选的实施方式中,本申请实施例可以分别获取源对象和目标对象的存储类型,存储类型包括账本对象和非账本对象;账本对象表示相关对象是存储在账本上的账面资产,非账本对象表示相关对象是存储在除账本以外的其他存储区域的账外资产。然后根据源对象和目标对象的存储类型确定与断言合约相关的资产可信度。一般而言,账本对象的资产可信度高于非账本对象。
在本申请的一个实施例中,账本对象可以包括许可账本对象和非许可账本对象;许可账本对象表示存储相关对象的账本由许可网络维护,许可网络中的网络节点均为经过许可授权的节点;非许可账本对象表示存储相关对象的账本由公开网络维护,公开网络中的网络节点包括经过许可授权的节点和/或未经许可授权的节点。一般而言,许可账本对象的资产可信度高于非许可账本对象。
在获取到一个资产组中的与各个断言合约相关的资产可信度之后,可以根据各个资产可信度确定资产组整体的可信度;资产可信度与断言合约中的源账本和目标账本的可信度相关。举例而言,本申请实施例可以对源账本和目标账本的资产可信度进行加权求和,得到与相应断言合约相关的资产可信度。其中,源账本和目标账本的资产可信度主要与账本的配置信息相关。例如,可以根据账本的成熟度、稳定性、安全性、可用性以及价值等指标计算账本的可信度。当一个账本的可信度较低时,该账本可能存在一定的存储风险,向其写入数字资产则可能出现资产损失的问题。因此,基于账本可信度可以预测确定断言合约的可信度,从而为用户更好地对数字资产进行管理处置。
在本申请的一个实施例中,目标对象在目标账本上的存储一般是有时效性的,该时效性可以用目标对象的生命周期(lifecycle)来表示,该生命周期表示目标对象在目标账本上的存储时长。本申请实施例可以获取目标对象的生命周期,并进一步确定生命周期是否达到设定的周期阈值;若生命周期达到周期阈值,则根据设定规则或者用户指令确定对目标对象执行的目标操作。
作为一个可选的实施方式,对目标对象执行的目标操作包括以下操作中的任意一种:向维护目标账本的代理节点发送对象放弃指示,以放弃将目标对象存储在目标账本上。向维护目标账本的代理节点发送对象续存指示,以根据续存指示将目标对象继续存储在目标账本上;向维护目标账本的代理节点发送对象转移指示,以将目标对象转移至除目标账本以外的其他存储区域。
在本申请的一个实施例中,用户节点可以定期地或者响应用户请求而向维护目标账本的代理节点发送与断言合约相关的状态查询请求,并进一步接收代理节点返回的状态查询结果,状态查询结果包括目标账本的账本状态,账本状态包括活跃状态和非活跃状态。处于活跃状态的目标账本,表示其运行维护正常。而处于非活跃状态的目标账本,可能存在设备故障或者网络故障,该目标账本也存在一定的失效风险。基于查询得到的目标账本的账本状态可以实时更新资产存储库中的各个断言合约相关的资产可信度,以便用户更好地进行资产管理决策。
以上实施例提供了用户侧进行数字资产管理的方法,在用户委托代理节点进行资产管理时,断言合约的执行和目标对象的上链存储等方案可以由代理节点来执行。
图11示出了本申请一个实施例中在代理节点上执行的数字资产的关联处理方法的步骤流程图。如图11所示,该数字资产的关联处理方法主要可以包括如下的步骤S1110至步骤S1140。
在步骤S1110中,接收基于哈希账本标记语言编写的断言合约,断言合约用于表示源对象和目标对象之间的关联关系,哈希账本标记语言是用于对数字资产进行关联处理的可编译成可执行代码的描述语言。
关于哈希账本标记语言、断言合约以及资产存储库的相关内容已在前述实施例中做出说明,此处不再赘述。
在本申请的一个实施例中,当用户节点接收到断言合约后,可以先获取断言合约中携带的数字签名,然后对数字签名进行签名验证,以确定断言合约的有效性。
对数字签名进行签名验证的方法例如可以包括:获取断言合约中携带的公钥;使用公钥对数字签名进行解密处理,得到待验证的数字摘要;使用哈希函数对断言合约进行摘要处理,得到断言合约的数字摘要;若断言合约的数字摘要与解密得到的待验证的数字摘要一致,则确定签名验证结果为验证通过;若断言合约的数字摘要与解密得到的待验证的数字摘要不一致,则确定签名验证结果为验证失败。
在本申请的另一个实施例中,若断言合约中未携带断言合约发送方的公钥,代理节点可以先获取断言合约的发送方的身份标识,并根据身份标识获取发送方的公钥;然后再基于公钥进行后续的签名验证操作。
在步骤S1120中,执行断言合约,以将目标对象写入目标账本,目标账本是用于存储数字资产的分布式账本。
在一个可选的实施方式中,代理节点接收到的断言合约是基于哈希账本标记语言编写的源语言文件,此时代理节点可以将断言合约由哈希账本标记语言编译为二进制文件;然后执行二进制文件,以将目标对象写入目标账本。
在另一个可选的实施方式中,代理节点接收到的断言合约可以是在用户节点上完成编译处理后的二进制文件,此时代理节点可以直接执行断言合约,以生成用于将目标对象写入目标账本的交易;然后将交易广播至维护目标账本的分布式账本网络,以使分布式账本网络对交易进行共识认证,并在认证通过后将目标对象写入目标账本。
在步骤S1130中,向断言合约的发送方返回与目标对象的写入事件相对应的收据,以使发送方根据收据更新断言合约的状态以及断言合约的数据对象地址,数据对象地址包括目标对象在目标账本上的存储位置。
当目标账本为基于区块链的分布式账本时,收据至少包括目标对象所在区块的区块标识、区块高度和区块时间戳。
在步骤S1140中,响应于接收到的与断言合约相关的状态查询请求,向状态查询请求的发送方返回断言合约的状态查询结果,状态查询结果包括目标账本的账本状态,账本状态包括活跃状态和非活跃状态。
在本申请的一个实施例中,代理节点还可以向用户节点提供账本查询服务。在本申请实施例中,代理节点提供账本查询服务的方法可以包括:接收账本查询请求;获取账本查询请求中携带的目标对象的对象属性;查询与对象属性相匹配的候选账本;向账本查询请求的发送方返回包括候选账本的查询结果。
在本申请的一个实施例中,代理节点可以对目标对象进行生命周期监测。本申请实施例中对目标对象进行生命周期监测的方法可以包括:获取目标对象的生命周期,生命周期表示目标对象在目标账本上的存储时长;确定生命周期是否达到设定的周期阈值;若生命周期达到周期阈值,则根据设定规则或者用户指令确定对目标对象执行的目标操作。
当目标对象的生命周期达到周期阈值时,用户节点对目标对象执行的目标操作可以包括以下操作中的任意一种:响应于接收到的对象放弃指示,放弃将目标对象存储在目标账本上;响应于接收到的对象续存指示,将目标对象继续存储在目标账本上;响应于接收到的对象转移指示,将目标对象转移至除目标账本以外的其他存储区域。
应当注意,尽管在附图中以特定顺序描述了本申请中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的数字资产的关联处理方法。图12示出了本申请实施例提供的配置于用户节点的数字资产的关联处理装置的结构框图。如图12所示,数字资产的关联处理装置1200主要可以包括:构建模块1210,被配置为基于哈希账本标记语言在资产存储库中构建数字资产的关联执行关系,资产存储库用于存储表示源对象和目标对象之间的关联关系的断言合约,哈希账本标记语言是用于对数字资产进行关联处理的可编译成可执行代码的描述语言;获取模块1220,被配置为获取源对象的状态数据,并根据源对象的状态数据确定是否满足断言合约的执行条件;写入模块1230,被配置为当满足断言合约的执行条件时,将目标对象写入目标账本,目标账本是用于存储数字资产的分布式账本。
在本申请的一个实施例中,基于以上各实施例,所述资产存储库包括多个相互独立的资产组,所述资产组包括多个相互关联的断言合约;在所述资产组中,相互关联的两个断言合约至少具有一个相同的资产对象。
在本申请的一个实施例中,基于以上各实施例,所述资产组包括多个相互关联的子分组;在所述资产组中,相互关联的两个子分组至少具有一个相同的断言合约。
在本申请的一个实施例中,基于以上各实施例,所述获取模块1220包括:
合约确定单元,被配置为确定与所述断言合约相关联的因果断言合约,所述因果断言合约的目标对象与所述断言合约的源对象为相同的资产对象;
状态确定单元,被配置为根据所述因果断言合约的执行结果确定所述断言合约的源对象的状态数据。
在本申请的一个实施例中,基于以上各实施例,所述写入模块1230包括:
第一断言合约编译单元,被配置为将基于所述哈希账本标记语言编写的包含所述断言合约的源代码文件输入编译器,以通过所述编译器对所述源代码文件进行编译处理得到包含所述断言合约的二进制文件;
文件签名单元,被配置为使用与所述资产存储库相对应的私钥对所述二进制文件进行签名处理;
第一文件执行单元,被配置为执行经过签名处理后的二进制文件,以基于所述资产存储库的授权将所述目标对象写入所述目标账本。
在本申请的一个实施例中,基于以上各实施例,所述断言合约包括与所述目标账本相对应的智能合约的合约选择信息;所述第一文件执行单元包括:
智能合约确定单元,被配置为根据所述合约选择信息确定用于向所述目标账本写入数据的智能合约;
智能合约调用单元,被配置为基于所述资产存储库的授权调用所述智能合约,以将所述目标对象写入所述目标账本。
在本申请的一个实施例中,基于以上各实施例,所述第一文件执行单元包括:
载入单元,被配置为通过二进制载入器加载经过签名处理后的二进制文件中的字节码;
校验单元,被配置为通过字节码校验器对所述字节码进行语义检查和安全性检查;
映射单元,被配置为通过运行时系统将所述字节码映射至本地系统的可执行代码;
运行单元,被配置为通过所述本地系统运行所述可执行代码。
在本申请的一个实施例中,基于以上各实施例,所述二进制文件的组成结构包括依次连接的魔数、版本号、数据区、访问标志符、当前索引、列索引、字段表和附加属性;
所述魔数用于表示所述二进制文件的文件类型;
所述版本号用于表示所述二进制文件对应的哈希账本标记语言的版本;
所述数据区用于表示所述二进制文件携带的数据;
所述访问标志符用于表示所述二进制文件中的类或者接口的修饰符;
所述当前索引用于表示所述断言合约所在资产组的组名索引信息;
所述列索引用于表示所述资产存储库的列索引信息;
所述字段表用于表示所述资产存储库的属性列;
所述附加属性用于表示所述二进制文件中的类或者接口的附加信息。
在本申请的一个实施例中,基于以上各实施例,所述目标账本是由分布式账本网络维护的分布式账本;所述文件执行单元包括:
第一交易生成单元,被配置为生成用于将所述目标对象写入所述目标账本的交易;
第一交易广播单元,被配置为将所述交易广播至维护所述目标账本的分布式账本网络,以使所述分布式账本网络对所述交易进行共识认证,并在认证通过后将所述目标对象写入所述目标账本。
在本申请的一个实施例中,基于以上各实施例,所述文件执行单元包括:
文件发送单元,被配置为将经过签名处理后的二进制文件发送至与所述目标账本相对应的代理节点,以通过所述代理节点将所述目标对象写入所述目标账本;所述代理节点具有与所述目标账本进行数据通信的数据接口。
在本申请的一个实施例中,基于以上各实施例,所述文件发送单元包括:
节点列表获取单元,被配置为获取维护所述目标账本的节点列表,所述节点列表中包括多个候选节点;
节点属性获取单元,被配置为分别获取各个所述候选节点的节点属性;
代理节点选取单元,被配置为根据所述节点属性从所述节点列表中选取代理节点,并将经过签名处理后的二进制文件发送至所述代理节点。
在本申请的一个实施例中,基于以上各实施例,所述装置还包括:
收据接收模块,被配置为接收与所述目标对象的写入事件相对应的收据,所述收据是经过签名处理的表示所述目标对象在所述目标账本上的写入结果的存在证明;
断言合约状态更新模块,被配置为根据所述收据更新所述断言合约的状态;
对象地址更新模块,被配置为根据所述收据更新所述断言合约的数据对象地址,所述数据对象地址包括所述目标对象在所述目标账本上的存储位置。
在本申请的一个实施例中,基于以上各实施例,当所述目标账本为基于区块链的分布式账本时,所述收据至少包括所述目标对象所在区块的区块标识、区块高度和区块时间戳。
在本申请的一个实施例中,基于以上各实施例,所述断言合约状态更新模块包括:
收据状态更新单元,被配置为根据所述收据将所述断言合约的状态由待定状态更新为收据状态。
在本申请的一个实施例中,基于以上各实施例,所述选取模块包括:
账本列表获取单元,被配置为获取包括多个候选账本的账本列表;
配置信息获取单元,被配置为分别获取各个所述候选账本的配置信息;
目标账本选取单元,被配置为根据所述配置信息从所述账本列表中选取用于存储所述目标对象的目标账本。
在本申请的一个实施例中,基于以上各实施例,所述账本列表获取单元包括:
对象属性获取单元,被配置为获取所述目标对象的对象属性;
候选账本查询单元,被配置为查询与所述对象属性相匹配的候选账本,并将所述候选账本组成账本列表。
在本申请的一个实施例中,基于以上各实施例,所述第一账本查询单元包括:
代理节点确定单元,被配置为确定提供账本代理服务的代理节点;
查询请求发送单元,被配置为根据所述对象属性向所述代理节点发送账本查询请求;
查询结果接收单元,被配置为接收所述代理节点返回的与所述账本查询请求相对应的查询结果,所述查询结果包括与所述对象属性相匹配的候选账本。
在本申请的一个实施例中,基于以上各实施例,所述候选账本的配置信息包括所述候选账本的资质证明、账本状态、维护所述候选账本的维护群组、用户编号以及使用所述候选账本的费用信息。
在本申请的一个实施例中,基于以上各实施例,所述资产存储库包括一个或者多个相互独立的资产组,每个资产组内包括多个相互关联的断言合约。
在本申请的一个实施例中,基于以上各实施例,所述装置还包括:
断言合约状态获取模块,被配置为获取与当前断言合约相关联的因果断言合约的状态,所述因果断言合约中的目标对象为所述当前断言合约中的源对象;
执行条件判断模块,被配置为根据所述因果断言合约的状态确定所述当前断言合约是否满足执行条件。
在本申请的一个实施例中,基于以上各实施例,所述执行条件包括手动触发执行、即时自动执行和条件自动执行中的至少一种;所述执行条件判断模块包括:
第一条件执行单元,被配置为在所述执行条件为手动触发执行的情况下,若接收到用户触发的断言合约执行指令,则确定所述当前断言合约满足执行条件;
第二条件执行单元,被配置为在所述执行条件为即时自动执行的情况下,若所述因果断言合约的状态为收据状态,则确定所述当前断言合约满足执行条件;
第三条件执行单元,被配置为在所述执行条件为条件自动执行的情况下,若所述因果断言合约的状态为收据状态,并且满足与所述当前断言合约相对应的预设条件,则确定所述当前断言合约满足执行条件。
在本申请的一个实施例中,基于以上各实施例,所述装置还包括:
存储类型获取模块,被配置为分别获取所述源对象和所述目标对象的存储类型,所述存储类型包括账本对象和非账本对象;所述账本对象表示相关对象是存储在账本上的账面资产,所述非账本对象表示相关对象是存储在除账本以外的其他存储区域的账外资产;
断言合约可信度确定模块,被配置为根据所述源对象和所述目标对象的存储类型确定与所述断言合约相关的资产可信度。
在本申请的一个实施例中,基于以上各实施例,所述账本对象包括许可账本对象和非许可账本对象;所述许可账本对象表示存储相关对象的账本由许可网络维护,所述许可网络中的网络节点均为经过许可授权的节点;所述非许可账本对象表示存储相关对象的账本由公开网络维护,所述公开网络中的网络节点包括经过许可授权的节点和/或未经许可授权的节点。
在本申请的一个实施例中,基于以上各实施例,所述资产存储库包括一个或者多个相互独立的资产组,每个资产组内包括多个相互关联的断言合约;所述装置还包括:
资产组可信度确定模块,被配置为获取与所述资产组中的各个断言合约相关的资产可信度,并根据各个所述资产可信度确定所述资产组的可信度;所述资产可信度与所述断言合约中的源账本和目标账本的可信度相关。
在本申请的一个实施例中,基于以上各实施例,所述装置还包括:
第一生命周期获取模块,被配置为获取所述目标对象的生命周期,所述生命周期表示所述目标对象预期在所述目标账本上的存储时长;
第一周期阈值确定模块,被配置为确定所述生命周期是否达到设定的周期阈值;
第一目标操作执行模块,被配置为若所述生命周期达到所述周期阈值,则根据设定规则或者用户指令确定对所述目标对象执行的目标操作。
在本申请的一个实施例中,基于以上各实施例,所述第一目标操作执行模块包括:
第一放弃存储单元,被配置为向维护所述目标账本的代理节点发送对象放弃指示,以放弃将所述目标对象存储在所述目标账本上;
第一继续存储单元,被配置为向维护所述目标账本的代理节点发送对象续存指示,以根据所述续存指示将所述目标对象继续存储在所述目标账本上;
第一转移存储单元,被配置为向维护所述目标账本的代理节点发送对象转移指示,以将所述目标对象转移至除所述目标账本以外的其他存储区域。
在本申请的一个实施例中,基于以上各实施例,所述装置还包括:
断言合约状态查询模块,被配置为向维护所述目标账本的代理节点发送与所述断言合约相关的状态查询请求;
查询结果接收模块,被配置为接收所述代理节点返回的状态查询结果,所述状态查询结果包括所述目标账本的账本状态,所述账本状态包括活跃状态和非活跃状态。
在本申请的一个实施例中,基于以上各实施例,所述装置还包括:
页面文件获取模块,被配置为获取基于所述哈希账本标记语言编写的与所述资产存储库相对应的页面文件,所述页面文件包括用于表示存储库内容的内容元素和用于对所述内容元素进行名称注释的标记元素;
存储库展示模块,被配置为根据所述页面文件渲染存储库页面,以在所述存储库页面中对所述资产存储库进行可视化展示。
图13示出了本申请实施例提供的配置于代理节点的数字资产的关联处理装置的结构框图。如图13所示,数字资产的关联处理装置1300主要可以包括:
接收模块1310,被配置为接收基于哈希账本标记语言编写的断言合约,断言合约用于表示源对象和目标对象之间的关联关系,哈希账本标记语言是用于对数字资产进行关联处理的可编译成可执行代码的描述语言;
执行模块1320,被配置为执行断言合约,以将目标对象写入目标账本,目标账本是用于存储数字资产的分布式账本
在本申请的一个实施例中,基于以上各实施例,所述断言合约执行模块1320包括:
第二断言合约编译单元,被配置为将基于所述哈希账本标记语言编写的包含所述断言合约的源代码文件输入编译器,以通过所述编译器对所述源代码文件进行编译处理得到包含所述断言合约的二进制文件;
第二文件执行单元,被配置为执行所述二进制文件,以将所述目标对象写入目标账本。
在本申请的一个实施例中,基于以上各实施例,所述装置还包括:
签名验证模块,被配置为使用与所述资产存储库相对应的公钥对所述断言合约的数字签名进行签名验证,以获得所述资产存储库对执行所述断言合约的授权。
在本申请的一个实施例中,基于以上各实施例,所述签名验证模块包括:
签名解密单元,被配置为使用与所述资产存储库相对应的公钥对所述数字签名进行解密处理,得到待验证的数字摘要;
第三哈希摘要单元,被配置为使用哈希函数对所述断言合约进行摘要处理,得到所述断言合约的数字摘要;
验证通过确定单元,被配置为若所述断言合约的数字摘要与解密得到的待验证的数字摘要一致,则确定签名验证结果为验证通过;
验证失败确定单元,被配置为若所述断言合约的数字摘要与解密得到的待验证的数字摘要不一致,则确定签名验证结果为验证失败。
在本申请的一个实施例中,基于以上各实施例,所述目标账本是由分布式账本网络维护的分布式账本;所述断言合约执行模块1220包括:
第二交易生成单元,被配置为执行所述断言合约,以生成用于将所述目标对象写入所述目标账本的交易;
第二交易广播单元,被配置为将所述交易广播至维护所述目标账本的分布式账本网络,以使所述分布式账本网络对所述交易进行共识认证,并在认证通过后将所述目标对象写入所述目标账本。
在本申请的一个实施例中,基于以上各实施例,所述装置还包括:
收据发送模块,被配置为向所述断言合约的发送方返回与所述目标对象的写入事件相对应的收据,以使所述发送方根据所述收据更新所述断言合约的状态以及所述断言合约的数据对象地址,所述数据对象地址包括所述目标对象在所述目标账本上的存储位置。
在本申请的一个实施例中,基于以上各实施例,当所述目标账本为基于区块链的分布式账本时,所述收据至少包括所述目标对象所在区块的区块标识、区块高度和区块时间戳。
在本申请的一个实施例中,基于以上各实施例,所述装置还包括:
查询请求接收模块,被配置为接收账本查询请求;
属性获取模块,被配置为获取所述账本查询请求中携带的目标对象的对象属性;
候选账本查询模块,被配置为查询与所述对象属性相匹配的候选账本;
查询结果返回模块,被配置为向所述账本查询请求的发送方返回包括所述候选账本的查询结果。
在本申请的一个实施例中,基于以上各实施例,所述装置还包括:
第二生命周期获取模块,被配置为获取所述目标对象的生命周期,所述生命周期表示所述目标对象在所述目标账本上的存储时长;
第二周期阈值确定模块,被配置为确定所述生命周期是否达到设定的周期阈值;
第二目标操作执行模块,被配置为若所述生命周期达到所述周期阈值,则根据设定规则或者用户指令确定对所述目标对象执行的目标操作。
在本申请的一个实施例中,基于以上各实施例,所述第二目标操作执行模块包括::
第二放弃存储单元,被配置为响应于接收到的对象放弃指示,放弃将所述目标对象存储在所述目标账本上;
第二继续存储单元,被配置为响应于接收到的对象续存指示,将所述目标对象继续存储在所述目标账本上;
第二转移存储单元,被配置为响应于接收到的对象转移指示,将所述目标对象转移至除所述目标账本以外的其他存储区域。
在本申请的一个实施例中,基于以上各实施例,所述装置还包括:
断言合约状态返回模块,被配置为响应于接收到的与所述断言合约相关的状态查询请求,向所述状态查询请求的发送方返回所述断言合约的状态查询结果,所述状态查询结果包括所述目标账本的账本状态,所述账本状态包括活跃状态和非活跃状态。
本申请各实施例中提供的数字资产的关联处理装置的具体细节已经在对应的方法实施例中进行了详细的描述,此处不再赘述。
图14示意性地示出了用于实现本申请实施例的电子设备的计算机系统结构框图。
需要说明的是,图14示出的电子设备的计算机系统1400仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图14所示,计算机系统1400包括中央处理器1401(Central Processing Unit,CPU),其可以根据存储在只读存储器1402(Read-Only Memory,ROM)中的程序或者从存储部分1408加载到随机访问存储器1403(Random Access Memory,RAM)中的程序而执行各种适当的动作和处理。在随机访问存储器1403中,还存储有系统操作所需的各种程序和数据。中央处理器1401、在只读存储器1402以及随机访问存储器1403通过总线1404彼此相连。输入/输出接口1405(Input/Output接口,即I/O接口)也连接至总线1404。
以下部件连接至输入/输出接口1405:包括键盘、鼠标等的输入部分1406;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)等以及扬声器等的输出部分1407;包括硬盘等的存储部分1408;以及包括诸如局域网卡、调制解调器等的网络接口卡的通信部分1409。通信部分1409经由诸如因特网的网络执行通信处理。驱动器1410也根据需要连接至输入/输出接口1405。可拆卸介质1411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1410上,以便于从其上读出的计算机程序根据需要被安装入存储部分1408。
特别地,根据本申请的实施例,各个方法流程图中所描述的过程可以被实现为计算机软件程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1409从网络上被下载和安装,和/或从可拆卸介质1411被安装。在该计算机程序被中央处理器1401执行时,执行本申请的系统中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、触控终端、或者网络设备等)执行根据本申请实施方式的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
Claims (42)
1.一种数字资产的关联处理方法,其特征在于,包括:
基于哈希账本标记语言在资产存储库中构建数字资产的关联执行关系,所述资产存储库用于存储表示源对象和目标对象之间的关联关系的断言合约,所述哈希账本标记语言是用于对数字资产进行关联处理的可编译成可执行代码的描述语言;
获取所述源对象的状态数据,并根据所述源对象的状态数据确定是否满足所述断言合约的执行条件;
当满足所述断言合约的执行条件时,将所述目标对象写入目标账本,所述目标账本是用于存储数字资产的分布式账本。
2.根据权利要求1所述的数字资产的关联处理方法,其特征在于,所述资产存储库包括多个相互独立的资产组,所述资产组包括多个相互关联的断言合约;在所述资产组中,相互关联的两个断言合约至少具有一个相同的资产对象。
3.根据权利要求2所述的数字资产的关联处理方法,其特征在于,所述资产组包括多个相互关联的子分组;在所述资产组中,相互关联的两个子分组至少具有一个相同的断言合约。
4.根据权利要求1所述的数字资产的关联处理方法,其特征在于,所述获取所述源对象的状态数据,包括:
确定与所述断言合约相关联的因果断言合约,所述因果断言合约的目标对象与所述断言合约的源对象为相同的资产对象;
根据所述因果断言合约的执行结果确定所述断言合约的源对象的状态数据。
5.根据权利要求1所述的数字资产的关联处理方法,其特征在于,所述将所述目标对象写入目标账本,包括:
将基于所述哈希账本标记语言编写的包含所述断言合约的源代码文件输入编译器,以通过所述编译器对所述源代码文件进行编译处理得到包含所述断言合约的二进制文件;
使用与所述资产存储库相对应的私钥对所述二进制文件进行签名处理;
执行经过签名处理后的二进制文件,以基于所述资产存储库的授权将所述目标对象写入所述目标账本。
6.根据权利要求5所述的数字资产的关联处理方法,其特征在于,所述断言合约包括与所述目标账本相对应的智能合约的合约选择信息;所述基于所述资产存储库的授权将所述目标对象写入所述目标账本,包括:根据所述合约选择信息确定用于向所述目标账本写入数据的智能合约;
基于所述资产存储库的授权调用所述智能合约,以将所述目标对象写入所述目标账本。
7.根据权利要求5所述的数字资产的关联处理方法,其特征在于,所述执行经过签名处理后的二进制文件,包括:
通过二进制载入器加载经过签名处理后的二进制文件中的字节码;
通过字节码校验器对所述字节码进行语义检查和安全性检查;
通过运行时系统将所述字节码映射至本地系统的可执行代码;
通过所述本地系统运行所述可执行代码。
8.根据权利要求5所述的数字资产的关联处理方法,其特征在于,所述二进制文件的组成结构包括依次连接的魔数、版本号、数据区、访问标志符、当前索引、列索引、字段表和附加属性;
所述魔数用于表示所述二进制文件的文件类型;
所述版本号用于表示所述二进制文件对应的哈希账本标记语言的版本;
所述数据区用于表示所述二进制文件携带的数据;
所述访问标志符用于表示所述二进制文件中的类或者接口的修饰符;
所述当前索引用于表示所述断言合约所在资产组的组名索引信息;
所述列索引用于表示所述资产存储库的列索引信息;
所述字段表用于表示所述资产存储库的属性列;
所述附加属性用于表示所述二进制文件中的类或者接口的附加信息。
9.根据权利要求5所述的数字资产的关联处理方法,其特征在于,所述将所述目标对象写入所述目标账本,包括:
生成用于将所述目标对象写入所述目标账本的交易;
将所述交易广播至维护所述目标账本的分布式账本网络,以使所述分布式账本网络对所述交易进行共识认证,并在认证通过后将所述目标对象写入所述目标账本。
10.根据权利要求5所述的数字资产的关联处理方法,其特征在于,所述执行经过签名处理后的二进制文件,以将所述目标对象写入所述目标账本,包括:
将经过签名处理后的二进制文件发送至与所述目标账本相对应的代理节点,以通过所述代理节点将所述目标对象写入所述目标账本;所述代理节点具有与所述目标账本进行数据通信的数据接口。
11.根据权利要求10所述的数字资产的关联处理方法,其特征在于,所述将经过签名处理后的二进制文件发送至维护所述目标账本的代理节点,包括:
获取维护所述目标账本的节点列表,所述节点列表中包括多个候选节点;
分别获取各个所述候选节点的节点属性;
根据所述节点属性从所述节点列表中选取代理节点,并将经过签名处理后的二进制文件发送至所述代理节点。
12.根据权利要求1所述的数字资产的关联处理方法,其特征在于,在将所述目标对象写入目标账本之后,所述方法还包括:
接收与所述目标对象的写入事件相对应的收据,所述收据是经过签名处理的表示所述目标对象在所述目标账本上的写入结果的存在证明;
根据所述收据将所述断言合约的状态由待定状态更新为收据状态;
根据所述收据更新所述断言合约的数据对象地址,所述数据对象地址包括所述目标对象在所述目标账本上的存储位置。
13.根据权利要求12所述的数字资产的关联处理方法,其特征在于,当所述目标账本为基于区块链的分布式账本时,所述收据至少包括所述目标对象所在区块的区块标识、区块高度和区块时间戳。
14.根据权利要求1所述的数字资产的关联处理方法,其特征在于,所述方法还包括:
获取包括多个候选账本的账本列表;
分别获取各个所述候选账本的配置信息;
根据所述配置信息从所述账本列表中选取用于存储所述目标对象的目标账本。
15.根据权利要求14所述的数字资产的关联处理方法,其特征在于,所述获取包括多个候选账本的账本列表,包括:
获取所述目标对象的对象属性;
查询与所述对象属性相匹配的候选账本,并将所述候选账本组成账本列表。
16.根据权利要求15所述的数字资产的关联处理方法,其特征在于,所述查询与所述对象属性相匹配的候选账本,包括:
确定提供账本代理服务的代理节点;
根据所述对象属性向所述代理节点发送账本查询请求;
接收所述代理节点返回的与所述账本查询请求相对应的查询结果,所述查询结果包括与所述对象属性相匹配的候选账本。
17.根据权利要求14所述的数字资产的关联处理方法,其特征在于,所述候选账本的配置信息包括所述候选账本的注册信息、资质证明、账本状态、维护所述候选账本的维护群组、用户编号以及使用所述候选账本的费用信息。
18.根据权利要求1所述的数字资产的关联处理方法,其特征在于,所述执行条件包括手动触发执行、即时自动执行和条件自动执行中的至少一种;所述根据所述源对象的状态数据确定是否满足所述断言合约的执行条件,包括:
在所述执行条件为手动触发执行的情况下,若接收到用户触发的断言合约执行指令,则确定所述当前断言合约满足执行条件;
在所述执行条件为即时自动执行的情况下,若所述源对象的状态为收据状态,则确定所述断言合约满足执行条件;
在所述执行条件为条件自动执行的情况下,若所述源对象的状态为收据状态,并且满足与所述断言合约相对应的预设条件,则确定所述断言合约满足执行条件。
19.根据权利要求1所述的数字资产的关联处理方法,其特征在于,所述方法还包括:
分别获取所述源对象和所述目标对象的存储类型,所述存储类型包括账本对象和非账本对象;所述账本对象表示相关对象是存储在分布式账本上的账面资产,所述非账本对象表示相关对象是存储在除分布式账本以外的其他存储区域的账外资产;
根据所述源对象和所述目标对象的存储类型确定与所述断言合约相关的资产可信度。
20.根据权利要求19所述的数字资产的关联处理方法,其特征在于,所述账本对象包括许可账本对象和非许可账本对象;所述许可账本对象表示存储相关对象的分布式账本由许可网络维护,所述许可网络中的网络节点均为经过许可授权的节点;所述非许可账本对象表示存储相关对象的分布式账本由公开网络维护,所述公开网络中的网络节点包括经过许可授权的节点和/或未经许可授权的节点。
21.根据权利要求19所述的数字资产的关联处理方法,其特征在于,所述资产存储库包括一个或者多个相互独立的资产组,每个资产组内包括多个相互关联的断言合约;所述方法还包括:
获取与所述资产组中的各个断言合约相关的资产可信度,并根据各个所述资产可信度确定所述资产组的可信度;所述资产可信度与所述断言合约中的源账本和目标账本的可信度相关。
22.根据权利要求1所述的数字资产的关联处理方法,其特征在于,所述方法还包括:
获取所述目标对象的生命周期,所述生命周期表示所述目标对象在所述目标账本上的存储时长;
确定所述生命周期是否达到设定的周期阈值;
若所述生命周期达到所述周期阈值,则根据设定规则或者用户指令确定对所述目标对象执行的目标操作。
23.根据权利要求22所述的数字资产的关联处理方法,其特征在于,所述对所述目标对象执行的目标操作包括以下操作中的任意一种:
向维护所述目标账本的代理节点发送对象放弃指示,以放弃将所述目标对象存储在所述目标账本上;
向维护所述目标账本的代理节点发送对象续存指示,以根据所述续存指示将所述目标对象继续存储在所述目标账本上;
向维护所述目标账本的代理节点发送对象转移指示,以将所述目标对象转移至除所述目标账本以外的指定存储区域。
24.根据权利要求1至23中任意一项所述的数字资产的关联处理方法,其特征在于,所述方法还包括:
向维护所述目标账本的代理节点发送与所述断言合约相关的状态查询请求;
接收所述代理节点返回的状态查询结果,所述状态查询结果包括所述目标账本的账本状态,所述账本状态包括活跃状态和非活跃状态。
25.根据权利要求1至23中任意一项所述的数字资产的关联处理方法,其特征在于,所述方法还包括:
获取基于所述哈希账本标记语言编写的与所述资产存储库相对应的页面文件,所述页面文件包括用于表示存储库内容的内容元素和用于对所述内容元素进行名称注释的标记元素;
根据所述页面文件渲染存储库页面,以在所述存储库页面中对所述资产存储库进行可视化展示。
26.根据权利要求25所述的数字资产的关联处理方法,其特征在于,所述方法还包括:
按照设定时间周期获取代理节点采集的断言合约更新数据;
根据所述断言合约更新数据实时更新所述存储库页面的展示内容。
27.根据权利要求25所述的数字资产的关联处理方法,其特征在于,所述方法还包括:
通过所述存储库页面接收用户触发的对所述资产存储库中的断言合约执行目标操作的操作指示,所述目标操作包括删除断言合约、增加断言合约、修改断言合约和查看断言合约中的一种或者多种。
28.一种数字资产的关联处理方法,其特征在于,包括:
接收基于哈希账本标记语言编写的断言合约,所述断言合约用于表示源对象和目标对象之间的关联关系,所述哈希账本标记语言是用于对数字资产进行关联处理的可编译成可执行代码的描述语言;
执行所述断言合约,以将所述目标对象写入目标账本,所述目标账本是用于存储数字资产的分布式账本。
29.根据权利要求28所述的数字资产的关联处理方法,其特征在于,所述执行所述断言合约,以将所述目标对象写入目标账本,包括:
将基于所述哈希账本标记语言编写的包含所述断言合约的源代码文件输入编译器,以通过所述编译器对所述源代码文件进行编译处理得到包含所述断言合约的二进制文件;
执行所述二进制文件,以将所述目标对象写入目标账本。
30.根据权利要求28所述的数字资产的关联处理方法,其特征在于,在执行所述断言合约之前,所述方法还包括:
使用与所述资产存储库相对应的公钥对所述断言合约的数字签名进行签名验证,以获得所述资产存储库对执行所述断言合约的授权。
31.根据权利要求30所述的数字资产的关联处理方法,其特征在于,所述使用与所述资产存储库相对应的公钥对所述断言合约的数字签名进行签名验证,包括:
使用与所述资产存储库相对应的公钥对所述断言合约的数字签名进行解密处理,得到待验证的数字摘要;
使用哈希函数对所述断言合约进行摘要处理,得到所述断言合约的数字摘要;
若所述断言合约的数字摘要与解密得到的待验证的数字摘要一致,则确定签名验证结果为验证通过;
若所述断言合约的数字摘要与解密得到的待验证的数字摘要不一致,则确定签名验证结果为验证失败。
32.根据权利要求28至31中任意一项所述的数字资产的关联处理方法,其特征在于,所述目标账本是由分布式账本网络维护的分布式账本;所述执行所述断言合约,以将所述目标对象写入目标账本,包括:
执行所述断言合约,以生成用于将所述目标对象写入所述目标账本的交易;
将所述交易广播至维护所述目标账本的分布式账本网络,以使所述分布式账本网络对所述交易进行共识认证,并在认证通过后将所述目标对象写入所述目标账本。
33.根据权利要求28至31中任意一项所述的数字资产的关联处理方法,其特征在于,在将所述目标对象写入目标账本之后,所述方法还包括:
向所述断言合约的发送方返回与所述目标对象的写入事件相对应的收据,以使所述发送方根据所述收据更新所述断言合约的状态以及所述断言合约的数据对象地址,所述数据对象地址包括所述目标对象在所述目标账本上的存储位置。
34.根据权利要求33所述的数字资产的关联处理方法,其特征在于,当所述目标账本为基于区块链的分布式账本时,所述收据至少包括所述目标对象所在区块的区块标识、区块高度和区块时间戳。
35.根据权利要求28至31中任意一项所述的数字资产的关联处理方法,其特征在于,所述方法还包括:
接收账本查询请求;
获取所述账本查询请求中携带的目标对象的对象属性;
查询与所述对象属性相匹配的候选账本;
向所述账本查询请求的发送方返回包括所述候选账本的查询结果。
36.根据权利要求28至31中任意一项所述的数字资产的关联处理方法,其特征在于,所述方法还包括:
获取所述目标对象的生命周期,所述生命周期表示所述目标对象在所述目标账本上的存储时长;
确定所述生命周期是否达到设定的周期阈值;
若所述生命周期达到所述周期阈值,则根据设定规则或者用户指令确定对所述目标对象执行的目标操作。
37.根据权利要求36所述的数字资产的关联处理方法,其特征在于,所述对所述目标对象执行的目标操作包括以下操作中的任意一种:
响应于接收到的对象放弃指示,放弃将所述目标对象存储在所述目标账本上;
响应于接收到的对象续存指示,将所述目标对象继续存储在所述目标账本上;
响应于接收到的对象转移指示,将所述目标对象转移至除所述目标账本以外的其他存储区域。
38.根据权利要求28至31中任意一项所述的数字资产的关联处理方法,其特征在于,所述方法还包括:
响应于接收到的与所述断言合约相关的状态查询请求,向所述状态查询请求的发送方返回所述断言合约的状态查询结果,所述状态查询结果包括所述目标账本的账本状态,所述账本状态包括活跃状态和非活跃状态。
39.一种数字资产的关联处理装置,其特征在于,包括:
构建模块,被配置为基于哈希账本标记语言在资产存储库中构建数字资产的关联执行关系,所述资产存储库用于存储表示源对象和目标对象之间的关联关系的断言合约,所述哈希账本标记语言是用于对数字资产进行关联处理的可编译成可执行代码的描述语言;
获取模块,被配置为获取所述源对象的状态数据,并根据所述源对象的状态数据确定是否满足所述断言合约的执行条件;
写入模块,被配置为当满足所述断言合约的执行条件时,将所述目标对象写入目标账本,所述目标账本是用于存储数字资产的分布式账本。
40.一种数字资产的关联处理装置,其特征在于,包括:
接收模块,被配置为接收基于哈希账本标记语言编写的断言合约,所述断言合约用于表示源对象和目标对象之间的关联关系,所述哈希账本标记语言是用于对数字资产进行关联处理的可编译成可执行代码的描述语言;
执行模块,被配置为执行所述断言合约,以将所述目标对象写入目标账本,所述目标账本是用于存储数字资产的分布式账本。
41.一种计算机可读介质,其上存储有计算机程序,该计算机程序被处理器执行时实现权利要求1至38中任意一项所述的数字资产的关联处理方法。
42.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至38中任意一项所述的数字资产的关联处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110083431.9A CN114817395A (zh) | 2021-01-21 | 2021-01-21 | 数字资产的关联处理方法、装置、计算机可读介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110083431.9A CN114817395A (zh) | 2021-01-21 | 2021-01-21 | 数字资产的关联处理方法、装置、计算机可读介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114817395A true CN114817395A (zh) | 2022-07-29 |
Family
ID=82523818
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110083431.9A Pending CN114817395A (zh) | 2021-01-21 | 2021-01-21 | 数字资产的关联处理方法、装置、计算机可读介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114817395A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116128271A (zh) * | 2023-04-04 | 2023-05-16 | 成都航空职业技术学院 | 基于区块链的建筑施工中的碳资产生成方法、系统及装置 |
-
2021
- 2021-01-21 CN CN202110083431.9A patent/CN114817395A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116128271A (zh) * | 2023-04-04 | 2023-05-16 | 成都航空职业技术学院 | 基于区块链的建筑施工中的碳资产生成方法、系统及装置 |
CN116128271B (zh) * | 2023-04-04 | 2024-01-12 | 成都航空职业技术学院 | 基于区块链的建筑施工中的碳资产生成方法、系统及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ocheja et al. | Managing lifelong learning records through blockchain | |
US10574453B2 (en) | System and computer program product for certified confidential data collaboration using blockchains | |
JP2022521915A (ja) | 分散型台帳技術(dlt)を使用したリレーショナルデータの管理と編成 | |
US20220004539A1 (en) | Privacy preserving architecture for permissioned blockchains | |
WO2018006072A1 (en) | Systems and method for forming, storing, managing,and executing contracts | |
US11755998B2 (en) | Smart data annotation in blockchain networks | |
US11431503B2 (en) | Self-sovereign data access via bot-chain | |
US11711286B2 (en) | Compliance mechanisms in blockchain networks | |
US20220311611A1 (en) | Reputation profile propagation on blockchain networks | |
US20220156725A1 (en) | Cross-chain settlement mechanism | |
US20220036323A1 (en) | Electronic wallet allowing virtual currency expiration date | |
US11374755B1 (en) | Entangled token structure for blockchain networks | |
US11550796B2 (en) | Coexistence mediator for facilitating blockchain transactions | |
Morris et al. | Developing a blockchain business network with hyperledger composer using the ibm blockchain platform starter plan | |
CN114817395A (zh) | 数字资产的关联处理方法、装置、计算机可读介质及电子设备 | |
US11804950B2 (en) | Parallel processing of blockchain procedures | |
US20230179424A1 (en) | Compressible blockchains | |
US20220399988A1 (en) | Linking blockchain operations | |
US20220076250A1 (en) | Blockchain enabled smart compliance | |
JP2023538497A (ja) | 編集可能なブロックチェーン | |
Antal et al. | Distributed Ledger Technology Review and Decentralized Applications Development Guidelines. Future Internet 2021, 13, 62 | |
Singh | A blockchain-based decentralized application for user-driven contribution to Open Government Data | |
Ullrich | Blockchain in Education | |
WO2022042602A1 (en) | Trustless operations for blockchain networks | |
US20220270079A1 (en) | Cognation of a digital corollary in a blockchain network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40070418 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |