一种基于区块链的确定的非确定性选择方法、系统及存储
介质
技术领域
本发明涉及区块链技术领域,尤其涉及一种基于区块链的确定的非确定性选择方法、系统及存储介质。
背景技术
缩略语和关键术语定义:
POW(Proof of Work):工作量证明;
POS(Proof of Stake):权益证明;
DPOS(Delegated Proof of Stake):代表权益证明;
Hash:哈希散列。
关于目前区块链的共识机制主要有:工作量证明(PoW)和代表制权益证明(DPoS)。
工作量证明(PoW):矿工节点对打包区块内容做哈希散列运算,对结果进行二进制数值排序,序列小于某个难度值的获胜。使用这种机制可以防止任何人对结果的预测。哈希散列的单向可验证性为公众提供了任何时间的快速核实。哈希散列的随机效果为整个共识事件提供了公平性。缺点是获得正确结果的代价太大,需要耗费大量电力资源来做没有实际效益的运算(不环保)。同时P2P网络的异步性容易导致两个不同地区接近同一时间获得的结果在网络中出现两种先后次序,导致共识分叉。为了减小分叉的影响需要将难度调大到足够安全。比特币为此付出了每10分钟出一个块,每1小时才得到充分确认(6个确认)的代价。使用PoW的主要代表有比特币和以太坊。
代表制权益证明(DPoS):对于PoW的低效和不环保问题,EOS等区块链使用了新的代表值共识机制来克服。这个机制不使用哈希排序算法,而是直接由一组代表(比如EOS的21个,波场的27个)打包出块。具体的细节是由一个主代表打包,其余的做验证,达成2/3以上共识即盖戳确定。主代表每出一个块轮换一下。这些代表是预先由公众选举出来的。选举机制是通过权益证明,即参与选举的节点所持有的区块链币数量。
区块链共识机制中使用的代表制(Delegate)带来了高效性,同时也带来了安全性的降低。这种机制依赖于预先明确的少数代表(21/27个)来组成记账集体,决定区块账本内容。这些成员因为工作极为重要,话语权分量很大,让整个社区变成了少数人专制的王国。这些节点身份很特殊,身价高,使其成为贿赂攻击的对象。比如EOS,其21个代表在EOS公链发布前便已成为实际上的超级节点,成为各方资源大户连横合纵的战场,成为一个强中心化的区块链。
背景技术1的技术方案:
POW:
工作量证明协议,最早是在1993年由Cynthia Dwork和Moni Naor在学术论文中提出的,其是一种应对拒绝服务攻击和其他服务滥用的一种策略。而POW这个名词则是在1999年由Markus Jakobsson和Ari Juels在文章中提出。
2008年,在中本聪发布的比特币白皮书《比特币:一种点对点的电子现金系统》中,使用了POW工作量证明的方式作为其系统的共识机制。一个工作量证明是指满足特定条件的一个数据计算,产生正确结果比较困难,但验证正确结果比较简单。其正确结果的只能通过不断的枚举随机数来进行验证试错,从而最终找到正确答案。而这个数据计算使用hash算法来实现,hash算法是一种单向散列算法。计算数据hash值十分简单,但要根据固定hash值获取原数据,则只能通过枚举试错来进行。
在比特币系统中,在进行随机散列运算时,工作量证明机制引入了对某一个特定值的扫描工作,比方说SHA-256下,随机散列值以一个或多个0开始。那么随着0的数目的上升,找到这个解所需要的工作量将呈指数增长,而对结果进行检验则仅需要一次随机散列运算。
与此同时,比特币系统区块中增补了一个随机数(Nonce),这个随机数需要满足使得给定区块的hash值出现所需的那么多个0的条件。由于hash计算的不可逆特性,只能通过反复尝试来找到这个随机数,这样就构建了一个工作量证明机制。只要节点找到了能计算出满足要求的Nonce,那么该节点即完成了工作量的证明,获得了区块的打包记账权。
在比特币系统中,其具体共识机制流程为:
1.每个节点首先收集并选择交易,然后计算交易列表的Merkle根hash;
2.节点构造区块头,其中包含版本、上一个区块头的hash值、计算的交易列表Merkle根hash、时间戳、难度值和生成的随机数nonce;
3.然后节点会计算构造的区块头hash值,检查其hash值是否小于或等于当前难度值。如果正确,则完成工作量证明,将打包的区块提交网络中,网络中的其它节点将会检测其合法性。如果计算的hash值,大于当前难度值,则返回第二步,继续进行工作量计算。
此过程即为比特币系统中的挖矿过程,而进行挖矿的相关节点被称之为矿工。
在比特币POW共识机制中,只要CPU耗费的工作量能够满足该工作量证明机制,那么那么除非重新完成相当的工作量,生成的区块的信息就不可更改。由于之后的区块是链接在该区块之后的,所以想要更改该区块中的信息,就还需要重新完成之后所有区块的全部工作量。
同时,该工作量证明机制还解决了在集体投票表决时,谁是大多数的问题。如果决定大多数的方式是基于IP地址的,一IP地址一票,那么如果有人拥有分配大量IP地址的权力,则该机制就被破坏了。而工作量证明机制的本质则是一CPU一票。“大多数”的决定表达为最长的链,因为最长的链包含了最大的工作量。如果大多数的CPU为诚实的节点控制,那么诚实的链条将以最快的速度延长,并超越其他的竞争链条。如果想要对业已出现的区块进行修改,攻击者必须重新完成该区块的工作量外加该区块之后所有区块的工作量,并最终赶上和超越诚实节点的工作量。
另一个问题是,硬件的运算速度在高速增长,而节点参与网络的程度则会有所起伏。为了解决这个问题,工作量证明的难度(the proof-of-work difficulty)将采用移动平均目标的方法来确定,即令难度指向令每小时生成区块的速度为某一个预定的平均数。如果区块生成的速度过快,那么难度就会提高。
比特币通过POW共识机制来在众多矿工节点中选取出拥有记账权的矿工,其舍弃了可扩展性,保证高一致性和去中心化水平。
背景技术1的缺点:
1)由于全网中的每个节点需要通过工作量证明来获取区块打包记账权,因此使用POW共识机制时,系统中的每个矿工节点都需要不断的生成随机数试错,以求找到合适的Nonce值,这需要大量的电力支撑,也会造成大量的能源浪费。据统计,目前比特币挖矿的电力消耗,占全球总电力消耗的0.29%。
2)使用POW共识机制,会导致网络性能太低,需要等待多个确认,容易产生分叉,区块的确认共识达成的周期较长(10分钟)。由于共识达成需要等待多个确认,因此共识达成的结果是不确定的,继而账本里的交易也不是确定性的。一个区块的后面跟着越多的新区快就表示他获得了越多的确认,这个区块就越难被取消。比特币网络一般建议一个交易的确认需要6个区块的时间,也就是一个小时,但是数额越大的交易需要的确认时间越长。但是即使等待了很长的确认时间,也不能百分之百的确认这个交易不会被取消,因此当用于超过50%算力时,就可以通过从新完成工作量证明来改写链上数据,著名的51%算力攻击就是针对这个弱点的。这就导致了区块链的可扩展性降低。而且分叉的存在也导致比特币网络不能以太快的速度产出新的区块,否则越快的出块速度导致越高的分叉率,进而也就导致削弱了整个P2P网络共识的稳定性。从而导致比特币现在每秒交易量上限只有7笔,这对区块链系统在商业上的应用产生了巨大的限制。
背景技术2的技术方案:
POS:
在POW中,共识达成,是通过全网矿工节点通过挖矿来达成的。而挖矿的难度是系统自动动态调节的,以保证每小时生成区块的速度为某一个预定的平均数。因此某个固定时刻的挖矿难度值,对于全网所有节点来说,都是相同的。
由于POW存在诸多问题,人们提出了股权证明机制,在股权证明机制中,其核心思想为:在全网中拥有币的权益多的节点将容易获得区块的打包记账权,与此同时其也将获得系统给予的记账奖励。在使用POS共识算法的区块链系统中,节点拥有币的权益越多,其在系统中的权利越大,但这些节点攻击网络的意愿会比较低,因为一旦系统受到攻击,那么币的价格将会下降,那么其利益也将受到相应的损害。
目前股权证明机制已有很多不同变种,但其基本原理不变,都是使产生区块难度与节点在网络中拥有币的权益成比例,如今已有使用POS共识机制的区块链系统开始运行,如:点点币(Peercoin)和未来币(NXT)等。
在点点币中,其引入了币龄的概念。币龄是根据钱包中的货币多少以及货币在钱包中存在的天数来合称的一个单位,及定义为币的数量和币拥有天数的乘积。其将矿工挖矿的难度值与矿工的币龄的数量相关联,矿工的币龄,相当于其拥有系统权益比例。其币龄越大,那么矿工挖矿的难度值越低,即其越容易完成工作量证明,那么在区块链系统中的区块打包记账权,其便越容易得到。在其共识机制中,币龄与挖矿难度并非线性关系,其做了如下限制:只有未使用30天的币才能够参与到打包下一个区块的竞争中,并且,一旦币的权益被用于打包一个区块,那么其币龄将会被清零,这样就需要至少再等待30天,才能有从新打包记录区块的权利。与此同时,其为了防止非常老和非常大的权益控制区块链,寻找下一区块的最大概率会在在90天后达到最大值。
背景技术2的缺点:
POS将系统的记账权和节点在系统中的持币权益关联起来。以舍弃去中心化水平,提升系统的效率。系统中拥有大量币的节点将会拥有长久的优势,其对系统的控制权过大,影响系统的安全性。在目前的PoS机制中,并没有对当选代表做隐匿处理。由于权力过大,这些代表节点会立刻成为贿赂的目标,导致代表所最终代表的利益发生扭曲,使记账内容导向不公平。
由于候选人状态的公开性,以及共识算法的确定性,导致选择结果在一定范围内也是确定性的,这就使得未卜先知成为可能,使候选人可以通过调整状态来控制当选,并使之提前成为“可利益交换”的对象,破坏公平公正,扭曲社区公众利益。
背景技术3的技术方案:
DPOS:
DPOS是基于POS衍生出的共识方案,其类似于董事会的投票机制。节点中的所有持币人都拥有投票选举权,其票数和持币数成正比。所有全网节点统一选举出拥有区块打包记账权的节点,然后由这些节点来打包交易,并将其记录到区块链中。
DPOS是在2014年4月由Bitshares的首席开发者Dan Larimer提出并应用的。在Bitshares使用的DPOS共识机制中,其将被成功选举的节点称之为见证人,见证人拥有打包区块记录交易到区块链上的权利,同时也将获得系统对其的工作的奖励。系统中每一个持币人选取见证人,其中总同意票数中的前N(N通常定义为101)个候选者可以成功当选为见证人。由于在DPOS中,相当于通过选举的方式,将系统记账权全部集中到N个见证人手中,因此对于N的取值,必须要保证至少有一半的投票节点认为N已经充分的区中心化,多数见证人联合作恶的可能性很低。
当见证人名单被系统节点成功选出后,其将会被随机排列,然后每个见证人开始轮流打包区块记账。与此同时,见证人的名单排列不是一直固定不变的,其在每个维护周期会被从新随机排列一次,其中维护周期为1天。为了防止见证人节点故障或因为性能问题影响系统正常高效运行,系统对于见证人生成区块设有2秒的超时时间,一旦在规定的超时时间内没有生成区块,那么其记账权交由名单中的下一个见证人执行。与此同时为了防止见证人作恶,持币节点可以随时通过投票更换见证人,这样就可以防止见证人利用手中的机制权作恶,或者其节点故障及性能不足影响系统正常运行。
背景技术3的缺点:
在DPOS中,被成功选举的见证人节点拥有完全的记账权,其中心化水平非常高。因为选举是通过显式流程,各个代表是否被当选,谁被当选都是公开一目了然的,因此很容易滋生贿赂,形成利益绑定集团。对于中小节点社区成员则无法体现其独立意见。
由于节点信息的暴露,带来了黑客针对性的攻击当选节点,破坏出块进程,或者篡改记账内容。
发明内容
本发明提供了一种基于区块链的确定的非确定性选择方法,包括如下步骤:
步骤1,参选步骤:任何在线时间,参选节点手动选择参选状态;
步骤2,选举步骤:矿工节点获取上n个区块的确定参数,作为此轮选举的随机种子r;
步骤3,随机函数计算步骤:计算随机函数值R(ID,r),通过将随机种子r作用到每个参选者的ID上得到一个哈希散列,R为随机函数,ID为参选者识别参数;
步骤4,状态函数计算步骤:计算状态函数值S(ID,R,p1,p2,…,pn),得到每个参选者的状态值,S为状态函数,ID为参选者识别参数,R为随机函数值,p1,p2,…,pn为其他参量;
步骤5,排序步骤:对计算状态函数值S进行排序,选出前m个作为下一轮代表;
步骤6,记录上链步骤:矿工节点打包一个选举交易上链,将计算状态函数值S的前m个候选人记入交易,交易被打包到此时记账的区块中,然后被写入区块链。
作为本发明的进一步改进,在所述步骤1,参选步骤中,参选节点通过命令行远程过程调用RPC接口配置自己的参选状态信息,该参选状态信息会被P2P网络读取。
作为本发明的进一步改进,在所述步骤2,选举步骤中,每个参选节点都会有一个当前状态值,当前状态值由状态函数对参选节点当前的状态参量计算得出,状态参量的配置及状态函数的表达式由区块链工作目的决定,状态参量包含随机参量,随机参量使用一个确定性的随机种子r。
作为本发明的进一步改进,在所述步骤2,选举步骤中,配置的状态参量有:节点加入社区的时间、节点本初地址所拥有的押金数量、节点本初地址已经完成的交易数量、节点当选的代表次数、节点在当选代表时正常发挥的比例、节点在最近某个规定时间段内的以上状态;
状态函数包括常函数、幂函数、指数函数、对数函数、三角函数和反三角函数及其有限次有理运算或复合。
作为本发明的进一步改进,在所述步骤2,选举步骤中,使用以下几种参数之一或者组合作为随机种子r:
上第n个区块的区块哈希值,n>=1,n是个确定值;
上第n个区块的区块时间戳,n>=1,n是个确定值;
上第n个区块的区块nonce,n>=1,n是个确定值;
上第n个区块的区块体默克尔根哈希,n>=1,n是个确定值;
上第n个区块内的其他确定性数值,n>=1,n是个确定值。
本发明还提供了一种基于区块链的确定的非确定性选择系统,包括:
参选模块:用于任何在线时间,参选节点手动选择参选状态;
选举模块:用于矿工节点获取上n个区块的确定参数,作为此轮选举的随机种子r;
随机函数计算模块:用于计算随机函数值R(ID,r),通过将随机种子r作用到每个参选者的ID上得到一个哈希散列,R为随机函数,ID为参选者识别参数;
状态函数计算模块:用于计算状态函数值S(ID,R,p1,p2,…,pn),得到每个参选者的状态值,S为状态函数,ID为参选者识别参数,R为随机函数值,p1,p2,…,pn为其他参量;
排序模块:用于对计算状态函数值S进行排序,选出前m个作为下一轮代表;
记录上链模块:用于矿工节点打包一个选举交易上链,将计算状态函数值S的前m个候选人记入交易,交易被打包到此时记账的区块中,然后被写入区块链。
作为本发明的进一步改进,在所述参选模块中,参选节点通过命令行远程过程调用RPC接口配置自己的参选状态信息,该参选状态信息会被P2P网络读取。
作为本发明的进一步改进,在所述选举模块中,每个参选节点都会有一个当前状态值,当前状态值由状态函数对参选节点当前的状态参量计算得出,状态参量的配置及状态函数的表达式由区块链工作目的决定,状态参量包含随机参量,随机参量使用一个确定性的随机种子r。
作为本发明的进一步改进,在所述选举模块中,配置的状态参量有:节点加入社区的时间、节点本初地址所拥有的押金数量、节点本初地址已经完成的交易数量、节点当选的代表次数、节点在当选代表时正常发挥的比例、节点在最近某个规定时间段内的以上状态;
状态函数包括常函数、幂函数、指数函数、对数函数、三角函数和反三角函数及其有限次有理运算或复合;
使用以下几种参数之一或者组合作为随机种子r:
上第n个区块的区块哈希值,n>=1,n是个确定值;
上第n个区块的区块时间戳,n>=1,n是个确定值;
上第n个区块的区块nonce,n>=1,n是个确定值;
上第n个区块的区块体默克尔根哈希,n>=1,n是个确定值;
上第n个区块内的其他确定性数值,n>=1,n是个确定值。。
本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现本发明所述的方法的步骤。
本发明的有益效果是:本发明建立不可预测性,并在异步环境下保持这种不可预测内容的一致性,防止具备状态优势的代表利用优势资源实现专政;给予普通候选人足够的机会当选代表,行使记账权;保证系统对代表作恶和无能的足够容错。
附图说明
图1是本发明的方法流程图。
具体实施方式
本发明公开了一种基于区块链的确定的非确定性选择方法。
针对背景技术1,使用本发明的代表机制可以解决PoW带来的环保问题和低效率问题。
针对背景技术2,使用本发明的可验证非确定性选举技术可以防止候选代表成为确定的当选人,防止长期霸占席位形成专制,提升去中心化程度,体现区块链技术的公平公正特性。
针对背景技术3,使用本发明的可验证隐匿选举技术可以降低当选者的自我确定性,防止专制和中心化,提高系统安全性,增强对黑客攻击的抵抗力。
目前现有的共识机制都有缺陷。工作量证明PoW因为不环保和效率低被代表制取而代之。然而,代表制并没有完美升级PoW,而是以牺牲去中心化来解决PoW的问题。如果要得到共识技术的全面升级,需要解决代表制的中心化问题。
本发明旨在解决当前代表体制的专政问题,提高去中心化能力,抵抗黑客攻击:
1.建立不可预测性,防止具备状态优势的代表利用优势资源实现专政。
2.给予普通候选人足够的机会当选代表,行使记账权。
3.保证系统对代表作恶和无能的足够容错。
4.如果使随机方法在区块链特定的确定性共识机制中发挥作用。
为了让选举结果变得足够不可预测,同时代表工作组的力量保持足够鲁棒,如图1所示,本发明基于区块链的确定的非确定性选择方法包括:
步骤1,参选步骤:任何在线时间,参选节点手动选择参选状态。
本发明需要定义一个参选状态。因为作为代表,该节点必须保证在执行职责的时间范围内是在线的。所以,并不是P2P网络中所有节点都做候选人,而是那些有意愿保证完成工作任务的节点才成为候选人。因此,需要给予节点一个自主选择参不参选的操作。
在一些状态证明的代表制共识体系中,节点在初始化的时候会有一个本初地址(账户),用于存储参选押金,或者与参选有关的数字货币。
参选节点通过命令行远程过程调用RPC接口配置自己的参选状态信息,该参选状态信息会被P2P网络读取。
步骤2,选举步骤:矿工节点获取上n个区块的确定参数,作为此轮选举的随机种子r。
每个参选节点都会有一个当前状态值,当前状态值由状态函数对参选节点当前的状态参量计算得出。状态参量的配置及状态函数的表达式由具体的区块链工作目的决定。
可能配置的状态参量有:节点加入社区的时间,节点本初地址所拥有的押金数量,节点本初地址已经完成的交易数量,节点当选的代表次数,节点在当选代表时正常发挥的比例,节点在最近某个规定时间段内的以上状态等等。
状态函数是对状态参量组合进行的计算式,目的是让所有被选参量协调发生作用,输出一个公平公正符合预期的结果,用于代表选择。状态函数的设计通常使用初等函数即可,包括常函数、幂函数、指数函数、对数函数、三角函数和反三角函数及其有限次有理运算或复合。
本发明并不对状态参量配置和状态函数的具体设计进行特别限定,但本发明特别要求状态参量至少包含一个随机参量。
本发明的随机参量使用一个确定性随机种子,必须对所有节点确定,以满足区块链共识机制的确定性。本发明使用以下几种参数之一或者组合作为随机种子r:
1.上第n个区块的区块哈希值,n>=1,n是个确定值;
2.上第n个区块的区块时间戳,n>=1,n是个确定值;
3.上第n个区块的区块nonce,n>=1,n是个确定值;
4.上第n个区块的区块体默克尔根哈希,n>=1,n是个确定值;
5.上第n个区块内的其他确定性数值,n>=1,n是个确定值。
步骤3,随机函数计算步骤:计算随机函数值R(ID,r),通过将随机种子r作用到每个参选者的ID上得到一个哈希散列。
本发明使用R(ID,r)作为随机函数,其中,R为随机函数;ID为参选者识别参数;r为随机参量。
步骤4,状态函数计算步骤:计算状态函数值S(ID,R,p1,p2,…,pn),得到每个参选者的状态值。
本发明要求在状态函数中引入随机函数,其形式为S(ID,R,p1,p2,…,pn)。其中,S为状态函数;ID为参选者识别参数;R为随机函数值;p1,p2,…,pn为其他参量。
步骤5,排序步骤:对计算状态函数值S进行排序,选出前m个作为下一轮代表。
选举时通过计算参选者的状态函数值得到一个序列,其最高值的若干参选者成为当选代表。由于非确定性的选举机制,任何人都无法根据其掌握的现有信息保证任何人当选或者不当选。
步骤6,记录上链步骤:矿工节点打包一个选举交易上链,将计算状态函数值S的前m个候选人记入交易,交易被打包到此时记账的区块中,然后被写入区块链。
经过选举后选举结果通过上链来公示。这个过程由矿工节点来实现。在代表制共识机制中,矿工节点由上一轮选举出来的代表节点担任。
公示是通过写入一个特殊的选举交易实现的。这个交易被打包到此时记账的区块中,然后被写入区块链。因此公示后此选举结果就不可篡改,永不磨灭,永远可查询。
本发明还公开了一种基于区块链的确定的非确定性选择系统,包括:
参选模块:用于任何在线时间,参选节点手动选择参选状态;
选举模块:用于矿工节点获取上n个区块的确定参数,作为此轮选举的随机种子r;
随机函数计算模块:用于计算随机函数值R(ID,r),通过将随机种子r作用到每个参选者的ID上得到一个哈希散列,R为随机函数,ID为参选者识别参数;
状态函数计算模块:用于计算状态函数值S(ID,R,p1,p2,…,pn),得到每个参选者的状态值,S为状态函数,ID为参选者识别参数,R为随机函数值,p1,p2,…,pn为其他参量;
排序模块:用于对计算状态函数值S进行排序,选出前m个作为下一轮代表;
记录上链模块:用于矿工节点打包一个选举交易上链,将计算状态函数值S的前m个候选人记入交易,交易被打包到此时记账的区块中,然后被写入区块链。
在所述参选模块中,参选节点通过命令行远程过程调用RPC接口配置自己的参选状态信息,该参选状态信息会被P2P网络读取。
在所述选举模块中,每个参选节点都会有一个当前状态值,当前状态值由状态函数对参选节点当前的状态参量计算得出,状态参量的配置及状态函数的表达式由区块链工作目的决定,状态参量包含随机参量,随机参量使用一个确定性的随机种子r。
在所述选举模块中,配置的状态参量有:节点加入社区的时间、节点本初地址所拥有的押金数量、节点本初地址已经完成的交易数量、节点当选的代表次数、节点在当选代表时正常发挥的比例、节点在最近某个规定时间段内的以上状态;
状态函数包括常函数、幂函数、指数函数、对数函数、三角函数和反三角函数及其有限次有理运算或复合;
使用以下几种参数之一或者组合作为随机种子r:
上第n个区块的区块哈希值,n>=1,n是个确定值;
上第n个区块的区块时间戳,n>=1,n是个确定值;
上第n个区块的区块nonce,n>=1,n是个确定值;
上第n个区块的区块体默克尔根哈希,n>=1,n是个确定值;
上第n个区块内的其他确定性数值,n>=1,n是个确定值。
本发明还公开了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现本发明所述的方法的步骤。
本发明是对当前的代表制选举共识机制的一大改进。经过在选举共识算法中引入一个确定的非确定结果让选举结果无法预计,但在概率上维持了公平,可以带来以下有益效果:
1.防止资源大户利用资源优势稳定“执政”,部署实施计划,扭曲社区公平公正。
2.保证整体上按照既定共识选出足以担任记账要职的骨干代表维持系统正常工作和社区的稳定。
3.保证随机性可在区块链异步网络中正常工作。
4.保证随机性结果的公开透明可验证。
5.防止黑客对代表节点的预测,探查、攻击,包括提前部署赛博入侵或进行社会工程学攻击,扰乱正常选举。
6.防止贿赂攻击,防止他人对代表节点预知和串谋。
7.给予短资源用户记账机会。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。