一种基于区块链的存证保全公证方法及系统
技术领域
本发明涉及的是涉及到区块链技术领域,尤其涉及一种基于区块链的存证保全公证方法及系统。
背景技术
传统数字产权服务,确权耗时长,时效性差;用权变现难,供需无法匹配;维权效率低,尤其是版权行业,溯源、举证非常困难。缺乏透明性导致的欺诈和滥用。这些问题源于中心化的、基于信任的第三方系统,中心化的、基于信任的账本系统会给交易结算带来瓶颈和障碍。
发明内容
本发明要解决的技术问题在于,针对现有技术中的传统分布式的方法仍然面临存证被修改,或者中心化的、基于信任的账本系统缺陷,提供一种去中心的存证保全公证方法,利用该方法可以实现重要存在数据永久保存在链上,不可被修改。同时数据分散在多个分布式节点,不可能会遭受灾难性损失。
本发明解决其技术问题所采用的技术方案是:提供了一种基于区块链的存证保全公证方法,该方法满足:
(1)区块链由多个区块组成,每个区块之间通过hash值产生关联;
(2)前一个区块的hash值计算后,放在下一个区块上;
其中存证的保存过程为:
(1)若存证A的长度小于预设值K1即|A|<K1时,将存证A保存到区块中,区块链数据结构为:<PreviousHash,A,Timestamp,Nonce,Requirement>;其中PreviousHash为前一区块的hash值,A为存证,Timestamp为区块生成时间戳,Nonce为一随机数,Requirement用于指定挖矿难度,为一预先设定的数据;
(2)若存证A的长度大于预设值K1,计算待留存的存证A的密码安全hash函数值,得到Hash(A);将A的地址LinkOfA以及Hash(A)保存到区块中;区块链数据结构为:<PreviousHash,LinkOfA,Hash(A),Timestamp,Nonce,Requirement>;
(3)若存证集合A的长度大于预设值K1,且A由m个子存证组成,计算待留存的存证A1,A2,...,Am的密码安全hash函数值,得到Hash(A)=Hash(A1||A2||...||Am);将集合A的地址LinkOfA以及Hash(A)保存到区块中;区块链数据结构为:<PreviousHash,LinkOfA,Hash(A),Timestamp,Nonce,Requirement>;
在本发明的基于区块链的存证保全公证方法中,挖矿奖励生成过程为:矿工负责检查Content=<LinkOfA,Hash(A)>的正确性,并且需要寻找正确的Nonce,满足关系式Hash(PreviousHash,LinkOfA,Hash(A),Timestamp,Nonce)<Requirement;矿工将计算出的区块链广播出去,如果所有节点验证通过,则视为正确,给予矿工奖励,矿工奖励将在线下完成。
在本发明的基于区块链的存证保全公证方法中,矿工将存证打包过程中,PreviousHash默认选取最长链结尾区块的hash,验证通过的区块链接到PreviousHash区块后,当主链出现分叉时,以最长链作为存证链。
在本发明的基于区块链的存证保全公证方法中,每一个新生成的区块都保存了前一个区块的Hash值,Nonce为随机数并使得区块Hash值前面至少有一个0,0的个数由Requirement的值来确定。
在本发明的基于区块链的存证保全公证方法中,所述密码安全Hash函数包括:SHA256、SHA1、MD5。
根据本发明的另一方面,本发明为解决其技术问题,提供了一种基于区块链的存证保全公证系统,采用上述任意一项的基于区块链的存证保全公证方法进行存证保全公证。
本发明提供的基于区块链的存证保全公证方法及系统,可以保证数据间的时序分明,可以形成时间证据链。所有重要存在数据永久保存在链上,不可被修改。同时数据分散在多个分布式节点,不可能会遭受灾难性损失,或是遭受黑客攻击。存证上传过程速度快,收费低。存证交易可以独立完成并且具有激励功能。另外,由于区块链的公开性,可以让更多的人知道对电子文件、证据、证书、作品等拥有所有权。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明的区块链的数据结构图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
本发明解决其技术问题所采用的技术方案是:提供了一种基于区块链的存证保全公证方法,在下述实施例的区块的数据结构中,分别以PreviousHash、A、Timestamp、Nonce、Requirement、LinkOfA、Hash(A)表示:前一区块的hash值、存证、时间戳(记录该区块产生的时间,精确到秒)、随机数、当前区块的哈希值的要求、存证A的地址及存证A的密码安全hash函数值。
参考图1,本发明的基于区块链的存证保全公证方法中,满足:
(1)区块链由多个区块组成,每个区块之间通过hash值产生关联;
(2)前一个区块的hash值计算后,放在下一个区块上;
其中存证的保存过程为:
(1)若存证A的长度小于预设值K1即|A|<K1时,将存证A保存到区块中,区块链数据结构为:<PreviousHash,A,Timestamp,Nonce,Requirement>;其中PreviousHash为前一区块的hash值,A为存证,Timestamp为区块生成时间戳,Nonce为一随机数,Requirement用于指定挖矿难度,为一预先设定的数据;
(2)若存证A的长度大于预设值K1,计算待留存的存证A的密码安全hash函数值,得到Hash(A);将A的地址LinkOfA以及Hash(A)保存到区块中;区块链数据结构为:<PreviousHash,LinkOfA,Hash(A),Timestamp,Nonce,Requirement>;
(3)若存证集合A的长度大于预设值K1,且A由m个子存证组成,计算待留存的存证A1,A2,...,Am的密码安全hash函数值,得到
Hash(A)=Hash(A1||A2||...||Am);将集合A的地址LinkOfA以及Hash(A)保存到区块中;区块链数据结构为:<PreviousHash,LinkOfA,Hash(A),Timestamp,Nonce,Requirement>;
在本发明的基于区块链的存证保全公证方法中,挖矿奖励生成过程为:矿工负责检查Content=<LinkOfA,Hash(A)>的正确性,并且需要寻找正确的Nonce,满足关系式
Hash(PreviousHash,LinkOfA,Hash(A),Timestamp,Nonce)<Requirement;矿工将计算出的区块链广播出去,如果所有节点验证通过,则视为正确,给予矿工奖励,矿工奖励将在线下完成。
在本发明的基于区块链的存证保全公证方法中,矿工将存证打包过程中,PreviousHash默认选取最长链结尾区块的hash,验证通过的区块链接到PreviousHash区块后,当主链出现分叉时,以最长链作为存证链。
在本发明的基于区块链的存证保全公证方法中,每一个新生成的区块都保存了前一个区块的Hash值,Nonce为随机数并使得区块Hash值前面至少有一个0,0的个数由Requirement的值来确定。
在本发明的基于区块链的存证保全公证方法中,所述密码安全Hash函数包括:SHA256、SHA1、MD5。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。