非同质化数字货币的生成流转方法及系统与流程

文档序号:26488051发布日期:2021-08-31 17:43阅读:198来源:国知局
非同质化数字货币的生成流转方法及系统与流程

本发明属于区块链及数字货币领域,具体涉及一种非同质化数字货币的生成流转方法及系统。



背景技术:

非同质化数字货币(nft)是一种具有唯一性、不可分割性、差异性等特点的区块链链上数字资产,可通过将线下的数据内容借由链接进行链上映射成为数据内容的资产性载体,实现数据内容的价值流转,从而可标记原生数字资产所有权锚定现实世界中商品。通过其特性,nft给予现实资产虚拟化提供了一个可行途径,在数字化加速的当下具有重大的意义。在nbatopshot和beeple的天价画作将其推上风口浪尖后,时至今日,nft已逐渐成为区块链技术由传统的极客圈扩展到艺术圈、文化消费圈的标志性代表之一,截至2020年年底,nft市场交易量超过2.5亿美元,影响力凸显。

nft的现实使用价值是建立在其所有权代表以及数字资产属性上,其价值也是真实性、可转让性以及所有权属的总和,在这一背景下,从数字商品(如存在于虚拟世界中的物品)到物理资产的债权(如服装或房地产)都可用nft表示。目前,游戏、艺术品、域名、保险、收藏品、虚拟资产、现实资产、身份等领域均有nft涉及,但从细分领域来看,虚拟世界、艺术品及游戏领域为2020年nft最为主要的应用领域,三者总共占比nft应用领域的71%,与之对应的市场规模1.40千万美元、1.29千万美元和1.29千万美元。而从长远而言,nft作为现实资产映射虚拟资产的媒介容器,在数字经济的浪潮中将持续引爆数字化资产与数字化营销需求。

尽管nft领域优势明显,发展潜力巨大,但仍不可否认的是,现如今nft广泛应用仍存着较大的挑战。较为严峻的是现如今水涨船高的nft价格炒作,相对于其应用现状,nft市场定价机制尚未完善,价值评估体系不成熟,目前存在着较大的泡沫,市场规模虚高,长期而言应用创新模式仍需验证。其次,nft基础设施仍较为局限,多是由目前的以太坊(eth)、flow和wax等公链闭门造车,呈现出垄断的格局,长此以往将会对nft整个生态的发展带来一定的制约。同时,nft的交易、创造与验证等过程中伴随着高耗能、低效率等显著特点,交易费用水涨船高。

所以,面对nft的众多挑战,亟需一种技术方案改善其现有的垄断性、局限性以及使用过程中高耗能、低效率等问题,在加速数字化的时代,具有重大意义。



技术实现要素:

鉴于上述,本发明提供了一种非同质化数字货币的生成流转方法,创建开放式联盟链作为底层基础设施,打破现有非同质化的主流公有链垄断性,并利用api中台执行统一标准,使各项资产数据规范化上链,利用链上链下相结合的分布式存储模式实现数字货币元数据的永久存储,并且才有智能合约管理库去中心化处理用户客户端的数字货币业务需求,最终实现高效的非同质化数字货币流转运营。

一种非同质化数字货币的生成流转方法,包括非同质化数字货币的铸造、转移以及代理发送,具体如下步骤:

响应于获取到客户端提交相关非同质化数字货币的请求,对各项数字资产通过api中台清洗转化生成统一的数字货币元数据,所述数字货币元数据包括数字身份id,用户账户地址及数字货币数量参数;

应用节点调用智能合约管理库,基于数字货币元数据生成数字货币事件指令,其中,所述应用节点部署于开放式联盟链上,所述智能合约管理库设置在应用节点上;

在智能合约库中接收数字货币事件指令,利用hashmap类型映射数字身份id生成合约变量并对应存放于合约变量列表中,利用私有函数分析数字货币参数得到运行结果;选择性触发私有函数,包括私有铸造函数、私有转移函数及私有代理发送函数;

将私有函数运行结果通过公共函数在所述开放式联盟链中公开广播,并更新合约变量列表。

进一步地,构建开放式联盟链,在开放式联盟链部署存储节点和应用节点,并在客户端设置api中台关联存储节点和应用节点,所述api中台用于将用户各项数字资产属性进行标准化转换并形成统一数字货币元数据存入存储节点;

在应用节点上设置智能合约管理库,在智能合约库中部署初始合约,所述初始合约包括铸造合约、转让合约和代理发送合约。

所述存储节点用于存储数字货币元数据;其中,所述元数据包括生成数字货币数字身份id的描述性信息;比如对于cryptokittty,元数据是猫的名字、猫的图片、描述和任何其他特征;对于活动门票,元数据可能包括活动日期和门票类型,以及名称和描述;

将元数据哈希值存储在存储节点,原文件存储在链下云服务器,既方便元数据的随时获取,又可以减轻链上存储节点的存储压力。

所述应用节点具有验证、共识及调用合约的权限控制,其中,多个应用节点关联单个存储节点形成分布式散列结构。

应用节点作为该联盟链正常运行的操作节点除了响应用户客户端请求调用数字货币合约还包括pow、pos等常见共识机制,也可使用自定义共识机制,以及记账出块等。存储节点是负责存储数字货币元数据,应用节点和存储节点通过libp2p连接形成点对点的散列网络。

进一步地,以substate架构为基础,基于rocksdb的键值对存储引擎设置多个arweave存储节点,在单个存储节点周围部署与其关联的多个应用节点,构建联盟链体系,其中所述arweave存储节点通过分布式ipfs网关关联链下云存储服务器;

在所述联盟链应用层的用户客户端搭建可视化智能etl平台,设计数字货币统一识别标准的api接口,接收用户客户端相关数字货币请求信息,针对接收的各项数字资产数据进行前置清洗和转换处理,生成与用户客户端关联的唯一数字身份id,用户账户id以及数字货币数量参数的元数据;

将元数据进行哈希运算得到元数据哈希值,将元数据文件及哈希值发送至存储节点,其中元数据存储在链下云服务器,元数据哈希值存储在存储节点。

以substate架构为基础,采用webassembly虚拟机,提供http和ipfs及websocketrpc服务,还可以基于prometheus实现对区块链区块高度,节点状态及合约更新等运行监控;

采用链上链下相结合的存储方式,arweave包括永久存储协议,拓展区块链链上存储容量,通过预付捐赠来激励存储者来确保数字货币元数据的永久存储。

使用星际文件系统(ipfs)来离线存储元数据文件。ipfs是一种点对点文件存储系统,它允许跨计算机托管内容,以便将文件复制到许多不同的位置。这确保了a)元数据是不可变的,因为它由文件的哈希唯一寻址,并且b)只要有节点愿意托管数据,数据就会随着时间的推移而持久存在。

可视化智能etl平台即可视化数据转换平台,将各项数字资产从来源端经(extract过抽取)、转换(transform)、加载(load)至目的端的过程,是将业务系统的数据经过抽取、清洗、转换之后加载到数据仓库的过程,目的是将企业中分散、零乱、标准不统一的数据整合到一起。

在api中台中提前置入比如erc20、erc721和erc1155等数字识别标准用于适配转换数字资产。其中erc20将地址映射到金额,erc721将唯一id映射到所有者,erc1155具有id到所有者到金额的嵌套映射。

进一步地,所述数字身份id是应用节点创建凭证对用户客户端私钥签名的自定义字符串进行数字签名,生成数字货币的唯一身份标识;

用户账户地址为用户客户端存储非同质化数字货币环境变量地址;是由用户公钥关联产生的数字货币存储地址,比如数字钱包;

数字货币数量参数为数字货币矢量数,至少包括铸造数量、转移数量及代理发送数量。

非同质化数字货币每个都有一个唯一的id,用于表示其身份属性;每个数字货币赋予其值、元数据,以及在应用程序或价值系统中具有特定的用途。

在api中台关联应用节点在后端设置数字身份id生成程序,首先应用节点接收用户客户端私钥签名的自定义字符串,并通过随机函数创建随机数组作为签名凭证对字符串签名形成数字签名,即数字货币的唯一身份标识数字身份id,该过程实现在链上生成数字货币的身份id,使该数字身份id代表的数字货币具有可追溯并且不可篡改性。

进一步地,还包括在应用节点上基于frame框架设计智能合约管理库,并基于rust语言编辑智能合约,运行build.sh文件来编译智能合约,从而生成合约的已编译.wasm文件适配联盟链结构,所述智能合约管理库包含事件、合约变量、共有函数和私有函数;

所述事件是响应应用节点的调用请求,生成数字货币事件指令,所述事件指令是集合数字身份id、用户账户地址以及数字货币数量参数生成的相应数字货币事务;事件是rust编写语言中的宏声明,它表示被包装的表达式将被包围的语法块,事件事务是将数字身份id、用户账户地址以及数字货币数量参数转换成可识别的区块交易事务,是在智能合约宏内部通过声明产生的。

所述私有函数所述私有函数包含私有铸造函数、私有转移函数及私有代理发送函数,用于执行事件指令的数字货币事务;

所述共有函数所述公共函数包括公共铸造函数、公共转移函数及公共代理发送函数,用于在链上公开广播私有函数执行后的结果并更新合约变量列表。

私有函数和共有函数是一一对应关系,共用函数输入参数,共同完成铸造合约,转移合约和代理发送合约的功能。

进一步地,所述利用hashmap类型映射数字身份id生成合约变量并对应存放于合约变量列表中,实现如下:

利用hashmap数组设置合约变量初始化链表;

将数字身份id进行hash计算出当前对象的元素,按照hashcode规则计算当前对象的元素对应的下标;

以身份id为索引将数字身份id关联的数字货币事务存在下标位置;

获取时,找到合约变量列表中对应的下标值,关联对应的数字身份id。

所述合约变量是接收事件指令,利用hashmap类型映射生成合约变量列表;合约变量是记录并更新链上数字货币运行状态,hashmap是使用哈希表来存储的,包括数组和链表结构,在每个数组元素上都一个链表结构,当数据被hash后,得到数组下标,把数据放在对应下标元素的链表上,使用hashmap类型映射事件指令,便于用户客户端进行数字货币的查找和状态查看。

存储时,根据计算出的下标将当前的数字身份id索引放入合约变量列表中;

获取时,找到合约变量列表中对应的下标值,关联对应的数字身份id。

待下一次处理该数字货币流转事务时,可调取合约变量列表中对应的数字货币记录进一步执行操作。

其中,hashcode是用来查找的,例如初始化链表中有这样的下标位置:

01234567

将数字身份id(假设身份id为随机数)作为类存放在以上8个位置之一,如果不用hashcode而任意存放,那么当查找时就需要到这八个位置里挨个去找,或者用二分法一类的算法,但如果用hashcode那就会使效率提高很多。

定义hashcode为id/8,然后把我们的类存放在取得得余数那个位置。比如数字身份id为9,9除8的余数为1,那么把该类存在1这个位置,如果id是13,求得的余数是5,那么就把该类放在5这个位置。这样,以后在查找该类时就可以通过id除8求余数直接找到存放的位置了。

进一步地,所述利用私有函数分析数字货币参数得到运行结果,选择性触发私有函数,包括私有铸造函数、私有转移函数及私有代理发送函数,具体包括如下:

设计私有函数的输入参数为:输入账户地址、输出账户地址、铸造数量、转移数量及代理发送数量;

针对存在参数为:输入账户地址、铸造数量的数字货币事务,触发私有铸造函数,在输入账户地址中生成相应数量的数字货币;

针对存在参数为:输入账户地址、输出账户地址,转移数量或代理发送数量的数字货币事务;当触发私有转移函数,验证输出账户地址中数字货币余额是否大于转移数量,当大于时,在输出账户地址中减少相应数量的数字货币,在输入账户地址中增加相应数量的数字货币,或者,当触发私有代理发送函数,验证输出账户地址中数字货币余额是否大于转移数量,当大于时,则输出账户地址作为代理发送地址减少相应数量的数字货币,在输入账户地址中增加相应数量的数字货币。若是输出账户地址中数字货币余额是小于转移数量,则退出函数,不进行转移操作,并反馈应用节点验证结果。

特别地,还包括所述私有代理发送函数设置批准机制,所述批准机制具体如下:

所述私有函数解析数字货币执行事务存在参数为输入账户地址、输出账户地址,代理发送数量时,启动批准机制关联输出账户地址,验证是否存在包含该账户客户端私钥签名的审批凭证,若存在,则批准该账户地址为代理发送账户地址。

