一种区块链动态压缩存取方法与流程

文档序号:13707514阅读:893来源:国知局
技术领域本发明涉及数字货币如比特币钱包类软件,具体说是一种在数字货币钱包程序运行时的数据处理方法。

背景技术:
现行加密数字货币如目前主流加密数字货币比特币,是一种整合P2P、互联网、加密学原理的一种去中心化属性的数字货币。加密数字货币钱包程序中所有形式的钱都是协议(Allformsofmoneyareprotocol),即所有的钱在进行交易之前都必须遵守的规则的正式描述。如比特币就是一种更高形式的协议,它是利用互联网技术和密码学设计的,而密码学的应用保证了支付系统的安全性。所以,比特币在这方面与其他的货币并没有太大的区别。比特币最独特的一点是其总账系统(ledgersystem)是去中心化的,而其他的货币都有一个中央机构来发行货币。初次数字货币使用者在电脑上安装该数字货币钱包程序,这种程序生成钱包如比待币以wallet.dat格式保存在电脑内。钱包生成多个比特币地址,地址是对外公开的账号用来接收别人发送的比特币。钱包程序生成加密数字货币地址就有该地址相对应的私钥和公钥,目前私钥和公钥都包含在钱包档案(wallet.dat)内。在加密数字货币中,私钥(privatekey)是保存在钱包里的一串信息。如比特币中,私钥就保存在钱包档案wallet.dat内。私钥的作用是用来产生公钥(该公钥可以推导出比特币地址),并且用来做交易的数字签名。这个签名保证了交易的可靠性,不被篡改,不可否认的完整性。所有的交易记录都会被广播到用户群,并且在下一个规定时间被全网确认,这个过程又称为挖矿(Mining)。目前,所有加密数字货币的交易都是公开的,如比特币中所有交易一经全网确认就整合成”公开总账本”(sharedpublicledger),又叫区块链(Blockchain),每一个钱包的结余(Balance)没有单独记录,都是透过区块链的交易信息计算出所有权人收入支付的结余。区块链是透过加密学根据交易记录和时间顺序整合而成的。“比特币交易”就是在各个比特币钱包之间的价值转款记录并整合到区块链中。然而,随着交易的不断进行,区块链的数据必然越来越庞大,这给使用者带来诸多不便。

技术实现要素:
针对上述技术问题,本发明提供一种可对数字货币钱包程序的区块链进行动态压缩的的方法,为用户提供便利。本发明解决上述技术问题所采用的技术方案为:一种区块链动态压缩存取方法,其包括以下步骤:(1)运行数字货币钱包程序;(2)在数字货币钱包程序运行过程中有新区块数据写入区块链时,对该区块数据进行动态压缩;(3)在压缩的区块上创建识别信息;(4)然后在数字货币钱包程序运行时,将上述创建有识别信息的压缩的区块数据储存在区块链数据库中。作为优选,在数字货币钱包程序运行过程中需读取区块链中某个区块时,根据识别信息动态解压该区块。作为优选,在数字货币钱包程序中内嵌压缩函数对区块数据进行压缩。作为优选,在数字货币钱包程序保存区块的函数中内嵌所述压缩函数。作为优选,所述压缩的区块通过所述压缩函数创建识别信息。作为优选,所述识别信息包括区块压缩前的大小和字典大小。作为优选,在数字货币钱包程序中内嵌解压函数对创建有识别信息的压缩的区块进行解压。作为优选,在数字货币钱包程序读取区块的函数中内嵌所述解压函数。作为优选,所述解压函数根据识别信息对压缩的区块进行解压。从以上技术方案可知,本发明在数字货币钱包程序的运行过程中通过内嵌压缩函数对区块进行动态压缩,同时通过内嵌解压函数对压缩的区块进行解压,在保证不损坏数据的前提下,不仅使得整个区块链数据容量变小,大大节省了存储空间;而且提高了区块链数据的传输速度,缩短了传输时间。具体实施方式下面将详细说明本发明,在此本发明的示意性实施例以及说明用来解释本发明,但并不作为对本发明的限定。一种区块链动态压缩存取方法,其包括以下步骤:运行数字货币钱包程序,该程序的可实现这样的功能:以比特币为例,如果B想支付100个比特币给C,那么B不仅需要在交易单上注明金额,而且需要注明这100个比特币的来源。如果B的100个比特币其实来自A,是B通过交易0得到的,这里交易0已经通过了全网用户的认证,保存在用户电脑的数字货币钱包程序的区块链数据库中。为完成交易1,B需要在交易单上填写的信息包括:100个比特币的来源,此处为交易单0的ID;C的公钥,也即C的比特币收款地址;然后将交易单0的内容和C的公钥输入散列函数,得到一串数字。B用自己的私钥加密这串数字,作为数字签名放在交易单1中。C在收到交易单1之后,可以通过其中存放的ID找到交易单0,并获取B的公钥。C可以使用该公钥对交易单1中的数字签名进行解密。与此同时,C可以把自己的公钥和交易单0的内容,按照同样的方式输入散列函数,并将得到的数字与数字签名解密的结果进行比对,如果比对成功,则交易成功,交易记录就会保存在区块链中。在数字货币钱包程序运行过程中有新区块数据写入区块链时,对该区块数据进行动态压缩;具体来说是在数字货币钱包程序保存区块的函数中内嵌压缩函数对该区块数据进行压缩,即在WriteToDisk函数中加入以下内容:boolWriteToDisk(unsignedint&nFileRet,unsignedint&nBlockPosRet){...//省略,原来的代码nSize=pack_block(this,sRzt);//pack_block是压缩函数,nSize是压缩后的区块数据大小,sRzt是压缩后的区块数据fileout.write(sRzt.c_str(),nSize);//把压缩后的区块数保存到区块链数据库文件...//省略,原来的代码
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1