primecoin pow relative

引用文章

primecoin pow 是寻找质数链,包括三种类型:
第一类坎宁安链,第二类坎宁安链,和孪生坎宁安链。

第一类坎宁安链的规则是,素数链中每个数都是前一个数的两倍减一。第一个长度为5的第一类坎宁安链包含以下5个素数:
1531,3061,6121,12241,24481

第二类坎宁安链,素数链中每个数都是前一个数的两倍加一。第一个长度为5的第二类坎宁安链出现得更快,如下:
2,5,11,23,47

最后,孪生坎宁安链的规则是:大小相差2的孪生素数,后一对的平均值是前一对的平均值的两倍。很容易理解,双坎宁安链具有偶数个数。第一个长度为6的双坎宁安链是:
211049,211051,422099,422101,844199,844201

孪生坎宁安链本质上是第一类坎宁安链和第二类坎宁安链组合而成。每对的第一个数字组合正好是第二类坎宁安链,每对的第二个数字组合正好是第一类坎宁安链。

验证方式

费马测试(费马小定理):
费马测试是一种快速辨别素数的方法:以任意数字(通常为2)为底,以需要测试的素数为幂,计算结果再用来减去该素数和一个大数的乘积,看是否得到原来的数字。

费马小定理:
如果 n 是一个素数,a 是小于 n 的任意正整数,那么 a 的 n 次方与 a 模 n 同余。(两个数称为是模 n 的同余,如果它们除以 n 的余数相同。数 a 除以 n 的余数称为 a 取模 n 的余数,或简称为 a 取模 n)。

目标难度的匹配

怎么区分7.2和7.5的素数链长?
拿数列中第一个非素数,进行费马测试余数越小,分级长度越大。例如,我们的链2,5,11,23,47下一个值是95,依据上面使用的重复减法的过程计算后,余数是54,因此,链的长度为5+(95-54)/95=5.43。然而,1531……24481素数链的下一个值48961,费马余数为1024,所以链的长度为5+(48961-1024)/48961=5.97。为了一个为了使素数链可以成为有效的工作证明,它用小数表示的长度至少要和现在的难度想当。

我们不希望工作量证明可以重复使用,素数币还增加了另一种限制。基于素数币的目的,对于双向链的起点被定义为前面两个数字的平均,对于单坎宁安链的的起点被定义为假想双向链存在前面两数字的平均。例如,上面两个单坎宁安链的起点分别是1530和3。这样限制是因为素数列起点必须能够被工作证明的区块哈希数整除。哈希函数从属性看,寻找特定的散列值的唯一途径只能是采用简单地尝试新的值直到得到结果。因此,得到有效的工作证明的方法就是针对已知哈希值的区块寻找素数列,这些素数列只有对特定的区块才有效。