针对代理发送数字货币,需要持有数字货币的代理用户批准代理才可进行代理,也就是代理用户客户端同意代理后,提前用自己私钥对该代理事件进行审批签名,生成审批凭证存储在代理发送账户也就是此时私有函数的输出账户地址中,待执行代理发送事务时,提供批准凭证。

私有函数是一个函数组合,在输入输入账户地址、输出账户地址、铸造数量、转移数量及代理发送数量这些参数后,自动对应相应的子私有函数,也就是私有铸造函数、私有转移函数和私有代理发送函数。

通过用户客户端上链各项数字资产,并提交相关非同质化数字货币的请求,所述各项数字资产通过通用api中台清洗转化,生成统一的数字货币元数据,包括数字身份id,用户账户地址及数字货币数量参数;

所述数字货币元数据存储至存储节点中,响应用户客户端请求,应用节点调用智能合约库,生成数字货币事件指令;

在智能合约库中接收事件指令,利用hashmap类型映射数字身份id生成合约变量并对应存放于合约变量列表中,利用私有函数分析数字货币参数,选择性触发私有铸造函数、转移函数及代理发送函数;

将私有函数运行结果通过公共函数在所述联盟链中公开广播,并更新合约变量列表。

一种非同质化数字货币的生成流转系统,包括响应转化模块、调用生成模块、分析运算模块和广播更新模块;

所述响应转化模块,用于响应于获取到客户端提交相关非同质化数字货币的请求,对各项数字资产通过api中台清洗转化生成统一的数字货币元数据,所述数字货币元数据包括数字身份id,用户账户地址及数字货币数量参数;

所述调用生成模块,用于应用节点调用智能合约管理库,基于数字货币元数据生成数字货币事件指令,其中,所述应用节点部署于开放式联盟链上,所述智能合约管理库设置在应用节点上;

所述分析运算模块,用于在智能合约库中接收数字货币事件指令,利用hashmap类型映射数字身份id生成合约变量并对应存放于合约变量列表中,利用私有函数分析数字货币参数得到私有函数运行结果;

所述广播更新模块,用于将私有函数运行结果通过公共函数在所述开放式联盟链中公开广播,并更新合约变量列表。

通过本发明的非同质化数字货币的生成方法,可以快速实现多种非同质化数字货币的同时铸造、转移和代理发送,整个过程在链上进行,不仅可以安全存储数字货币元数据还可以自动完成非同质化数字货币的生成和流转。

附图说明

图1为本发明开放式联盟链系统架构图;

图2为非同质化数字货币流转流程图;

图3为应用节点与存储节点连接结构体示意图;

图4为共识准入机制原理图。

图5为智能合约执行数字货币事务流程图。

具体实施方式

为了更为具体地描述本发明,下面结合附图及具体实施方式对本发明的技术方案进行详细说明。

实施例1:

一种非同质化数字货币的生成流转方法,包括非同质化数字货币的铸造、转移以及代理发送,具体如下步骤:

基于substrate区块链框构建开放式联盟链,该联盟链专门用于数字货币的铸造、转移和代理发送,留有可外连至其他区块链或服务器的接口。

在该联盟链体系中底层设施包括数据层、网络层、共识层这三层,以及应用层、合约层、激励层,其联盟链系统架构图如图1所示。

在数据层包括区块、数字货币元数据和操作事务tx、用户客户端公私钥及账户地址等,并在底层连接物理服务器包括链下云服务器;

网络层包括libp2p通信网络、tcp通信协议,提供http和ipfs及websocketrpc服务,用于链上节点和合约的调用以及数据;

共识层部署应用节点和存储节点,支持pow、pos等常见共识机制,其中节点采用pos机制进行管理,还包括存储节点的激励共识,即利用arweave存储协议执行数字货币元数据的永久存储。

应用层设置用户客户端,作为上链的各项数字资产的入口接入api中台,api中台与应用节点和存储节点通过网络通信关联,将各项数字资产经过标准化转换,形成数字货币元数据;

合约层设置智能合约管理库,包括事件、合约变量、共有函数和私有函数组件,响应应用节点的调用,执行数字货币相关事务。

激励层包括pow共识激励和arweave存储激励,可利用用户客户端在链上抵押押金保障激励安全并创建链上资金池用于提供激励来源。

如图2所示,为非同质化数字货币的生成流转流程图,响应用户客户端请求,经api中台处理用户客户端输入的非同质化数字货币需求信息,比如艺术品,现有资产,或通讯id等,整合需求信息,规范非同质化数字货币的属性描述性信息,包括用户账户id以及数字货币数量参数;

同时收集用户客户端利用私钥签名的自定义字符串,比如1-6位数字字符123456,发送应用节点获取签名凭证,该签名凭证是应用节点利用随机函数随机生成的数组,比如213esa,最终生成非同质化数字货币对应的唯一身份标识——数字身份id123456||213esa。最终形成数字货币的元数据。

其中,在api中台中利用erc721规范数字货币属性,将数字身份id映射至用户客户端,利用erc20规范将用户客户端账户地址映射到数字货币金额,利用erc1155规范将数字身份id到金额的嵌套映射。

应用节点解析数字货币元数据,获取数字身份id,客户端账户地址(包括来源客户端账户和目标客户端账户),数字货币数量参数(包括铸造、转移和代理发送金额),在智能合约管理库中调用相应合约,执行非同质化数字货币的铸造、转移和代理发送操作。

数字货币元数据通过储节点进行永久存储,在该联盟链中基于rocksdb的键值对存储引擎设置多个arweave存储节点,在单个存储节点周围部署与其关联的多个应用节点,应用节点和存储节点通过libp2p连接形成点对点的散列网络,如图3所示,其中arweave存储节点通过分布式ipfs网关关联链下云存储服务器。

实施例2:

将非同质化数字货币元数据通过存储节点进行永久存储具体实现如下:

在该联盟链中,关联存储节点设置数字货币元数据的读取和输出端口,并在输出端口设置多个ipfs网关连接存储节点和链下云服务器,其中读取元数据计算元数据的哈希值存入存储节点,并在输出端口输出元数据文件存储在链下云服务器;

增加随机前区块验证,设计共识准入机制,并在存储链上设计可持续激励模块,实时动态调整存储成本,实现永久存储:

如图4所示为共识准入机制原理图,设定当前联盟链共有n个存储区块,多个存储节点将输出的存储数据x利用sha256算法处理形成x=sha256(x)存入块状态,然后打包成块并广播出块请求,验证节点接收到出块请求信息后根据当前区块头中merkle根目录选择任一子哈希h(recall),根据子哈希h(recall)关联到相应的随机前区块recall,(在前(n-1)个区块中随机挑选一个)并记录随机前区块时间戳t(recall)信息;

在多个请求出块的存储节点中验证:当请求出块的存储节点的块体merkle信息中是存在hash(s)=h(recall),并且所述块体的时间戳t(s)与随机前区块时间戳t(recall)一致时,允许该请求出块的存储节点进行链上pow共识出块,否则,不允许出块;

