CN118120183A - 用于从区块链中修剪区块以用于数据保留和存储可扩展性目的的方法和*** - Google Patents
用于从区块链中修剪区块以用于数据保留和存储可扩展性目的的方法和*** Download PDFInfo
- Publication number
- CN118120183A CN118120183A CN202280068316.7A CN202280068316A CN118120183A CN 118120183 A CN118120183 A CN 118120183A CN 202280068316 A CN202280068316 A CN 202280068316A CN 118120183 A CN118120183 A CN 118120183A
- Authority
- CN
- China
- Prior art keywords
- blockchain
- block
- node
- transaction
- data
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 55
- 238000013138 pruning Methods 0.000 title claims abstract description 25
- 230000014759 maintenance of location Effects 0.000 title description 2
- 230000004044 response Effects 0.000 claims abstract description 21
- 230000004931 aggregating effect Effects 0.000 claims abstract description 5
- 230000015654 memory Effects 0.000 claims description 37
- 230000008859 change Effects 0.000 claims description 3
- 230000002776 aggregation Effects 0.000 abstract description 10
- 238000004220 aggregation Methods 0.000 abstract description 10
- 230000000977 initiatory effect Effects 0.000 abstract 1
- 238000012545 processing Methods 0.000 description 26
- 238000004891 communication Methods 0.000 description 24
- 238000012795 verification Methods 0.000 description 24
- 230000008569 process Effects 0.000 description 16
- 230000006870 function Effects 0.000 description 15
- 230000005540 biological transmission Effects 0.000 description 12
- 238000010200 validation analysis Methods 0.000 description 12
- 238000004590 computer program Methods 0.000 description 10
- 238000012360 testing method Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000010267 cellular communication Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000013479 data entry Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 150000003839 salts Chemical class 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000010409 thin film Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/1834—Distributed file systems implemented based on peer-to-peer networks, e.g. gnutella
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3297—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving time stamps, e.g. generation of time stamps
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
一种用于确认区块链中的新的当前创世区块的配置的方法,所述区块链被配置为使得能够在所述新的当前创世区块之前进行修剪,包括:由区块链网络中的区块链节点接收来自该网络中的另一个节点的创世响应消息,该消息包括配置值和序数值;识别区块链中在较早的创世区块之后添加的多个标准区块,该较早的创世区块包括所述序数值之前的数字;聚合来自所识别的多个标准区块中的每个标准区块的智能合约状态改变;以及基于聚合的智能合约状态改变来验证接收到的创世响应消息中所包括的配置值。智能合约状态的聚合能够由配置该新的当前创世块的区块链节点的处理器或由另一个区块链节点完成。
Description
相关申请的交叉引用
本申请要求于2021年10月27日提交的美国非临时申请No.17/452,492的权益和优先权。上述申请的全部公开内容通过引用并入本文。
技术领域
本公开涉及区块链的修剪,具体而言是使用当前创世区块、配置值和状态数据库来实现对区块链中的块的连续修剪,而不影响不变性、智能合约和交易验证。
背景技术
区块链最初是作为一种用于使用密码货币进行支付交易的存储机制创建的。使用区块链提供了许多好处,诸如去中心化、分布式计算、关于交易的透明度,并且还为交易中涉及的个人或实体提供一定程度的匿名性。区块链更受欢迎的方面之一是它是不可变的记录:作为链的一部分的每笔交易都存储在其中,并且由于计算要求和带宽限制而无法改变,特别是当链变得越来越长且区块链网络增加更多节点时。
但是,这些相同的属性会导致区块链达到显著的数据尺寸,这使得传输甚至本地存储效率低下或不可能。例如,具有足够区块或多个区块存储显著数据的区块链可能占用千兆字节的空间,随着时间的推移,这可能变得不切实际。不可变的传统区块链常常无法以任何有意义的方式减少数据尺寸。因此,已经开发了一些可以从一些节点的存储中移除区块的方法。但是,这些方法常常依赖于至少一些节点保留区块链的完整副本以用于验证,其中不保留完整副本的节点可能无法验证其输入可在被修剪的区块上找到的交易。因此,在此类方法中,减小的数据尺寸在许多情况下可以是效率低下的,并且在其它情况下是不切实际的。
因此,需要对区块链进行技术改进,允许修剪区块,同时仍然使每个节点能够验证所有新交易,而无需任何节点都保留区块链的完整副本。
发明内容
本公开提供了用于处理新区块链交易并确认区块链中的新的创世区块的***和方法的描述,所述***和方法被配置为使得能够在区块链中的任何给定创世区块后面进行修剪。在区块链中,定期选择新的当前创世区块,其中当前创世区块一旦被选择就可以包括配置值,该配置值是智能合约的当前状态以及在一些情况下的未花费的交易输出的聚合。使用本文讨论的方法,当前创世区块使得能够成功验证和处理新的交易或智能合约的执行,而不需要任何先前的区块,从而使每个区块链节点能够修剪那些区块。在一些情况下,区块链节点可以维护状态数据库,该状态数据库可以存储未花费的交易输出和相关数据,这可以使得区块链节点能够验证其输入可与被修剪的区块中的交易的输出对应的交易,这可以导致此类交易被成功验证并添加到区块链中,而无需新的创世区块的配置数据包括此类数据。在这两种情况下,区块链网络中的每个区块链节点都可以修剪旧区块,而不对验证新交易和执行智能合约的能力产生不利影响,从而显著减少所有节点的文件尺寸而无需付出任何相关功能性。
一种用于处理区块链中的新区块链交易的方法,所述区块链被配置为使得能够在当前创世区块之前进行修剪,包括:由区块链网络中的区块链节点的接收器接收新区块链交易,该新区块链交易包括至少一个或多个交易输入和一个或多个交易输出;由区块链节点的处理器验证新区块链交易,其中验证新区块链交易包括验证一个或多个交易输入中的每一个未被花费;由区块链节点的处理器生成新区块,其中新区块至少包括区块头和一个或多个区块链数据值,一个或多个区块链数据值之一包括新区块链交易;由区块链节点的传输器将生成的新区块传输到区块链网络中的多个附加节点;以及在区块链节点的存储器中将一个或多个交易输出存储在与区块链相关联的状态数据库中。
一种用于确认区块链中的新的当前创世区块的配置的方法,所述区块链被配置为使得能够在所述新的当前创世区块之前进行修剪,包括:由区块链网络中的区块链节点的接收器接收来自区块链网络中的另一个节点的创世响应消息,所述创世响应消息包括至少配置值和序数值;由所述区块链节点中的处理器识别所述区块链中在较早的创世区块之后添加的多个标准区块,所述较早的创世区块包括所述序数值之前的数字;由区块链节点的处理器聚合来自所识别的多个标准区块中的每个标准区块的智能合约状态改变;以及由所述区块链节点的处理器基于聚合的智能合约状态改变来验证接收到的所述创世响应消息中包括的所述配置值。可以由配置所述新的当前创世区块的所述区块链节点的处理器或者另一个区块链节点来进行智能合约状态的聚合。
一种用于处理区块链中的新区块链交易的***,所述区块链被配置为使得能够在当前创世区块之前进行修剪,包括:区块链网络;区块链网络中的多个附加节点;以及区块链网络中的区块链节点,包括:接收器,接收新区块链交易,该新区块链交易包括至少一个或多个交易输入和一个或多个交易输出,处理器,验证新区块链交易,其中验证新区块链交易包括验证一个或多个交易输入中的每个交易输入未被花费,以及生成新区块,其中新区块包括至少区块头和一个或多个区块链数据值,一个或多个区块链数据值之一包括新区块链交易,传输器,将生成的新区块传输到区块链网络中的多个附加节点,以及存储器,将一个或多个交易输出存储在与区块链相关联的状态数据库中。
一种用于确认区块链中的新的当前创世区块的配置的***,所述区块链被配置为使得能够在所述新的当前创世区块之前进行修剪,包括:区块链网络;区块链网络中的另一个节点;以及区块链网络中的区块链节点,包括接收器,从区块链网络中的另一个节点接收创世响应消息,所述创世响应消息包括至少配置值和序数值,以及处理器:识别所述区块链中在较早的创世区块之后添加的多个标准区块,所述较早的创世区块包括所述序数值之前的数字,聚合来自所识别的多个标准区块中的每个标准区块的智能合约状态改变,以及基于聚合的智能合约状态改变来验证接收到的所述创世响应消息中包括的所述配置值。
附图说明
当结合附图阅读时,从以下示例性实施例的详细描述中可以最好地理解本公开的范围。附图中包括以下各图:
图1是图示根据示例性实施例的用于验证创世区块并处理被修剪的区块链中的新交易的高级***架构的框图。
图2是图示根据示例性实施例的图1的***的区块链节点的框图,该***用于验证创世区块并处理被修剪的区块链中的新交易。
图3是图示根据示例性实施例的用于在图1的***中处理被修剪的区块链中的新区块链交易的过程的流程图。
图4是图示根据示例性实施例的用于验证被修剪的区块链中的创世区块的过程的流程图。
图5是图示根据示例性实施例的用于处理被配置为使得能够在当前创世区块之前进行修剪的区块链中的新区块链交易的示例性方法的流程图。
图6是图示根据示例性实施例的用于确认被配置为使得能够在新创世区块之前进行修剪的区块链中的新创世区块的配置的示例性方法的流程图。
图7是图示根据示例性实施例的计算机***架构的框图。
根据下文提供的详细描述,本公开的其它应用领域将变得清楚。应该理解的是,示例性实施例的详细描述仅用于说明的目的,因此,并不旨在必然地限制本公开的范围。
具体实施方式
专业术语
区块链-基于区块链的交易的所有交易的共享分类账,无论是货币、出处、法律或医疗记录,还是几乎任何其它形式的交易。一个或多个计算设备可以包括区块链网络,区块链网络可以被配置为处理和记录交易,作为区块链中的区块的一部分。一旦区块完成,该区块就被添加到区块链中,并由此更新交易记录。在许多情况下,区块链可以是按时间次序的交易的分类账,或者可以以适合区块链网络使用的任何其它次序呈现。在一些配置中,记录在区块链中的交易可以包括目的地地址和货币金额,使得区块链记录多少货币归因于具体地址。在一些情况下,交易是金融的而其它的不是金融的,或者可能包括附加的或不同的信息(诸如源地址、时间戳等等)。在一些实施例中,区块链还可以或者可替代地包括几乎任何类型的数据作为被放置在分布式数据库中的交易的形式或者作为需要被放置在分布式数据库中的交易的形式,该分布式数据库维持不断增长的数据记录列表,该数据记录列表能够防止甚至由其运营商进行的篡改和修订,并且可以由区块链网络通过工作证明和/或与此相关的任何其它合适的核实技术来确认和验证。在一些情况下,关于给定交易的数据还可以包括附加数据,这些附加数据不直接属于附加到交易数据的交易的一部分。在一些情况下,将这种数据包括在区块链中可以构成交易。在这种情况下,区块链可以不与具体的数字、虚拟、法定或其它类型的货币直接相关联,而是与宽范围的数据交易相关联。
用于维护和利用被修剪的区块链的***
图1图示了用于通过使用状态数据库和配置值来验证创世区块以及处理被修剪的区块链中的新区块链交易的***100。
***100可以包括区块链网络104。每个区块链网络104可以包括多个不同的区块链节点102。在一些实施例中,一个或多个区块链节点102可以是多于一个区块链网络104中的节点。每个区块链节点可以是计算***,诸如图2和图7中所示,下面将更详细地讨论的,该计算***被配置为执行与区块链的处理和管理相关的功能,包括区块链数据值的生成、提出的区块链交易的核实、数字签名的核实、新区块的生成、新区块的验证以及区块链的副本的维护。
区块链可以是至少由多个区块组成的分布式分类帐。每个区块可以至少包括区块头和一个或多个数据值。每个区块头可以至少包括时间戳、区块引用值和数据引用值。时间戳可以是生成区块头的时间,并且可以使用任何合适的方法(例如,UNIX时间戳、DateTime等)来表示。区块引用值可以是引用区块链中较早区块(例如,基于时间戳)的值。在一些实施例中,区块头中的区块引用值可以是对相应区块之前的最近添加的区块的区块头的引用。在示例性实施例中,区块引用值可以是经由对最近添加的区块的区块头进行散列而生成的散列值。类似地,数据引用值可以是对存储在包括区块头的区块中的一个或多个数据值的引用。在示例性实施例中,数据引用值可以是经由对一个或多个数据值进行散列生成的散列值。例如,数据引用值可以是使用一个或多个数据值生成的Merkle树的根。
每个区块头中使用区块引用值和数据引用值可导致区块链不可变。对数据值的任何尝试的修改将要求为该块生成新的数据引用值,从而这将要求新生成后续区块的区块引用值,进一步要求在每个后续区块中生成新的区块引用值。在生成新区块并将其添加到区块链之前,这将必须在区块链网络104中的每个区块链节点102中执行和更新,以便使改变永久化。计算和通信限制会使这种修改变得极其困难(如果不是不可能的话),从而使区块链变得不可变。
在一些实施例中,区块链可以被用于存储关于在两个不同区块链钱包之间进行的区块链交易的信息。区块链钱包可以包括密码密钥对的私钥,该私钥被用于生成用作付款人对区块链交易的授权的数字签名,其中数字签名可以由区块链网络104使用密码密钥对的公钥来核实。在一些情况下,术语“区块链钱包”可以专门指私钥。在其它情况下,术语“区块链钱包”可以指存储私钥以供其在区块链交易中使用的计算设备(例如,参与者***106)。例如,每个计算设备可以各自具有其自己的用于相应密码密钥对的私钥,并且每个计算设备可以是用于与和区块链网络104相关联的区块链进行交易的区块链钱包。计算设备可以是适合存储和利用区块链钱包的任何类型的设备,诸如台式计算机、膝上型计算机、笔记本计算机、平板计算机、蜂窝电话、智能电话、智能手表、智能电视、可穿戴计算设备、可植入计算设备等。
如果适用的话,存储在区块链中的每个区块链数据值可以与区块链交易或其它数据存储对应。区块链交易可以至少包括:使用发送者的私钥生成的货币的发送者(例如,第一参与者***106)的数字签名、使用接收方的公钥生成的货币的接收方(例如,第二参与者***106)的区块链地址,以及转移的区块链货币金额或存储的其它数据。在区块链用于与货币不同的数据存储的情况下,货币金额可以被此类其它数据替代。在一些区块链交易中,交易还可以包括发送者的当前存储区块链货币的一个或多个区块链地址(例如,数字签名证明他们可以访问此类货币),以及使用发送者的公钥为发送者要保留的任何改变生成的地址。已发送的可以在未来交易中使用的密码货币的地址被称为“输出”地址,因为每个地址之前都被用于捕获先前区块链交易的输出,也称为“未花费的交易”,因为有货币发送到先前交易中的地址,但该货币仍未花费。在一些情况下,区块链交易还可以包括发送者的公钥,供实体在验证交易时使用。对于区块链交易的传统处理,这种数据可以由发送者或接收者提供给区块链网络104中的区块链节点102。节点可以使用发送者的钱包的密码密钥对中的公钥来核实数字签名,并且还核实发送者对资金的访问权(例如,未花费的交易尚未被花费并被发送到与该发送者的钱包相关联的地址),这个过程称为交易的“确认”,然后将区块链交易包含在新的区块中。在传统区块链实施方式中,新区块可以在被添加到区块链并且分发到区块链网络104中的所有区块链节点102之前由区块链网络104中的其它节点102验证。在区块链数据值可能与区块链交易无关,而是与其它类型数据的存储相关的情况下,区块链数据值可以仍然包括或以其它方式涉及数字签名的验证。
在一些实施例中,区块链可以利用智能合约。在此类实施例中,智能合约可以存储在与区块链网络104相关联的区块链中。智能合约可以是自执行的合约,其中智能合约执行之后的结果可以是要存储在区块链中的新区块链数据值,诸如新区块链交易。智能合约可以使用一个或多个输入(也称为调度(dispatch))来执行,然后生成新区块链数据值。智能合约可以是自执行的,使得智能合约将在识别出有效调度时自动触发执行,或者将在满足特定准则时自动触发,这可以导致特定调度作为输入被提供给智能合约以供执行。在示例性实施例中,智能合约的每个调度将引用区块链上的先前区块链数据值,诸如通过使用区块链数据值的散列值或与区块链数据值一起存储在区块链中的唯一标识值。当调度作为智能合约的输入被馈送时,智能合约的执行可产生新区块链数据值,诸如区块链交易,在一些情况下,这可以取决于调度本身,诸如调度中的值可导致与智能合约的执行不同的输出。
在***100中,区块链网络104中的区块链节点102可以被配置为修剪区块链。区块链的修剪可以包括从本地数据存储装置中删除区块链中的较旧区块,而不影响区块链的正在进行的操作。如下文更详细地讨论的,区块链网络104可以利用多个创世区块以及配置值和状态数据库的使用来使得能够验证未来交易并且即使具有被修剪的区块也保留区块链的不变性。传统上,创世区块是区块链中的第一个区块,它可以包括具有空区块引用值或不表示先前区块的散列值的其它值的区块头。在一些情况下,创世区块可以不包括任何区块链数据值。在***100中,新创世区块可以被创建、确认并添加到区块链,其中区块链中在新创世区块之前的任何区块都可以被区块链节点102修剪。为了确保即使在尝试利用来自被修剪的区块的未花费的交易输出时也能够成功确认新交易,***100中的区块链节点102可以利用状态数据库。
状态数据库可以是存储在区块链节点102中或以其它方式可访问的本地数据库,其由此包括区块链中当前未花费的交易输出。当区块被添加到区块链时,区块链节点102可以分析存储在其中的每个新区块链交易(例如,在区块中的区块链数据值中)以关于已花费的未花费的交易输出和新生成的交易输出更新其状态数据库。区块链节点102可以分析新区块链交易并从其状态数据库中移除任何包括的未花费的交易输出,或者以其它方式将未花费的交易输出的状态更新为已花费。区块链节点102还可以分析每个新区块链交易以将由该交易产生的任何新的未花费的交易输出添加到其状态数据库。在一些情况下,指示交易输出为未花费的状态值也可以被存储在伴随交易输出的数据库中。在一些实施例中,转移到交易输出的货币金额也可以与交易输出一起存储在状态数据库中。
在一些实施例中,状态数据库中未花费的交易的条目还可以指定在其中创建了该未花费的交易的区块。例如,区块链中的每个区块可以具有与其相关联的标识号,该标识号可以是随机的或伪随机的或者可以是顺序的,诸如链中的第十五个区块可以具有标识号15(例如,或者14(如果原始创世区块的标识号为零))。当未花费的交易被存储在状态数据库中时,在其中创建或最后修改了未花费的交易的区块的标识号可以与未花费的交易一起存储在状态数据库中。这种值可以被用于确定未花费的交易是否是在从区块链中修剪掉的区块中创建的,或者用于更快地识别链本身中未花费的交易。
当由区块链节点102接收到新区块链交易用于核实并包括在区块链中的新区块中时,区块链节点102可以验证该交易,如上面所讨论的。在新区块链交易中未花费的交易输出被存储在已经从区块链中修剪掉的先前区块中的情况下(例如,使用状态数据库中的区块的标识值来识别),区块链节点102可以利用状态数据库。区块链节点102可以查询状态数据库以确定在新区块链交易中作为(一个或多个)交易输入被引用的(一个或多个)未花费的交易输出是否存在于状态数据库中,以及如果适用的话是否被指示为未花费。在货币金额被存储在状态数据库中的情况下,区块链节点102还可以核实每个未花费的交易输出与新区块链交易中指示的货币金额相关联。如果未花费的交易输出中的一个或多个无法使用状态数据库进行核实,那么该交易将验证不通过,因而不会被添加到区块链。在一些情况下,区块链节点102可以向提交区块链交易的参与者***106提供通知以指示失败的验证。如果在状态数据库中找到每个未花费的交易输出并且区块链节点102确认该交易输出保持未花费,那么该交易可以被确认。区块链节点102然后可以将新区块链交易包括在新区块中,该新区块被生成并分发到区块链网络104中的其它区块链节点102以用于确认和添加到区块链。区块链节点102然后可以相应地更新其状态数据库,如上面所讨论的。
即使交易尝试利用来自被修剪的区块的交易输出,状态数据库的使用也可以确保所有新区块链交易可以被成功确认和验证。通过仅保留关于未花费的交易输出的信息,状态数据库的文件尺寸可以始终保持小,而不会随着时间的推移而增长,而区块链本身的持续修剪可以确保区块链的文件尺寸保持在合适的值。在示例性实施例中,区块链网络104中的每个区块链节点102可以具有其自己的状态数据库,其中由于链在所有区块链节点102上是不可变的和一致的,因此状态数据库应当各自存储相同的数据。例如,当确认新区块时在每个区块链节点102中更新状态数据库时,并且当新区块被分发到区块链中的每个节点时,状态数据库应当跨所有区块链节点102是一致的。
当在区块链网络104中期望修剪时,可以选择新创世区块并且将其身份广播到区块链网络中的所有节点并存储在一个或多个区块链节点102中存储的记录(在本文中称为“创世区块记录”)中。创世区块记录可以是指示链中的哪个区块是当前创世区块的记录。记录可以经由链进行更新(例如,当其出现在链中的区块中时向区块链节点识别哪个区块已被选为新的当前创世区块的交易)。在一些情况下,可以定期地(诸如在特定时间段之后、在预定数量的区块之后、在预定数量的交易之后或者一旦区块链达到预定文件尺寸之类)生成或选择新的创世区块记录。创世区块记录可以包括序数值,该序数值可以指示创世区块相对于所有过去创世区块的编号(例如,添加到区块链的第50个创世区块可以包括序数值50或51)。序数值可以被用于确保区块链的正确排序、确保跨区块链节点102的修剪的一致性,并且还使得新区块链节点102能够通过在具有当前状态数据库的合适创世区块开始来参与区块链网络104,而无需获得整个区块链。
当创建或选择新创世区块时,区块链节点102可以将创世区块记录分发到多个其它区块链节点102,以使用合适的方法和***进行确认并添加到区块链。当前创世区块可以已经使用与标准区块相同的过程进行了确认和添加(例如,标准区块可以是尚未被选择用作创世区块记录中的创世区块的区块)。在一些情况下,可以选择标准区块作为创世区块记录。在此类情况下,标准区块可以在区块头中包括指示创世区块记录的数据,诸如序数值。例如,当生成用于那个标准区块的区块头时,区块头中可以包括序数值以表示其被选为创世区块。在一些此类情况下,不是创世区块记录的区块可以在区块头中的序数值中存储零值或空值,使得任何具有非零值作为序数值的区块都可以用作用于区块链的创世区块记录。作为新创世区块记录确认的一部分,区块链节点102可以确保序数值是正确的。一旦创世区块记录已经被确认并且添加到区块链的节点,区块链节点102就可以自由地从其本地数据存储库中修剪那个创世区块记录之前的任何区块。在一些实施例中,区块链网络104可以被配置为使得其区块链节点102保留在距最新或当前创世区块记录预定距离内的区块(例如,返回到当前创世区块的每个区块、创世区块链记录中识别出的当前创世区块之前的五个序数值等)。
在一些实施例中,创世区块记录可以包括配置值。配置值可以包括在对创世区块之前的区块进行修剪之后维持区块链的操作可能需要的任何数据。在一个示例中,配置值可以包括截至创世区块记录(或单独的状态数据库)的所有当前未花费的交易输出,诸如可以由使用其状态数据库生成创世区块记录的区块链节点102来识别。在区块链被配置为使用智能合约的情况下,配置值可以包括区块链上存在的智能合约的状态信息。例如,智能合约及其当前输入信息或调度可以存储在创世区块记录中的配置值中。在一些情况下,配置值可以是此类数据的散列值,诸如未花费的交易输出或未决智能合约的状态配置数据。
在一些实施例中,除了未花费的交易输出之外,每个区块链节点102还可以使用其状态数据库来存储关于区块链中的智能合约的状态信息。在此类实施例中,当新区块被添加到区块链时,区块链节点102可以分析其中的区块链数据值以确定是否做出任何智能合约状态改变,诸如通过输入交易被添加到区块链、智能合约的输出被添加到区块链、对所添加的智能合约的更新等。区块链节点102可以识别任何此类实例并相应地更新其状态数据库中的智能合约的状态。在示例中,智能合约可以被用作托管,其中参与者A向托管钱包进行支付并保留在那里,直到参与者B执行的合约被添加到区块链,其中一旦添加合约,支付就从托管钱包向参与者B进行,或者如果添加合约的时间段到期,付款将退还给参与者A。当与智能合约相关的事件发生时,区块链节点102可以存储智能合约的状态信息,诸如为了反映等待从参与者A到托管钱包的支付、为了包括从参与者A到托管钱包的支付的交易标识符或区块链数据条目等。如果区块链被修剪到包括从参与者A到托管钱包的支付的区块链数据条目的区块,那么区块链节点102可以仍然能够使用其状态数据库确定已经成功进行了支付,使得当参与者B执行的合约被添加到区块链时,可以执行智能合约以促进向参与者B支付。
在一些此类实施例中,当生成新的创世区块记录时,配置值可以由自选择先前的创世区块记录以来在区块链中发生的所有智能合约状态改变的聚合组成或包括该聚合。在一些情况下,配置值可以包括每个状态改变的有序列表。在其它情况下,配置值可以包括状态改变的Merkle树的根,其中状态改变可以以已知的方式(诸如使用时间排序)在Merkle树中排序。当新创世区块记录被生成并分发到其它区块链节点102时,新创世区块记录的验证的一部分可以包括配置值的验证。接收到提出的新创世区块记录的区块链节点102可以识别自最近创世区块记录以来智能合约中的所有状态改变,并且使用识别出的状态改变的聚合来生成配置值。可以将生成的配置值与提出的创世区块记录中的配置值进行比较。如果配置值匹配,那么新创世区块记录可以被区块链节点102确定为有效,并且区块链节点102可以用确认消息来响应所提出的创世区块记录。如果配置值不匹配,那么区块链节点102可以拒绝所提出的区块链节点102。因此,配置值可以被用于确保跨每个区块链节点102的所有未决智能合约的状态是最新的。
在一些实施例中,配置值可以被用于区块链中与智能合约不同的其它数据中的状态改变。例如,在一些情况下,配置值还可以被用于在生成新创世区块记录时存储区块链节点102的当前状态数据库的聚合。在一些此类情况下,配置值可以分开包括智能合约状态改变的聚合和当前状态数据库的聚合。在其它此类情况下,两个聚合还可以聚合在一起以获得单个结果值,该结果值可以由接收到所提出的创世区块记录的任何区块链节点102确认。可以存储在与区块链相关的配置值中的其它状态信息可以包括例如创世区块记录数据、序数编号数据、节点许可数据等。
本文讨论的方法和***可以使得区块链节点102能够定期修剪区块链中的旧区块,这可以极大地减小区块链网络104中的区块链节点102使用的文件尺寸和带宽。通过使用状态数据库,区块链的持续操作可以继续进行,而无需任何节点保留任何被修剪的区块,同时仍然防止任何区块链交易出现双重花费的可能性。使用具有序数值的新创世区块记录确保所有区块链节点102可以定期保持最新,并且还促进比使用传统区块链更快地添加新区块链节点102。在创世区块记录中使用包括智能合约状态改变的聚合的配置值也确保智能合约仍然可以在使用如上面所讨论的修剪的区块链中使用。因而,本文讨论的方法和***提供了现有区块链的所有功能性,同时仍然使得能够进行显著修剪以大幅减小区块链数据尺寸。
区块链节点
图2图示了区块链节点102的实施例,诸如***100中的区块链节点102。对于相关领域的技术人员来说清楚的是,图2中所示的区块链节点102的实施例仅作为说明而提供,并且可以不是穷举适合于执行本文讨论的功能的区块链节点102的所有可能配置。例如,图7中所示并在下面更详细讨论的计算机***700可以是区块链节点102的合适配置。
区块链节点102可以包括接收设备202。接收设备202可以被配置为经由一种或多种网络协议通过一个或多个网络接收数据。在一些情况下,接收设备202可以被配置为经由一种或多种通信方法(诸如射频、局域网、无线局域网、蜂窝通信网络、蓝牙、因特网等)从其它区块链节点102、参与者***106以及其它***和实体接收数据。在一些实施例中,接收设备202可以包括多个设备,诸如用于通过不同网络接收数据的不同接收设备,诸如用于通过局域网接收数据的第一接收设备和用于经由因特网接收数据的第二接收设备。接收设备202可以接收以电子方式传输的数据信号,其中数据可以被叠加或以其它方式编码在数据信号上,并且经由接收设备202对数据信号的接收来解码、解析、读取或以其它方式获得。在一些情况下,接收设备202可以包括解析模块,用于解析接收到的数据信号以获得叠加在其上的数据。例如,接收设备202可以包括解析器程序,该解析器程序被配置为接收接收到的数据信号并将其变换成用于由处理设备执行的功能的可用输入,以执行本文描述的方法和***。
接收设备202可以被配置为接收由其它区块链节点102以电子方式传输的数据信号,该数据信号可以与区块链数据值、区块、区块链交易数据、提出的创世区块记录、状态数据库数据、智能合约状态数据、确认消息等叠加或以其它方式用其进行编码。接收设备202还可以被配置为接收由参与者***106以电子方式传输的数据信号,该数据信号可以与新区块链数据值、智能合约等叠加或以其它方式用其进行编码。
区块链节点102还可以包括通信模块204。通信模块204可以被配置为在区块链节点102的模块、引擎、数据库、存储器和其它组件之间传输数据以用于执行本文讨论的功能。通信模块204可以包括一种或多种通信类型并且利用各种通信方法用于计算设备内的通信。例如,通信模块204可以包括总线、触针连接器、电线等。在一些实施例中,通信模块204还可以被配置为在区块链节点102的内部组件与区块链节点102的外部组件(诸如外部连接的数据库、显示设备、输入设备等)之间进行通信。区块链节点102还可以包括处理设备。处理设备可以被配置为执行本文所讨论的区块链节点102的功能,这对于相关领域的技术人员来说是清楚的。在一些实施例中,处理设备可以包括专门被配置为执行处理设备的一个或多个功能的多个引擎和/或模块(诸如查询模块214、生成模块216、验证模块218等)和/或由其组成。如本文所使用的,术语“模块”可以是被特别编程为接收输入、使用该输入执行一个或多个处理并且提供输出的软件或硬件。基于本公开,本领域技术人员将清楚由各种模块执行的输入、输出和处理。
区块链节点102可以包括状态数据库206。状态数据库206可以被配置为使用合适的数据存储格式和模式来存储区块链中未花费的交易输出的状态信息以及智能合约状态信息(在适用时)。状态数据库206可以是利用结构化查询语言来对其中存储的结构化数据集进行存储、识别、修改、更新、访问等的关系数据库。状态信息可以包括未花费的交易输出、相关联的货币金额、交易输出的状态的改变、智能合约的输入值、智能合约的输出、智能合约调度数据等。
区块链节点102还可以包括区块链数据210,其可以存储在区块链节点102的存储器212中或者存储在区块链节点102内的单独区域中或者可由其访问。区块链数据210可以包括区块链,该区块链可以包括多个区块并且与区块链网络104相关联。区块链数据210还可以或可替代地包括与可以由区块链节点102使用的一个或多个区块链钱包相关联的任何数据,诸如密码密钥对、未花费的交易输出、数字资产量、用于区块链网络104的网络标识符、智能合约、签名生成算法、加密算法、用于第三方服务的通信信息等。区块链数据210还可以包括关于状态数据库206中的数据的聚合的数据、用于生成新创世区块记录的数据等。
区块链节点102还可以包括存储器212。存储器212可以被配置为存储供区块链节点102在执行本文讨论的功能时使用的数据,诸如公钥和私钥、对称密钥等。存储器212可以被配置为使用合适的数据格式化方法和方案来存储数据,并且可以是任何合适类型的存储器,诸如只读存储器、随机存取存储器等。存储器212可以包括例如加密密钥和算法、通信协议和标准、数据格式化标准和协议、用于处理设备的模块和应用的程序代码,以及可以适合区块链节点102在执行本文公开的功能时使用的其它数据,如对相关领域的技术人员来说将是清楚的。在一些实施例中,存储器212可以由关系数据库组成或者可以以其它方式包括关系数据库,该关系数据库利用结构化查询语言来对存储在其中的结构化数据集进行存储、识别、修改、更新、访问等。存储器212可以被配置为存储例如密码密钥、盐(salt)、nonce、用于其它计算***的通信信息、生成算法、密码密钥对、用于计算货币金额的算法等。
区块链节点102可以包括查询模块214。查询模块214可以被配置为对数据库执行查询以识别信息。查询模块214可以接收一个或多个数据值或查询字符串,并且可以基于所指示的数据库(诸如区块链节点102的状态数据库206)执行查询字符串以识别存储在其中的信息。然后,查询模块214可以根据需要将识别出的信息输出到区块链节点102的适当引擎或模块。查询模块214可以例如对状态数据库206执行查询以在接收到的所提出的区块链交易中查找未花费的交易输出以确定该交易是否可以被验证。
区块链节点102还可以包括生成模块216。生成模块216可以被配置为生成供区块链节点102在执行本文讨论的功能时使用的数据。生成模块216可以接收指令作为输入,可以基于指令生成数据,并且可以将生成的数据输出到区块链节点102的一个或多个模块。例如,生成模块216可以被配置为生成密码密钥对、生成数字签名、生成区块链数据值、生成新区块、生成区块和数据引用值、聚合状态改变、生成创世区块记录等。
区块链节点102还可以包括验证模块218。验证模块218可以被配置为执行区块链节点102的验证作为本文讨论的功能的一部分。验证模块218可以接收指令作为输入,指令还可以包括要在执行验证时使用的数据,可以根据请求执行验证,并且可以将验证的结果输出到区块链节点102的另一个模块或引擎。验证模块218可以例如被配置为使用合适的签名生成算法和密钥来验证数字签名、验证新区块链交易、验证智能合约、验证提出的创世区块记录中的配置值等。
区块链节点102还可以包括传输设备220。传输设备220可以被配置为经由一种或多种网络协议通过一个或多个网络传输数据。在一些情况下,传输设备220可以被配置为经由一种或多种通信方法、局域网、无线局区域网、蜂窝通信、蓝牙、射频、因特网等向其它区块链节点102、参与者***106以及其它实体传输数据。在一些实施例中,传输设备220可以包括多个设备,诸如用于通过不同网络传输数据的不同传输设备,诸如用于通过局域网传输数据的第一传输设备和用于经由因特网传输数据的第二传输设备。传输设备220可以电子方式传输叠加有可以由接收计算设备解析的数据的数据信号。在一些情况下,传输设备220可以包括用于将数据叠加、编码或以其它方式格式化为适合于传输的数据信号的一个或多个模块。
传输设备220可以被配置为将数据信号以电子方式传输到其它区块链节点,该数据信号可以与区块链数据值、区块、区块链交易数据、提出的创世区块记录、状态数据库数据、智能合约状态数据、确认消息等叠加或以其它方式用其进行编码。传输设备220还可以被配置为将数据信号以电子方式传输到参与者***106发送数据信号,该数据信号可以与交易通知、交易标识符等叠加或以其它方式用其进行编码。
用于处理新区块链交易的过程
图3图示了用于由被修剪的区块链中的区块链节点102处理***100中的新区块链交易的过程300。
在步骤302中,区块链节点102的接收设备202可以从参与者***106接收新区块链交易。新区块链交易可以包括作为新区块链交易的输入的至少一个未花费的交易输出、一个或多个输出地址以及对于每个输出地址的对应的货币金额。在一些情况下,每个未花费的交易输出也可以包括对应的货币金额。在其它情况下,未花费的交易输出的对应货币金额可以不被包括在内,因为与未花费的交易输出相关联的所有货币都将作为区块链交易的一部分被转移。在步骤304中,区块链节点102可以确定新区块链交易中未花费的(一个或多个)交易输出是否包括在本地存储的区块链的副本中(例如,不包括在被修剪的区块中)。该确定可以利用事务标识符或状态数据库206中的信息。
如果在步骤304中区块链节点102确定(一个或多个)未花费的交易输出包括在已从区块链中修剪的区块中并且因此未存储在被修剪的链上,那么在步骤306中,区块链节点102的查询模块214可以对区块链节点102的状态数据库206执行查询以识别其中的每个未花费的交易输出和/或根据其存储的状态信息识别每个交易输出是否仍未花费。如果在步骤304中区块链节点102确定(一个或多个)未花费的输出不包括在已经从区块链中被修剪的区块中,并且因此存储在被修剪的链上,那么过程300跳过步骤306并且直接继续到步骤308。在步骤308中,区块链节点102的验证模块218可以验证交易输出以确定每个交易输出是否仍未花费,并且验证交易以确保交易输入与足够的区块链货币相关联以适应如新区块链交易所指示的(一个或多个)交易输出。在步骤310中,区块链节点102可以确定作为在步骤308中执行的验证的结果,交易是否是有效的。如果其中一项或多项验证失败(例如,没有足够的可用货币、输入中的一个或多个已被花费、数字签名未成功验证等),那么在步骤312中,区块链节点102可以拒绝新区块链交易并且过程300完成。在一些情况下,区块链节点102的传输设备220可以以电子方式向提交了交易的参与者***106传输通知消息,以向他们通知该验证,以及在一些情况下,验证失败的原因。
如果区块链交易的验证成功,那么在步骤314中,区块链节点102的生成模块216可以生成包括经验证的区块链交易的新区块,并且区块链节点102的传输设备220可以以电子方式将新区块传输到区块链网络104中的多个附加节点102。附加区块链节点102可以验证新区块,并且如果该区块被成功验证,那么向区块链节点102返回确认消息。在步骤316中,区块链节点102可以确定新区块是否已被大多数附加区块链节点102确认,这可以基于接收到的确认消息的数量来确定。如果新区块没有被成功确认,那么过程300可以结束并且区块链节点102可以生成新区块或者等待来自另一个区块链节点102的新区块进行确认。如果新区块被成功确认,那么在步骤318中,区块链节点102的查询模块214可以对状态数据库206执行一个或多个查询,以更新状态数据库以移除或以其它方式指示用作已确认区块中的每个区块链交易的输入的交易输出的花费并添加已确认区块中的每个区块链交易的交易输出。然后可以完成过程300。
用于验证新创世区块记录的过程
图4图示了用于由***100中的区块链节点102验证区块链网络104中的新创世区块记录的过程400。
在步骤402中,区块链节点102的接收设备202可以从区块链网络104中的另一个区块链节点102接收创世区块记录响应消息,其中该响应消息包括新创世区块记录或用于包括在新创世区块记录中的数据,该新创世区块记录包括至少用于该创世区块记录的序数值及配置值。在步骤404中,区块链节点102的查询模块214可以对区块链节点102的区块链数据210执行查询,以识别在最近的创世区块记录与新提出的创世区块记录之间已经添加到区块链的任何居间区块(例如,根据序数值)。
在步骤406中,区块链节点102的生成模块216可以识别并聚合区块链中的所有智能合约的状态改变,如居间区块中所指示的。生成模块216可以使用聚合的状态改变并从其生成测试配置值,诸如通过使用状态改变来生成Merkle树,其中测试配置值是Merkle树的根。在步骤408中,区块链节点102的验证模块218可以尝试使用测试配置值来验证在创世响应消息中接收到的配置值。如果测试配置值与接收到的配置值不匹配,那么过程400可以结束。在一些情况下,区块链节点102的传输设备220可以向提交了响应消息的区块链节点102返回指示验证不成功的通知。如果测试配置值与接收到的配置值匹配,那么在步骤410中,区块链节点102的查询模块214可以对状态数据库206执行一个或多个查询以应用识别出的状态改变来存储智能合约状态信息。由此可以确认创世区块记录,并且区块链节点102还可以在适用时相应地更新区块链数据210。
用于处理新区块链交易的示例性方法
图5图示了用于处理被配置为使得能够在当前创世区块之前进行修剪的区块链中的新区块链交易的方法500。
在步骤502中,新区块链交易可以由区块链网络(例如,区块链网络104)中的区块链节点(例如,区块链节点102)的接收器(例如,接收设备202)接收,新区块链交易包括至少一个或多个交易输入和一个或多个交易输出。在步骤504中,新区块链交易可以由区块链节点的处理器(例如,验证模块218)验证,其中验证新区块链交易包括验证一个或多个交易输入中的每一个未被花费。
在步骤506中,可以由区块链节点的处理器(例如,生成模块216)生成新区块,其中新区块至少包括区块头和一个或多个区块链数据值,一个或多个区块数据值之一包括新区块链交易。在步骤508中,生成的新区块可以由区块链节点的传输器(例如,传输设备220)传输到区块链网络中的多个附加节点(例如,区块链节点102)。在步骤510中,一个或多个交易输出可以被存储在区块链节点的存储器(例如,存储器212)中、与区块链相关联的状态数据库(例如,状态数据库206)中。
在一个实施例中,方法500还可以包括在存储一个或多个交易输出之前由区块链节点的接收器从多个附加节点中的大多数接收确认消息。在一些实施例中,验证一个或多个交易输入中的每一个与区块链中的对应货币金额相关联可以包括识别存储在区块链中的包括所述一个或多个交易输出的一个或多个先前区块中的一个或多个较早的区块链数据值。在一个实施例中,验证一个或多个交易输入中的每一个与区块链中的对应货币金额相关联可以包括识别状态数据库中的一个或多个交易输入中的每一个和对应的货币金额。在一些实施例中,验证一个或多个交易输入中的每一个与区块链中的对应货币金额相关联可以包括识别区块链中最近创世区块中的配置值中的一个或多个交易输入中的每一个和对应的货币金额。
用于确认区块链中的配置的示例性方法
图6图示了用于确认被配置为使得能够在新创世区块之前进行修剪的区块链中的新创世区块的配置的方法600。
在步骤602中,可以由区块链网络(例如,区块链网络104)中的区块链节点(例如,区块链节点102)的接收器(例如,接收设备202)从区块链网络中的另一个节点接收创世响应消息,该创世响应消息包括至少配置值和序数值。在步骤604中,区块链中在包括所述序数值之前的数字的较早创世区块之后添加的多个标准区块可以由区块链节点中的处理器(例如,查询模块214)识别。
在步骤606中,可以由处理器(例如,生成模块216)从识别出的多个标准区块中的每一个聚合智能合约状态改变。在步骤608中,可以由区块链节点的处理器(例如,验证模块218)基于聚合的智能合约状态改变来验证包括在接收到的创世响应消息中的配置值。
在一个实施例中,方法600还可以包括由区块链节点的处理器将聚合的智能合约状态改变应用于与存储在区块链节点的存储器(例如,存储器212)中的区块链相关联的状态数据库(例如,状态数据库206)中的一个或多个对应的智能合约。在一些实施例中,方法600还可以包括由区块链节点的处理器使用聚合的智能合约状态改变来生成Merkle根,其中验证配置值包括将配置值与生成的Merkle根进行比较以进行匹配。
计算机***架构
图7图示了计算机***700,其中本公开的实施例或其部分可以被实现为计算机可读代码。例如,图1和图2的区块链节点102可以使用硬件、其上存储有指令的非暂态计算机可读介质或其组合在计算机***700中实现,并且可以在一个或多个计算机***或其它处理***中实现。硬件可以实施用于实现图3-6的方法的模块和组件。
如果使用可编程逻辑,那么这种逻辑可以在由可执行软件代码配置的商业上可用的处理平台上执行,以成为专用计算机或专用设备(例如,可编程逻辑阵列、专用集成电路等)。本领域普通技术人员可以认识到的是,所公开的主题的实施例可以用各种计算机***配置来实践,包括多核多处理器***、小型计算机、大型计算机、与分布式功能链接或集群的计算机,以及可以嵌入到几乎任何设备中的普及型或微型计算机。例如,可以使用至少一个处理器设备和存储器来实现上述实施例。
本文讨论的处理器单元或设备可以是单个处理器、多个处理器或其组合。处理器设备可以具有一个或多个处理器“核心”。如本文讨论的术语“计算机程序介质”、“非暂态计算机可读介质”和“计算机可用介质”通常用于指有形介质,诸如可移动存储单元718、可移动存储单元722和安装在硬盘驱动器712中的硬盘。
依据这个示例计算机***700描述了本公开的各种实施例。在阅读本描述之后,相关领域的技术人员将清楚如何使用其它计算机***和/或计算机架构来实现本公开。虽然操作可以被描述为顺序处理,但是一些操作实际上可以并行地、并发地和/或在分布式环境中执行,并且程序代码可以在本地或远程存储以供单个处理器或多个处理器机器访问。此外,在一些实施例中,可以重新布置操作的次序而不脱离所公开的主题的精神。
处理器设备704可以是被专门配置为执行本文讨论的功能的专用或通用处理器设备。处理器设备704可以连接到通信基础设施706,诸如总线、消息队列、网络、多核消息传递方案等。网络可以是适于执行如本文公开的功能的任何网络,并且可以包括局域网(LAN)、广域网(WAN)、无线网络(例如,WiFi)、移动通信网络、卫星网络、因特网、光纤、同轴电缆、红外线、射频(RF)或其任意组合。其它合适的网络类型和配置对于相关领域的技术人员将是清楚的。计算机***700还可以包括主存储器708(例如,随机存取存储器、只读存储器等)并且还可以包括辅助存储器710。辅助存储器710可以包括硬盘驱动器712和可移动存储驱动器714,诸如软盘驱动器、磁带驱动器、光盘驱动器、闪存存储器等。
可移动存储驱动器714可以以众所周知的方式从可移动存储单元718读取和/或写入可移动存储单元718。可移动存储单元718可以包括可以由可移动存储驱动器714读取和写入的可移动存储介质。例如,如果可移动存储驱动器714是软盘驱动器或通用串行总线端口,那么可移动存储单元718可以分别是软盘或便携式闪存驱动器。在一个实施例中,可移动存储单元718可以是非暂态计算机可读记录介质。
在一些实施例中,辅助存储器710可以包括用于允许计算机程序或其它指令被加载到计算机***700中的替代部件,例如,可移动存储单元722和接口720。此类部件的示例可以包括程序盒和盒接口(例如,如在视频游戏***中找到的)、可移动存储器芯片(例如,EEPROM、PROM等)和相关联的插座,以及其它可移动存储单元722和接口720,如对于相关领域的技术人员将清楚的。
存储在计算机***700中(例如,在主存储器708和/或辅助存储器710中)的数据可以存储在任何类型的合适的计算机可读介质上,诸如光学存储装置(例如,光盘、数字多功能光盘、蓝光光盘等)或磁带存储装置(例如,硬盘驱动器)。可以以任何类型的合适数据库配置来配置数据,诸如关系数据库、结构化查询语言(SQL)数据库、分布式数据库、对象数据库等。合适的配置和存储类型对于相关领域的技术人员将是清楚的。
计算机***700还可以包括通信接口724。通信接口724可以被配置为允许软件和数据在计算机***700和外部设备之间传递。示例性通信接口724可以包括调制解调器、网络接口(例如,以太网卡)、通信端口、PCMCIA插槽和卡等。经由通信接口724传送的软件和数据可以是信号的形式,其可以是电子的、电磁的、光学的或其它信号,如对于相关领域的技术人员来说将清楚的。信号可以经由通信路径726行进,通信路径726可以被配置为承载信号并且可以使用电线、线缆、光纤、电话线、蜂窝电话链路、射频链路等来实现。
计算机***700还可以包括显示器接口702。显示器接口702可以被配置为允许数据在计算机***700和外部显示器730之间传递。示例性显示器接口702可以包括高清晰多媒体接口(HDMI)、数字视频接口(DVI)、视频图形阵列(VGA)等。显示器730可以是用于显示经由计算机***700的显示器接口702传输的数据的任何合适类型的显示器,包括阴极射线管(CRT)显示器、液晶显示器(LCD)、发光二极管(LED)显示器、电容式触摸显示器、薄膜晶体管(TFT)显示器等。
计算机程序介质和计算机可用介质可以指存储器,诸如可以是存储器半导体(例如,DRAM等等)的主存储器708和辅助存储器710。这些计算机程序产品可以是用于向计算机***700提供软件的部件。计算机程序(例如,计算机控制逻辑)可以存储在主存储器708和/或辅助存储器710中。计算机程序也可以经由通信接口724来接收。此类计算机程序在被执行时可以使得计算机***700能够实现本文所讨论的本方法。特别地,计算机程序在被执行时可以使得处理器设备704能够实现由图3-图6所示的方法,如本文所讨论的。因而,此类计算机程序可以表示计算机***700的控制器。在使用软件实现本公开的情况下,软件可以存储在计算机程序产品中并使用可移动存储驱动器714、接口720以及硬盘驱动器712或通信接口724加载到计算机***700中。
处理器设备704可以包括被配置为执行计算机***700的功能的一个或多个模块或引擎。每个模块或引擎可以使用硬件实现,并且在一些情况下,也可以利用诸如与存储在主存储器708或辅助存储器710中的程序代码和/或程序对应的软件。在此类情况下,在由计算机***700的硬件执行之前,程序代码可以由处理器设备704(例如,由编译模块或引擎)编译。例如,程序代码可以是用编程语言编写的源代码,其被翻译成更低级别的语言(诸如汇编语言或机器代码)以供处理器设备704和/或计算机***700的任何附加硬件组件执行。编译的处理可以包括使用词法分析、预处理、解析、语义分析、语法导向转换、代码生成、代码优化,以及可以适于将程序代码转换成适于控制计算机***700以执行本文公开的功能的较低级别语言的任何其它技术。对于相关领域的技术人员将清楚的是,此类处理导致计算机***700是被特别编程以执行上面讨论的功能的专门配置的计算机***700。
除其它特征之外,与本公开一致的技术尤其提供了用于处理新区块链交易并确认被配置为使得能够在当前创世区块之前进行修剪的区块链中的新创世区块的配置的***和方法。虽然上面已经描述了所公开的***和方法的各种示例性实施例,但是应该理解的是,它们的呈现仅是为了示例的目的,而不是限制的目的。它不是详尽的并且不将本公开限制于所公开的精确形式。根据上述教导,修改和变化是可能的,或者可以从本公开的实践中获得,而不脱离广度或范围。
Claims (6)
1.一种用于确认区块链中的新的创世区块的配置的方法,所述区块链被配置为使得能够在所述新的创世区块之前进行修剪,包括:
由区块链网络中的区块链节点的接收器接收来自区块链网络中的另一个节点的创世响应消息,所述创世响应消息包括至少配置值和序数值;
由所述区块链节点中的处理器识别所述区块链中在较早的创世区块之后添加的多个区块,所述较早的创世区块包括所述序数值之前的数字;
由所述区块链节点的处理器或同一区块链中的另一个区块链节点的处理器聚合来自所识别的多个区块中的每个区块的状态改变;以及
由所述区块链节点的处理器基于聚合的状态改变来验证接收到的所述创世响应消息中包括的所述配置值。
2.如权利要求1所述的方法,还包括:
由所述区块链节点的处理器将聚合的状态改变应用于与所述区块链相关联的状态数据库中的一个或多个对应的智能合约,所述状态数据库存储在所述区块链节点的存储器中。
3.如权利要求1所述的方法,还包括:
由所述区块链节点的处理器使用聚合的状态改变来生成Merkle根,其中
验证所述配置值包括将所述配置值与生成的Merkle根进行比较以进行匹配。
4.一种用于确认区块链中的新的创世区块的配置的***,所述区块链被配置为使得能够在当前的所述创世区块之前进行修剪,包括:
区块链网络;
区块链网络中的另一个节点;以及
区块链网络中的区块链节点,包括
接收器,从区块链网络中的另一个节点接收创世响应消息,
所述创世响应消息包括至少配置值和序数值,以及
处理器
识别所述区块链中在较早的创世区块之后添加的多个区块,所述较早的创世区块包括所述序数值之前的数字,
聚合来自所识别的多个区块中的每个区块的状态改变,以及
基于聚合的状态改变来验证接收到的所述创世响应消息中包括的所述配置值。
5.如权利要求4所述的***,其中所述区块链节点的处理器还将聚合的状态改变应用于与所述区块链相关联的状态数据库中的一个或多个对应的智能合约,所述状态数据库存储在所述区块链节点的存储器中。
6.如权利要求4所述的***,其中
所述区块链节点的处理器还使用聚合的状态改变来生成Merkle根,以及
验证所述配置值包括将所述配置值与生成的Merkle根进行比较以进行匹配。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/452,492 US11947522B2 (en) | 2021-10-27 | 2021-10-27 | Method and system for pruning blocks from blockchains for data retention and storage scalability purposes |
US17/452,492 | 2021-10-27 | ||
PCT/US2022/043210 WO2023075941A1 (en) | 2021-10-27 | 2022-09-12 | Method and system for pruning blocks from blockchains for data retention and storage scalability purposes |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118120183A true CN118120183A (zh) | 2024-05-31 |
Family
ID=83508575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280068316.7A Pending CN118120183A (zh) | 2021-10-27 | 2022-09-12 | 用于从区块链中修剪区块以用于数据保留和存储可扩展性目的的方法和*** |
Country Status (3)
Country | Link |
---|---|
US (2) | US11947522B2 (zh) |
CN (1) | CN118120183A (zh) |
WO (1) | WO2023075941A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP4266623A1 (en) * | 2022-04-21 | 2023-10-25 | Siemens Aktiengesellschaft | Deleting transactions from a distributed ledger |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019178300A1 (en) * | 2018-03-13 | 2019-09-19 | Blockpoint Systems Inc. | Relational blockchain database |
US11196542B2 (en) | 2018-08-29 | 2021-12-07 | International Business Machines Corporation | Checkpointing for increasing efficiency of a blockchain |
US11036395B2 (en) | 2018-10-18 | 2021-06-15 | Nec Corporation | Secure and transparent pruning for blockchains |
US11171774B2 (en) * | 2018-11-28 | 2021-11-09 | Intel Corporation | System for synchronizing a cryptographic key state through a blockchain |
US11405180B2 (en) | 2019-01-15 | 2022-08-02 | Fisher-Rosemount Systems, Inc. | Blockchain-based automation architecture cybersecurity |
US10896171B2 (en) * | 2019-06-13 | 2021-01-19 | Tyson York Winarski | Big data blockchains with Merkle trees |
US10992459B2 (en) * | 2019-08-30 | 2021-04-27 | Advanced New Technologies Co., Ltd. | Updating a state Merkle tree |
US20210089422A1 (en) * | 2019-09-06 | 2021-03-25 | Common Computer Inc. | System and method for serverless computing based on blockchain |
US20220284008A1 (en) * | 2021-03-02 | 2022-09-08 | Mastercard International Incorporated | Method and system of implementing partitioned blockchain |
-
2021
- 2021-10-27 US US17/452,492 patent/US11947522B2/en active Active
-
2022
- 2022-09-12 WO PCT/US2022/043210 patent/WO2023075941A1/en active Application Filing
- 2022-09-12 CN CN202280068316.7A patent/CN118120183A/zh active Pending
-
2024
- 2024-02-28 US US18/590,334 patent/US20240202185A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2023075941A1 (en) | 2023-05-04 |
US20230129559A1 (en) | 2023-04-27 |
US20240202185A1 (en) | 2024-06-20 |
US11947522B2 (en) | 2024-04-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11444777B2 (en) | Method and system for providing validated, auditable, and immutable inputs to a smart contract | |
CN110603554B (zh) | 经由机器可读码进行离线数据转移的方法和*** | |
US20180349896A1 (en) | Method and system for anonymization of electronic transactions via blockchain | |
US20230394468A1 (en) | Method and system for improved blockchain performance through aggregation | |
US11373175B2 (en) | Method and system for linkage of blockchain private keys | |
US11341161B2 (en) | Method and system for grouping of blockchain nodes for greater consensus | |
US20220284008A1 (en) | Method and system of implementing partitioned blockchain | |
US11829995B2 (en) | Method and system for optimizing blockchain parsing using a wallet's static characteristics | |
US20240202185A1 (en) | Method and system for pruning blocks from a blockchain | |
US11915228B2 (en) | Method and system for prevention of lost currency in blockchain networks to missing wallets | |
US11954673B2 (en) | Method and system for user-based distributed ledgers | |
US11943333B2 (en) | Method and system for optimizing transaction flow for blockchain mining and confirmation | |
CN117957528A (zh) | 用于许可的区块链中智能合约的并行处理的方法和*** | |
US20210374125A1 (en) | Method and system for improved consensus using bootstrap resampling | |
US20230118754A1 (en) | Method and system for data retention in pruned blockchains | |
KR20240100350A (ko) | 데이터 보유 및 저장 확장성 목적을 위해 블록체인으로부터 블록을 프루닝하기 위한 방법 및 시스템 | |
US20230131813A1 (en) | Method and system for authorization and settlement in blockchain transactions | |
KR20240087781A (ko) | 프루닝된 블록체인의 데이터 보유를 위한 방법 및 시스템 | |
WO2023027846A1 (en) | Method and system for privately managed digital assets on an enterprise blockchain | |
WO2023114035A1 (en) | Method and system for enabling traceable privacy-maintaining multi-hop offline transactions in digital currencies |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |