基于改进区块链nft协议的假期通证化系统及方法
技术领域
1.本发明属于区块链技术领域,尤其涉及一种基于改进区块链nft协议的假期通证化系统及方法。
背景技术:2.智能合约(smart contract)是一种部署在区块链上的程序,一经部署之后便无法修改,这个特性使得智能合约能够拥有一定的透明性。随着以太坊智能合约的应用,非同质化通证 nft(non-fungible token)也逐渐进入大众视野。nft的不可拆分性、唯一性使得其可以与具体物品关联起来,可以应用到更广泛的实际场景中。
3.目前在以太坊上的nft大多都遵循erc-721(ethereum request for comments-721)协议,该协议定义了一些操作nft的标准方法,但却没有对铸造(mint)这一操作做具体规定。市面上的大多数nft实现方式都是一次只能铸造一个nft,不仅效率较低,gas消耗也很高。同时,近两年来,关于加班、加班收益和假期管理等话题也得到了关注,问题主要集中于加班收益无法量化、假期管理不透明等方面。
技术实现要素:4.为了解决上述现有技术中存在的技术问题,本发明提供了一种基于改进区块链nft协议的假期通证化系统及方法,拟解决背景技术中提到的目前nft协议中铸造nft通证消耗过高、缺乏批量铸造nft通证这一问题。同时将其运用于公司或企业的假期管理场景,解决了假期管理和加班收益无法量化的问题。
5.为解决上述技术问题,本发明采用的技术方案如下:
6.基于改进区块链nft协议的假期通证化系统,包括用户管理模块、假期通证化模块以及假期通证使用模块;
7.所述用户管理模块用于用户的登录和注册,并在用户管理模块中设置有管理员和普通用户,分别针对管理员和普通用户设置相应的操作权限;
8.所述假期通证化模块用于管理员将用户的假期变为nft通证,每个用户的每一天假期对应一个nft通证标识,并利用nft协议,批量地将多天假期转化为多个nft通证;
9.所述假期通证使用模块用于用户使用已拥有的假期nft通证,用户选择将假期nft通证转化为真正的假期,或是将假期nft通证转化为积分,该积分可用来兑换员工福利,或是作为员工考核指标。
10.基于改进区块链nft协议的假期通证化方法,包括用户管理阶段、假期通证化阶段以及假期通证使用阶段;
11.所述用户管理阶段包括以下步骤:
12.a1.用户使用账户和密码进行登录或注册,进入系统;
13.a2.判断用户是管理员还是普通用户,若是管理员的,则给予用户使用假期通证化模块和假期通证使用模块的权限;若是普通用户的,只给予用户使用假期通证使用模块的
权限;
14.a3.给每一个用户分配一个唯一的地址标识;
15.a4.用户根据所有的权限,选择要使用的模块,若要使用假期通证化模块,则进入b1,若要使用假期通证使用模块,则进入c1;
16.所述假期通证化阶段包括以下步骤:
17.b1.用户向管理员提出申请,申请将用户的假期天数转为假期nft通证,每一天假期都对应着一个假期nft通证;
18.b2.管理员调用智能合约中的mintbatchvacations函数,传入申请用户的地址标识和申请的假期数量,将用户的假期批量转化为nft通证,每个假期nft通证均对应一个标识符;
19.b3.智能合约增加申请用户的假期余额,数量等于用户申请的假期数量;
20.所述假期通证使用阶段包括以下步骤:
21.c1.用户选择将假期nft通证转化为积分或选择将假期nft通证转化为真正的假期,若选择将假期nft通证转化为积分,则进入c2;若选择将假期nft通证转化为真正的假期,则进入c3;
22.c2.用户调用智能合约中的withdraw函数,传入假期nft通证标识符数组,数组长度大于等于1,执行完成之后减少用户所有的假期余额,完成将假期nft通证转化为积分,该积分可用来兑换员工福利,或是作为员工考核指标;
23.c3.用户调用智能合约中的usebatchvacations函数,传入假期nft通证标识符数组,数组长度大于等于1,执行完成之后减少用户所有的假期余额,完成将假期nft通证转化为真正的假期。
24.优选的,所述步骤b1包括以下步骤:
25.b101.用户向管理员提出假期通证化申请,并提交自己的加班证明,附带上加班的天数;
26.b102.管理员检查加班证明是否有效,若有效,则记下申请用户的地址标识和有效加班天数,进入步骤b2;若无效则,返回步骤b101。
27.优选的,所述步骤b2包括以下步骤:
28.b201.管理员调用智能合约中的mintbatchvacations函数,传入用户的地址标识和要转化的假期天数;
29.b202.智能合约检查传入的地址标识和假期数量是否合法,若地址标识不是0地址,且假期数量大于0,则进入步骤b203,否则返回步骤b201;
30.b203.智能合约使用内置变量vacationcounter作为假期nft通证的标识符,每产生一个 nft通证,vacationcounter便加1,并把产生的假期nft通证的所有者记为用户的地址标识;
31.b204.智能合约重复步骤b203多次,重复的次数等于传入的假期数量,并利用一个数组 vacationids记下产生的假期nft通证标识符,该数组的长度等于传入的假期天数。
32.优选的,所述步骤b3包括以下步骤:
33.b301.智能合约增加申请用户对应的vacationbalances,vacationbalances的数量等于申请的假期数量,完成用户假期余额的增加;
34.b302.智能合约触发mintbatchvacations事件,传入用户的地址标识符和生成的假期nft 通证标识符数组vacationids;
35.b303.系统通知用户,用户申请的假期通证化已成功执行,并发送给用户一个假期nft 通证标识符数组vacationids,该假期nft通证标识符数组vacationids的长度等于用户申请的假期天数。
36.优选的,所述步骤c1包括以下步骤:
37.c101.用户调用智能合约中的vacationbalanceof函数,传入用户自己的地址标识符,查询假期nft通证余额,若假期通证余额大于0,则进入步骤c102,否则,返回步骤101;
38.c102.用户选择将假期nft通证转化为积分或选择将假期nft通证转化为真正的假期,若选择将假期nft通证转化为积分,则进入步骤c2,若选择将假期nft通证转化为真正的假期,则进入步骤c3。
39.优选的,所述步骤c2包括以下步骤:
40.c201.用户调用智能合约中的withdraw函数,传入假期nft通证标识符数组,数组长度大于等于1;
41.c202.智能合约遍历nft通证标识符数组,检查每一个nft通证的所有者是否是申请用户,若是,则转入步骤c203,否则,则返回步骤c201;
42.c203.智能合约遍历nft通证标识符数组,把每一个nft通证的所有者设为空;
43.c204.智能合约减少申请用户对应的vacationbalances,数量等于用户传入的假期nft通证标识符数组的长度;
44.c205.智能合约触发withdraw事件,传入申请用户的地址标识符和假期nft通证标识符数组;
45.c206.系统返回给用户一个假期转化证明,证明中包含用户已转化的假期天数,用户把该证明提交给管理员,即可完成将假期nft通证转化为积分。
46.优选的,所述步骤c3包括以下步骤:
47.c301.用户调用智能合约中的usebatchvacations函数,传入假期nft通证标识符数组,数组长度大于等于1;
48.c302.智能合约遍历nft通证标识符数组,检查每一个nft通证的所有者是否是申请用户,若是,则转入步骤c303,否则,则返回步骤c301;
49.c303.智能合约遍历nft通证标识符数组,把每一个nft通证的所有者设为空;
50.c304.智能合约减少申请用户对应的vacationbalances,数量等于用户传入的假期nft通证标识符数组的长度;
51.c305.智能合约触发usebatchvacations事件,传入申请用户的地址标识符和假期nft通证标识符数组;
52.c306.系统通知申请用户,其申请的假期已生效,假期天数为用户传入的假期nft通证标识符数组的长度,完成将假期nft通证转化为真正的假期。
53.本发明的有益效果包括:
54.1.本发明提供了一种基于改进区块链nft协议的假期通证化系统及方法,通过对以太坊原有nft协议的改进,实现了nft的批量铸造方法,用户通过一次智能合约调用就可以实现批量铸造nft通证,为需要批量铸造nft通证的用户节省了大量的gas消耗;并且省去
了合约的频繁调用,为用户节省了因频繁调用合约而浪费的时间;与原有的nft协议不同的是,一次批量铸造nft通证操作只会在以太坊上生成一个事务,而不像原有nft协议那样每次铸造一个通证都会产生一个事务,因此改进的nft协议能够减少以太坊中的事务数量,在一定程度上缓解以太坊存在的拥堵问题。
55.2.本发明将方法分为三个阶段:用户管理阶段负责用户的登录或注册,假期通证化阶段负责将用户的假期转化为假期nft通证,用户的每一天假期都可以转化为一个假期nft通证,在假期通证使用阶段中,用户可以选择将假期nft通证转化为积分,也可以选择将假期 nft通证转化为真正的假期。通过这三个阶段的设计,该假期通证化系统的层次结构就显得更清晰,并利用改进后的区块链nft协议,使得用户可以批量地将多天假期转化为多个假期 nft通证,每个假期nft通证都有唯一的标识符和所有者,管理者对用户的假期管理也会更加方便。
56.3.本发明提供了一种基于改进区块链nft协议的假期通证化系统及方法,并将该方法和系统应用于公司或企业中的假期管理场景,管理者能够将员工的假期转化为假期nft通证,员工的每一天假期都对应着一个假期nft通证,每一个假期nft通证都有一个唯一的标识符和所有者,通过这样的转化,方便了管理者对用户的假期管理,减少了假期管理过程中可能会出现的混乱情况。并且用户的假期nft通证的相关数据都存储在智能合约中,这使得假期管理更加透明化,员工也能够量化加班所带来的收益,提高了假期管理系统的透明性。
附图说明
57.图1为本发明的系统结构示意图。
58.图2为本发明的方法流程图。
59.图3为实施例中假期通证化活动图。
60.图4为实施例中假期通证使用活动图。
61.图5为实施例中nft协议和改进nft协议的gas消耗对比图。
62.图6为实施例中nft协议和改进nft协议的事务数量对比图。
63.图7为本发明的改进nft协议的伪代码示意图。
具体实施方式
64.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
65.下面结合图1到图7对本发明作进一步的详细说明:
66.基于改进区块链nft协议的假期通证化系统,包括用户管理模块、假期通证化模块以及假期通证使用模块;
67.所述用户管理模块用于用户的登录和注册,并在用户管理模块中设置有管理员和普通用户,分别针对管理员和普通用户设置相应的操作权限;
68.所述假期通证化模块用于管理员将用户的假期变为nft通证,每个用户的每一天假期对应一个nft通证标识,并利用nft协议,批量地将多天假期转化为多个nft通证;
69.所述假期通证使用模块用于用户使用已拥有的假期nft通证,用户选择将假期nft通证转化为真正的假期,或是将假期nft通证转化为积分,该积分可用来兑换员工福利,或是作为员工考核指标。
70.基于改进区块链nft协议的假期通证化方法,包括用户管理阶段、假期通证化阶段以及假期通证使用阶段;
71.所述用户管理阶段包括以下步骤:
72.a1.用户使用账户和密码进行登录或注册,进入系统;
73.a2.判断用户是管理员还是普通用户,若是管理员的,则给予用户使用假期通证化模块和假期通证使用模块的权限;若是普通用户的,只给予用户使用假期通证使用模块的权限;
74.a3.给每一个用户分配一个唯一的地址标识;
75.a4.用户根据所有的权限,选择要使用的模块,若要使用假期通证化模块,则进入b1,若要使用假期通证使用模块,则进入c1;
76.所述假期通证化阶段包括以下步骤:
77.b1.用户向管理员提出申请,申请将用户的假期天数转为假期nft通证,每一天假期都对应着一个假期nft通证;
78.所述步骤b1包括以下步骤:
79.b101.用户向管理员提出假期通证化申请,并提交自己的加班证明,附带上加班的天数;
80.b102.管理员检查加班证明是否有效,若有效,则记下申请用户的地址标识和有效加班天数,进入步骤b201;若无效则,返回步骤b101。
81.b2.管理员调用智能合约中的mintbatchvacations函数,传入申请用户的地址标识和申请的假期数量,将用户的假期批量转化为nft通证,每个假期nft通证均对应一个标识符;
82.所述步骤b2包括以下步骤:
83.b201.管理员调用智能合约中的mintbatchvacations函数,传入用户的地址标识和要转化的假期天数;
84.b202.智能合约检查传入的地址标识和假期数量是否合法,若地址标识不是0地址,且假期数量大于0,则进入步骤b203,否则返回步骤b201;
85.b203.智能合约使用内置变量vacationcounter作为假期nft通证的标识符,每产生一个 nft通证,vacationcounter便加1,并把产生的假期nft通证的所有者记为用户的地址标识;
86.b204.智能合约重复步骤b203多次,重复的次数等于传入的假期数量,并利用一个数组 vacationids记下产生的假期nft通证标识符,该数组的长度等于传入的假期天数。
87.b3.智能合约增加申请用户的假期余额,数量等于用户申请的假期数量;
88.所述步骤b3包括以下步骤:
89.b301.智能合约增加申请用户对应的vacationbalances,vacationbalances的数量等于申请的假期数量,完成用户假期余额的增加;
90.b302.智能合约触发mintbatchvacations事件,传入用户的地址标识符和生成的假期nft 通证标识符数组vacationids;
91.b303.系统通知用户,用户申请的假期通证化已成功执行,并发送给用户一个假期nft 通证标识符数组vacationids,该假期nft通证标识符数组vacationids的长度等于用户申请的假期天数。
92.所述假期通证使用阶段包括以下步骤:
93.c1.用户选择将假期nft通证转化为积分或选择将假期nft通证转化为真正的假期,若选择将假期nft通证转化为积分,则进入c2;若选择将假期nft通证转化为真正的假期,则进入c3;
94.所述步骤c1包括以下步骤:
95.c101.用户调用智能合约中的vacationbalanceof函数,传入用户自己的地址标识符,查询假期nft通证余额,若假期通证余额大于0,则进入步骤c102,否则,返回步骤101;
96.c102.用户选择将假期nft通证转化为积分或选择将假期nft通证转化为真正的假期,若选择将假期nft通证转化为积分,则进入步骤c201,若选择将假期nft通证转化为真正的假期,则进入步骤c301。
97.c2.用户调用智能合约中的withdraw函数,传入假期nft通证标识符数组,数组长度大于等于1,执行完成之后减少用户所有的假期余额,完成将假期nft通证转化为积分,该积分可用来兑换员工福利,或是作为员工考核指标;
98.所述步骤c2包括以下步骤:
99.c201.用户调用智能合约中的withdraw函数,传入假期nft通证标识符数组,数组长度大于等于1;
100.c202.智能合约遍历nft通证标识符数组,检查每一个nft通证的所有者是否是申请用户,若是,则转入步骤c203,否则,则返回步骤c201;
101.c203.智能合约遍历nft通证标识符数组,把每一个nft通证的所有者设为空;
102.c204.智能合约减少申请用户对应的vacationbalances,数量等于用户传入的假期nft通证标识符数组的长度;
103.c205.智能合约触发withdraw事件,传入申请用户的地址标识符和假期nft通证标识符数组;
104.c206.智能合约返回给用户一个假期转化证明,证明中包含用户已转化的假期天数,用户把该证明提交给管理员,即可完成将假期nft通证转化为积分,该积分可用来兑换员工福利,或是作为员工考核指标。
105.c3.用户调用智能合约中的usebatchvacations函数,传入假期nft通证标识符数组,数组长度大于等于1,执行完成之后减少用户所有的假期余额,完成将假期nft通证转化为真正的假期;
106.所述步骤c3包括以下步骤:
107.c301.用户调用智能合约中的usebatchvacations函数,传入假期nft通证标识符
数组,数组长度大于等于1;
108.c302.智能合约遍历nft通证标识符数组,检查每一个nft通证的所有者是否是申请用户,若是,则转入步骤c303,否则,则返回步骤c301;
109.c303.智能合约遍历nft通证标识符数组,把每一个nft通证的所有者设为空;
110.c304.智能合约减少申请用户对应的vacationbalances,数量等于用户传入的假期nft通证标识符数组的长度;
111.c305.智能合约触发usebatchvacations事件,传入申请用户的地址标识符和假期nft通证标识符数组;
112.c306.系统通知申请用户,其申请的假期已生效,假期天数为用户传入的假期nft通证标识符数组的长度,完成将假期nft通证转化为真正的假期。
113.本发明基于nft协议进行改进,将系统分为三个阶段:用户管理阶段负责用户的登录或注册,假期通证化阶段负责将用户的假期转化为假期nft通证,用户的每一天假期都可以转化为一个假期nft通证,在假期通证使用阶段中,用户可以选择将假期nft通证转化为积分,也可以选择将假期nft通证转化为真正的假期。此方案通过改进原有的nft协议,实现了批量铸造nft方法,为用户节省了大量的gas消耗和频繁调用合约所消耗的时间,并且所需的事务数量也大大减少了,对以太坊的拥堵问题具有一定的改善作用。管理者能够将员工的假期转化为假期nft通证,员工的每一天假期都对应着一个假期nft通证,每一个假期nft通证都有一个唯一的标识符和所有者,通过这样的转化,方便了管理者对用户的假期管理,减少了假期管理过程中可能会出现的混乱情况。智能合约的引入也使得假期管理更加透明化,员工也能够量化加班所带来的收益,提高了假期管理系统的透明性。
114.在此基础上,本发明能够实现以下技术效果:
115.本实施例中,如图2所示,包括用户管理阶段、假期通证化阶段和假期通证使用阶段。其中对nft协议的改进是在假期通证化阶段完成的,原有的nft协议并未对nft的铸造方式进行规定,而为了安全性的考虑,市面上大多数nft实现方式都是每次只能铸造一个nft,不仅时间效率较低,gas消耗也很高。本发明对nft协议做的改进就是实现了nft的批量铸造,通过一次合约调用即可实现铸造多个nft,并且每个nft的标识符和所有者都是唯一的,数据结构上和原有的nft协议是相同的。
116.本实施例中,如图2所示,本发明对nft协议的改进存在于假期通证化阶段,其改进后的nft协议的伪代码如图7所示;
117.参见图7所示,to为用户的地址标识符,amount为铸造nft的个数,并且还用到了三个智能合约的内置变量:vacationbalances、vacationowners和vacationcounter。其中 vacationbalances代表用户的假期余额,是一个由address到整型的键值对;vacationowners 代表假期nft通证的所有者,是一个由整型到address的键值对;vacationcounter代表假期nft通证的标识符,即nft的id,是一个整型变量。变量中的address是以太坊智能合约中的特殊变量,代表的是一个账户,即用户的唯一id。
118.通过图7的伪代码思路,本发明实现了批量铸造nft,即通过一次合约函数的调用,即可实现铸造多个nft,在假期管理场景中,就转化为可以帮助用户批量铸造假期nft通证。每个假期nft通证的数据结构与普通nft的数据结构相同,都是通过owner和balances这两个键值对来记录nft的所有者和用户的余额,通过引入第三个变量vacationcounter,实现
了批量铸造nft方法。合约内置变量vacationcounter是假期nft通证的唯一标识符,每生成一个假期nft通证,该标识符便会增加1,并且该变量为私有变量,用户只能通过调用 mintbatchvacations函数来改变vacationcounter的值,而无法直接对该变量做出修改,这就使得用户无法重复铸造标识符相同的假期nft通证,由此保证了该合约的安全性。
119.下面以两个具体实验例对本发明提供的基于改进区块链nft协议的假期通证化系统及方法的gas消耗和事务数量做进一步描述。
120.(1)gas消耗
121.在以太坊中,gas消耗可以理解为矿工验证事务并将其上链而产生的额外开销,因为上链需要修改区块链的状态,因此需要一定的额外开销。用户与智能合约的交互也可以看作是一个事务,事务来自用户,发往智能合约,带有额外的数据,即需要调用的函数及其需要的参数。每个智能合约都有自己的存储空间,存放着一些与合约相关的变量,因此合约中的函数分为两种,一种是会消耗gas的函数,另外一种是不会消耗gas的函数。消耗gas的函数会对合约中的内置变量做出修改,而不消耗gas的函数则只对合约的内置变量进行查询,不做任何的修改。因此gas消耗是衡量一个智能合约效率高低的关键指标,gas消耗越低,其产生的额外开销就会越少,智能合约中所执行的运算次数也会减少,整体来讲效率会更高。
122.本实施例中,如图5所示,展示了本发明改进的nft协议和原nft协议的gas消耗对比。从该图中可以看出,本发明提出的批量铸造nft方法,在铸造nft数量较多的情况下, gas的消耗量是大大少于原有nft协议的。从该图中也可以看出,两条gas消耗曲线都是直线,即gas消耗和铸造nft个数呈线性关系。
123.原nft协议的gas消耗和铸造nft数量呈线性关系,是因为出于安全和实际应用场景考虑,其每次只能铸造一个nft,而每次铸造nft,即去调用智能合约中的铸造函数,其 gas消耗都是固定的,所以要铸造多个nft时,只能多次去调用合约中的铸造函数,因此最后的gas消耗和铸造nft个数呈线性关系。
124.而改进后的nft协议的gas消耗和铸造nft数量呈线性关系,是因为在改进后的nft 协议中,批量铸造nft方法本质上是通过一个循环实现的,控制循环的终止条件是传入的参数amount,即铸造nft的个数,因此铸造nft的个数每增加一个,该循环就会多做一次,而每次循环中的要执行的语句是固定的,其gas消耗也是固定的,因此最后的gas消耗和铸造nft的个数是呈线性相关的。出于应用场景的考虑,在假期管理场景中,批量铸造nft,即批量地将用户的假期转化为假期nft通证,每一天假期都对应着一个假期nft通证,是有其实际意义的,员工的假期往往不只会有一天,若假期天数较多的话,该改进相较于原nft 协议来说,gas消耗会大大地减少。
125.(2)事务数量
126.在以太坊中,事务大致分为两种类型,一种是用户和用户之间的事务,另外一种是用户和智能合约的事务。而智能合约中也有两种函数,一种是会消耗gas的函数,另外一种是不会消耗gas的函数。用户如果与智能合约中的消耗gas的函数进行交互,则每次调用该函数都会产生一个事务;用户如果与智能合约中不消耗gas的函数进行交互,则无论怎样调用该函数,都不会生成事务。
127.在以太坊中,事务从发布到上链需要一定的时间,该时间取决于同一时间内的总
事务数量和出块的速度。若同一时间内提交到全网的事务数量比较少,出块的速度也比较快,那么事务的确认时间就会相对较短,反之,事务的确认时间就会比较长。以太坊如今存在着拥堵问题,即全网中的事务数量过多,出块的速度赶不上事务生成的速度,导致一笔事务需要等待的确认时间非常长,若用户不设置较高的gas,可能需要等待几个小时事务才会被上链。
128.本实施例中,如图6所示,展示了本发明改进的nft协议和原nft协议的事务数量对比。从该图中可以看出,原nft协议每铸造一个nft,就会产生一笔新的事务,而改进的 nft协议则可以做到在一次事务中铸造多个nft。因此,在改进的nft协议中,无论铸造多少个nft,只要不超过事务设置的gas上限,都只会产生一笔事务;而在原nft协议中,每次铸造一个nft都会产生一笔事务,从事务数量的角度来说,改进nft协议的事务数量大大少于原nft协议。每笔事务从发送到上链,都需要一定的时间,因此通过一笔事务就可以铸造多个nft的方式,为用户节省了大量的等待时间;而且,与智能合约的交互次数减少了,事务数量也因此减少了,这个改进也可以对以太坊当前存在的拥堵问题提供一定的缓解作用。
129.以上所述实施例仅表达了本技术的具体实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术技术方案构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。