比如存储节点m记录前(n-1)所有的存储数据,存储节点n只记录后一半输入的存储数据即{(n/2,(n/2+1)…(n-1)},则若根据当前区块选择的随机前区块是包括前一半输入存储数据的区块(n/2-m),其中1<m<n/2,则存储节点m便可以参与共识出块,存储节点n则不允许。以此激励所有存储节点尽可能多的记录包含存储数据的区块,获取更大概率进行参与共识出块进一步获取出块激励。

实时动态调整存储成本如下:

利用非线性拟合收敛函数(polynomial\spectroscopy\variables或自定义收敛函数)统计收敛之前每次的存储费用,拟合收敛获取固定常量r作为存储费用基准,设置波动阈值&,将存储费用基准常量r、波动阈值&写入自动调整程序部署在存储链上,当用户进行计算存储业务时,触动自动调整程序,调整存储成本稳定。

实施例3:

所述在应用节点上基于frame框架设计智能合约管理库,包括事件、合约变量、共有函数和私有函数组件。在所述智能合约库中部署初始合约,包括铸造合约、转让合约和代理发送合约,响应应用节点的调用,启动智能合约管理库的合约函数自动执行数字货币流转,如图5所示,具体如下:

首先,响应应用节点的调用请求,生成数字货币事件指令,即包括数字身份id、用户账户地址以及数字货币数量参数生成的相应数字货币事务;

根据数字货币事务,利用hashmap类型映射生成合约变量列表,实现如下:

利用hashmap数组设置合约变量初始化链表;

将数字身份id进行hash计算出当前对象的元素,定义hashcode规则,按照hashcode规则计算当前对象的元素对应的下标;将数字身份id关联的数字货币事务以身份id为索引存在下标位置。

待下一轮执行该数字货币相关操作时,无需调用api中台生成数字身份id及相关元数据,直接在合约变量列表中查找相应下标关联数字货币事务触发合约函数执行即可。

调取私有函数通过解析数字货币事务,选择性触发私有铸造函数、转移函数及代理发送函数,具体包括如下:

首先解析数字货币事务,形成输入参数为:输入账户地址、输出账户地址、铸造数量、转移数量及代理发送数量;

针对存在参数为:输入账户地址、铸造数量的数字货币事务,触发私有铸造函数,在输入账户地址中生成相应数量的数字货币;

私有铸造函数是在输入账户地址中直接生成数字货币,账户余额是原有余额与生成的数字货币累加。

针对存在参数为:输入账户地址、输出账户地址,转移数量的数字货币事务,触发私有转移函数,验证输出账户地址中数字货币余额是否大于转移数量,当大于时,在输出账户地址中减少相应数量的数字货币,在输入账户地址中增加相应数量的数字货币;

若是输出账户地址中数字货币余额是小于转移数量,则退出函数,不进行转移操作,并反馈应用节点验证结果。

针对存在参数为:输入账户地址、输出账户地址,代理发送数量的数字货币事务,触发私有代理发送函数;

验证输出账户地址中数字货币余额是否大于转移数量,当大于时,则输出账户地址作为代理发送地址减少相应数量的数字货币,在输入账户地址中增加相应数量的数字货币。

在私有代理发送函数设置批准机制,具体如下:

私有函数解析数字货币执行事务存在参数为输入账户地址、输出账户地址,代理发送数量时,启动批准机制关联输出账户地址,验证是否存在包含该账户客户端私钥签名的审批凭证,若存在,则批准该账户地址为代理发送账户地址,也就是输出账户地址,若不存在,则拒绝执行代理发送操作。

最后将私有函数运行结果通过公共函数在所述联盟链中公开广播,并更新合约变量列表。

实施例4:

一种非同质化数字货币的生成流转系统,包括响应转化模块、调用生成模块、分析运算模块和广播更新模块;

其中响应转化模块,用于响应于获取到客户端提交相关非同质化数字货币的请求,对各项数字资产通过api中台清洗转化生成统一的数字货币元数据,所述数字货币元数据包括数字身份id,用户账户地址及数字货币数量参数;

调用生成模块,用于应用节点调用智能合约管理库,基于数字货币元数据生成数字货币事件指令,其中,所述应用节点部署于开放式联盟链上,所述智能合约管理库设置在应用节点上;

分析运算模块,用于在智能合约库中接收数字货币事件指令,利用hashmap类型映射数字身份id生成合约变量并对应存放于合约变量列表中,利用私有函数分析数字货币参数得到私有函数运行结果;

广播更新模块,用于将私有函数运行结果通过公共函数在所述开放式联盟链中公开广播,并更新合约变量列表。

本系统模块具体调用流程如下:

经过响应转化模块将与非同质化数字货币的相关数字资产进行梳理转化为统一的可上链的数字货币元数据;

然后启动调用生成模块调用智能合约管理库,输入数字货币元数据生成程序可识别的数字货币事件指令;

在智能合约库中调用分析运算模块接收数字货币事件指令,并运行智能合约中的私有函数,执行数字货币事件指令所包含的具体生成流转事务;

最后利用广播更新模块将执行结果通过公共函数进行广播。

上述对实施例的描述是为便于本技术领域的普通技术人员能理解和应用本发明。熟悉本领域技术的人员显然可以容易地对上述实施例做出各种修改,并把在此说明的一般原理应用到其他实施例中而不必经过创造性的劳动。因此,本发明不限于上述实施例,本领域技术人员根据本发明的揭示,对于本发明做出的改进和修改都应该在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1