发明内容
本说明书提出一种基于区块链的资产管理方法,所述方法应用于区块链中的节点设备;其中,所述区块链的运营方定义了资产类型和与所述资产类型对应的资产格式;接入所述区块链的资产管理方在所述区块链上部署了与资产相关的第一智能合约;所述方法包括:
接收所述资产管理方对接的资产创建方发送的第一合约调用交易;其中,所述第一合约调用交易包括目标资产类型的类型标识;
响应于所述第一合约调用交易,调用所述第一智能合约中的第一获取逻辑,获取所述资产管理方在所述区块链中定义的与所述类型标识指示的所述目标资产类型对应的资产模型;其中,所述资产模型包括与所述目标资产类型对应的资产创建信息;以及,
在获取到与所述目标资产类型对应的资产模型后,进一步调用所述第一智能合约中的创建逻辑,基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及获取到的与所述目标资产类型对应的资产模型中的资产创建信息,在所述区块链中创建标准化的区块链资产。
可选地,所述运营方在所述区块链的原生代码中定义了所述目标资产类型和与所述目标资产类型对应的资产格式;
所述基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及获取到的与所述目标资产类型对应的资产模型中的资产创建信息,在所述区块链中创建标准化的区块链资产,包括:
获取所述运营方在所述区块链的原生代码中定义的与所述目标资产类型对应的资产格式;
基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及获取到的与所述目标资产类型对应的资产模型中的资产创建信息,在所述区块链中创建标准化的区块链资产。
可选地,与所述运营方对应的中心化服务器维护了所述运营方定义的所述目标资产类型和与所述目标资产类型对应的资产格式;
所述基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及获取到的与所述目标资产类型对应的资产模型中的资产创建信息,在所述区块链中创建标准化的区块链资产,包括:
通过Oracle预言机获取所述中心化服务器维护的所述运营方定义的与所述目标资产类型对应的资产格式;
基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及获取到的与所述目标资产类型对应的资产模型中的资产创建信息,在所述区块链中创建标准化的区块链资产。
可选地,所述资产模型;或者,所述目标资产类型和与所述目标资产类型对应的资产格式,以key-Value键值对的形式,保存在所述区块链的Merkle状态树中。
可选地,所述资产格式包括若干资产属性字段;所述第一合约调用交易还包括所述资产创建方提交的与所述若干资产属性字段对应的属性值;所述资产创建信息包括针对与所述若干资产属性字段对应的属性值的校验规则;
所述基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及获取到的与所述目标资产类型对应的资产模型中的资产创建信息,在所述区块链中创建标准化的区块链资产,包括:
基于所述资产模型中的校验规则对所述资产创建方提交的与所述若干资产属性字段对应的属性值进行校验;
如果校验通过,则进一步基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及所述属性值,在所述区块链中创建标准化的区块链资产。
可选地,所述资产创建信息包括与所述区块链资产对应的状态机;
所述方法还包括:
在所述区块链中创建标准化的区块链资产之后,基于所述资产模型中的状态机,更新与所述区块链资产对应的资产状态。
可选地,所述方法还包括:
接收所述资产管理方对接的资产转移方发送的第二合约调用交易;其中,所述第二合约调用交易包括所述区块链资产的资产标识;
响应于所述第二合约调用交易,调用所述第一智能合约中的第二获取逻辑,获取所述区块链保存的与所述资产标识对应的区块链资产,并在获取到与所述资产标识对应的区块链资产后,进一步调用所述智能合约中的转移逻辑,对获取到的与所述资产标识对应的区块链资产进行资产转移。
可选地,所述区块链的运营方定义的所述目标资产类型和与所述目标资产类型对应的资产格式包括:所述区块链的运营方基于通用编程语言定义的所述目标资产类型和与所述目标资产类型对应的资产格式;所述资产管理方在所述区块链中定义的与所述目标资产类型对应的资产模型包括:所述资产管理方基于所述通用编程语言在所述区块链中定义的与所述目标资产类型对应的资产模型。
可选地,所述通用编程语言包括通用的声明式编程语言。
可选地,所述通用的声明式编程语言包括领域特定语言。
可选地,所述运营方包括区块链服务平台;所述资产管理方包括接入所述区块链服务平台的金融机构;所述资产创建方包括由所述金融机构提供资产服务的用户客户端。
本说明书还提出一种基于区块链的资产管理方法,所述方法应用于区块链中的节点设备;其中,所述区块链的运营方在所述区块链上部署了与资产相关的第二智能合约;所述第二智能合约维护了所述运营方定义的资产类型和与所述资产类型对应的资产格式;接入所述区块链的资产管理方在所述区块链上部署了与资产相关的第一智能合约;所述方法包括:
接收所述资产管理方对接的资产创建方发送的第一合约调用交易;其中,所述第一合约调用交易包括目标资产类型的类型标识;
响应于所述第一合约调用交易,调用所述第一智能合约中的第一获取逻辑,获取所述资产管理方在所述区块链中定义的与所述类型标识指示的所述目标资产类型对应的资产模型;其中,所述资产模型包括与所述目标资产类型对应的资产创建信息;以及,
在获取到与所述目标资产类型对应的资产模型后,进一步向所述第二智能合约发送合约间调用消息,所述合约间调用消息包括获取到的与所述目标资产类型对应的资产模型中的资产创建信息,以调用所述第二智能合约中的创建逻辑,基于所述运营方定义的与所述目标资产类型对应的资产格式,以及所述资产创建信息,在所述区块链中创建标准化的区块链资产,并将创建的所述区块链资产的资产标识返回至所述第一智能合约。
可选地,所述资产模型;或者,所述目标资产类型和与所述目标资产类型对应的资产格式,以key-Value键值对的形式,保存在所述第二智能合约的Merkle存储树中。
可选地,所述资产格式包括若干资产属性字段;所述第一合约调用交易还包括所述资产创建方提交的与所述若干资产属性字段对应的属性值;所述资产创建信息包括针对与所述若干资产属性字段对应的属性值的校验规则;
所述基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及获取到的与所述目标资产类型对应的资产模型中的资产创建信息,在所述区块链中创建标准化的区块链资产,包括:
基于所述资产模型中的校验规则对所述资产创建方提交的与所述若干资产属性字段对应的属性值进行校验;
如果校验通过,则进一步基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及所述属性值,在所述区块链中创建标准化的区块链资产。
可选地,所述资产创建信息包括与所述区块链资产对应的状态机;
所述方法还包括:
在所述区块链中创建标准化的区块链资产之后,基于所述资产模型中的状态机,更新与所述区块链资产对应的资产状态。
可选地,所述方法还包括:
接收所述资产管理方对接的资产转移方发送的第二合约调用交易;其中,所述第二合约调用交易包括所述区块链资产的资产标识;
响应于所述第二合约调用交易,调用所述第一智能合约中的第二获取逻辑,获取所述区块链保存的与所述资产标识对应的区块链资产,并在获取到与所述资产标识对应的区块链资产后,进一步调用所述智能合约中的转移逻辑,对获取到的与所述资产标识对应的区块链资产进行资产转移。
可选地,所述区块链的运营方定义的所述目标资产类型和与所述目标资产类型对应的资产格式包括:所述区块链的运营方基于通用编程语言定义的所述目标资产类型和与所述目标资产类型对应的资产格式;所述资产管理方在所述区块链中定义的与所述目标资产类型对应的资产模型包括:所述资产管理方基于所述通用编程语言在所述区块链中定义的与所述目标资产类型对应的资产模型。
可选地,所述通用编程语言包括通用的声明式编程语言。
可选地,所述通用的声明式编程语言包括领域特定语言。
可选地,所述运营方包括区块链服务平台;所述资产管理方包括接入所述区块链服务平台的金融机构;所述资产创建方包括由所述金融机构提供资产服务的用户客户端。
本说明书还提出一种基于区块链的资产管理装置,所述装置应用于区块链中的节点设备;其中,所述区块链的运营方定义了资产类型和与所述资产类型对应的资产格式;接入所述区块链的资产管理方在所述区块链上部署了与资产相关的第一智能合约;所述装置包括:
第一接收模块,接收所述资产管理方对接的资产创建方发送的第一合约调用交易;其中,所述第一合约调用交易包括目标资产类型的类型标识;
获取模块,响应于所述第一合约调用交易,调用所述第一智能合约中的第一获取逻辑,获取所述资产管理方在所述区块链中定义的与所述类型标识指示的所述目标资产类型对应的资产模型;其中,所述资产模型包括与所述目标资产类型对应的资产创建信息;以及,
创建模块,在获取到与所述目标资产类型对应的资产模型后,进一步调用所述第一智能合约中的创建逻辑,基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及获取到的与所述目标资产类型对应的资产模型中的资产创建信息,在所述区块链中创建标准化的区块链资产。
可选地,所述运营方在所述区块链的原生代码中定义了所述目标资产类型和与所述目标资产类型对应的资产格式;
所述创建模块:
获取所述运营方在所述区块链的原生代码中定义的与所述目标资产类型对应的资产格式;
基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及获取到的与所述目标资产类型对应的资产模型中的资产创建信息,在所述区块链中创建标准化的区块链资产。
可选地,与所述运营方对应的中心化服务器维护了所述运营方定义的所述目标资产类型和与所述目标资产类型对应的资产格式;
所述创建模块:
通过Oracle预言机获取所述中心化服务器维护的所述运营方定义的与所述目标资产类型对应的资产格式;
基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及获取到的与所述目标资产类型对应的资产模型中的资产创建信息,在所述区块链中创建标准化的区块链资产。
可选地,所述资产模型;或者,所述目标资产类型和与所述目标资产类型对应的资产格式,以key-Value键值对的形式,保存在所述区块链的Merkle状态树中。
可选地,所述资产格式包括若干资产属性字段;所述第一合约调用交易还包括所述资产创建方提交的与所述若干资产属性字段对应的属性值;所述资产创建信息包括针对与所述若干资产属性字段对应的属性值的校验规则;
所述创建模块:
基于所述资产模型中的校验规则对所述资产创建方提交的与所述若干资产属性字段对应的属性值进行校验;
如果校验通过,则进一步基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及所述属性值,在所述区块链中创建标准化的区块链资产。
可选地,所述资产创建信息包括与所述区块链资产对应的状态机;
所述创建模块:
在所述区块链中创建标准化的区块链资产之后,基于所述资产模型中的状态机,更新与所述区块链资产对应的资产状态。
可选地,所述装置还包括:
第二接收模块,接收所述资产管理方对接的资产转移方发送的第二合约调用交易;其中,所述第二合约调用交易包括所述区块链资产的资产标识;
转移模块,响应于所述第二合约调用交易,调用所述第一智能合约中的第二获取逻辑,获取所述区块链保存的与所述资产标识对应的区块链资产,并在获取到与所述资产标识对应的区块链资产后,进一步调用所述智能合约中的转移逻辑,对获取到的与所述资产标识对应的区块链资产进行资产转移。
可选地,所述区块链的运营方定义的所述目标资产类型和与所述目标资产类型对应的资产格式包括:所述区块链的运营方基于通用编程语言定义的所述目标资产类型和与所述目标资产类型对应的资产格式;所述资产管理方在所述区块链中定义的与所述目标资产类型对应的资产模型包括:所述资产管理方基于所述通用编程语言在所述区块链中定义的与所述目标资产类型对应的资产模型。
可选地,所述通用编程语言包括通用的声明式编程语言。
可选地,所述通用的声明式编程语言包括领域特定语言。
可选地,所述运营方包括区块链服务平台;所述资产管理方包括接入所述区块链服务平台的金融机构;所述资产创建方包括由所述金融机构提供资产服务的用户客户端。
本说明书还提出一种基于区块链的资产管理装置,所述装置应用于区块链中的节点设备;其中,所述区块链的运营方在所述区块链上部署了与资产相关的第二智能合约;所述第二智能合约维护了所述运营方定义的资产类型和与所述资产类型对应的资产格式;接入所述区块链的资产管理方在所述区块链上部署了与资产相关的第一智能合约;所述装置包括:
第一接收模块,接收所述资产管理方对接的资产创建方发送的第一合约调用交易;其中,所述第一合约调用交易包括目标资产类型的类型标识;
获取模块,响应于所述第一合约调用交易,调用所述第一智能合约中的第一获取逻辑,获取所述资产管理方在所述区块链中定义的与所述类型标识指示的所述目标资产类型对应的资产模型;其中,所述资产模型包括与所述目标资产类型对应的资产创建信息;以及,
创建模块,在获取到与所述目标资产类型对应的资产模型后,进一步向所述第二智能合约发送合约间调用消息,所述合约间调用消息包括获取到的与所述目标资产类型对应的资产模型中的资产创建信息,以调用所述第二智能合约中的创建逻辑,基于所述运营方定义的与所述目标资产类型对应的资产格式,以及所述资产创建信息,在所述区块链中创建标准化的区块链资产,并将创建的所述区块链资产的资产标识返回至所述第一智能合约。
可选地,所述资产模型;或者,所述目标资产类型和与所述目标资产类型对应的资产格式,以key-Value键值对的形式,保存在所述第二智能合约的Merkle存储树中。
可选地,所述资产格式包括若干资产属性字段;所述第一合约调用交易还包括所述资产创建方提交的与所述若干资产属性字段对应的属性值;所述资产创建信息包括针对与所述若干资产属性字段对应的属性值的校验规则;
所述创建模块:
基于所述资产模型中的校验规则对所述资产创建方提交的与所述若干资产属性字段对应的属性值进行校验;
如果校验通过,则进一步基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及所述属性值,在所述区块链中创建标准化的区块链资产。
可选地,所述资产创建信息包括与所述区块链资产对应的状态机;
所述创建模块:
在所述区块链中创建标准化的区块链资产之后,基于所述资产模型中的状态机,更新与所述区块链资产对应的资产状态。
可选地,所述装置还包括:
第二接收模块,接收所述资产管理方对接的资产转移方发送的第二合约调用交易;其中,所述第二合约调用交易包括所述区块链资产的资产标识;
转移模块,响应于所述第二合约调用交易,调用所述第一智能合约中的第二获取逻辑,获取所述区块链保存的与所述资产标识对应的区块链资产,并在获取到与所述资产标识对应的区块链资产后,进一步调用所述智能合约中的转移逻辑,对获取到的与所述资产标识对应的区块链资产进行资产转移。
可选地,所述区块链的运营方定义的所述目标资产类型和与所述目标资产类型对应的资产格式包括:所述区块链的运营方基于通用编程语言定义的所述目标资产类型和与所述目标资产类型对应的资产格式;所述资产管理方在所述区块链中定义的与所述目标资产类型对应的资产模型包括:所述资产管理方基于所述通用编程语言在所述区块链中定义的与所述目标资产类型对应的资产模型。
可选地,所述通用编程语言包括通用的声明式编程语言。
可选地,所述通用的声明式编程语言包括领域特定语言。
可选地,所述运营方包括区块链服务平台;所述资产管理方包括接入所述区块链服务平台的金融机构;所述资产创建方包括由所述金融机构提供资产服务的用户客户端。
本说明书还提出一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现上述方法的步骤。
本说明书还提出一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现上述方法的步骤。
在上述技术方案中,可以由区块链的运营方定义目标资产类型和与该目标资产类型对应的资产格式;区块链中的节点设备可以在接收到与资产管理方对接的资产创建方发送的第一合约调用交易时,调用第一智能合约中的第一获取逻辑,获取该资产管理方在该区块链中的定义的与该目标资产类型对应的资产模型,并进一步调用该第一智能合约中的创建逻辑,基于该区块链的运营方定义的与该目标资产类型对应的资产格式,以及获取到的与该目标资产类型对应的资产模型中的资产创建信息,在该区块链中创建标准化的区块链资产;
由于上述区块链的运营方定义了资产类型,以及与该资产类型对应的资产格式,而接入上述区块链的所有资产管理方在该区块链中定义的与该资产类型对应的资产模型,都指示了按照与该资产类型对应的资产格式创建区块链资产,因此对于与其中任一资产管理方对接的资产创建方而言,这些资产创建方在该区块链上创建的与该资产类型对应的区块链资产的资产格式相同,都是由该区块链的运营方定义的与该资产类型对应的资产格式;由此实现了在该区块链中创建标准化的区块链资产,从而便于创建的区块链资产在该区块链上流通。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
请参考图1,图1是本说明书示出的一种与区块链相关的网络环境的示意图。
在如图1所示的网络环境中,可以包括客户端侧计算设备101、服务器端102,以及至少一个区块链系统;例如,区块链系统103、区块链系统104和区块链系统105。
在一种实施方式中,客户端侧计算设备101,可以包括各种不同类型的客户端侧计算设备;例如,客户端侧终端设备可以包括诸如PC终端设备、移动终端设备、物联网设备,以及其它形式的具有一定的计算能力的智能设备,等等。
需要说明的是,客户端侧计算设备101并不表示其中的所有客户端侧计算设备在同一个通信网络中,而仅仅是对这些客户端侧计算设备的统称。
在一种实施方式中,客户端侧终端设备101中的至少部分计算设备,可以通过各种通信网络耦接到服务器端102;例如,图1中示出的设备1和设备2与服务器端102进行了耦接。
不难理解,客户端侧终端设备101中的部分终端设备,也可以不与服务器端102进行耦接,而是作为区块链节点通过各种通信网络直接耦接到区块链系统;例如,图1中示出的设备4,可以作为区块链节点耦接到区块链系统。
其中,上述通信网络可以包括有线和/或无线通信网络;例如,可以是基于运营商提供的有线接入网络或者无线接入网络(比如移动蜂窝网络)实现的局域网(Local AreaNetwork,LAN)、广域网(Wide Area Network,WAN)、因特网或其组合。
在一种实施方式中,客户端侧计算设备101,还可以包括一个或多个用户侧服务器;例如,图1中示出的设备5。客户端侧终端设备101中的至少部分计算设备,可以耦接到该用户侧服务器,而该用户侧服务器可以进一步与上述服务端102进行耦接;例如,图1中示出的设备1和设备2耦接到设备5,设备5进一步耦接服务器端102。
在一种实施方式中,上述用户侧服务器可以由搭建了用户账户体系的服务实体来实现;上述服务实体可以包括面向用户提供各种线上和/或线下服务的服务载体的运营实体;
其中,上述服务载体可以包括软件形式的服务载体,也可以包括硬件形式的服务载体。
在一种实施方式中,上述服务载体可以包括提供线上互联网服务的各种客户端软件;例如,网站、网页、APP等。
在一种实施方式中,上述服务载体也可以包括部署在线下的,能够提供线下服务的各种智能设备;例如,部署在居住区、办公区、公共场所的智能快递柜。
相应的,上述运营实体可以包括上述服务载体对应的运营方;例如,上述运营实体可以包括对上述服务载体进行运营和管理的个人、组织、公司和企业,等等。
在一种实施方式中,服务器端102也可以通过各种通信网络耦接到一个或者多个区块链系统;例如,图1中示出的服务器端102可以分别耦接到区块链系统103、区块链系统104和区块链系统105,等等。
在一种实施方式中,每个区块链系统都可以维护一个或多个区块链(例如,公有区块链、私有区块链、联盟区块链等),并包括用于承载上述一个或多个区块链的多个区块链节点;例如,如图1中示出的区块链节点1、区块链节点2、区块链节点3、区块链节点4、区块链节点i等可以共同承载一个或者多个区块链。各个区块链系统包含的区块链之间,以及各个区块链系统之间,还可以进行跨链的数据访问。
在一种实施方式中,区块链节点可以包括全节点和轻节点。全节点可以全量下载区块链中的每个区块所包含的区块链交易,并可以根据搭载的区块链共识算法,对每个区块链中所包含的区块链交易进行共识验证。
而轻节点可以不下载完整的区块链,而是可以只下载区块链中的每个区块的区块头数据,并将区块头所包含的数据作为验证根,用于以验证区块链交易的真实性。轻节点可以依附于全节点来访问区块链的更多功能。
例如,图1中示出的区块链系统103中的各个区块链节点都可以作为全节点;而图1中示出的直接耦接到区块链系统的设备4,就可以作为轻节点,依附于区块链系统103中的各个全节点。
在一种实施方式中,区块链节点可以是物理设备,也可以是在服务器或者服务器集群中实现的虚拟设备;例如,区块链节点设备可以是服务器集群中的一台物理主机,也可以是基于虚拟化技术对服务器或者服务器集群搭载的硬件资源进行虚拟化后,创建的虚拟机。每个区块链节点之间,可以通过各种类型的通信方法(比如TCP/IP)耦接在一起形成网络,来承载一个或者多个区块链。
在一种实施方式中,服务器端102可以包括用于提供区块链服务(BaaS,Blockchain as a Service)的BaaS平台(也称之为BaaS云)。BaaS平台可以通过为区块链上发生的活动(诸如订阅和通知、用户验证、数据库管理和远程更新),提供预先编写的软件的方式,面向与BaaS平台耦接的客户端侧计算设备,提供简单易用,一键部署,快速验证,灵活可定制的区块链服务,进而可以加速区块链业务应用开发、测试、上线,助力各行业区块链商业应用场景的落地。
例如,在一个例子中,与BaaS平台可以提供诸如MQ(Message Queue,消息队列)服务之类的软件;与BaaS平台耦接的客户端侧计算设备,可以订阅BaaS平台耦接的区块链系统中某一区块链上部署的智能合约,在触发执行后在区块链上产生的合约事件;而BaaS平台可以监听该智能合约在触发执行后在区块链上产生的事件,再基于MQ服务相关的软件,将该合约事件以通知消息的形式添加到消息队列中,使得订阅该消息队列的客户端侧计算设备,能够得到与上述合约事件相关的通知。
在一种实施方式中,BaaS平台还可以提供基于区块链技术的企业级平台服务,以帮助企业级客户构建安全且稳定的区块链环境,并轻松管理区块链的部署、操作、维护和开发。
例如,在一个例子中,BaaS平台可以基于云技术实现丰富的安全策略和多租户的隔离环境、基于芯片加密技术来提供高级的安全保护、基于高度可靠的数据存储,提供可以快速扩展,而不会中断的端到端的高可用性服务;
在另一个例子中,还可以提供增强的管理功能,以帮助客户构建企业级区块链网络环境;以及,还可以为标准区块链应用和数据提供本地支持,支持例如HyperledgerFabric和Enterprise Ethereum-Quorum的主流开源区块链技术,以构建开放且包容的技术生态系统。
区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。此外,还可以有上述多种类型的结合,比如私有链+联盟链、联盟链+公有链等。
其中,去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者(也可称为区块链中的节点)可以读取链上的数据记录、参与交易、以及竞争新区块的记账权等。而且,各节点可自由加入或者退出网络,并进行相关操作。
私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,其对节点具有严格限制且节点数量较少。这种类型的区块链更适合于特定机构内部使用。
联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;节点通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
基于区块链的基本特性,区块链通常是由若干个区块构成。在这些区块中分别记录有与该区块的创建时刻对应的时间戳,所有的区块严格按照区块中记录的时间戳,构成一条在时间上有序的数据链条。
对于物理世界产生的真实数据,可以将其构建成区块链所支持的标准的交易(transaction)格式,然后发布至区块链,由区块链中的节点设备对收到的交易进行共识处理,并在达成共识后,由区块链中作为记账节点的节点设备,将这笔交易打包进区块,在区块链中进行持久化存证。
其中,区块链中支持的共识算法可以包括:
第一类共识算法,即节点设备需要争夺每一轮的记账周期的记账权的共识算法;例如,工作量证明(Proof of Work,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)等共识算法;
第二类共识算法,即预先为每一轮记账周期选举记账节点(不需要争夺记账权)的共识算法;例如,实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)等共识算法。
在采用第一类共识算法的区块链网络中,争夺记账权的节点设备,都可以在接收到交易后执行该笔交易。争夺记账权的节点设备中可能有一个节点设备在本轮争夺记账权的过程中胜出,成为记账节点。记账节点可以将收到的交易与其它交易一起打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识。
在采用第二类共识算法的区块链网络中,具有记账权的节点设备在本轮记账前已经商定好。因此,节点设备在接收到交易后,如果自身不是本轮的记账节点,则可以将该交易发送至记账节点。对于本轮的记账节点,在将该交易与其它交易一起打包以生成最新区块的过程中或者之前,可以执行该交易。记账节点在生成最新区块后,可以将该最新区块或者该最新区块的区块头发送至其它节点设备进行共识。
如上所述,无论区块链采用以上示出的哪种共识算法,本轮的记账节点都可以将接收到的交易打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识验证。如果其它节点设备接收到最新区块或者该最新区块的区块头后,经验证没有问题,可以将该最新区块追加到原有的区块链末尾,从而完成区块链的记账过程。其它节点验证记账节点发来的新的区块或区块头的过程中,也可以执行该区块中的包含的交易。
区块链上部署的智能合约,通常只能引用区块链上存储的数据内容;而在实际应用中,对基于智能合约技术实现的一些复杂的业务场景,智能合约可能还需要引用一些链外的数据实体上的外部数据。
在这种场景下,区块链上部署的智能合约,可以通过Oracle预言机,来引用链外的数据实体上的数据,进而实现智能合约与真实世界的数据实体之间的数据交互。其中,链外的数据实体,可以包括诸如部署在链外的中心化的服务器或者数据中心,等等。
需要说明的是,跨链中继用于连接两个区块链,而Oracle预言机用于连接区块链与链外的数据实体,实现区块链与真实世界的数据交互。
在实际应用中,在为区块链上的智能合约部署预言机时,可以先在区块链上部署一个与预言机对应的预言机智能合约;其中,该预言机智能合约用于维护预言机发给区块链上的智能合约的外部数据;例如,预言机发给区块链上的智能合约的外部数据,可以存储在预言机智能合约的账户存储空间中。
当区块链上的目标智能合约被调用时,可以从该预言机智能合约的账户存储空间中,来读取该目标智能合约所需的外部数据,来完成智能合约的调用过程。
需要说明的是,预言机在向区块链上的智能合约发送外部数据时,可以采用主动发送的方式,也可以采用被动发送的方式。
在一种实现方式中,链外的数据实体可以将需要提供给目标智能合约的外部数据,利用预言机的私钥进行签名后,发送给上述预言机智能合约;例如,在时间时,可以采用周期性发送的方式,将签名后的上述外部数据发送给上述预言机智能合约;
而在上述预言机智能合约可以维护预言机的CA证书,在收到链外的数据实体发送的外部数据后,可以使用该CA证书中维护的该预言机的公钥,对该外部数据的签名进行验证,并在验证通过后,将链外的数据实体发送的外部数据在该预言机智能合约的账户存储空间中进行存储。
在另一种实现方式中,当区块链上的目标智能合约被调用时,如果从该预言机智能合约的账户存储空间中,并未读取到该目标智能合约所需的外部数据,此时该预言机智能合约,可以利用智能合约的事件机制,与上述预言机进行交互,并由上述预言机将该目标智能合约所需的外部数据,发送至该预言机智能合约的账户存储空间中。
例如,当区块链上的目标智能合约被调用时,如果从该预言机智能合约的账户存储空间中,并未读取到该目标智能合约所需的外部数据,此时该预言机智能合约,可以生成一个外部数据获取事件,并将该外部数据获取事件记录到调用该智能合约的那笔交易的交易日志中,并将该交易日志存储到节点设备的存储空间;而上述预言机可以监听节点设备的存储空间中存储的该预言机智能合约产生的交易日志,并在监听到交易日志中的外部数据获取事件后,响应监听到的该外部数据获取事件,将上述目标智能合约所需的外部数据,发送给上述预言机智能合约。
在实际应用中,可以将现实世界中的一些非货币属性的实体资产,转化成为能够在区块链上流通的虚拟资产。
需要说明的是,将现实世界中的非货币属性的实体资产转化为区块链上的虚拟资产,通常是指将该实体资产与区块链上的虚拟资产进行“锚定”,作为这些虚拟资产的价值支撑,进而在区块链上产生与实体资产的价值匹配,且能够在区块链上的区块链账户之间进行流通的虚拟资产的过程。
对于接入上述区块链的用户而言,该用户可以在区块链上创建一笔与现实世界的非货币属性的实体资产价值匹配的虚拟资产,在区块链上进行流通;例如,该用户可以将持有的房产、股票、贷款合同、票据和应收账款等非货币属性的实体资产,转换为价值匹配的虚拟资产在区块链上流通。
请参考图2,图2是本说明书一示例性实施例示出的一种基于区块链的资产管理方法的流程图。
结合如图1所示的网络环境,上述基于区块链的资产管理方法可以应用于区块链中的节点设备;该方法可以包括以下步骤:
步骤202,接收所述资产管理方对接的资产创建方发送的第一合约调用交易;其中,所述第一合约调用交易包括目标资产类型的类型标识;
步骤204,响应于所述第一合约调用交易,调用所述第一智能合约中的第一获取逻辑,获取所述资产管理方在所述区块链中定义的与所述类型标识指示的所述目标资产类型对应的资产模型;其中,所述资产模型包括与所述目标资产类型对应的资产创建信息;以及,
步骤206,在获取到与所述目标资产类型对应的资产模型后,进一步调用所述第一智能合约中的创建逻辑,基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及获取到的与所述目标资产类型对应的资产模型中的资产创建信息,在所述区块链中创建标准化的区块链资产。
在本实施例中,一方面,区块链的运营方可以定义一个或多个资产类型,以及分别与各个资产类型对应的资产格式。
另一方面,资产管理方可以预先接入上述区块链,即可以与该区块链中的节点设备建立通信连接;后续可以在该区块链上部署与资产相关的智能合约(称为第一智能合约)。
在本实施例中,与上述资产管理方对接的资产创建方可以将用于调用上述第一智能合约的合约调用交易(称为第一合约调用交易)发布至上述区块链。
其中,该第一合约调用交易可以包括该区块链的运营商定义的某个资产类型(称为目标资产类型)的类型标识。
在本实施例中,上述区块链中的节点设备在接收到上述第一合约调用交易时,可以响应于该第一合约调用交易,调用上述第一智能合约中的获取逻辑(称为第一获取逻辑),获取上述资产管理方在上述区块链中定义的与上述目标资产类型(即该第一合约调用交易中的类型标识指示的资产类型)对应的资产模型。
其中,该资产模型可以包括与该目标资产类型对应的资产创建信息。在面向对象的编程过程中,可以将待创建的与该目标资产类型对应的区块链资产作为对象,此时该资产模型为用于创建与该目标资产类型对应的区块链资产的类,即该资产模型为与该目标资产类型对应的区块链资产的实例。
后续,可以进一步调用该第一智能合约中的创建逻辑,基于上述区块链的运营方定义的与该目标资产类型对应的资产格式,以及获取到的与该目标资产类型对应的资产模型中的资产创建信息,在该区块链中创建与该目标资产类型对应的区块链资产(即前述能够在该区块链上流通的虚拟资产)。
除此之外,在一种实施方式中,还可以针对创建的上述区块链资产计算hash值,并将计算得到的hash值作为该区块链资产的资产标识。
需要说明的是,由于上述区块链的运营方定义了资产类型,以及与该资产类型对应的资产格式,而接入上述区块链的所有资产管理方在该区块链中定义的与该资产类型对应的资产模型,都指示了按照与该资产类型对应的资产格式创建区块链资产,因此对于与其中任一资产管理方对接的资产创建方而言,这些资产创建方在该区块链上创建的与该资产类型对应的区块链资产的资产格式相同,都是由该区块链的运营方定义的与该资产类型对应的资产格式;在这种情况下,可以将在上述区块链中创建的上述区块链资产作为标准化的区块链资产。
在一种实施方式中,上述区块链的运营方可以包括区块链服务平台;上述资产管理方可以包括接入该区块链服务平台的金融机构;上述资产创建方可以包括由该金融机构提供资产服务的用户客户端。
在实际应用中,上述区块链的运营方、上述资产管理方和上述资产创建方可以指代同一实体,例如:这三者都可以是某家金融机构或某个个体;或者,也可以指代不同的实体;本说明书对此不作限制。
结合如图1所示的网络环境,上述区块链可以包括该网络环境中的区块链系统103;该区块链中的节点设备可以包括区块链系统103中的区块链节点1、区块链节点2、区块链节点3、区块链节点4和区块链节点i等;
作为上述区块链的运营方的区块链服务平台,可以包括该网络环境中的服务器端102,即与该区块链服务平台对应的电子设备可以是该网络环境中的服务器端102;
为了保障上述区块链的数据安全,并便于对该区块链进行管理和维护,作为上述资产管理方的金融机构,通常不会直接与该区块链中的节点设备建立通信连接,而是通过与区块链服务平台建立通信连接,接入该区块链;在这种情况下,该金融机构可以包括该网络环境中的客户端侧计算设备101中的设备1、设备2、设备3或者设备5,即与该金融机构对应的电子设备可以是该网络环境中的客户端侧计算设备101中的设备1、设备2、设备3或设备5;
作为上述资产创建方的由上述金融机构提供资产服务的用户客户端,可以包括与该网络环境中的客户端侧计算设备101中的设备1、设备2、设备3或设备5建立通信连接的用户客户端;例如,假设与该金融机构对应的电子设备为设备5,则与该用户客户端对应的电子设备可以是设备1或设备2;假设与该金融机构对应的电子设备为设备1、设备2或设备3,则该用户客户端可以是与设备1、设备2或设备3建立通信连接的用户客户端。
请参考图3,图3是本说明书一示例性实施例示出的另一种基于区块链的资产管理方法的流程图。
结合如图1所示的网络环境,上述基于区块链的资产管理方法可以应用于区块链中的节点设备;该方法可以包括以下步骤:
步骤302,接收所述资产管理方对接的资产创建方发送的第一合约调用交易;其中,所述第一合约调用交易包括目标资产类型的类型标识;
步骤304,响应于所述第一合约调用交易,调用所述第一智能合约中的第一获取逻辑,获取所述资产管理方在所述区块链中定义的与所述类型标识指示的所述目标资产类型对应的资产模型;其中,所述资产模型包括与所述目标资产类型对应的资产创建信息;以及,
步骤306,在获取到与所述目标资产类型对应的资产模型后,进一步向所述第二智能合约发送合约间调用消息,所述合约间调用消息包括获取到的与所述目标资产类型对应的资产模型中的资产创建信息,以调用所述第二智能合约中的创建逻辑,基于所述运营方定义的与所述目标资产类型对应的资产格式,以及所述资产创建信息,在所述区块链中创建标准化的区块链资产,并将创建的所述区块链资产的资产标识返回至所述第一智能合约。
在本实施例中,一方面,区块链的运营方可以定义一个或多个资产类型,以及分别与各个资产类型对应的资产格式,并在该区块链上部署智能合约(称为第二智能合约)。
其中,该第二智能合约可以包括与资产相关的合约代码;具体地,该第二智能合约的合约代码可以包括与创建逻辑对应的合约代码;在实际应用中,通过运行该第二智能合约中与创建逻辑对应的合约代码,可以实现创建逻辑,在该区块链中创建与该目标资产类型对应的区块链资产;
此外,该第二智能合约可以维护上述区块链的运营方定义的资产类型和与该资产类型对应的资产格式。
另一方面,资产管理方可以预先接入上述区块链,即可以与该区块链中的节点设备建立通信连接;后续可以在该区块链上部署与资产相关的智能合约(称为第一智能合约)。
在本实施例中,与上述资产管理方对接的资产创建方可以将用于调用上述第一智能合约的合约调用交易(称为第一合约调用交易)发布至上述区块链。
其中,该第一合约调用交易可以包括该区块链的运营商定义的某个资产类型(称为目标资产类型)的类型标识。
在本实施例中,上述区块链中的节点设备在接收到上述第一合约调用交易时,可以响应于该第一合约调用交易,调用上述第一智能合约中的获取逻辑(称为第一获取逻辑),获取上述资产管理方在上述区块链中定义的与上述目标资产类型(即该第一合约调用交易中的类型标识指示的资产类型)对应的资产模型。
其中,该资产模型可以包括与该目标资产类型对应的资产创建信息。在面向对象的编程过程中,可以将待创建的与该目标资产类型对应的区块链资产作为对象,此时该资产模型为用于创建与该目标资产类型对应的区块链资产的类,即该资产模型为与该目标资产类型对应的区块链资产的实例。
后续,可以进一步向上述第二智能合约发送合约间调用消息;其中,该合约间调用消息可以包括通过调用该第一智能合约中的第一获取逻辑,获取到的与上述目标资产类型对应的资产模型中的资产创建信息;
通过向该第二智能合约发送该合约间调用消息,可以调用该第二智能合约中的创建逻辑,基于上述区块链的运营方定义的与该目标资产类型对应的资产格式,以及获取到的与该目标资产类型对应的资产模型中的资产创建信息,在该区块链中创建与该目标资产类型对应的区块链资产(即前述能够在该区块链上流通的虚拟资产)。
除此之外,还可以将创建的该区块链资产的资产标识返回至该第一智能合约;具体地,可以针对创建的该区块链资产计算hash值,并将计算得到的hash值作为该区块链资产的资产标识,返回至该第一智能合约。
需要说明的是,由于上述区块链的运营方定义了资产类型,以及与该资产类型对应的资产格式,而接入上述区块链的所有资产管理方在该区块链中定义的与该资产类型对应的资产模型,都指示了按照与该资产类型对应的资产格式创建区块链资产,因此对于与其中任一资产管理方对接的资产创建方而言,这些资产创建方在该区块链上创建的与该资产类型对应的区块链资产的资产格式相同,都是由该区块链的运营方定义的与该资产类型对应的资产格式;在这种情况下,可以将在上述区块链中创建的上述区块链资产作为标准化的区块链资产。
在一种实施方式中,上述区块链的运营方可以包括区块链服务平台;上述资产管理方可以包括接入该区块链服务平台的金融机构;上述资产创建方可以包括由该金融机构提供资产服务的用户客户端。
在实际应用中,上述区块链的运营方、上述资产管理方和上述资产创建方可以指代同一实体,例如:这三者都可以是某家金融机构或某个个体;或者,也可以指代不同的实体;本说明书对此不作限制。
结合如图1所示的网络环境,上述区块链可以包括该网络环境中的区块链系统103;该区块链中的节点设备可以包括区块链系统103中的区块链节点1、区块链节点2、区块链节点3、区块链节点4和区块链节点i等;
作为上述区块链的运营方的区块链服务平台,可以包括该网络环境中的服务器端102,即与该区块链服务平台对应的电子设备可以是该网络环境中的服务器端102;
为了保障上述区块链的数据安全,并便于对该区块链进行管理和维护,作为上述资产管理方的金融机构,通常不会直接与该区块链中的节点设备建立通信连接,而是通过与区块链服务平台建立通信连接,接入该区块链;在这种情况下,该金融机构可以包括该网络环境中的客户端侧计算设备101中的设备1、设备2、设备3或者设备5,即与该金融机构对应的电子设备可以是该网络环境中的客户端侧计算设备101中的设备1、设备2、设备3或设备5;
作为上述资产创建方的由上述金融机构提供资产服务的用户客户端,可以包括与该网络环境中的客户端侧计算设备101中的设备1、设备2、设备3或设备5建立通信连接的用户客户端;例如,假设与该金融机构对应的电子设备为设备5,则与该用户客户端对应的电子设备可以是设备1或设备2;假设与该金融机构对应的电子设备为设备1、设备2或设备3,则该用户客户端可以是与设备1、设备2或设备3建立通信连接的用户客户端。
下面结合如图1所示的与区块链相关的网络环境,针对上述目标资产类型,从资产定义和资产创建两个方面,对本实施例中在上述区块链中创建与该目标资产类型对应的区块链资产的流程进行解释说明。
(1)资产定义
在本实施例中,区块链的运营方可以定义一个或多个资产类型,以及分别与各个资产类型对应的资产格式。
在一种实施方式中,上述区块链的运营方可以在该区块链上部署智能合约(称为第三智能合约)。
其中,该第三智能合约可以包括与存证逻辑对应的合约代码;在实际应用中,通过运行该第三智能合约中的与存证逻辑对应的合约代码,可以实现存证逻辑,将数据在该区块链中进行存证。
在这种情况下,上述区块链的运营方可以预先定义一个或多个资产类型,以及分别与各个资产类型对应的资产格式,并将该资产类型和与该资产类型对应的资产格式打包成合约调用交易(称为第三合约调用交易);其中,该第三合约调用交易用于调用上述第三智能合约中的存证逻辑。后续,该区块链的运营方可以将该第三合约调用交易发布至该区块链。
上述区块链中的节点设备在接收到上述第三合约调用交易时,可以响应于该第三合约调用交易,调用上述第三智能合约中的存证逻辑,将该第三合约调用交易中的上述资产类型和与该资产类型对应的资产格式,在该区块链中进行存证;也即,实现了将上述区块链的运营方定义的资产类型,以及与该资产类型对应的资产格式,在该区块链中进行存证。
在实际应用中,上述区块链的运营方定义的资产类型,以及与该资产类型对应的资产格式,可以存储在上述第三智能合约的账户存储空间中。具体地,上述区块链的运营方定义的资产类型,以及与该资产类型对应的资产格式,可以存储在该第三智能合约的Storage字段中。智能合约通常会使用Merkle树;或者,基于Merkle树的数据结构,来存储和维护数据;其中,Merkle树(称为Merkle存储树)中的数据通常以key-value键值对的形式进行存储。也即,可以以key-value键值对的形式,将上述资产类型和与该资产类型对应的资产格式保存至该第三智能合约的Storage字段中的Merkle存储树中。
在另一种实施方式中,上述区块链的运营方可以将一个或多个资产类型,以及分别与各个资产类型对应的资产格式,写入至该区块链的原生代码,以实现将该资产类型和与该资产类型对应的资产格式保存在该区块链中。
在实际应用中,对于大多数区块链系统而言,这些区块链系统通常都会使用Merkle树;或者,基于Merkle树的数据结构,来存储和维护数据;其中,Merkle树(称为Merkle状态树)中的数据通常以key-value键值对的形式进行存储。也即,在一种实施方式中,可以以key-value键值对的形式,将上述资产类型和与该资产类型对应的资产格式保存至上述区块链的Merkle状态树中;或者,可以以key-value键值对的形式,将资产模型保存至上述区块链的Merkle状态树中。
举例来说,可以将资产模型的hash值作为key,并将该资产模型本身作为value,保存至用于存储该区块链的数据的Merkle树(智能合约的Storage字段中的Merkle树或区块链的Merkle状态)中。
在再一种实施方式中,上述区块链的运营方可以在与该运营方对应的中心化服务器中定义一个或多个资产类型,以及分别与各个资产类型对应的资产格式,并由该中心化服务器维护该区块链的运营方定义的一个或多个资产类型,以及分别与各个资产类型对应的资产格式;也即,未将该资产类型和与该资产类型对应的资产格式保存在该区块链中。
为了便于对上述资产类型和与该资产类型对应的资产格式进行解析,在一种实施方式中,上述区块链的运营方可以基于通用编程语言定义该资产类型,以及与该资产类型对应的资产格式。
其中,上述通用编程语言可以包括通用的声明式编程语言;进一步地,该通用的声明式编程语言可以包括领域特定语言(domain-specific languages,DSL)。也即,该通用编程语言具体可以包括领域特定语言;使用领域特定语言执行资产类型和资产格式等的定义,可以提高代码开发效率,减少编程工作量。
举例来说,上述区块链的运营商可以定义“房产”、“股票”和“应收账款”等资产类型;以及,与“房产”资产类型对应的资产格式、与“股票”资产类型对应的资产格式和与“应收账款”资产类型对应的资产格式等资产格式。
其中,资产格式可以包括:若干资产属性字段;以及,将与若干资产属性字段对应的属性值组装成区块链资产时所采用的数据结构。具体地,以“应收账款”资产类型为例,对于与“应收账款”资产类型对应的资产而言,该资产的资产属性字段可以包括:链上标识、链下标识、资产类型、金额、有效期结束日期、金融机构、应收方和应付方等;在这种情况下,如下所示,可以使用声明式编程语言定义“应收账款”资产类型,以及与“应收账款”资产类型对应的资产格式:
其中,“StandardAR”为“应收账款”资产类型的类型标识;
“idOnChain”字段表示链上标识,“idOffChain”字段表示链下标识,“assetType”字段表示资产类型,“amount”字段表示金额,“validDateUntil”字段表示有效期结束日期,“financeEnterprise”字段表示金融机构,“receivablesEnterpsie”字段表示应收方,“payableEnterpsie”字段表示应付方;
“idOnChain”、“idOffChain”、“assetType”、“financeEnterprise”、“receivablesEnterpsie”和“payableEnterpsie”为string类型的字段,“amount”为long类型的字段,“validDateUntil”为date类型的字段。
进一步地,在一种实施方式中,资产管理方可以预先接入上述区块链,即可以与该区块链中的节点设备建立通信连接;后续可以在该区块链上部署智能合约(称为第四智能合约)。
其中,该第四智能合约可以包括与存证逻辑对应的合约代码;在实际应用中,通过运行该第四智能合约中的与存证逻辑对应的合约代码,可以实现存证逻辑,将数据在该区块链中进行存证。
在这种情况下,上述资产管理方可以预先定义与上述区块链的运营商定义的某个资产类型(称为目标资产类型)对应的资产模型,并将该资产模型打包成合约调用交易(称为第四合约调用交易);其中,该资产模型可以包括与该目标资产类型对应的资产创建信息;该第四合约调用交易用于调用上述第四智能合约中的存证逻辑。后续,该区块链的运营方可以将该第四合约调用交易发布至该区块链。
上述区块链中的节点设备在接收到上述第四合约调用交易时,可以响应于该第四合约调用交易,调用上述第四智能合约中的存证逻辑,将该第四合约调用交易中的上述资产模型,在该区块链中进行存证;也即,实现了将上述资产管理方定义的与上述目标资产类型对应的资产模型,在该区块链中进行存证。
在实际应用中,上述资产管理方定义的资产模型,可以存储在上述第四智能合约的账户存储空间中。具体地,上述区块链的运营方定义的资产类型,以及与该资产类型对应的资产格式,可以存储在该第四智能合约的Storage字段中。智能合约通常会使用Merkle树;或者,基于Merkle树的数据结构,来存储和维护数据;其中,Merkle存储树中的数据通常以key-value键值对的形式进行存储。也即,可以以key-value键值对的形式,将上述资产类型和与该资产类型对应的资产格式保存至该第四智能合约的Storage字段中的Merkle存储树中。
在实际应用中,针对上述区块链的运营方定义的任意一个资产类型,都可以由上述资产管理方定义与该资产类型对应的资产模型。
需要说明的是,一个资产类型可以与多个资产模型相对应;这些资产模型可以由不同的资产管理方定义。
对于与某个资产类型对应的资产模型而言,该资产模型可以包括与该资产类型对应的资产创建信息;在这种情况下,可以基于该资产创建信息,以及与该资产类型对应的资产格式,在上述区块链中创建与该资产类型对应的区块链资产。
在实际应用中,上述资产创建信息可以包括:针对与若干资产属性字段对应的属性值的校验规则;与待创建的区块链资产对应的状态机;等等。
具体地,在上述区块链中创建与上述资产类型对应的区块链资产时,可以由资产创建方提交与该资产类型对应的资产格式中的若干资产属性字段对应的属性值;后续,可以先按照上述资产创建信息中的校验规则,对该资产创建方提交的与这些资产属性字段对应的属性值进行校验;在校验通过之后,可以按照与该资产类型对应的资产格式,对该资产创建方提交的属性值进行组装,从而可以将组装后的与这些资产属性字段对应的属性值作为在该区块链中创建的区块链资产;此外,还可以按照该资产创建信息中的状态机,更新与创建的该区块链资产对应的状态,并将该区块链资产与该区块链资产的状态进行关联存储。
继续以前述“应收账款”资产类型为例,如下所示,可以使用声明式编程语言定义与“应收账款”资产类型对应的资产模型:
其中,“StandardAR”为“应收账款”资产类型的类型标识,“stdAr”为该资产模型的模型标识;
“STD-FUNCTIONALITY”指示在基于该资产模型创建区块链资产时,使用前述与“应收账款”资产类型对应的资产格式中的所有资产属性字段;也即,创建的与“应收账款”资产类型对应的区块链资产中包含与上述所有资产属性字段对应的属性值;
“VALIDATION”部分指示针对与上述所有资产属性字段对应的属性值的校验规则;
“STATE-MACHINE”部分指示与待创建的区块链资产对应的状态机。
如图4所示,与“应收账款”资产类型对应的资产模型中的与待创建的区块链资产对应的状态机包括:“NULL”表示无状态;在创建(CREATE)了该区块链资产之后,将该区块链资产的状态设置为“READY”状态;在对该区块链资产进行确认(CONFIRM)之后,将该区块链资产的状态由“READY”状态切换至“CONFIRMED”状态;在对该区块链资产进行结算(SETTLE)之后,将该区块链资产的状态由“CONFIRMED”状态切换至“PARTIAL_SETTLE”状态,或者将该区块链资产的状态保持在“PARTIAL_SETTLE”状态;在对该区块链资产进行抵押(MORTGAGE)之后,将该区块链资产的状态由“CONFIRMED”状态切换至“BACKED”状态,或者将该区块链资产的状态由“PARTIAL_SETTLED”状态切换至“BACKED”状态;在对该区块链资产进行结清(CLEAR)之后,将该区块链资产的状态由“BACKED”状态切换至“CLEARED”状态。
结合如图1所示的网络环境,上述区块链可以包括该网络环境中的区块链系统103;该区块链中的节点设备可以包括区块链系统103中的区块链节点1、区块链节点2、区块链节点3、区块链节点4和区块链节点i等;
上述区块链的运营方可以包括该网络环境中的服务器端102;
上述资产管理方可以包括该网络环境中的客户端侧计算设备101中的设备5。
在一个例子中,上述区块链的运营方可以通过服务器端102定义一个或多个资产类型,以及分别与各个资产类型对应的资产格式,由服务器端102将该资产类型和与该资产类型对应的资产格式打包成上述第三合约调用交易,并将该第三合约调用交易发布至区块链系统103;其中,该第三合约调用交易用于调用上述第三智能合约中的存证逻辑。
区块链系统103中的节点设备在接收到上述第三合约调用交易时,可以响应于该第三合约调用交易,调用上述第三智能合约中的存证逻辑,将该第三合约调用交易中的上述资产类型和与该资产类型对应的资产格式,在该区块链中进行存证。
在具体实现时,参考前述在区块链中持久化存证数据的过程,服务器端102可以将上述区块链的运营方定义的上述资产类型,以及与该目标资产类型对应的资产格式打包成上述第三合约调用交易,并将该第三合约调用交易发布至区块链系统103;在这种情况下,与服务器端102建立了通信连接的区块链系统103中的节点设备可以先接收到该第三合约调用交易,再将该第三合约调用交易发送给区块链系统103中的其它节点设备。区块链系统103中的区块链节点1、区块链节点2、区块链节点3、区块链节点4和区块链节点i等各台节点设备在接收到该第三合约调用交易时,可以对该第三合约调用交易进行共识处理,并在达成共识之后,将该第三合约调用交易打包进区块,在区块链系统103中进行持久化存证。
针对打包进区块的上述第三合约调用交易,区块链系统103中的节点设备可以响应于该第三合约调用交易,运行上述第三智能合约中的与存证逻辑对应的合约代码,实现将该第三合约调用交易中的上述资产类型和与该资产类型对应的资产格式,在该区块链中进行存证。
在另一个例子中,上述区块链的运营方可以通过服务器端102将一个或多个资产类型,以及分别与各个资产类型对应的资产格式,写入至该区块链的原生代码,以实现将该资产类型和与该资产类型对应的资产格式保存在该区块链中。
在再一个例子中,服务器端102可以作为与上述区块链的运营方对应的中心化服务器;也即,该区块链的运营方可以通过服务器端102定义一个或多个资产类型,以及分别与各个资产类型对应的资产格式,并由服务器端102维护该资产类型和与该资产类型对应的资产格式。
或者,与该区块链的运营方对应的中心化服务器也可是与服务器端102耦接的中心化服务器;在这种情况下,该区块链的运营方可以通过服务器端102,在该中心化服务器中定义一个或多个资产类型,以及分别与各个资产类型对应的资产格式,并由该中心化服务器维护该资产类型和与该资产类型对应的资产格式。
上述资产管理方可以预先通过客户端侧计算设备101中的设备5接入区块链系统103;后续可以通过设备5定义与上述将用于定义与上述目标资产类型对应的资产模型,并将该资产模型打包成上述第四合约调用交易,发布至区块链系统103;其中,该第四合约调用交易用于调用上述第四智能合约中的存证逻辑。
区块链系统103中的节点设备在接收到上述第四合约调用交易时,可以响应于该第四合约调用交易,调用上述第四智能合约中的存证逻辑,将该第四合约调用交易中的上述资产模型,在该区块链中进行存证。
在具体实现时,参考前述在区块链中持久化存证数据的过程,客户端侧计算设备101中的设备5可以将上述资产管理方发起的存证请求(该存证请求包括该资产管理方定义的与上述目标资产类型对应的资产模型)发送至服务器端102,由服务器端102将该存证请求打包成上述第四合约调用交易,并将该第四合约调用交易发布至区块链系统103;在这种情况下,与服务器端102建立了通信连接的区块链系统103中的节点设备可以先接收到该第四合约调用交易,再将该第四合约调用交易发送给区块链系统103中的其它节点设备。区块链系统103中的区块链节点1、区块链节点2、区块链节点3、区块链节点4和区块链节点i等各台节点设备在接收到该第四合约调用交易时,可以对该第四合约调用交易进行共识处理,并在达成共识之后,将该第四合约调用交易打包进区块,在区块链系统103中进行持久化存证。
针对打包进区块的上述第四合约调用交易,区块链系统103中的节点设备可以响应于该第四合约调用交易,运行上述第四智能合约中的与存证逻辑对应的合约代码,实现将该第四合约调用交易中的上述资产模型,在该区块链中进行存证。
(2)资产创建
在本实施例中,另一方面,接入上述区块链的上述资产管理方可以在该区块链上部署智能合约(称为第一智能合约)。
其中,该第一智能合约可以包括与资产相关的合约代码;具体地,该第一智能合约的合约代码可以包括与获取逻辑(称为第一获取逻辑)对应的合约代码,以及与创建逻辑对应的合约代码,等等;在实际应用中,通过运行该第一智能合约中与第一获取逻辑对应的合约代码,可以实现第一获取逻辑,获取该资产管理方在该区块链中定义的与上述目标资产类型对应的资产模型;通过运行该第一智能合约中与创建逻辑对应的合约代码,可以实现创建逻辑,在该区块链中创建与该目标资产类型对应的区块链资产。
需要说明的是,上述第四智能合约和上述第一智能合约可以是同一个智能合约;也即,该智能合约的合约代码既可以包括与存证逻辑对应的合约代码,也可以包括与第一获取逻辑对应的合约代码和与创建逻辑对应的合约代码;在这种情况下,上述资产管理方在上述区块链中定义的与上述目标资产类型对应的资产模型可以存储在该智能合约的账户存储空间中,通过运行该智能合约中的与第一获取逻辑对应的合约代码,可以实现从该智能合约的账户存储空间中读取该资产模型。
或者,上述第四智能合约与上述第一智能合约可以是不同的两个智能合约;在这种情况下,上述资产管理方在上述区块链中定义的与上述目标资产类型对应的资产模型可以存储在该第四智能合约的账户存储空间中,通过运行该第一智能合约中的与第一获取逻辑对应的合约代码,可以实现从该第四智能合约的账户存储空间中读取该资产模型。
在本实施例中,与上述资产管理方对接的资产创建方可以将用于调用上述第一智能合约的合约调用交易(称为第一合约调用交易)发布至上述区块链。
其中,该第一合约调用交易可以包括上述目标资产类型的类型标识。
在本实施例中,上述区块链中的节点设备在接收到上述第一合约调用交易时,可以响应于该第一合约调用交易,调用上述第一智能合约中的第一获取逻辑,获取上述资产管理方在该区块链中定义的与上述目标资产类型(即该第一合约调用交易中的类型标识指示的资产类型)对应的资产模型;其中,该资产模型可以包括与该目标资产类型对应的资产创建信息。
在获取到上述资产管理方在上述区块链中定义的与上述目标资产类型对应的资产模型之后,可以进一步调用该第一智能合约中的创建逻辑,基于上述区块链的运营方定义的与该目标资产类型对应的资产格式,以及获取到的与该目标资产类型对应的资产模型中的资产创建信息,在该区块链中创建与该目标资产类型对应的区块链资产(即前述能够在该区块链上流通的虚拟资产)。
除此之外,在一种实施方式中,还可以针对创建的上述区块链资产计算hash值,并将计算得到的hash值作为该区块链资产的资产标识。
需要说明的是,由于上述区块链的运营方定义了资产类型,以及与该资产类型对应的资产格式,而接入上述区块链的所有资产管理方在该区块链中定义的与该资产类型对应的资产模型,都指示了按照与该资产类型对应的资产格式创建区块链资产,因此对于与其中任一资产管理方对接的资产创建方而言,这些资产创建方在该区块链上创建的与该资产类型对应的区块链资产的资产格式相同,都是由该区块链的运营方定义的与该资产类型对应的资产格式;在这种情况下,可以将在上述区块链中创建的上述区块链资产作为标准化的区块链资产。
在一种实施方式中,上述区块链的运营方可以将一个或多个资产类型,以及分别与各个资产类型对应的资产格式,写入至该区块链的原生代码。
在这种情况下,上述区块链中的节点设备可以进一步调用上述第一智能合约中的创建逻辑,获取上述区块链的运营方在上述区块链的原生代码中定义的与上述目标资产类型对应的资产格式;
后续,可以基于该区块链的运营方定义的该目标资产类型,以及上述资产管理方在该区块链中定义的与该目标资产类型对应的资产模型中的资产创建信息,在该区块链中创建与该目标资产类型对应的区块链资产;此外,还可以针对创建的该区块链资产计算hash值,并将计算得到的hash值作为该区块链资产的资产标识。
在另一种实施方式中,上述区块链的运营方可以在与该运营方对应的中心化服务器维护的一个或多个资产类型,以及分别与各个资产类型对应的资产格式。
在这种情况下,上述区块链中的节点设备可以进一步调用上述第一智能合约中的创建逻辑,通过Oracle预言机获取与上述区块链的运营方对应的中心化服务器维护的该运营方定义的与上述目标资产类型对应的资产格式;
后续,可以基于该区块链的运营方定义的该目标资产类型,以及上述资产管理方在该区块链中定义的与该目标资产类型对应的资产模型中的资产创建信息,在该区块链中创建与该目标资产类型对应的区块链资产;此外,还可以针对创建的该区块链资产计算hash值,并将计算得到的hash值作为该区块链资产的资产标识。
或者,在本实施例中,接入上述区块链的上述资产管理方可以在该区块链上部署上述第一智能合约;并且,该区块链的运营方可以在该区块链上部署智能合约(称为第二智能合约)。
其中,该第二智能合约可以包括与资产相关的合约代码;具体地,该第二智能合约的合约代码可以包括与创建逻辑对应的合约代码;在实际应用中,通过运行该第二智能合约中与创建逻辑对应的合约代码,可以实现创建逻辑,在该区块链中创建与该目标资产类型对应的区块链资产;
此外,该第二智能合约可以维护上述区块链的运营方定义的上述目标资产类型和与该目标资产类型对应的资产格式。
需要说明的是,上述第三智能合约和上述第二智能合约可以是同一个智能合约;也即,该智能合约的合约代码既可以包括与存证逻辑对应的合约代码,也可以包括与创建逻辑对应的合约代码;在这种情况下,上述区块链的运营方定义的上述目标资产类型,以及与该目标资产类型对应的资产格式,可以存储在该智能合约的账户存储空间中,通过运行该智能合约中的与创建逻辑对应的合约代码,可以实现从该智能合约的账户存储空间中读取该资产模型。
或者,上述第三智能合约与上述第二智能合约可以是不同的两个智能合约;在这种情况下,上述区块链的运营方定义的上述目标资产类型,以及与该目标资产类型对应的资产格式,可以存储在该第三智能合约的账户存储空间中,通过运行该第二智能合约中的与创建逻辑对应的合约代码,可以实现从该第三智能合约的账户存储空间中读取该目标资产类型,以及与该目标资产类型对应的资产格式。
在这种情况下,在获取到上述资产管理方在上述区块链中定义的与上述目标资产类型对应的资产模型之后,可以向上述第二智能合约发送合约间调用消息;其中,该合约间调用消息可以包括通过调用该第一智能合约中的第一获取逻辑,获取到的与上述目标资产类型对应的资产模型中的资产创建信息;
通过向该第二智能合约发送该合约间调用消息,可以调用该第二智能合约中的创建逻辑,基于上述区块链的运营方定义的与该目标资产类型对应的资产格式,以及获取到的与该目标资产类型对应的资产模型中的资产创建信息,在该区块链中创建与该目标资产类型对应的区块链资产(即前述能够在该区块链上流通的虚拟资产)。
除此之外,还可以将创建的该区块链资产的资产标识返回至该第一智能合约;具体地,可以针对创建的该区块链资产计算hash值,并将计算得到的hash值作为该区块链资产的资产标识,返回至该第一智能合约。
结合如图1所示的网络环境,与作为上述资产管理方的设备5对接的上述资产创建方可以包括该网络环境中的客户端侧计算设备101中的设备1或设备2。
上述资产管理方可以预先通过设备5在区块链系统103中部署与资产相关的上述第一智能合约;上述资产创建方可以通过与设备5建立了通信连接的设备1将上述第一合约调用交易发布至区块链系统103。
其中,该第一合约调用交易可以包括上述目标资产类型的类型标识。
区块链系统103中的节点设备在接收到上述第一合约调用交易时,可以响应于该第一合约调用交易,调用上述第一智能合约中的第一获取逻辑,获取上述资产管理方在上述区块链中定义的与上述目标资产类型对应的资产模型;其中,该资产模型可以包括与该目标资产类型对应的资产创建信息。
在一个例子中,上述区块链的运营方可以预先通过服务器端102在区块链系统103中部署与资产相关的上述第二智能合约;该第二智能合约可以维护该区块链的运营方定义的上述目标资产类型和与该目标资产类型对应的资产格式。
在通过调用上述第一智能合约中的第一获取逻辑,获取到了上述资产模型之后,可以进一步向上述第二智能合约发送合约间调用消息,该合约间调用消息可以包括获取到的上述资产管理方在区块链系统103中定义的与上述目标资产类型对应的资产模型中的资产创建信息,以调用该第二智能合约中的创建逻辑,基于上述区块链的运营方定义的该目标资产类型,以及该合约间调用消息中的资产创建信息,在区块链系统103中创建与该目标资产类型对应的区块链资产;此外,还可以针对创建的该区块链资产计算hash值,并将计算得到的hash值作为该区块链资产的资产标识,返回至该第一智能合约。
在另一个例子中,上述区块链的运营方可以预先通过服务器端102将一个或多个资产类型,以及分别与各个资产类型对应的资产格式,写入至区块链系统103的原生代码。
在通过调用上述第一智能合约中的第一获取逻辑,获取到了上述资产模型之后,可以进一步调用该第一智能合约中的创建逻辑,获取上述区块链的运营方在区块链系统103的原生代码中定义的与上述目标资产类型对应的资产格式,并基于该区块链的运营方定义的该目标资产类型,以及上述资产管理方在区块链系统103中定义的与该目标资产类型对应的资产模型中的资产创建信息,在区块链系统103中创建与该目标资产类型对应的区块链资产;此外,还可以针对创建的该区块链资产计算hash值,并将计算得到的hash值作为该区块链资产的资产标识。
在再一个例子中,上述区块链的运营方可以预先将定义的一个或多个资产类型,以及分别与各个资产类型对应的资产格式保存在服务器端102中。
在通过调用上述第一智能合约中的第一获取逻辑,获取到了上述资产模型之后,可以进一步调用该第一智能合约中的创建逻辑,通过Oracle预言机获取与上述区块链的运营方对应的中心化服务器维护的该运营方定义的与上述目标资产类型对应的资产格式,并基于该区块链的运营方定义的该目标资产类型,以及上述资产管理方在区块链系统103中定义的与该目标资产类型对应的资产模型中的资产创建信息,在区块链系统103中创建与该目标资产类型对应的区块链资产;此外,还可以针对创建的该区块链资产计算hash值,并将计算得到的hash值作为该区块链资产的资产标识。
在一种实施方式中,上述区块链的运营方在上述区块链中定义的与某个资产类型对应的资产格式,可以包括:该资产类型的若干资产属性字段;
上述资产管理方在该区块链中定义的与该资产类型对应的资产模型中的资产创建信息,可以包括:针对与上述若干资产属性字段对应的属性值的校验规则;
由上述资产创建方发起的上述第一合约调用交易,可以包括:该资产创建方提交的与上述若干资产属性字段对应的属性值。
在这种情况下,在基于上述资产模型中的资产创建信息,以及与上述目标资产类型对应的资产格式,在上述区块链中创建区块链资产时,可以先按照该资产模型中的针对与上述若干资产属性字段对应的属性值的校验规则,对上述资产创建方提交的与这些资产属性字段对应的属性值进行校验;在校验通过之后,可以按照与该资产类型对应的资产格式,对该资产创建方提交的属性值进行组装,从而可以将组装后的与这些资产属性字段对应的属性值作为在该区块链中创建的区块链资产。
结合前述与“应收账款”资产类型对应的资产格式,以及与“应收账款”资产类型对应的资产模型,该资产模型指示使用与“应收账款”资产类型对应的资产格式中的所有资产属性字段创建区块链资产;但在实际应用中,资产模型也可以指示使用部分资产属性字段创建区块链资产;本说明书对此不作限制。
在示出的一种实施方式中,上述资产管理方在上述区块链中定义的与上述资产类型对应的资产模型中的资产创建信息,可以包括:与待创建的区块链资产对应的状态机。
在这种情况下,在上述区块链中创建了标准化的区块链资产之后,可以按照上述资产模型中的与待创建的区块链资产对应的状态机,更新与创建的该区块链资产对应的状态,并将该区块链资产与该区块链资产的状态进行关联存储。
在实际应用中,上述资产管理方在上述区块链中定义的与上述资产类型对应的资产模型中的资产创建信息,可以包括:针对与上述若干资产属性字段对应的属性值的校验规则;以及,与待创建的区块链资产对应的状态机。
在这种情况下,可以先按照上述资产模型中的针对与上述若干资产属性字段对应的属性值的校验规则,对上述资产创建方提交的与这些资产属性字段对应的属性值进行校验;在校验通过之后,可以按照与该资产类型对应的资产格式,对该资产创建方提交的属性值进行组装,从而可以将组装后的与这些资产属性字段对应的属性值作为在该区块链中创建的区块链资产;后续,可以按照该资产模型中的与待创建的区块链资产对应的状态机,更新与创建的该区块链资产对应的状态,并将该区块链资产与该区块链资产的状态进行关联存储。
继续以前述“应收账款”资产类型为例,如下所示,可以使用声明式编程语言构建用于创建与“应收账款”资产类型对应的资产的资产创建交易:
其中,“StandardAR”为“应收账款”资产类型的类型标识,“stdAr”为该资产模型的模型标识。
上述区块链中的节点设备可以响应于该资产创建交易,在本地的虚拟机中执行该资产创建交易,以运行与该资产创建交易对应的该区块链的原生代码,实现先按照与“应收账款”资产类型对应的资产模型中的校验规则对该资产创建交易中的与资产属性字段对应的属性值进行校验;
例如,可以按照“AMOUNT:RULE_GREATER_THAN_ZERO”的校验规则,校验该资产创建交易中的与“amount”(即余额)字段对应的属性值是否大于0;并且,按照“VALID_DATE_UNTIL:RULE_GREATER_THAN_30”的校验规则,校验该资产创建交易中的与“validDateUntil”(即有效期结束日期)字段对应的属性值与当前日期之间的间隔天数是否大于30。
如果校验通过,则可以针对与“应收账款”资产类型对应的资产模型中,使用的与“应收账款”资产类型对应的资产格式中的若干资产属性字段,基于该资产创建交易中包含的与这些资产属性字段对应的属性值,以及与“应收账款”资产类型对应的资产格式,在该区块链中创建与“应收账款”资产类型对应区块链资产;
其中,与“应收账款”资产类型对应的资产模型中使用的资产属性字段包括与“应收账款”资产类型对应的资产格式中的所有资产属性字段,即链上标识、链下标识、资产类型、金额、有效期结束日期、金融机构、应收方和应付方;与这些资产属性字段对应的属性值包括:“12345”、“12345”、“StandardAR”、10000000、“2021.01.01”、“企业A”、“企业B”、“企业C”。
除此之外,按照与“应收账款”资产类型对应的资产模型中的与待创建的区块链资产对应的状态机,可以将在该区块链中创建的该区块链资产的状态设置为“READY”状态。
在一种实施方式中,与上述资产管理方对接的资产转移方可以将用于调用上述第一智能合约的合约调用交易(称为第二合约调用交易)发布至上述区块链。
其中,该第二合约调用交易可以包括待转移的区块链资产的资产标识。
上述区块链中的节点设备在接收到上述第二合约调用交易时,可以响应于该第二合约调用交易,调用上述第一智能合约中的获取逻辑(称为第二获取逻辑),获取该区块链中保存的与该资产转移交易中的资产标识对应的区块链资产,并在获取到该区块链资产之后,进一步调用该智能合约中的转移逻辑,对获取到的该区块链资产进行转移。
举例来说,针对在上述区块链中创建的与“应收账款”资产类型对应的区块链资产,可以将该区块链资产从应付方账户中转移至应收方账户。
在上述技术方案中,可以由区块链的运营方定义目标资产类型和与该目标资产类型对应的资产格式;区块链中的节点设备可以在接收到与资产管理方对接的资产创建方发送的第一合约调用交易时,调用第一智能合约中的第一获取逻辑,获取该资产管理方在该区块链中的定义的与该目标资产类型对应的资产模型,并进一步调用该第一智能合约中的创建逻辑,基于该区块链的运营方定义的与该目标资产类型对应的资产格式,以及获取到的与该目标资产类型对应的资产模型中的资产创建信息,在该区块链中创建标准化的区块链资产;
由于上述区块链的运营方定义了资产类型,以及与该资产类型对应的资产格式,而接入上述区块链的所有资产管理方在该区块链中定义的与该资产类型对应的资产模型,都指示了按照与该资产类型对应的资产格式创建区块链资产,因此对于与其中任一资产管理方对接的资产创建方而言,这些资产创建方在该区块链上创建的与该资产类型对应的区块链资产的资产格式相同,都是由该区块链的运营方定义的与该资产类型对应的资产格式;由此实现了在该区块链中创建标准化的区块链资产,从而便于创建的区块链资产在该区块链上流通。
与前述基于区块链的资产管理方法的实施例相对应,本说明书还提供了基于区块链的资产管理装置的实施例。
本说明书基于区块链的资产管理装置的实施例可以应用在电子设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图5所示,为本说明书基于区块链的资产管理装置所在电子设备的一种硬件结构图,除了图5所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的电子设备通常根据该基于区块链的资产管理的实际功能,还可以包括其他硬件,对此不再赘述。
请参考图6,图6是本说明书一示例性实施例示出的一种基于区块链的资产管理装置的框图。该基于区块链的资产管理装置60可以应用于如图5所示的电子设备,该电子设备可以作为区块链中的节点设备;其中,所述区块链的运营方定义了资产类型和与所述资产类型对应的资产格式;接入所述区块链的资产管理方在所述区块链上部署了与资产相关的第一智能合约;该基于区块链的资产管理装置60可以包括:
第一接收模块601,接收所述资产管理方对接的资产创建方发送的第一合约调用交易;其中,所述第一合约调用交易包括目标资产类型的类型标识;
获取模块602,响应于所述第一合约调用交易,调用所述第一智能合约中的第一获取逻辑,获取所述资产管理方在所述区块链中定义的与所述类型标识指示的所述目标资产类型对应的资产模型;其中,所述资产模型包括与所述目标资产类型对应的资产创建信息;以及,
创建模块603,在获取到与所述目标资产类型对应的资产模型后,进一步调用所述第一智能合约中的创建逻辑,基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及获取到的与所述目标资产类型对应的资产模型中的资产创建信息,在所述区块链中创建标准化的区块链资产。
在本实施例中,所述运营方在所述区块链的原生代码中定义了所述目标资产类型和与所述目标资产类型对应的资产格式;
所述创建模块603:
获取所述运营方在所述区块链的原生代码中定义的与所述目标资产类型对应的资产格式;
基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及获取到的与所述目标资产类型对应的资产模型中的资产创建信息,在所述区块链中创建标准化的区块链资产。
在本实施例中,与所述运营方对应的中心化服务器维护了所述运营方定义的所述目标资产类型和与所述目标资产类型对应的资产格式;
所述创建模块603:
通过Oracle预言机获取所述中心化服务器维护的所述运营方定义的与所述目标资产类型对应的资产格式;
基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及获取到的与所述目标资产类型对应的资产模型中的资产创建信息,在所述区块链中创建标准化的区块链资产。
在本实施例中,所述资产模型;或者,所述目标资产类型和与所述目标资产类型对应的资产格式,以key-Value键值对的形式,保存在所述区块链的Merkle状态树中。
在本实施例中,所述资产格式包括若干资产属性字段;所述第一合约调用交易还包括所述资产创建方提交的与所述若干资产属性字段对应的属性值;所述资产创建信息包括针对与所述若干资产属性字段对应的属性值的校验规则;
所述创建模块603:
基于所述资产模型中的校验规则对所述资产创建方提交的与所述若干资产属性字段对应的属性值进行校验;
如果校验通过,则进一步基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及所述属性值,在所述区块链中创建标准化的区块链资产。
在本实施例中,所述资产创建信息包括与所述区块链资产对应的状态机;
所述创建模块603:
在所述区块链中创建标准化的区块链资产之后,基于所述资产模型中的状态机,更新与所述区块链资产对应的资产状态。
在本实施例中,所述装置60还包括:
第二接收模块604,接收所述资产管理方对接的资产转移方发送的第二合约调用交易;其中,所述第二合约调用交易包括所述区块链资产的资产标识;
转移模块605,响应于所述第二合约调用交易,调用所述第一智能合约中的第二获取逻辑,获取所述区块链保存的与所述资产标识对应的区块链资产,并在获取到与所述资产标识对应的区块链资产后,进一步调用所述智能合约中的转移逻辑,对获取到的与所述资产标识对应的区块链资产进行资产转移。
在本实施例中,所述区块链的运营方定义的所述目标资产类型和与所述目标资产类型对应的资产格式包括:所述区块链的运营方基于通用编程语言定义的所述目标资产类型和与所述目标资产类型对应的资产格式;所述资产管理方在所述区块链中定义的与所述目标资产类型对应的资产模型包括:所述资产管理方基于所述通用编程语言在所述区块链中定义的与所述目标资产类型对应的资产模型。
在本实施例中,所述通用编程语言包括通用的声明式编程语言。
在本实施例中,所述通用的声明式编程语言包括领域特定语言。
在本实施例中,所述运营方包括区块链服务平台;所述资产管理方包括接入所述区块链服务平台的金融机构;所述资产创建方包括由所述金融机构提供资产服务的用户客户端。
请参考图7,图7是本说明书一示例性实施例示出的另一种基于区块链的资产管理装置的框图。该基于区块链的资产管理装置70可以应用于如图5所示的电子设备,该电子设备可以作为区块链中的节点设备;其中,所述区块链的运营方在所述区块链上部署了与资产相关的第二智能合约;所述第二智能合约维护了所述运营方定义的资产类型和与所述资产类型对应的资产格式;接入所述区块链的资产管理方在所述区块链上部署了与资产相关的第一智能合约;该基于区块链的资产管理装置70可以包括:
第一接收模块701,接收所述资产管理方对接的资产创建方发送的第一合约调用交易;其中,所述第一合约调用交易包括目标资产类型的类型标识;
获取模块702,响应于所述第一合约调用交易,调用所述第一智能合约中的第一获取逻辑,获取所述资产管理方在所述区块链中定义的与所述类型标识指示的所述目标资产类型对应的资产模型;其中,所述资产模型包括与所述目标资产类型对应的资产创建信息;以及,
创建模块703,在获取到与所述目标资产类型对应的资产模型后,进一步向所述第二智能合约发送合约间调用消息,所述合约间调用消息包括获取到的与所述目标资产类型对应的资产模型中的资产创建信息,以调用所述第二智能合约中的创建逻辑,基于所述运营方定义的与所述目标资产类型对应的资产格式,以及所述资产创建信息,在所述区块链中创建标准化的区块链资产,并将创建的所述区块链资产的资产标识返回至所述第一智能合约。
在本实施例中,所述资产模型;或者,所述目标资产类型和与所述目标资产类型对应的资产格式,以key-Value键值对的形式,保存在所述第二智能合约的Merkle存储树中。
在本实施例中,所述资产格式包括若干资产属性字段;所述第一合约调用交易还包括所述资产创建方提交的与所述若干资产属性字段对应的属性值;所述资产创建信息包括针对与所述若干资产属性字段对应的属性值的校验规则;
所述创建模块703:
基于所述资产模型中的校验规则对所述资产创建方提交的与所述若干资产属性字段对应的属性值进行校验;
如果校验通过,则进一步基于所述区块链的运营方定义的与所述目标资产类型对应的资产格式,以及所述属性值,在所述区块链中创建标准化的区块链资产。
在本实施例中,所述资产创建信息包括与所述区块链资产对应的状态机;
所述创建模块703:
在所述区块链中创建标准化的区块链资产之后,基于所述资产模型中的状态机,更新与所述区块链资产对应的资产状态。
在本实施例中,所述装置70还包括:
第二接收模块704,接收所述资产管理方对接的资产转移方发送的第二合约调用交易;其中,所述第二合约调用交易包括所述区块链资产的资产标识;
转移模块705,响应于所述第二合约调用交易,调用所述第一智能合约中的第二获取逻辑,获取所述区块链保存的与所述资产标识对应的区块链资产,并在获取到与所述资产标识对应的区块链资产后,进一步调用所述智能合约中的转移逻辑,对获取到的与所述资产标识对应的区块链资产进行资产转移。
在本实施例中,所述区块链的运营方定义的所述目标资产类型和与所述目标资产类型对应的资产格式包括:所述区块链的运营方基于通用编程语言定义的所述目标资产类型和与所述目标资产类型对应的资产格式;所述资产管理方在所述区块链中定义的与所述目标资产类型对应的资产模型包括:所述资产管理方基于所述通用编程语言在所述区块链中定义的与所述目标资产类型对应的资产模型。
在本实施例中,所述通用编程语言包括通用的声明式编程语言。
在本实施例中,所述通用的声明式编程语言包括领域特定语言。
在本实施例中,所述运营方包括区块链服务平台;所述资产管理方包括接入所述区块链服务平台的金融机构;所述资产创建方包括由所述金融机构提供资产服务的用户客户端。
上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。