1.一种基于区块链的确定的非确定性选择方法,其特征在于,包括如下步骤:
步骤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个候选人记入交易,交易被打包到此时记账的区块中,然后被写入区块链。
2.根据权利要求1所述的非确定性选择方法,其特征在于,在所述步骤1,参选步骤中,参选节点通过命令行远程过程调用rpc接口配置自己的参选状态信息,该参选状态信息会被p2p网络读取。
3.根据权利要求1所述的非确定性选择方法,其特征在于,在所述步骤2,选举步骤中,每个参选节点都会有一个当前状态值,当前状态值由状态函数对参选节点当前的状态参量计算得出,状态参量的配置及状态函数的表达式由区块链工作目的决定,状态参量包含随机参量,随机参量使用一个确定性的随机种子r。
4.根据权利要求3所述的非确定性选择方法,其特征在于,在所述步骤2,选举步骤中,配置的状态参量有:节点加入社区的时间、节点本初地址所拥有的押金数量、节点本初地址已经完成的交易数量、节点当选的代表次数、节点在当选代表时正常发挥的比例、节点在最近某个规定时间段内的以上状态;
状态函数包括常函数、幂函数、指数函数、对数函数、三角函数和反三角函数及其有限次有理运算或复合。
5.根据权利要求3所述的非确定性选择方法,其特征在于,在所述步骤2,选举步骤中,使用以下几种参数之一或者组合作为随机种子r:
上第n个区块的区块哈希值,n>=1,n是个确定值;
上第n个区块的区块时间戳,n>=1,n是个确定值;
上第n个区块的区块nonce,n>=1,n是个确定值;
上第n个区块的区块体默克尔根哈希,n>=1,n是个确定值;
上第n个区块内的其他确定性数值,n>=1,n是个确定值。
6.一种基于区块链的确定的非确定性选择系统,其特征在于,包括:
参选模块:用于任何在线时间,参选节点手动选择参选状态;
选举模块:用于矿工节点获取上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个候选人记入交易,交易被打包到此时记账的区块中,然后被写入区块链。
7.根据权利要求6所述的非确定性选择系统,其特征在于,在所述参选模块中,参选节点通过命令行远程过程调用rpc接口配置自己的参选状态信息,该参选状态信息会被p2p网络读取。
8.根据权利要求6所述的非确定性选择系统,其特征在于,在所述选举模块中,每个参选节点都会有一个当前状态值,当前状态值由状态函数对参选节点当前的状态参量计算得出,状态参量的配置及状态函数的表达式由区块链工作目的决定,状态参量包含随机参量,随机参量使用一个确定性的随机种子r。
9.根据权利要求8所述的非确定性选择系统,其特征在于,在所述选举模块中,配置的状态参量有:节点加入社区的时间、节点本初地址所拥有的押金数量、节点本初地址已经完成的交易数量、节点当选的代表次数、节点在当选代表时正常发挥的比例、节点在最近某个规定时间段内的以上状态;
状态函数包括常函数、幂函数、指数函数、对数函数、三角函数和反三角函数及其有限次有理运算或复合;
使用以下几种参数之一或者组合作为随机种子r:
上第n个区块的区块哈希值,n>=1,n是个确定值;
上第n个区块的区块时间戳,n>=1,n是个确定值;
上第n个区块的区块nonce,n>=1,n是个确定值;
上第n个区块的区块体默克尔根哈希,n>=1,n是个确定值;
上第n个区块内的其他确定性数值,n>=1,n是个确定值。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序配置为由处理器调用时实现权利要求1-5中任一项所述的方法的步骤。