一种非同质通证的扩展方法、系统及计算机可读存储介质
文献发布时间:2023-06-19 10:54:12
技术领域
本发明涉及区块链技术领域,尤其涉及一种非同质通证的扩展方法、系统及计算机可读存储介质。
背景技术
本质上,区块链的通证是一个智能合约(一段软件代码),不仅仅包括了数据,还包括了对数据的操作。这类智能合约不仅是软件代码,其还遵循业界的标准,如数据结构,对数据的操作方式等等,因此,能够被行业内认可,可以适用于不同的工具、软件等来操作、浏览、引用,从而具有透明性、可监督性、可协作性等特性。比如标准的ERC721通证,其数据和操作,可以通过通用的区块链浏览器(第三方浏览器)来浏览,而其开放的数据结构和编程接口,又能够为其他人对其进行编程,从而形成对接。比如一个软件上发行的非同质化通证,可以流通到另外一个软件系统里,进行浏览,处理。
ERC721通证的优点在于可以一一对应表示现实世界中的大量产品。现在现实世界中,有大量的物品具有独一无二的特性,当把这些独一无二的物品,区块链化到区块链世界,进行表述的时候,非同质化通证具有极大的优势。一方面,可以实现最小的颗粒度,即每一个物品,无论是物质的,还是网络世界的,都可以用单一的一个通证来表示;另外一方面,通证的可操作性,比如交易特性,可编程特性,又让对这些通证的操作,变得更容易,也有更高的效率。通证最大的好处是可交易性,即在区块链世界,符合一定标准的通证,就像现实世界中的物品一一,从一个用户手里,流通到另外一个用户手里。而区块链,会保存所有的交易历史。
物品的交易会让物品的所有权发生变化,通证的交易会改变通证的所有权,而交易会产生交易成本。由于ERC721通证合约是为全球公链而设计的,因此,该标准的目标之一是尽量的轻量化,即只实现最基本的特性和功能,以实现对链上资源尽可能少地占用,来节省交易成本。
一方面,现实世界中的物品,除了所有权以外,也会有很多的变化。另外一方面,也有很多变化,还有一些所有权的变化,如果考虑交易成本和效率,也不一定要通过交易的方式来记录实现。
标准通证的设计,对于通证的流通极有好处。但是,却没有办法表述交易以外的变化。因此,这种变化只能通过“链下”处理的方法来实现,即和通证相关的数据并不包含在通证合约中,而是用其他中心化的方式来实现。
使用中心化的方式,会让数据有被操控的可能性;另外,也会让记录通证变化的数据和通证本身有一定程度上的隔离,尤其是当通证的所有权转移以后,这种隔离会损害通证的完备性。
因此,当把ERC721通证合约应用于实体经济中来解决问题时,如果有大量的对于实体资产的操作,或者实体资产本身有很多变化时,使用标准通证则显得捉襟见肘。
发明内容
本发明的主要目的在于提出一种非同质通证的扩展方法、系统及计算机可读存储介质,旨在为了让扩展的非同质通证为其他第三方所监控,检测,以保持区块链公开、透明的特点,同时,也利于非同质通证的交易。
为实现上述目的,本发明提供一种非同质通证的扩展方法,包括以下步骤:
部署扩展ERC721通证合约;
在创建非同质通证时,对每一个ERC721通证,增加一个通证的固有属性、增加通证转移时的附言、增加通证的附言操作,以使得ERC721通证合约能够记录每一个ERC721通证的数据变化。
其中,所述增加每一个通证的固有属性的步骤包括:
通过设置不同的通证属性,使用同样的ERC721合约,衍生出不同的ERC721通证。
其中,所述增加每一个通证的固有属性的步骤还包括:
通过同样的API操作,实现对应的不同的通证的操作。
其中,所述通证的固有属性至少包括通证的类型、通证的钱包地址中的一种或几种。
其中,所述增加通证转移时的附言的步骤包括:
通过发送event事件的方式增加通证转移时的附言。
其中,所述通证转移时的附言以event事件的形式保存在区块链状态数据库里。
为实现上述目的,本发明还提出一种非同质通证的扩展系统,所述系统包括存储器、处理器、以及存储与所述处理器上的非同质通证的扩展程序,所述非同质通证的扩展程序被所述处理器运行时执行以下步骤:
增加每一个ERC721通证的固有属性、通证转移时的附言、通证的附言操作。
其中,所述非同质通证的扩展程序被所述处理器运行时还执行以下步骤:
通过设置不同的通证属性,使用同样的ERC721合约,创建不同的ERC721通证,同时,通过同样的API操作,实现对应的不同的通证的操作。
其中,所述非同质通证的扩展程序被所述处理器运行时还执行以下步骤:
通过发送event事件的方式增加通证转移时的附言,所述通证转移时的附言以event事件的形式保存在区块链状态数据库里。
为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有非同质通证的扩展程序,所述非同质通证的扩展程序被处理器运行时执行如上所述的方法的步骤。
本发明非同质通证的扩展方法、系统及存储介质的有益效果是:本发明通过上述技术方案,部署扩展ERC721通证合约,在创建非同质通证时,对每一个ERC721通证,增加一个通证的固有属性、增加通证转移时的附言、增加通证的附言操作,以使得ERC721合约能够记录每一个ERC721通证的数据变化,可以让扩展的非同质通证为其他第三方所监控,检测,以保持区块链公开、透明的特点,同时,也利于非同质通证的交易。
附图说明
图1是本发明非同质通证的扩展方法较佳实施例的流程示意图;
图2是扩展ERC721通证的架构图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
针对现有技术中ERC721通证合约的缺点,本发明对标准ERC721通证合约进行了一定的扩展,以使得ERC721通证合约本身能够记录通证的数据变化,一个合约本身,可以包含所有的数据,同时也包含了对数据的操作特性,让通证在处理现实世界产品时,可以做到完全独立、自洽、完整。
本发明对非同质通证进行扩展时,需要满足以下两个需求:
1、保留保证通证合约的特性和功能,使得扩展合约能够被第三方工具和软件识别,并且能够被编程使用;
2、扩展部分尽量地通用,即和具体产品、项目无关,以增加合约的重用,减少定制。
本发明的发明目的是为了让扩展的通证为其他第三方所监控、检测,以保持区块链公开、透明的特点,同时,也利于通证的交易。
具体地,请参照图1至图2,图1是本发明非同质通证的扩展方法较佳实施例的流程示意图,图2是扩展ERC721通证的架构图。
如图1所示,本发明非同质通证的扩展方法较佳实施例包括以下步骤:
步骤S10,部署扩展ERC721通证合约。
步骤S20,在创建非同质通证时,对每一个ERC721通证,增加一个通证的固有属性、增加通证转移时的附言、增加通证的附言操作,以使得ERC721合约能够记录每一个ERC721通证的数据变化。
本实施例中,第一是增加了每一个通证的固有属性。通证的固有属性上链,包含了一些基本的不变的属性,如通证的类型、钱包地址等等。通过设置不同的通证属性,使用同样的721合约,可以创建不同的721通证。同时,通过同样的API操作,可以实现对应的不同的通证的操作,如土地通证和农产品通证。
第二是增加通证转移时的附言。标准的ERC721合约,并不支持通证转移时的附言,在一些场合,对于通证的使用,造成了一定的限制。而本发明,实现了对于标准通证流转操作的扩展,通过发送event事件的方式,实现附言功能。一方面,实现附言功能,另外一方面,附言操作并不保存到链上,被打包,从而付出交易费用,而是放在状态数据库里,既节省了交易费用,又使得读出留言操作能够快速实现。
第三是增加通证的附言操作。区块链的资产状态变化,是通过通证转移来实现的。在另外一方面,通证的转移需要付出交易费用,而且ERC721通证的数量极大,因此,希望在不通过通证转移的时候,能够记录通证状态的变化。而这个需求,可以简单地通过给通证增加附言功能来实现。
类似通证转移留言,通证的附言,也是通过event事件来实现,这一方面节省了交易费用,另外一方面,可以实现附言信息的快速读取。
请参照图2所示的扩展ERC721通证的架构图。标准ERC721通证有两个不可篡改的属性和一个会变化的属性:
Tokenld作为通证的唯一标识代表了通证的唯一性;
Metadata则指向任意一个url,url可以是http页面或者json文件,也可以是ipfs页面或者是json文件;
TokenOwner是通证的拥有者,通证拥有者会随着通证转移而变化。
每个通证都带有自己的固有属性,比如通证类型、钱包地址等等,本实施例通过设置不同的通证属性,使用同样的ERC721通证合约,以及API,可以产生和操作不同的ERC721通证,比如土地通证和农产品通证。其中,属性在通证创建(mint)时设置,通证属性可以设置和读取。
本实施例中,通证转移时可以附带附言,附言以event的形式保存在区块链状态机数据库里(状态数据库存在每一个节点上,但是不在链上,因此不消耗燃料)。
通证可以添加附言,附言以event的形式保存在区块链状态机数据库里。如果不作实际的通证转移,也可以记录通证的状态变化,类似于留言存证的作用。
本实施例通过上述技术方案,部署扩展ERC721通证合约,在创建非同质通证时,对每一个ERC721通证,增加一个通证的固有属性、增加通证转移时的附言、增加通证的附言操作,以使得ERC721合约能够记录每一个ERC721通证的数据变化,可以让扩展的非同质通证为其他第三方所监控,检测,以保持区块链公开、透明的特点,同时,也利于非同质通证的交易。
进一步地,本实施例中,所述增加每一个通证的固有属性的步骤包括:
通过设置不同的通证属性,使用同样的ERC721合约,创建不同的ERC721通证。
可以理解的是,本实施例中,通证属性token property是任意的一个字符串,对应于通证设计中描述通证的一个结构。Property尺寸的大小,受到区块链交易大小的限制,一般情况下,一个交易要小于32K,因此,包含property操作的交易必须要小于32K。由此估算,property不能大于32K bytes。
通证的固有属性,虽然是一个字符串,但是操作的时候,可以通过一个数据结构转化成字符串,写入ERC721合约,而读出时,通过把字符串转化成结构,获得通证的描述。
通过同样的API操作,实现对应的不同的通证的操作。
本实施例通过设置不同的通证属性,使用同样的ERC721合约,可以创建不同的ERC721通证。同时,通过同样的API操作,可以实现对应的不同的通证的操作,如土地通证和农产品通证。
进一步的,本实施例中,所述增加通证转移时的附言的步骤包括:
通过发送event事件的方式增加通证转移时的附言。
其中,所述通证转移时的附言以event事件的形式保存在区块链状态数据库里。
本实施例考虑到现有技术中标准的ERC721合约,并不支持通证转移时的附言,在一些场合,对于通证的使用,造成了一定的限制。因此,本发明实现了对于标准通证流转操作的扩展,通过发送event事件的方式,实现附言功能。一方面,实现附言功能,另外一方面,附言操作并不保存到链上,被打包,从而付出交易费用,而是放在状态数据库里,既节省了交易费用,又使得读出留言操作能够快速实现。
以下对本发明非同质通证的扩展方法进行进一步的详细阐述。
1、关于标准ERC721通证:
标准ERC721通证有三个参数,如表1所示。
tokenId是通证的唯一标识。在通证铸造的时候,作为参数提供。tokenId的特殊之处是必须是数字。实际上,这是一个32字节的数字串。tokenId在通证创建时赋值,以后就不可篡改。
tokenOwner是Token的拥有者。在最开始的时候,token的创建者就是token的拥有者。而当token的所有权发生转移的时候,token的拥有者也变成接收方的钱包地址。
Metadata是标准的ERC721指针,指向一个url地址。该url在通证创建时赋值,以后不可篡改。
该url地址可以指向一个http页面,如:https://www.zhnychain.cn/1.html。或者指向一个json文件,如:https://www.zhnychain.cn/721token/1.json。或者指向一个IPFS文件hash,如:“QmZzjQBUq14CvrbYCx4UJYCzeehFA9akAo75VmWZyJfHHn”。需要说明的是,IPFShash的特点是每一个不同的文件,具有hash的唯一性,这意味着,任何对文件的修改,会导致hash的变化。
表1
2、扩展ERC721通证-通证属性token property
token property是任意的一个字符串,对应于通证设计中描述通证的一个结构。
Property尺寸的大小,受到区块链交易大小的限制,一般情况下,一个交易要小于32K,因此,包含property操作的交易必须要小于32K。由此估算,property不能大于32Kbytes。
和property相关的操作如表2所示。
表2
通证的固有属性,虽然是一个字符串,但是操作的时候,可以通过把一个数据结构转化成字符串,写入ERC721合约。而读出时,通过把字符串转化成结构,获得通证的描述。
例如,可以采用如下结构来描述一个土地通证:
3、扩展ERC721通证-交易附言tx memo
标准的ERC721交易,只有简单的交易功能,却不能像原生代币那样,可以附加一个附言功能。因此,本发明对ERC721合约的扩展,包括了对交易附言的支持。
对于交易附言,有表3所示的操作。
表3
交易的附言可以很小,也可以很大。为了节省gas费用,交易的附言,并不放在链上,而是放在链的状态数据库中。而这是通过event事件机制来实现的。这里的事件是”transactionMemo”。
读取的时候,通过getTransactionReceipt(txHash)获取交易收据,通过解析交易收据来获取事件的信息。
4、扩展ERC721通证-通证附言token memo
有时候,token并没有发生交易转移(因为token的数量太庞大了),这时候,需要一种机制,可以记录token所对应的实体资产的状态信息的变化。而token memo就是实现了这种状态机制。
对于token memo,有表四所示操作。
表四
Token memo可以很小,也可以很大。为了节省gas费用,token memo,并不放在链上,而是放在链的状态数据库中。通过event事件机制来实现。这里的事件是“memoAdded”。
为了有效快速地把交易相对应的event读出来,这里使用了tokenId作为事件筛选参数,因为tokenId具有唯一性。这种情况下,本发明能够列出特定通证的交易列表。
本发明非同质通证的扩展方法的有益效果是:本发明通过上述技术方案,部署扩展ERC721通证合约,在创建非同质通证时,对每一个ERC721通证,增加一个通证的固有属性、增加通证转移时的附言、增加通证的附言操作,可以让扩展的非同质通证为其他第三方所监控,检测,以保持区块链公开、透明的特点,同时,也利于非同质通证的交易。
为实现上述目的,本发明还提出一种非同质通证的扩展系统,所述系统包括存储器、处理器、以及存储与所述处理器上的非同质通证的扩展程序,所述非同质通证的扩展程序被所述处理器运行时执行以下步骤:
部署扩展ERC721通证合约。
在创建非同质通证时,对每一个ERC721通证,增加一个通证的固有属性、增加通证转移时的附言、增加通证的附言操作,以使得ERC721合约能够记录每一个ERC721通证的数据变化。
进一步地,所述非同质通证的扩展程序被所述处理器运行时还执行以下步骤:
通过设置不同的通证属性,使用同样的ERC721合约,衍生出不同的ERC721合约,同时,通过同样的API操作,实现对应的不同的通证的操作。
进一步地,所述非同质通证的扩展程序被所述处理器运行时还执行以下步骤:
通过发送event事件的方式增加通证转移时的附言,所述通证转移时的附言以event事件的形式保存在区块链状态数据库里。
本发明非同质通证的扩展系统的有益效果是:本发明通过上述技术方案,部署扩展ERC721通证合约,在创建非同质通证时,对每一个ERC721通证,增加一个通证的固有属性、增加通证转移时的附言、增加通证的附言操作,可以让扩展的非同质通证为其他第三方所监控,检测,以保持区块链公开、透明的特点,同时,也利于非同质通证的交易。
为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有非同质通证的扩展程序,所述非同质通证的扩展程序被处理器运行时执行如上实施例所述的方法的步骤,这里不再赘述。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
- 一种非同质通证的扩展方法、系统及计算机可读存储介质
- 基于区块链的通证抵押方法、系统及计算机可读存储介质