CN112511629B - 一种mpt结构的账户树的数据压缩方法及系统 - Google Patents

一种mpt结构的账户树的数据压缩方法及系统 Download PDF

Info

Publication number
CN112511629B
CN112511629B CN202011373029.6A CN202011373029A CN112511629B CN 112511629 B CN112511629 B CN 112511629B CN 202011373029 A CN202011373029 A CN 202011373029A CN 112511629 B CN112511629 B CN 112511629B
Authority
CN
China
Prior art keywords
account
address
tree
brevity code
user node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011373029.6A
Other languages
English (en)
Other versions
CN112511629A (zh
Inventor
丁有振
王顺利
欧阳希
陈博
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiansu Network Technology Co ltd
Original Assignee
Shanghai Jiansu Network Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Jiansu Network Technology Co ltd filed Critical Shanghai Jiansu Network Technology Co ltd
Priority to CN202011373029.6A priority Critical patent/CN112511629B/zh
Publication of CN112511629A publication Critical patent/CN112511629A/zh
Application granted granted Critical
Publication of CN112511629B publication Critical patent/CN112511629B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Abstract

本发明涉及区块链技术领域,提供了一种MPT结构的账户树的数据压缩方法及系统,其方法包括:根据用户节点发起的创建账户地址请求,为所述用户节点创建账户地址;获取所创建的账户地址的创建序号,对所述创建序号预处理后,形成所述用户节点对应的定长的地址简码;获取所述地址简码的有效位,使用所述有效位构建MPT结构的账户树。其对MPT结构的账户树进行了压缩,充分利用了账户树的中间节点,使得中间节点上也存储有账户,避免了资源的浪费,减小了账户树的存储空间。同时由于减小了账户树的存储空间,使得账户树能够常驻内存,避免了账户数据在内存和硬盘中的反复迁移置换,减少了区块链在执行交易时的计算压力和时间成本。

Description

一种MPT结构的账户树的数据压缩方法及系统
技术领域
本发明涉及区块链的技术领域,尤其涉及账户树优化的技术领域,具体涉及一种MPT结构的账户树的数据压缩方法及系统。
背景技术
MPT树是使用账户模型的区块链最常用的一种组织账户存取的数据结构。这种结构同时兼具默克尔(Merkel)属性和帕特里夏(Patricia trie)属性。所述默克尔属性是指,树上的每一个节点,都记录了其所有子节点汇总后的哈希。而帕特里夏属性是一种压缩后的字典树属性,字典属性是指节点的key值,就是其在树上的路径,对比key值的过程就是在树上寻址的过程。这种结构使得账户树对数据的变动特别敏感,能够快速对比两颗树是否完全相同且迅速找到差异性;同时,也能够更快的检索到指定key值的节点。
但用MPT树组织账户的存取也存在一些问题,比如账户地址都是固定长度的,这将导致在组织形成树结构的过程中产生大量中间节点。以16叉的MPT树为例,第1层只有一个根节点,第2层有16个节点,第3层有256个节点,以此类推。而地址普遍由用户的公钥与一些数据拼装后计算hash得到,所以地址长度一般在32字节以上。即便以32字节计算,其在MPT树中形成的深度也将达到64层以上。
16叉的MPT树每下探一层,都将产生当前层16倍的节点。32位定长地址的账户全部位于MPT树的第65层,而从根节点到65层中间的2至64层节点,并没有存储任何数据,只是为了组织路径而被创建。这将造成巨大的资源浪费,单单以64层计算,就产生了16^63个中间节点,而整颗树上的中间节点数则更是难以计数。
中间节点除了造成巨大的资源浪费外,还导致数据在内存和硬盘之间反复迁移。因为如此浩繁的树节点不可能全部常驻内存,64G的内存也不过只有16^9字节,这注定树结构中只有非常小一部分的节点会常驻内存,其余大部分的节点都将不得不置换到硬盘上。这将导致区块链在执行交易的时候,账户数据不得不在内存和硬盘中反复迁移置换,从而给节点带来巨大的计算压力和时间成本。
发明内容
针对上述问题,本发明的目的在于提供一种MPT结构的账户树的数据压缩方法及系统,其对MPT结构的账户树进行了压缩,充分利用了账户树的中间节点,使得中间节点上也存储有账户,避免了资源的浪费,减小了账户树的存储空间。同时由于减小了账户树的存储空间,使得账户树能够常驻内存,避免了账户数据在内存和硬盘中的反复迁移置换,减少了区块链在执行交易时的计算压力和时间成本。
本发明的上述发明目的是通过以下技术方案得以实现的:
一种MPT结构的账户树的数据压缩方法,包括以下步骤:
根据用户节点发起的创建账户地址请求,为所述用户节点创建账户地址;
获取所创建的账户地址的创建序号,对所述创建序号预处理后,形成所述用户节点对应的定长的地址简码;
获取所述地址简码的有效位,使用所述有效位构建MPT结构的账户树。
进一步地,根据构建的所述MPT结构的账户树执行区块链交易,具体为:
获取所述区块链交易涉及的账户地址,按照预设拼接算法反向截取出所述地址简码;
获取所述地址简码的有效位作为key值;
根据所述key值在所述MPT结构的账户树上,对所述账户地址对应的账户做包括查找、读写处理在内的操作。
进一步地,所述为所述用户节点创建账户地址包括:
获取所述用户节点发起所述创建账户地址请求时提供的公钥,对所述公钥进行预处理,得到初步地址;
将所述初步地址与根据所述创建序号形成的所述地址简码通过预设拼接算法做拼接,生成所述用户节点的账户地址。
进一步地,所述为所述用户节点创建账户地址还包括:设定一预设字节长度,用于存储所述地址简码,存储后所述地址简码的长度与所述预设字节长度一致,与所述初步地址进行拼接后形成定长的所述账户地址。
进一步地,所述构建MPT结构的账户树,还包括:
根据每一个新创建的账户地址,依次在所述MPT结构的账户树上,在用于表示当前账户地址的树节点中存入与当前账户地址相对应的账户信息;
根据所述树节点中新存入的账户信息,更新所述树节点以及与所述树节点相关联的关联节点对应的哈希值,其中,所述关联节点包括构建当前所述树节点的路径上的所有的父节点。
一种链节点,包括:
地址简码创建模块,用于根据用户节点发起的创建账户地址请求,为所述用户节点创建账户地址之后,获取所创建的账户地址的创建序号,对所述创建序号预处理后,形成所述用户节点对应的定长的地址简码;
账户树构建模块,用于获取所述地址简码的有效位,使用所述有效位构建MPT结构的账户树。
交易执行模块,用于根据构建的所述MPT结构的账户树执行区块链交易,具体为:获取所述区块链交易涉及的所述账户地址,按照所述预设拼接算法反向截取出所述地址简码;获取所述地址简码的有效位作为key值;根据所述key值在所述MPT结构的账户树上,对所述账户地址对应的账户做包括查找、读写处理在内的操作。
账户地址创建模块,用于获取所述用户节点发起所述创建账户地址请求时提供的公钥,对所述公钥进行预处理,得到初步地址;将所述初步地址与根据所述创建序号形成的所述地址简码通过预设拼接算法做拼接,生成所述用户节点的账户地址。
一种MPT结构的账户树的数据压缩系统,包括:用户节点、链节点;
所述用户节点,用于向所述链节点发起创建账户地址请求;
所述链节点,具体包括:地址简码创建模块和账户树构建模块;
所述地址简码创建模块,用于根据用户节点发起的创建账户地址请求,为所述用户节点创建账户地址之后,获取所创建的账户地址的创建序号,对所述创建序号预处理后,形成所述用户节点对应的定长的地址简码;
所述账户树构建模块,用于获取所述地址简码的有效位,使用所述有效位构建MPT结构的账户树。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如上述MPT结构的账户树的数据压缩方法被执行。
与现有技术相比,本发明包括以下至少一种有益效果是:
(1)通过提供了一种MPT结构的账户树的数据压缩方法,方法包括:根据用户节点发起的创建账户地址请求,为所述用户节点创建账户地址;获取所创建的账户地址的创建序号,对所述创建序号预处理后,形成所述用户节点对应的定长的地址简码;获取所述地址简码的有效位,使用所述有效位构建MPT结构的账户树。上述技术方案使用账户地址的创建序号形成地址简码,并只使用地址简码的有效位构建MPT结构的账户树,使得账户树的中间节点得到充分的利用。同时,因为所有的中间节点都得到充分的利用,减少了内存以及存储空间的开销,杜绝了节点浪费现象。当使用上述技术方案,减小了存储空间的开销之后,由于存储空间很小,使得账户树可以常驻内存,避免了账户数据在内存和硬盘中的反复迁移置换,减少了区块链在执行交易时的计算压力和时间成本。
(2)根据本发明中的方法构建的MPT结构的账户树,在执行区块链交易时,截取出账户地址中包含的地址简码,获取地址简码中的有效位作为key值,根据key值在MPT结构的账户树上,对账户地址对应的账户做包括查找、读写处理在内的操作。上述技术方案中,由于key值使用地址简码的有效位,在账户树上寻址的深度等于key值实际包含的位数,无需每次都寻址到最后一层,提高了账户节点的查找效率,减轻了内存了压力。
(3)通过获取所述用户节点发起所述创建账户地址请求时提供的公钥,对所述公钥进行预处理,得到初步地址;将所述初步地址与根据所述创建序号形成的所述地址简码通过预设拼接算法做拼接,生成所述用户节点的账户地址。上述技术方案中,对公钥进行预处理与地址简码通过预设的拼接算法做拼接,生成最终的用户节点的账户地址,确保了账户地址的安全性。同时在账户地址中包含了地址简码,交易时,通过反向截取,获取到地址简码,通过地址简码中的有效位即可以到账户树中进行寻址。
(4)通过根据树节点中新存入的账户信息,更新所述树节点以及与所述树节点相关联的关联节点对应的哈希值,其中,所述关联节点包括构建当前所述树节点的路径上的所有父节点。上述技术方案,对MPT结构的账户树上的账户信息数据是否发生变化极度的敏感,当任意一个树节点上的账户信息发生变化时,会更新树节点本身以及关联的所有父节点的哈希值,通过判断父节点的哈希值是否发生变化,即可以快速的获取到当前父节点对应的子节点中是否有账户信息发生变化,若父节点的哈希值没有变化,代表子节点没有发生任何变化,也就无需去对子节点进行进一步地查找了。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。
图1为本发明一种MPT结构的账户树的数据压缩方法的整体流程图;
图2为本发明MPT结构的账户树的具体举例;
图3为本发明链节点的结构示意图;
图4为本发明一种MPT结构的账户树的数据压缩方法的整体结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。
在现有的区块链组织账户存取的数据结构中,MPT结构的账户树是使用最多的一种方案,然而,由于区块链中节点的账户地址一般以固定长度出现,且为了确保账户的安全,账户地址的长度一般较长(至少32位以上),若在构建MPT结构的账户树时,直接使用账户地址来寻址,对于固定长度的账户地址,所有的账户全部存储于账户树的最后一层,中间节点只用于创建路径,没有存储任何账户,导致中间节点造成极大的浪费。且,创建完成的账户树很庞大,占用极大的存储空间,造成了巨大的资源浪费。同时由于树节点的庞大导致账户树不能常驻内存,当区块链执行交易时,账户数据将不得不在内存和硬盘中间反复的迁移置换,从而给节点带来巨大的计算压力和时间成本。
本发明的核心思路:在用于创建用户节点的链节点中,记录下账户地址的创建序号,使用创建序号形成用户节点的地址简码。获取地址简码的有效位构建MPT结构的账户树。
本发明的显著特点:使用账户地址的创建序号形成地址简码,并只使用地址简码的有效位构建MPT结构的账户树,使得账户树的中间节点得到充分的利用。同时,因为所有的中间节点都得到充分的利用,减少了内存以及存储空间的开销,杜绝了节点浪费现象。进一步地,当减小了存储空间的开销之后,由于存储空间很小,使得账户树可以常驻内存,避免了账户数据在内存和硬盘中的反复迁移置换,减少了区块链在执行交易时的计算压力和时间成本。
第一实施例
如图1所示,本实施例提供了一种MPT结构的账户树的数据压缩方法,包括以下步骤:
S1:根据用户节点发起的创建账户地址请求,为所述用户节点创建账户地址。
具体地,当用户节点需要参与到区块链的交易中时,首先需要使用预先创建的公私钥对中的公钥向用于创建账户地址的链节点发起创建地址的请求。当链节点接收到用户节点发起的创建账户地址的请求后,根据预先设定的创建规则,为用户节点创建账户地址并返回给用户节点,同时,使用MPT结构的账户树上的一个节点表示当前创建的账户地址对应的用户节点,以便后续使用户节点参与到区块链交易中,在账户树上,对账户地址对应的账户做包括查找、读写处理在内的操作。
在本实施例中,对于为用户地址创建账户地址的创建规则,以及使用MPT结构的账户树上的一个节点表示当前创建的账户地址对应的用户节点的方法不做任何限制。只需要满足,在创建账户树时,每一个中间节点都得到充分的利用,避免使用传统的直接使用相等长度的账户地址创建账户树,中间节点全部浪费的问题即可。
举个例子来说,使用用户地址对应的公钥进行哈希运算,与创建账户地址的创建序号形成的地址简码通过预设拼接算法进行拼接,形成账户地址。使用地址简码的有效位作为key值创建账户树。此为本发明中的最优的创建方法,在下文中将详细说明。
再比如,使用公钥进行哈希运算,直接作为账户地址。使用英文字母,以及英文字母的拼接(如第一层为:A,B,C…Z;第二层为:AA,AB,AC,…,AZ,…,LA,LB,LC…LZ,…,ZA,ZB,ZC,…ZZ;等等)作为账户树的key值。再创建一个映射关系表,用于存储账户地址与账户树key的映射关系。
需要说明的是,上述两种创建方案不是本发明的全部方案,只需要满足,在创建账户树时,每一个中间节点都得到充分的利用,避免使用传统的直接使用相等长度的账户地址创建账户树时,中间节点全部浪费的方案均属于本发明的保护范围,本实施例不再赘述。
S2:获取所创建的账户地址的创建序号,对所述创建序号预处理后,形成所述用户节点对应的定长的地址简码。
具体地,当前步骤对应于步骤S1中提到的本发明中创建账户地址和账户树的key值的优选方案。在创建账户地址时,首先,获取当前所创建的账户地址的创建序号,其中,创建序号的获取方式为:获取区块链系统内记录的所有账户地址的总个数,将账户地址的总个数加1,形成新的地址总个数,也即当前账户地址的创建序号。
接着,对创建序号进行预处理,优选地,可以将创建序号转换成16进制的字节流,由于16进制每一位能够表达16个数字,使得最终形成的MPT结构的账户树每一层将是上一层的16倍,减少了区块链交易时寻址的深度。当然其他的包括2进制、8进制、10进制、32进制、36进制、58进制、62进制等也都可以应用于本发明,根据实际的需求进行选择。
其次,在对创建序号进行预处理后,由于最终形成的账户地址是一个定长的地址,为了使得在加入地址简码后拼接形成的账户地址也为定长,需要为地址简码设定一预设字节长度,用于存储地址简码,存储后地址简码的长度与预设字节长度一致,后续与初步地址进行拼接后形成定长的账户地址。举个例子来说,如果当初地址的创建序号是由整型(4字节)保存的,那么地址简码的预设字节长度设置为8位。再比如,如果创建序号是由长整型(8字节)保存的,那么地址简码的预设字节长度是16位。
S3:获取所述地址简码的有效位,使用所述有效位构建MPT结构的账户树。
具体地,在步骤S2中创建形成了定长的地址简码之后,为了构建MPT结构的账户树,且使得最终形成的账户树中的每一个中间节点都存储有账户,中间节点得到充分的利用,在构建账户树之前,需要获取地址简码的有效位,舍弃地址简码中的无效位,获取到的地址简码的有效位的长度将小于或等于预设字节长度。
举个例子来说,假设地址简码的预设字节长度是8位,某一个账户地址的创建序号是第5个,那么地址简码就是“00000005”,舍弃掉字节流前面的“0”,只保留有效字节,key值将取为“5”。再比如,某一个账户地址的创建序号是第252个,那么地址简码就是“000000fc”,只保留有效字节的key值就是“fc”。以此类推,只有地址的创建序号超过268,435,456时,key值才会和地址简码长度相同。
当构建MPT结构的账户树时,账户节点将以有效位字节流为key存储于MPT结构的账户树上。一个构建MPT树的例子如下:如图2所示,第1层只有1个根节点,从第2层开始,当某一个账户地址的有效位字节流为“1”,取其值作为key值也即为“1”,将该账户地址对应的账户信息存入该账户树第2层的第1个树节点中,当后续需要从该树节点中读取该账户信息,则使用该账户地址对应的key值在该账户树中进行快速查找;以此类推,当某一个账户地址的有效位字节流为“f”,取其值作为key值也即为“f”,将该账户地址对应的账户信息存入该账户树第2层的第16个树节点中;当该账户树的第2层存储满之后,则开始在该账户树的第3层进行存储,以此类推。使用当前方法创建的MPT结构的账户树,中间节点全部被占用,减小了内存以及存储空间的开销,杜绝了节点浪费的现象。同时由于存储空间很小,使得账户树可以常驻内存,避免了账户数据在内存和硬盘中的反复迁移置换,减少了区块链在执行交易时的计算压力和时间成本。
具体地,如当地址简码的预设字节长度为8时,首先账户的key值只保留地址简码的有效位,最长也只有8位,那么在MPT树中最多只有8次节点寻址,这极大的提高了账户节点的查找效率;其次,MPT树最多只会下探到第8层,这使原本庞大的MPT数结构得到了极致的精简,极大的减轻了内存压力;再者,MPT树节点的总个数控制在了16^9个以内,极大的减少了账户在内存和硬盘间的迁移置换;最后,因为key值是以创建序号转换成的有效位字节流,所以,可以使MPT树上的所有中间节点都得到利用,不再造成任何节点浪费。另外,8位的地址简码(对应整型的4位)能为42.94967296亿个地址编码,如果还不够的话,可以进一步扩展为10位,甚至16位。地址简码每增加2位,都将多出255倍的地址编码容量,所以完全不必担心地址容量不够,或者账户节点数随地址简码变长而无效膨胀。
总之,此方案可以极大的减少MPT结构账户树的内存开销,计算压力和时间成本,且杜绝了节点浪费现象。
进一步地,为了能够使本发明形成的技术效果与现有技术中构建MPT结构树相比更加的清晰,以下通过具体的例子进行说明:
若按照现有技术中以定长的账户地址直接构建MPT结构树,一般的地址长度在32字节以上,为了描述方便,直接取32字节进行说明,以16叉的MPT树为例,第1层只有1个根节点,第2层有16个节点,第3层有256个节点,以此类推,32字节的账户地址形成的账户树深度将达到64层以上,16叉的MPT树每下探一层,都将产生当前层的16倍的节点。32位定长的账户地址全部位于MPT树的第64层,而从根节点到64层中间的2~63层节点,并没有存储任何数据,只是为了组织路径而被创建。即使是当账户地址很少时(如仅255个账户地址),都需要创建64层的账户树,所有的账户地址存储于第64层,交易时需要进行64次寻址才能够找到对应的账户地址。
然而,使用本发明的方法创建的MPT结构的账户树,如图2所示,仅创建了两层的账户树,就可以存储255个账户,不存在任何中间节点的浪费,对于不超过256个的账户,最多寻址2次即可以找到对应的账户参与到区块链交易中。
进一步地,对用户节点创建账户地址的过程进行进一步地详细说明:
首先,获取所述用户节点发起所述创建账户地址请求时提供的公钥,对所述公钥进行预处理,得到初步地址。其中对公钥进行预处理的方式包括双重哈希、MD5、SHA-512、SHA-256等在内的任意一种预处理方式。得到的初步地址为定长的地址。
其次,将所述初步地址与根据所述创建序号形成的定长的所述地址简码通过预设拼接算法做拼接,生成所述用户节点的账户地址。其中,预设拼接算法不唯一,可以是复杂的算法拼接,也可以只是简单的字符串拼接,比如,直接将地址简码拼接在初步地址的尾部,具体如何取决于设计者的需求。最终的账户地址生成后,直接作为请求的结果返回给用户。
举个例子来说,假设公钥为“1E99423A4ED27608A15A2616A2B0E9E5”,对公钥进行哈希运算,如SHA1(“1E99423A4ED27608A15A2616A2B0E9E5”);假设创建序号为5,形成8位定长的地址简码“00000005”;使用最简单的字符串拼接的方式进行拼接,形成最终的账户地址为SHA1(“1E99423A4ED27608A15A2616A2B0E9E5”)+“00000005”=“da5f0abb794af99766ebc6843643b0537ff9a0b300000005”。
进一步地,所述构建MPT结构的账户树,还包括:根据每一个新创建的账户地址,依次在所述MPT结构的账户树上,在用于表示当前账户地址的树节点中存入与当前账户地址相对应的账户信息;根据所述树节点中新存入的账户信息,更新所述树节点以及与所述树节点相关联的关联节点对应的哈希值,其中,所述关联节点包括构建当前所述树节点的路径上的所有的父节点。
具体地,在接收到用户节点发送的创建账户地址的请求,并创建完账户地址,构建出MPT结构的账户树之后,将当前账户地址的账户信息,存入当前账户地址在MPT结构的账户树上对应的树节点上。MPT结构的账户树根据存入的账户信息,更新当前树节点的哈希值,并同时更新所有关联节点的哈希值。
一般的,对于每一个父节点上的哈希值,汇总了所包含的所有的子节点的哈希值。当任意一个子节点的哈希值发生变化时,父节点的哈希值也会发生变化,也就是说,当一个子节点的哈希值发生变化时,从根节点开始到构建当前子节点路径上的所有节点的哈希值全部会发生变化。通过哈希值的变化,使得MPT结构的账户树对数据的敏感性极强。通过判断父节点的哈希值是否发生变化,即可以知道是否有子节点的账户信息发生变化。进一步地,在查找发生变化的节点时,也无需对全树进行查找,只需要顺着哈希值变化的节点,依次往下层去继续查找有变化的节点即可。当当前节点的哈希值没有发生变化,也就等于下层所有的子节点没有发生任何的变化,也就无需进行查找了。
第二实施例
本实施例提供了根据第一实施例中创建的MPT结构的账户树,执行区块链交易的具体实施例,具体为:
首先,获取所述区块链交易涉及的账户地址,按照预设拼接算法反向截取出所述地址简码。其中,预设拼接算法为第一实施例中将初步地址与地址简码进行拼接时的算法,本步骤中与拼接时的过程相反,反向截取出地址简码。
其次,获取所述地址简码的有效位作为key值。具体地,因为账户树中只存储有有效位,地址简码为定长的地址,在通过key值查找之前,需要获取地址简码中的有效位。
最后,根据所述key值在所述MPT结构的账户树上,对所述账户地址对应的账户做包括查找、读写处理在内的操作。具体地,在获取到地址简码中的有效位之后,使用有效位作为key值在账户树上对相应的账户上进行与区块链交易相关的操作。
第三实施例
如图3所示,本实施例提供了一种链节点1,包括:
地址简码创建模块11,用于根据用户节点发起的创建账户地址请求,为所述用户节点创建账户地址之后,获取所创建的账户地址的创建序号,对所述创建序号预处理后,形成所述用户节点对应的定长的地址简码;
账户树构建模块12,用于获取所述地址简码的有效位,使用所述有效位构建MPT结构的账户树。
交易执行模块13,用于根据构建的所述MPT结构的账户树执行区块链交易,具体为:获取所述区块链交易涉及的所述账户地址,按照所述预设拼接算法反向截取出所述地址简码;获取所述地址简码的有效位作为key值;根据所述key值在所述MPT结构的账户树上,对所述账户地址对应的账户做包括查找、读写处理在内的操作。
账户地址创建模块14,用于获取所述用户节点发起所述创建账户地址请求时提供的公钥,对所述公钥进行预处理,得到初步地址;将所述初步地址与根据所述创建序号形成的所述地址简码通过预设拼接算法做拼接,生成所述用户节点的账户地址。
第四实施例
如图4所示,本实施例提供了一种MPT结构的账户树的数据压缩系统,包括:用户节点2、链节点1;
所述用户节点2,用于向所述链节点发起创建账户地址请求;
所述链节点1,具体包括:地址简码创建模块和账户树构建模块;
所述地址简码创建模块11,用于根据用户节点发起的创建账户地址请求,为所述用户节点创建账户地址之后,获取所创建的账户地址的创建序号,对所述创建序号预处理后,形成所述用户节点对应的定长的地址简码;
所述账户树构建模块12,用于获取所述地址简码的有效位,使用所述有效位构建MPT结构的账户树。
一种计算机设备,包括存储器和一个或多个处理器,所述存储器中存储有计算机代码,所述计算机代码被所述一个或多个处理器执行时,使得所述一个或多个处理器执行如第一实施例中任一项所述的方法。
一种计算机可读存储介质,计算机可读存储介质存储有计算机代码,当计算机代码被执行时,如上述方法被执行。本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁盘或光盘等。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个功能或步骤的电路。如本说明书实施例所示实施例揭示的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Net work Processor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本说明书实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本说明书实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子系统执行时,使得所述电子系统执行实施例一所述的方法。在此不再赘述。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。

Claims (10)

1.一种MPT结构的账户树的数据压缩方法,其特征在于,包括以下步骤:
根据用户节点发起的创建账户地址请求,为所述用户节点创建账户地址,所述用户节点存入账户信息,根据所述账户信息,更新节点与关联节点的哈希值,其中,所述关联节点包括所有父节点;
获取所创建的账户地址的创建序号,对所述创建序号预处理后,形成所述用户节点对应的定长的地址简码;
获取所述地址简码的有效位,舍弃所述地址简码中的无效位,获取到的地址简码的有效位的长度将小于或等于预设字节长度后使用所述有效位构建MPT结构的账户树,使得最终形成的账户树中的每一个中间节点都存储有账户,中间节点得到充分的利用。
2.根据权利要求1所述的MPT结构的账户树的数据压缩方法,其特征在于,还包括:根据构建的所述MPT结构的账户树执行区块链交易,具体为:
获取所述区块链交易涉及的账户地址,按照预设拼接算法反向截取出所述地址简码;
获取所述地址简码的有效位作为key值;
根据所述key值在所述MPT结构的账户树上,对所述账户地址对应的账户做包括查找、读写处理在内的操作。
3.根据权利要求1或2所述的MPT结构的账户树的数据压缩方法,其特征在于,所述为所述用户节点创建账户地址包括:
获取所述用户节点发起所述创建账户地址请求时提供的公钥,对所述公钥进行预处理,得到初步地址;
将所述初步地址与根据所述创建序号形成的所述地址简码通过预设拼接算法做拼接,生成所述用户节点的账户地址。
4.根据权利要求3所述的MPT结构的账户树的数据压缩方法,其特征在于,所述为所述用户节点创建账户地址还包括:设定一预设字节长度,用于存储所述地址简码,存储后所述地址简码的长度与所述预设字节长度一致,与所述初步地址进行拼接后形成定长的所述账户地址。
5.根据权利要求1所述的MPT结构的账户树的数据压缩方法,其特征在于,所述构建MPT结构的账户树,还包括:
根据每一个新创建的账户地址,依次在所述MPT结构的账户树上,在用于表示当前账户地址的树节点中存入与当前账户地址相对应的账户信息;
根据所述树节点中新存入的账户信息,更新所述树节点以及与所述树节点相关联的关联节点对应的哈希值,其中,所述关联节点包括构建当前所述树节点的路径上的所有的父节点。
6.一种链节点,其特征在于,包括:
地址简码创建模块,用于根据用户节点发起的创建账户地址请求,为所述用户节点创建账户地址之后,所述用户节点存入账户信息,根据所述账户信息,更新节点与关联节点的哈希值,其中,所述关联节点包括所有父节点,获取所创建的账户地址的创建序号,对所述创建序号预处理后,形成所述用户节点对应的定长的地址简码;
账户树构建模块,用于获取所述地址简码的有效位,舍弃所述地址简码中的无效位,获取到的地址简码的有效位的长度将小于或等于预设字节长度后使用所述有效位构建MPT结构的账户树,使得最终形成的账户树中的每一个中间节点都存储有账户,中间节点得到充分的利用。
7.根据权利要求6所述的链节点,其特征在于,还包括:
交易执行模块,用于根据构建的所述MPT结构的账户树执行区块链交易,具体为:获取所述区块链交易涉及的所述账户地址,按照预设拼接算法反向截取出所述地址简码;获取所述地址简码的有效位作为key值;根据所述key值在所述MPT结构的账户树上,对所述账户地址对应的账户做包括查找、读写处理在内的操作。
8.根据权利要求6所述的链节点,其特征在于,还包括:
账户地址创建模块,用于获取所述用户节点发起所述创建账户地址请求时提供的公钥,对所述公钥进行预处理,得到初步地址;将所述初步地址与根据所述创建序号形成的所述地址简码通过预设拼接算法做拼接,生成所述用户节点的账户地址。
9.一种MPT结构的账户树的数据压缩系统,其特征在于,包括:用户节点、链节点;
所述用户节点,用于向所述链节点发起创建账户地址请求;
所述链节点,具体包括:地址简码创建模块和账户树构建模块;
所述地址简码创建模块,用于根据用户节点发起的创建账户地址请求,为所述用户节点创建账户地址之后,所述用户节点存入账户信息,根据所述账户信息,更新节点与关联节点的哈希值,其中,所述关联节点包括所有父节点,获取所创建的账户地址的创建序号,对所述创建序号预处理后,形成所述用户节点对应的定长的地址简码;
所述账户树构建模块,用于获取所述地址简码的有效位,舍弃所述地址简码中的无效位,获取到的地址简码的有效位的长度将小于或等于预设字节长度后使用所述有效位构建MPT结构的账户树,使得最终形成的账户树中的每一个中间节点都存储有账户,中间节点得到充分的利用。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机代码,当所述计算机代码被执行时,如权利要求1至5中任一项所述的方法被执行。
CN202011373029.6A 2020-11-30 2020-11-30 一种mpt结构的账户树的数据压缩方法及系统 Active CN112511629B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011373029.6A CN112511629B (zh) 2020-11-30 2020-11-30 一种mpt结构的账户树的数据压缩方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011373029.6A CN112511629B (zh) 2020-11-30 2020-11-30 一种mpt结构的账户树的数据压缩方法及系统

Publications (2)

Publication Number Publication Date
CN112511629A CN112511629A (zh) 2021-03-16
CN112511629B true CN112511629B (zh) 2022-11-11

Family

ID=74968679

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011373029.6A Active CN112511629B (zh) 2020-11-30 2020-11-30 一种mpt结构的账户树的数据压缩方法及系统

Country Status (1)

Country Link
CN (1) CN112511629B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114157731B (zh) * 2021-10-29 2024-04-12 合肥华控天芯科技有限公司 一种基于FPH-trie树和动态优先级调度的FC-AE协议解析仪
CN113821536B (zh) * 2021-11-23 2022-03-18 腾讯科技(深圳)有限公司 基于区块链的数据处理方法、装置、设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108197226A (zh) * 2017-12-29 2018-06-22 山大地纬软件股份有限公司 Mptc账户状态树以及mptc区块链快速检索方法
EP3596684A2 (en) * 2019-03-04 2020-01-22 Alibaba Group Holding Limited Constructing blockchain world state merkle patricia trie subtree
CN111221780A (zh) * 2019-12-31 2020-06-02 浙江工业大学 一种基于区块链的服务器文件安全存储方法
CN111522833A (zh) * 2020-07-03 2020-08-11 支付宝(杭州)信息技术有限公司 一种区块链中的mpt树的更新方法、装置和电子设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070157146A1 (en) * 2006-01-03 2007-07-05 Mediatek Inc. Method of packing-based macro placement and semiconductor chip using the same
US8560523B2 (en) * 2008-06-26 2013-10-15 Microsoft Corporation View matching of materialized XML views
CN108009408A (zh) * 2017-12-04 2018-05-08 山东浪潮通软信息科技有限公司 一种权限管理方法、装置、可读介质及存储控制器
CN110473083B (zh) * 2019-07-08 2023-07-14 创新先进技术有限公司 树状风险账户识别方法、装置、服务器及存储介质
US10761948B1 (en) * 2019-07-13 2020-09-01 Alibaba Group Holding Limited Method, apparatus, and electronic device for restoring state data of blockchain
US11113272B2 (en) * 2019-07-31 2021-09-07 Advanced New Technologies Co., Ltd. Method and apparatus for storing blockchain state data and electronic device

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108197226A (zh) * 2017-12-29 2018-06-22 山大地纬软件股份有限公司 Mptc账户状态树以及mptc区块链快速检索方法
EP3596684A2 (en) * 2019-03-04 2020-01-22 Alibaba Group Holding Limited Constructing blockchain world state merkle patricia trie subtree
CN111221780A (zh) * 2019-12-31 2020-06-02 浙江工业大学 一种基于区块链的服务器文件安全存储方法
CN111522833A (zh) * 2020-07-03 2020-08-11 支付宝(杭州)信息技术有限公司 一种区块链中的mpt树的更新方法、装置和电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
黄根 ; 邹一波 ; 徐云.区块链中Merkle树性能研究.《计算机系统应用》.2020, *

Also Published As

Publication number Publication date
CN112511629A (zh) 2021-03-16

Similar Documents

Publication Publication Date Title
US10331641B2 (en) Hash database configuration method and apparatus
EP3561674A1 (en) Block data check method and apparatus
JP5950285B2 (ja) 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム
CN112511629B (zh) 一种mpt结构的账户树的数据压缩方法及系统
CN109299086B (zh) 最优排序键压缩和索引重建
CN112988912B (zh) 区块链数据存储方法及装置、电子设备
CN114064984B (zh) 一种基于稀疏数组链表的世界状态增量更新方法及装置
CN110413711B (zh) 一种差异数据获取方法及其存储介质
CN112416880A (zh) 一种基于实时归并的海量小文件存储性能优化方法及装置
CN113010526A (zh) 基于对象存储服务的存储方法及装置
CN115699584A (zh) 使用将未压缩/已压缩内容相关的索引的压缩/解压缩
CN115114232A (zh) 一种历史版本对象列举方法、装置及其介质
CN112988909B (zh) 区块链数据存储方法及装置、电子设备
CN112988908B (zh) 区块链数据存储方法及装置、电子设备
Moataz et al. Oblivious substring search with updates
CN110221778A (zh) 酒店数据的处理方法、系统、存储介质以及电子设备
CN116089663A (zh) 一种规则表达式匹配方法、装置及计算机可读存储介质
CN111444194B (zh) 一种块链式账本中索引的清除方法、装置及设备
US10997144B2 (en) Reducing write amplification in buffer trees
CN112988911A (zh) 区块链数据存储方法及装置、电子设备
CN115801020B (zh) 确定有限状态自动机压缩方法、匹配方法、设备及介质
CN111198877B (zh) 数据存储和查询方法及装置
CN113641871B (zh) 一种无锁散列方法、装置、设备及介质
CN117632950A (zh) 一种数据结构的构建方法、装置、设备及存储介质
CN116401412A (zh) 索引查找方法、系统、电子设备及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant