[0023] 附图1为时序流程图。其描述了上述方法中各时间节点以及相应时间区间内对应步骤的操作内容。
[0024] 本发明提供的一种基于区块链的分布式时间认证方法和系统,该系统可运行在底层的区块链平台的每个节点上,所述的系统包括如下模块:
[0025] 1、时钟同步模块
[0026] 该模块实现与系统指定的互联网时间服务器NST按照系统指定互联网时间同步协议NTP以系统设置时间分辨率为tr进行时钟同步。
[0027] 2、认证节点报名模块
[0028] 该模块根据系统规则Rconvenor认定报名节点ET,被认证的报名节点ET根据系统的认证节点报名录用规则Rsign形成时刻T的认证节点集合{Sm},并对该集合中的节点进行认证授权后调用模块5进行发布。
[0029] 3、认证请求存储模块
[0030] 该模块通过模块5接收到的用户认证请求数据,根据模块6的检测结果,对不符合系统认证请求规范的数据删除,把满足系统认证请求规范的数据放入待认证数据池中,等待模块4对待认证数据进行处理。
[0031] 4、认证数据打包模块
[0032] 该模块将待认证数据池中的待认证数据按照系统规范格式进行打包处理,待模块7进行数据调用。
[0033] 5、数据收、发模块
[0034] 该模块由系统的其它功能模块调用,以收取和发送本节点所需的相关数据。
[0035] 6、数据检测模块
[0036] 该模块对系统经过模块5收取的数据按照相应的系统规范进行检验,并将检验结果返回该数据的调用模块。
[0037] 7、确认区块生成节点模块
[0038] 根据系统区块生成节点确认规则,对每一时刻符合规则的区块生成节点进行签名确认,并调用模块5发送对该节点在本时刻的确认签名。
[0039] 8、区块生成模块
[0040] 该模块首先对收到的其它节点对本节点成为每一时刻的区块生成节点的签名确认进行计数,如果收到的签名数加上本节点自己的确认超出全部节点数的50%,则按照区块生成规则,生成该时刻的区块。
[0041] 如果在规定时间内,没有新区快生成,则生成空区块。
[0042] 9、奖金分配模块
[0043] 当本节点成为区块生成节点并成功生成区块,则出触发一个智能合约,按照奖金分配规则,对参与本时刻认证的节点进行奖金分配。
[0044] 10、区块链管理模块
[0045] 本模块负责将新区快上链,并负责对区块的查询操作。
[0046] 附图2为模块结构图。其描述了上述各模块之间的相互关系和数据流向。
具体实施方式
[0047] 以下对本发明的具体实施进行说明,但是,此处所描述的具体实施例仅仅是用来解释和理解本发明的,并不用于限定本发明。
[0048] 为了说明本发明所述技术方案,通过具体实施例来说明如下。
[0049] 实施例:
[0050] 1、系统设置时间分辨率为tr=1ms,系统设定认证基本时间单位ts=1s,系统按照网络传输情况确定时间传输误差te=50ms,系统指定互联网时间服务器NST,系统指定互联网时间同步协议NTPv4协议。
[0051] 2、系统相关规则定义如下:
[0052] 系统规则Rconvenor:除创世区块的生成节点由系统指定,每一时刻T的报名认定节点为上一区块生成节点ST-1,如果到T-600ms时该区块没有回应,则由T-2ts时刻的区块生成节点ST-2作为报名认定节点。如果在T-950ms仍然没有回应,则等待至T+950ms时刻,按该时刻T+950ms的步骤进行。
[0053] 系统的认证节点报名录用规则Rsign:首先依据报名节点相对互联网时间服务器NIST的延时长短,按升序进行排序,其次按照报名顺序的先后升序进行排序,取前50个节点。
[0054] 系统的待认证数据打包规则Rpack:对经过用户签名的待认证数据,首先计算出去对应的Hash值,然后将这些Hash值构建成默克尔树结构(Merkle Tree记作MTT)。
[0055] 系统规则Rnonce:该随机值nonce与MTT的根Hash而合并后的Hash值小于给定值N。
[0056] 系统规则Rmaker:首先按照各节点生成的DT中,打包待认证数据项数最多的认证节点作为候选节点,如果有两个或两个以上获选节点时,则再按各候选节点的NT排序,nonce值最小的节点即为区块生成节点。
[0057] 系统的区块生成规则Rgenerat:区块的结构至少包含两各部分,区块头和认证信息,区块头中包含父区块头的Hash、认证数据的默克尔树根的哈希值,区块生成时间,精度为系统指定的时间分辨率Tr,对寻找nonce值的约束,nonce值等;认证信息包含认证信息计数器、认证用户ID(认证用户公钥)、符合规定长度的认证数据、认证费用等。
[0058] 系统规定的奖金分配规则Rshares:所有对ST确认的节点均按照系数a1进行平均分配,出块节点ST按系数a2进行分配,报名节点ET按系数a3进行分配,系统平台收入按系数a4进行分配,机动费用系数a5,并且满足以下式子:
[0059] C=(a1+a2+a3+a4+a5)C,其中:a1+a2+a3+a4+a5=1
[0060] 3、对于任意当前的以传统计时方式年、月、日、时、分、秒等表示的时刻T,系统的所有认证节点在以下时间范围内进行相应的处理和操作:
[0061] 所有拟成为时刻T的认证节点,即拟参与时刻T的认证的节点,需要在[T-1s,T-400ms]向系统规则Rconvenor指定的报名节点ET报名,ET根据系统的认证节点报名录用规则Rsign形成时刻T的认证节点集合{Sm},其中m=50,并对所有的Sm授权进行时刻T的认证,且只有经过授权的节点才能对时刻T进行时间认证。
[0062] 所有参与时刻T认证的节点Sm在经授权后与NST按照NTPv4保持时钟同步。
[0063] 所有需要提交时间认证的用户,在提交认证请求时,需要和待认证数据一起提交系统规定的认证费用c。
[0064] 在[T+te,T+t1](其中t1=250ms)时间区间内,所有的Sm从用户提交的待认证数据的待认证数据池中取出待认证数据,按照系统的待认证数据打包规则Rpack,对待认证数据打包,生成时刻T的待认证数据包dT,并计算满足系统规则Rnonce要求的时刻T的具有规定长度的随机值nonce值nT。
[0065] 在(T+300ms,T+500ms]时间区间内,每一个Sm发送本认证节点的(dT,nT);接收其它认证节点的(dT,nT)。
[0066] 在(T+550ms,T+800ms]时间区间内:
[0067] (1)每一个Sm根据系统规则Rmaker,在收到的和本节点生成的{(dT,nT)}集中,找到唯一符合生成区块要求的(dT,nT),如果该(dT,nT),是由本认证节点生成,则让确认数R=R+1接转入下一操作步骤2;否则,对该(dT,nT)签名确认后,发回至该(dT,nT)的生成节点。
[0068] (2)当某节点收到签名确认数R超过T时刻半数以上认证节点,即收到签名确认数R超过25时,该节点即为当前时刻T被选中的区块生成节点ST,该ST按照系统的区块生成规则Rgenera,生成T时刻的区块BT,已打包的dT从待认证数据池删除,并将区块BT广播。所有节点将已打包的dT从待认证数据池删除,并将BT进行上链,结束时刻T的认证,转入下一时刻。
[0069] 此时,系统收取T时刻的认证费用C=∑T时刻所有认证记录c(c为每一认证记录的认证费用),根据系统规定的奖金分配规则Rshares,将收取的费用做如下分配:
[0070] 所有对ST确认的节点均按照系数a1进行平均分配,出块节点ST按系数a2进行分配,报名节点ET按系数a3进行分配,系统平台收入按系数a4进行分配,机动费用系数a5,并且满足以下式子:
[0071] C=(a1+a2+a3+a4+a5)C,其中:a1+a2+a3+a4+a5=1
[0072] 在T+950ms时刻,如果没有能够生成BT,由上一时刻T-ts区块的nonce值nT-ts的Hash值作为当前时刻的T的nonce值nT,将当前时刻T的认证记录置空,即{dT}=Φ,按照系统的区块生成规则Rgenerat,生成T时刻的区块BT,结束时刻T的认证,等待下一时刻。
附图说明
[0073] 图1是时序流程图。
[0074] 图2是模块结构图。