一种维持区块链节点能力均衡的方法及系统与流程

文档序号:26589657发布日期:2021-09-10 20:29阅读:74来源:国知局
一种维持区块链节点能力均衡的方法及系统与流程

1.本发明涉及区块链技术领域,特别是一种维持区块链节点能力均衡的方法及系统。


背景技术:

2.区块链是未来信用时代最重要的基础设施,这个由参与者构建的基础设施,其最基础的组成部分是其参与者所提供的参与设备,由于设备之间存在计算能力与存储能力之间的差异,所以其所能提供的贡献也是由差异的,那么,这就要求区块链对于这些设备所产生的激励也应该是随设备的贡献而变化的,否则就可能导致劣质设备驱逐优质设备的结果。因为优质设备必定需要更高的成本,如果投入更高的成本而只能获得和劣质设备一样的收益,那么必将产生劣币驱逐良币的现象发生,从而促使这个信用时代最重要的基础设施朝着越来越差的方向发展。
3.在实际应用中,为了解决这个问题,最常用的解决方案便是采用区块pow工作量证明机制,比如最典型的代表也就是比特币的区块链网络,但这促进投入优质设备的方案,却导致了只有优质设备可以参与的结果,甚至形成了少量优质设备持有者垄断区块链网络的结果,比如矿厂,这不仅破坏了区块链网络人人参与贡献的机制,还违背了其去中心设计的初衷,形成了事实上寡头垄断的局面。现在也出现了一些改进pow的方案,比如不与设备计算能力挂钩,避免计算能力无谓的比拼浪费的权益机制pos,这种方案将区块链的参与设备从设备竞争中解脱出来,让更持有更多权益的用户获得更多收益,但这带来了新的问题,由于参与设备无论计算能力大小都能获得相同的收益,导致参与者提供的设备朝着越来越省的方向发展,再由于参与者不需要提供计算能力,所以实际应用中往往出现一台设备模拟多个用户的现象,极端情况下一些区块链网络虽然看上去用户很多,但实际往往只有几个节点设备甚至只有一台设备,这在事实上和传统中心化应用没有本质的区别,这在解决了一个小问题的结果上却引入了一个更大的问题。其它衍生的解决方案,要么靠近pow,要么靠近pos,要么存在过渡依赖计算能力的问题,要么就陷入无优质节点参与的问题。那么,如何提供一种,既能鼓励用户提供优质节点,又不会导致依赖计算能力的结果,还能让不同能力的设备都能贡献到区块链网络,成为一个急需解决的问题。


技术实现要素:

4.本发明旨在提出一种维持区块链节点能力均衡的的方法及系统。
5.一种维持区块链节点能力均衡的方法,其特征在于,所述方法包括:
6.s1、a节点选取一个目标矿工,生成给该矿工投票的交易,根据难度公式计算出自己当前所在难度,比较自己的投票交易难度是否大于或等于目标难度,如果不满足则进入循环,结束难度检查;
7.s2、a节点将交易提交到区块链上,区块链上的b节点接收并处理投票交易,b节点根据难度公式计算出发送者当前难度和当前交易难度,比对交易难度是否符合大于或等于
发送者当前交易难度,如果不符合则丢弃交易,如果符合则处理交易;
8.s3、b节点完成所有投票处理,统计所有参与者得票并按得票排序,取出排名为前若干名得票者加入矿工;
9.s4、所述若干名矿工进入打块队列,在工作中获得奖励,获取奖励分派方案和奖励分配方案中涉及的参与者,计算各参与者所获得的的奖励数量,将奖励分配给这些参与者。
10.进一步的,步骤s1中所述循环包括:
11.s11、a节点提取一个随机数,将随机数放入交易体,重新为交易签名,按难度公式计算交易体难度;
12.s12、a节点对比交易难度是否大于或等于目标难度,如果是,完成交易的生成,如果不是,继续循环;
13.s13、结束节点循环。
14.进一步的,步骤s2中所述处理交易包括:
15.s21、b节点提取投票目标;
16.s22、b节点检查目标是否可被投票,检查投票者是否拥有足够余票;
17.s23、通过上述检查,b节点确认投票有效,给目标累加票数,完成交易处理。
18.进一步的,步骤s1或步骤s11所述公式由上层应用指定,当上层未指定时,采用统一的默认公式,
19.hard
a
=(e
n
)*x/amount
20.所述hard为难度,a表示账户,e为自然常数,n表示当前为第几笔交易,x为当前链的难度常数,amount为当前权益,hard
a
为目标难度;
21.hard
t
=(sha256(trs+nonce).getbuffer())/hard
a
22.所述hard表示难度,t表示交易,sha256表示采用256位的椭圆矩形加密,trs为交易内容,nonce为随机数,getbuffer为获得当前值的二进制值,hard
t
为当前交易难度。
23.本发明在上述一种维持区块链节点能力均衡的方法的基础上还延伸提出一种维持区块链节点能力均衡的系统,其特征在于,所述系统包括:
24.矿工管理器:用于管理当前区块链网络中有资格锻造区块的矿工,所述通过参与者通过投票选举产生;
25.投票管理器:用于管理当前网络中的投票情况,接收参与者投票,并统计最终得票,并获得各轮次选举最终结果;
26.激励管理器:用于管理当前区块链网络的激励方式,根据上层业务要求的不同,可以配置不同的激励形式;
27.难度管理器:用于管理当前网络中的投票难度,所述投票难度根据难度公式进行计算;所述难度公式由上层应用指定,当上层未指定时,采用统一的默认公式,
28.hard
a
=(e
n
)*x/amount
29.所述hard为难度,a表示账户,e为自然常数,n表示当前为第几笔交易,x为当前链的难度常数,amount为当前权益,hard
a
为目标难度;
30.hard
t
=(sha256(trs+nonce).getbuffer())/hard
a
31.所述hard表示难度,t表示交易,sha256表示采用256位的椭圆矩形加密(可以采用任何一种加密方式不影响本发明的实现),trs为交易内容,nonce为随机数,getbuffer为获
得当前值的二进制值,hard
t
为当前交易难度;
32.账务管理器:用于管理当前参与者的权益;
33.所述矿工管理器、投票管理器、激励管理器、难度管理器、账务管理器互相交叉网状连接,可以互相进行数据访问。
34.进一步的,所述矿工管理器包括:
35.矿工清单模块:用于列出已成为矿工的清单;
36.矿工队列模块:用于将当前入选的矿工按照特定的顺序排列出来,所述特定的顺序跟参与排序的矿工有关,无法提前预知,也不可通过任何方式去提前操控这个顺序的生成,所述矿工的顺序并不是最终的区块锻造顺序,而是为后面的队列混淆模块提供基础数据;
37.队列混淆模块:用于根据当前最后一个块的数据,作为随机种子,从矿工队列模块中抽取一名本轮未参与打块的矿工出来,抽取的对象与最后一个块的数据直接相关,在最后一个块出现之前,无法知道当前块轮到谁。
38.进一步的,所述投票管理器包括:
39.投票收集模块:用于接收并保存当前网络中对矿工的投票情况,并一一检查投票者数据合法性,并检查投票数是否超过可投票总额,并核对非每一份投票的难度是否符合要求;
40.计票统计模块:用于统计被投者的得票总数,并筛选出符合当前链要求的入围矿工名单;
41.轮次管理模块:用于给出当前轮入围名单,以及历史入围情况,并记录历史矿工入围顺序以及实际参与锻造区块的顺序。
42.进一步的,所述激励管理器包括:
43.角色管理模块:用于管理当前参与激励的角色;
44.分配管理模块:用于管理当前所使用的激励方案中的具体内容;
45.激励计算模块:用于定义实际参与计算时所使用的公式。
46.进一步的,所述难度管理器包括:
47.常数管理模块:用于管理当前难度计算中所使用到的常数,这个常数由链初始决定或为用户指定的一个特定来源;
48.公式管理模块:用于管理当前难度计算中所采用的难度公式;
49.难度校验模块:用于计算交易的难度,并校验当前交易难度是否符合当前难度要求。
50.进一步的,所述账务管理器包括:
51.实时账务模块:用于实时记录当前区块链上各参与者此刻的权益数;
52.历史账务模块:用于记录历史各块结束时的账务情况;
53.账务查询模块:用于为其它模块提供账务的查询操作。
54.本发明相比现有技术,具有如下优点:
55.(1)实现了大小节点均可获得区块链奖励的作用;
56.(2)实现了a节点投入更长时间的计算设备、b节点可以少提供一些设备时间的作用;
57.(3)解决了网络中因算力制约发展不均衡的问题;
58.(4)解决了一旦引入计算能力机制就导致算力垄断的问题。
附图说明
59.图1为本发明所提及维持区块链节点能力均衡的方法的流程示意图;
60.图2是本发明所提及步骤s1中所述的循环的流程示意图;
61.图3是本发明所提及步骤s2中所述处理交易的流程示意图;
62.图4是本发明所提及维持区块链节点能力均衡的系统的组成示意图;
63.图5是本发明所提及矿工管理器的组成示意图;
64.图6是本发明所提及投票管理器的组成示意图;
65.图7是本发明所提及激励管理器的组成示意图;
66.图8是本发明所提及难度管理器的组成示意图;
67.图9是本发明所提及账务管理器的组成示意图;
68.其中:100矿工管理器;200投票管理器;300激励管理器;400难度管理器;500账务管理器;101矿工清单模块;102矿工队列模块;103队列混淆模块;201投票收集模块;202 计票统计模块;203轮次管理模块;301角色管理模块;302分配同步模块;303激励模块; 401常数管理模块;402公式管理模块;403难度校验模块;501实时账务模块;502历史账务模块;503账务查询模块
具体实施方式
69.下面结合附图和具体实施例对本发明作进一步详述。在此需要说明的是,下面所描述的本发明各个实施例中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
70.区块链是未来信用时代最重要的基础设施,其最基础的组成部分是其参与者所提供的参与设备,由于设备之间存在着计算能力与存储能力之间的差异,所以不同设备能够提供的贡献也是差异的,为了以较低的成本设定合适的激励机制,使区块链对于这些设备产生的激励随其贡献而变化,促进区块链行业发展,本发明提出了一种维持区块链节点能力均衡的方法,为了实现该方法,具体核心原理及步骤:
71.本方法设计了“参与者计算能力证明”的概念,保证用户参与时有投入真实的设备,又能让计算能力强的设备获得越多的收益,还能让各种能力的设备都获得收益,且不会导致最终依赖计算能力的结果。
72.具体见如下步骤,如图1所示,其中a节点和b节点的关系为,b节点的权益比a节点的权益大:
73.s1、a节点选取一个目标矿工,生成给该矿工投票的交易,根据难度公式计算出自己当前所在难度,比较自己的投票交易难度是否大于或等于目标难度,如果不满足则进入循环,结束难度检查;
74.s2、a节点将交易提交到区块链上,区块链上的b节点接收并处理投票交易,b节点根据难度公式计算出发送者当前难度和当前交易难度,比对交易难度是否符合大于或等于发送者当前交易难度,如果不符合则丢弃交易,如果符合则处理交易;
75.s3、b节点完成所有投票处理,统计所有参与者得票并按得票排序,取出排名为前
若干名得票者加入矿工;
76.s4、所述若干名矿工进入打块队列,在工作中获得奖励,获取奖励分派方案和奖励分配方案中涉及的参与者,计算各参与者所获得的的奖励数量,将奖励分配给这些参与者。
77.步骤s1、s2使a、b节点根据指特定的公式计算其投票交易难度,仅在其投票交易难度大于或等于目标难度时,继续运行下一步骤,使节点计算能力与用户权益绑定;
78.步骤s3中所取的排名为前若干名的得票者数量会根据不同的应用场景而不同,本实施例优选得票数为前57名得票者加入矿工。
79.如图2所示,在本实施例中,步骤s1中所述循环包括:
80.s11、a节点提取一个随机数,将随机数放入交易体,重新为交易签名,按难度公式计算交易体难度;
81.s12、a节点对比交易难度是否大于或等于目标难度,如果是,完成交易的生成,如果不是,继续循环;
82.s13、结束节点循环。
83.如图3所示,在本实施例中,步骤s2中所述处理交易包括:
84.s21、b节点提取投票目标;
85.s22、b节点检查目标是否可被投票,检查投票者是否拥有足够余票;
86.s23、通过上述检查,b节点确认投票有效,给目标累加票数,完成交易处理。
87.在本实施例中,步骤s2或步骤s11所述公式由上层应用指定,当上层未指定时,采用统一的默认公式,
88.hard
a
=(e
n
)*x/amount
89.其中,hard表示难度,a表示账户,e表示自然常数,n表示当前为第几笔交易,x为当前链的难度常数,amount为当前权益。
90.使用上述公式得出当前的难度后,再采用通过公式计算出当前交易难度是否满足上述难度,这里计算交易难度的公式可以由上层应用自定义,当上层应用没有特别指定时,将采用默认公式:
91.hard
t
=(sha256(trs+nonce).getbuffer())/hard
a
92.其中,hard表示难度,t表示交易,sha256表示采用256位的椭圆矩形加密(可以采用任何一种加密方式不影响本发明的实现),trs为交易内容,nonce为随机数,getbuffer为获得当前值的二进制值,hard
a
为目标难度。当hard
t
>=hard
a
时,表示交易难度符合要求,否则就是无效投票,参与者需要继续进行计算直到找到正确的nonce时才能满足上述等式,从而投出有效票。上述对于投票难度的计算,也可以应用于普通的交易。在上述公式中,x将配置在难度管理器中,上面两个公式也将配置在难度管理器中,难度管理器将根据公式内容进行难度计算与校验。
93.通过指定或默认的难度计算公式,通过公式计算将参与者的计算能力随用户权益的降低而指数增加,并将指数增加的趋势维持在用户一轮的收益需要设备支出一个区块轮次周期的计算能力。
94.如图4所示,本发明还提出一种维持区块链节点能力均衡的系统,其特征在于,所述系统和组件包括:
95.矿工管理器100:用于管理当前区块链网络中有资格锻造区块的矿工,所述通过参
与者通过投票选举产生;
96.投票管理器200:用于管理当前网络中的投票情况,接收参与者投票,并统计最终得票,并获得各轮次选举最终结果,本实施例在投票时,每一份投票都需要支出一定的计算能力,而发起投票的人,如果选中了实际打块的矿工,自己也将分得打块收益;
97.激励管理器300:用于管理当前区块链网络的激励方式,根据上层业务要求的不同,可以配置不同的激励形式,本实施例支持对打块者、投票者单独或分别发放奖励,且可以配置各自奖励的比例,如果上层应用没有特别要求,这里将默认按打块者和投票者分别获得50%的奖励进行发放,由于投票者往往不止一人,所以各投票者之间按照自己投票比例获得奖励,当没有任何投票者投票而依然进行了打块时,打块者将独占全部奖励;
98.难度管理器400:用于管理当前网络中的投票难度,所述投票难度根据难度公式进行计算;所述难度公式由上层应用指定,当上层未指定时,采用统一的默认公式,
99.hard
a
=(e
n
)*x/amount
100.其中,hard表示难度,a表示账户,e表示自然常数,n表示当前为第几笔交易,x为当前链的难度常数,amount为当前权益。
101.使用上述公式得出当前的难度后,再采用通过公式计算出当前交易难度是否满足上述难度,这里计算交易难度的公式可以由上层应用自定义,当上层应用没有特别指定时,将采用默认公式:
102.hard
t
=(sha256(trs+nonce).getbuffer())/hard
a
103.其中,hard表示难度,t表示交易,sha256表示采用256位的椭圆矩形加密(可以采用任何一种加密方式不影响本发明的实现),trs为交易内容,nonce为随机数,getbuffer为获得当前值的二进制值,hard
a
为目标难度。当hard
t
>=hard
a
时,表示交易难度符合要求,否则就是无效投票,参与者需要继续进行计算直到找到正确的nonce时才能满足上述等式,从而投出有效票。上述对于投票难度的计算,也可以应用于普通的交易。在上述公式中,x将配置在难度管理器中,上面两个公式也将配置在难度管理器中,难度管理器将根据公式内容进行难度计算与校验。
104.账务管理器500:用于管理当前参与者的权益,这个权益可以是以前dpop专利中的参与度,也可以是参与者的当前余额,需要说明的是,一般情况是为了防止恶意刷票与作恶的问题,在本发明中采用参与者上一轮的余额,这里无论采用哪一个数据,只要是对于参与者为常量的数字(不随外部变量变化而变化的值,也可以理解为,自身不变时,该值永远不变的量)均可以用来作为这里的权益数代入公式进行计算,并不影响本发明的实现。账务管理器 500与难度管理器400、投票管理器200、激励管理器300、矿工管理器100通过通信连接,传输更新账务信息;对应的管理器根据接收到的当前账务信息进行处理。
105.所述矿工管理器100、投票管理器200、激励管理器300、难度管理器400、账务管理器 500互相交叉网状连接,可以互相进行数据访问。
106.如图5所示,优选的,所述矿工管理器100包括:
107.矿工清单模块101:用于列出已成为矿工的清单,这其中包括历史上已经是矿工的清单,也包括新加入的矿工,这份清单里不一定是当前轮次工作的矿工;
108.矿工队列模块102:用于将当前入选的矿工按照特定的顺序排列出来,这个顺序跟参与排序的矿工有关,无法提前预知,也不可通过任何方式去提前操控这个顺序的生成,这
里的矿工的顺序并不是最终的区块锻造顺序,而是为后面的队列混淆模块提供基础数据;
109.队列混淆模块103:用于根据当前最后一个块的数据,作为随机种子,从矿工队列模块中抽取一名本轮未参与打块的矿工出来,这个抽取谁与最后一个块的数据直接相关,在最后一个块出现之前,无法知道当前块轮到谁。
110.矿工清单模块101与矿工队列模块102、队列混淆模块103通信连接,按照要求对加入的矿工进行排列实现矿工管理器100的功能。
111.如图6所示,优选的,所述投票管理器200包括:
112.投票收集模块201:用于接收并保存当前网络中对矿工的投票情况,并一一检查投票者数据合法性,并检查投票数是否超过可投票总额,并核对非每一份投票的难度是否符合要求,通过通信传输矿工的投票情况信息至计票统计模块202;
113.计票统计模块202:用于统计被投者的得票总数,并筛选出符合当前链要求的入围矿工名单,将名单信息传输给轮次管理模块202进行处理;
114.轮次管理模块203:用于给出当前轮入围名单,以及历史入围情况,并记录历史矿工入围顺序以及实际参与锻造区块的顺序。
115.如图7所示,优选的,所述激励管理器300包括:
116.角色管理模块301:用于管理当前参与激励的角色,本实施例中提供创世者、投票者、交易者、打块者四种角色,上层用户可以根据不同的业务需求配置使用不同的角色;
117.分配管理模块302:用于管理当前所使用的激励方案中,根据角色管理模块301的角色管理信息,决定各角色的分配比例,以及什么时候分配,本实施例提供按指定比例分配、按固定额度分配,以及在出块时分配、轮次结束时分配两种,上层应用可以根据实际业务的需要选择不同的分配方式与分配时机;
118.激励计算模块303:用于定义实际参与计算时所使用的公式,本实施例中所述公式是区块链发布时由开发人员用代码初始写好,在执行时按照所设定的参与分配的角色与分配方式进行计算。
119.如图8所示,优选的,所述难度管理器400包括:
120.常数管理模块401:用于管理当前难度计算中所使用到的常数,本实施例中,这个常数可能由链初始决定,也可能为用户指定的一个特定来源;
121.公式管理模块402:用于管理当前难度计算中所采用的难度公式;
122.难度校验模块403:根据常数管理模块401和公式管理模块402的公式、常数信息,用于计算交易的难度,并校验当前交易难度是否符合当前难度要求。
123.如图9所示,优选的,所述账务管理器500包括:
124.实时账务模块501:用于实时记录当前区块链上各参与者此刻的权益数,这个数字随着每一次参与者交易的发生而改变,比如每投出一票这个值都将变化;
125.历史账务模块502:用于记录历史各块结束时的账务情况,根据上层应用需求的不同将存储不同高度区块时的账务历史情况,也可以是按轮次存储,这个值在一个时间周期范围内,无论参与者投出多少票或发生多少账务变动,这个值都不会变化,这个时间周期可能是一个区块,可能是一个轮次的时间;
126.账务查询模块503:基于各模块通信连接,用于为其它模块提供账务的查询操作,这些操作可能包括当前实时账务的查询,也可能是历史某个时间区块周期下的账务余额查
询。
127.本发明相比较现有区块链节点激励机制,通过投票管理器在权益机制的基础上在参与者端增加计算能力证明机制,在参与者端约束设备形式,可保证用户参与时有投入真实的设备,又能让计算能力越强的设备获得越多的收益,还能让各种能力的设备都获得收益,且不会导致最终依赖计算能力的结果。
128.需要说明的是,本实施例中,没有提到区块块管理器,因为区块管理器是否存在并不影响本发明的实现。奖励的发放可以在投票被处理时、交易被处理时或区块被处理时进行,在具体实施场景下,当奖励的来源来自于区块的锻造,那么就需要有区块管理器,如果不是来源于区块的锻造,就不需要区块管理器即可实现本发明。
129.以上所述,仅是本发明的较佳实施例而已,并非对本发明的技术范围作任何限制,故但凡依本发明的权利要求和说明书所做的变化或修饰,皆应属于本发明专利涵盖的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1