[发明专利]一种抗ASIC挖矿的工作量证明方法有效

专利信息
申请号: 201910843866.1 申请日: 2019-09-06
公开(公告)号: CN110569021B 公开(公告)日: 2023-09-12
发明(设计)人: 杨征;谭林;李旷;李文宙;周开元;刘秀;刘必成 申请(专利权)人: 湖南天河国云科技有限公司
主分类号: G06F7/58 分类号: G06F7/58;G06F9/302;G06F9/30;G06F9/50
代理公司: 长沙湘之星知识产权代理事务所(普通合伙) 43271 代理人: 刘斌
地址: 410100 湖南省长沙市长沙县星沙街道天华北*** 国省代码: 湖南;43
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 asic 工作量 证明 方法
【权利要求书】:

1.一种抗ASIC挖矿的工作量证明方法,其特征在于,包括以下步骤:

方式1:初始化工作存储器Memory;

方式2:修改工作存储器Memory内容;

方式3:根据工作存储器内容产生最后的结果;

所述方式1中:设定单向函数族hi,其中0≤i≤15,共计16种不同的单向函数H;单向函数H={Hy=H(x)},其中y为256位,x为单向函数Hy=H(x)的输入,y为单向函数Hy=H(x)的输出;即每个单向函数H的输入固定为256位,其中h0的输入可以是任意长度,输出固定为256位;

工作存储器Memory,总容量为|M|字节,|M|能被32整除,设置大小为1M;

伪随机函数发生器seed(uint48s)为设置随机数发生器的种子,rand()为随机数发生器的结果,返回48位无符号整数;

规约函数reduce_bit(x,y)将x的内容规约到y位,设x的位数为l,满足l≥y;将x的长度补零扩展到y的整数倍,得到长度为L的二进制串X,然后再将X分为L/y段长度为y的段,将这L/y段内容异或得到最终结果;

设定右移函数RRS(x,y)将x循环右移y位;用于向下一个算法传递随机变量;中间变量r为64位无符号整数,b为64字节数组,a为32字节数组,循环变量i为32位无符号整数,用于表示循环次数;

初始化工作存储器Memory;输入为x;输出为工作存储器Memory的内容;参数K是一个设定的参数,用于调整计算速度,K越大计算速度越快;

所述方式1目的是产生一个容量大小为|M|的伪随机内存内容,每次循环产生32字节内容,其中连续K-1次由随机数发生器产生,1次由单向函数H产生;单向函数H的计算速度慢,而随机数发生器的随机数的填充速度快,通过增加K减少单向函数H的调用时间,提升填充速度;

在随机数发生器的随机数填充部分中,四路48位独立设置种子的随机数产生器的结果合成一个64位随机数;在合成64位随机数后,再使用不定长循环移位方法增加预测产生内容的难度;确定32字节随机数填充块的因素为四个48位的随机数种子和215种循环变量的可能性,则这32字节随机数填充块的内容的输入可能性总共有448×215=296+15=2111,从而不能通过预计算的方法,预先确定每个存储块的内容;

调用单向函数族hi中的单向函数H时,输入内容不仅依赖于上一次单向函数H的输出,而且依赖于前面K-1个存储块的内容,使得单向函数H的计算必须在随机数发生器的随机数的填充完成后才能进行;单向函数H输入的内容依赖于256位的数值和256种移位数,可能性达到2256+8=2264,从而不能通过预计算的方法,预先确定每个存储块的内容;

之后为后续的随机数发生器的随机数的填充设定新的种子,使得后续的随机数填充块必须在单向函数H计算完成之后才能继续;

所述方式2中:首先对基于工作存储器Memory的最后一块内容使用SHA3函数产生随机数发生器种子,并初始化长度为L字节的状态变量,L为正整数,用于平衡存储器访问和散列函数计算之间的时间比例;随后进行C次主循环,C为正整数,用于调整计算轮数,C不小于|M|/128;在每次主循环中,将进行64L次子循环;

在子循环中,都将由随机数发生器产生一对地址,对工作存储器Memory中一对地址的字节数据和状态向量中的字节数据,使用异或方法相互融合和交换,以更新工作存储器Memory的内容和状态向量内容;

方式2中获取工作存储器Memory的最后一块内容进行散列函数计算,这就需要完整地完成方式1之后才能进行方式2,保证了方式1和方式2运行的顺序性;

方式2目的是随机化地修改M中的内容;分为两个阶段:1)根据参数随机地修改存工作存储器Memory内容;2)根据排序后的内容使用单向函数族hi,重新产生工作存储器Memory的修改参数;

在方式2修改工作存储器Memory内容的修改阶段,每次修改2个字节的内容,地址的产生由上一次单向函数H的结果a和r共同决定;其中r的修改依赖于前面所有存储器访问的值和单向函数H的结果;在每次循环中会产生两个存储器访问地址,两个存储器访问地址差距是2x位移+2;由于位移的低8位为0,使得在位移不等于0的情况下,两个存储器访问地址的差距在512字节以上,此时这两次存储器访问不会落在同一个缓存cache行中,即采用异或方法将两个存储器的内容和单向函数H的内容进行相互交叉叠加,保持原有内容的随机性;

单向函数H输入取决于当次循环的存储器访问内容,当前循环次数,以及r;将所有单向函数H的执行信息融合在数组中,作为后续算法的随机数输入,其中r包含方式2执行过程的历史信息;

在所述方式3根据工作存储器内容产生最后结果;输入为工作存储器Memory,参数D用于调整单向函数H的计算次数;D越大,单向函数H的计算次数越少,速度越快,设置为素数,y是输出;直到i=|M|/32-1算法结束;

根据排序后的内容使用单向函数族hi,重新产生工作存储器Memory修改参数;在参数的设置下,方式1、方式2、方式3的操作数量由单向函数H的操作数量决定;

按照现有的参数设计,将修改工作存储器Memory四分之一的内容;

方式3的目的是快速地基于工作存储器Memory的内容产生最后结果,即将上次单向函数H的结果与d段工作存储器Memory的内容通过异或方式叠加;d是依赖于上次单向函数H结果,且处于0~2D-1之间的随机值,D为正整数,用于调整单向函数H的计算次数,D越大,单向函数H的计算次数越少,速度越快,设置为素数;即使用并行计算的方法,但是由于上一步中起始的i和d都无法事先预知,则增加并行计算判断的难度;

在最终结果产生阶段,将连续异或随机工作存储器Memory中d个块的内容后,使用设定单向函数族hi更新状态向量,并重新计算d,直至工作存储器Memory的最后一块,其中,d为不大于D的随机数;

单向函数H计算加入循环变量i的因素,使得输入不仅仅依赖于y,而且和循环的位置相关,单向函数H的输入蕴含了所有存储器内容的信息,决定在方式3的最后一步必须执行单向函数H0。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南天河国云科技有限公司,未经湖南天河国云科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201910843866.1/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top