WO2019032891A1 - Verification of interactions system and method - Google Patents
Verification of interactions system and method Download PDFInfo
- Publication number
- WO2019032891A1 WO2019032891A1 PCT/US2018/046101 US2018046101W WO2019032891A1 WO 2019032891 A1 WO2019032891 A1 WO 2019032891A1 US 2018046101 W US2018046101 W US 2018046101W WO 2019032891 A1 WO2019032891 A1 WO 2019032891A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- client device
- node
- full node
- block
- full
- Prior art date
Links
- 230000003993 interaction Effects 0.000 title claims abstract description 171
- 238000012795 verification Methods 0.000 title claims abstract description 127
- 238000000034 method Methods 0.000 title claims abstract description 83
- 238000005070 sampling Methods 0.000 claims abstract description 106
- 238000005192 partition Methods 0.000 claims description 60
- 230000015654 memory Effects 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 9
- 230000009471 action Effects 0.000 claims description 6
- 238000000638 solvent extraction Methods 0.000 claims description 5
- 235000001537 Ribes X gardonianum Nutrition 0.000 claims 1
- 235000001535 Ribes X utile Nutrition 0.000 claims 1
- 235000016919 Ribes petraeum Nutrition 0.000 claims 1
- 244000281247 Ribes rubrum Species 0.000 claims 1
- 235000002355 Ribes spicatum Nutrition 0.000 claims 1
- 229920003266 Leaf® Polymers 0.000 description 29
- 238000004891 communication Methods 0.000 description 25
- 230000006870 function Effects 0.000 description 19
- 230000002452 interceptive effect Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 11
- 230000006698 induction Effects 0.000 description 9
- 238000005065 mining Methods 0.000 description 9
- 238000013479 data entry Methods 0.000 description 8
- 238000013459 approach Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 241001167556 Catena Species 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical compound C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 1
- FMFKNGWZEQOWNK-UHFFFAOYSA-N 1-butoxypropan-2-yl 2-(2,4,5-trichlorophenoxy)propanoate Chemical compound CCCCOCC(C)OC(=O)C(C)OC1=CC(Cl)=C(Cl)C=C1Cl FMFKNGWZEQOWNK-UHFFFAOYSA-N 0.000 description 1
- 102100035586 Protein SSXT Human genes 0.000 description 1
- 241000700566 Swinepox virus (STRAIN KASZA) Species 0.000 description 1
- 241000143950 Vanessa Species 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000037361 pathway Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
Classifications
-
- 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/3236—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 using cryptographic hash functions
- H04L9/3239—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 using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H05—ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
- H05B—ELECTRIC HEATING; ELECTRIC LIGHT SOURCES NOT OTHERWISE PROVIDED FOR; CIRCUIT ARRANGEMENTS FOR ELECTRIC LIGHT SOURCES, IN GENERAL
- H05B3/00—Ohmic-resistance heating
- H05B3/40—Heating elements having the shape of rods or tubes
- H05B3/54—Heating elements having the shape of rods or tubes flexible
- H05B3/56—Heating cables
- H05B3/565—Heating cables flat cables
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01B—CABLES; CONDUCTORS; INSULATORS; SELECTION OF MATERIALS FOR THEIR CONDUCTIVE, INSULATING OR DIELECTRIC PROPERTIES
- H01B1/00—Conductors or conductive bodies characterised by the conductive materials; Selection of materials as conductors
- H01B1/02—Conductors or conductive bodies characterised by the conductive materials; Selection of materials as conductors mainly consisting of metals or alloys
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01B—CABLES; CONDUCTORS; INSULATORS; SELECTION OF MATERIALS FOR THEIR CONDUCTIVE, INSULATING OR DIELECTRIC PROPERTIES
- H01B7/00—Insulated conductors or cables characterised by their form
- H01B7/02—Disposition of insulation
- H01B7/0208—Cables with several layers of insulating material
- H01B7/0225—Three or more layers
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01B—CABLES; CONDUCTORS; INSULATORS; SELECTION OF MATERIALS FOR THEIR CONDUCTIVE, INSULATING OR DIELECTRIC PROPERTIES
- H01B7/00—Insulated conductors or cables characterised by their form
- H01B7/17—Protection against damage caused by external factors, e.g. sheaths or armouring
- H01B7/28—Protection against damage caused by moisture, corrosion, chemical attack or weather
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01B—CABLES; CONDUCTORS; INSULATORS; SELECTION OF MATERIALS FOR THEIR CONDUCTIVE, INSULATING OR DIELECTRIC PROPERTIES
- H01B7/00—Insulated conductors or cables characterised by their form
- H01B7/17—Protection against damage caused by external factors, e.g. sheaths or armouring
- H01B7/29—Protection against damage caused by extremes of temperature or by flame
- H01B7/295—Protection against damage caused by extremes of temperature or by flame using material resistant to flame
-
- 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/3263—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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
- H04L9/3265—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 certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate chains, trees or paths; Hierarchical trust model
-
- H—ELECTRICITY
- H05—ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
- H05B—ELECTRIC HEATING; ELECTRIC LIGHT SOURCES NOT OTHERWISE PROVIDED FOR; CIRCUIT ARRANGEMENTS FOR ELECTRIC LIGHT SOURCES, IN GENERAL
- H05B1/00—Details of electric heating devices
- H05B1/02—Automatic switching arrangements specially adapted to apparatus ; Control of heating devices
- H05B1/0227—Applications
- H05B1/0288—Applications for non specified applications
- H05B1/0291—Tubular elements
-
- H—ELECTRICITY
- H05—ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
- H05B—ELECTRIC HEATING; ELECTRIC LIGHT SOURCES NOT OTHERWISE PROVIDED FOR; CIRCUIT ARRANGEMENTS FOR ELECTRIC LIGHT SOURCES, IN GENERAL
- H05B3/00—Ohmic-resistance heating
- H05B3/02—Details
- H05B3/04—Waterproof or air-tight seals for heaters
-
- H—ELECTRICITY
- H05—ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
- H05B—ELECTRIC HEATING; ELECTRIC LIGHT SOURCES NOT OTHERWISE PROVIDED FOR; CIRCUIT ARRANGEMENTS FOR ELECTRIC LIGHT SOURCES, IN GENERAL
- H05B3/00—Ohmic-resistance heating
- H05B3/10—Heating elements characterised by the composition or nature of the materials or by the arrangement of the conductor
- H05B3/12—Heating elements characterised by the composition or nature of the materials or by the arrangement of the conductor characterised by the composition or nature of the conductive material
- H05B3/14—Heating elements characterised by the composition or nature of the materials or by the arrangement of the conductor characterised by the composition or nature of the conductive material the material being non-metallic
- H05B3/146—Conductive polymers, e.g. polyethylene, thermoplastics
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01B—CABLES; CONDUCTORS; INSULATORS; SELECTION OF MATERIALS FOR THEIR CONDUCTIVE, INSULATING OR DIELECTRIC PROPERTIES
- H01B3/00—Insulators or insulating bodies characterised by the insulating materials; Selection of materials for their insulating or dielectric properties
- H01B3/18—Insulators or insulating bodies characterised by the insulating materials; Selection of materials for their insulating or dielectric properties mainly consisting of organic substances
- H01B3/30—Insulators or insulating bodies characterised by the insulating materials; Selection of materials for their insulating or dielectric properties mainly consisting of organic substances plastics; resins; waxes
- H01B3/44—Insulators or insulating bodies characterised by the insulating materials; Selection of materials for their insulating or dielectric properties mainly consisting of organic substances plastics; resins; waxes vinyl resins; acrylic resins
- H01B3/441—Insulators or insulating bodies characterised by the insulating materials; Selection of materials for their insulating or dielectric properties mainly consisting of organic substances plastics; resins; waxes vinyl resins; acrylic resins from alkenes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
-
- 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
-
- H—ELECTRICITY
- H05—ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
- H05B—ELECTRIC HEATING; ELECTRIC LIGHT SOURCES NOT OTHERWISE PROVIDED FOR; CIRCUIT ARRANGEMENTS FOR ELECTRIC LIGHT SOURCES, IN GENERAL
- H05B2203/00—Aspects relating to Ohmic resistive heating covered by group H05B3/00
- H05B2203/011—Heaters using laterally extending conductive material as connecting means
-
- H—ELECTRICITY
- H05—ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
- H05B—ELECTRIC HEATING; ELECTRIC LIGHT SOURCES NOT OTHERWISE PROVIDED FOR; CIRCUIT ARRANGEMENTS FOR ELECTRIC LIGHT SOURCES, IN GENERAL
- H05B2203/00—Aspects relating to Ohmic resistive heating covered by group H05B3/00
- H05B2203/02—Heaters using heating elements having a positive temperature coefficient
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02A—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02A30/00—Adapting or protecting infrastructure or their operation
- Y02A30/14—Extreme weather resilient electric power supply systems, e.g. strengthening power lines or underground power cables
Definitions
- verification networks rely on a mechanism to verify if particular interactions are included in a blockchain.
- a node in the verification network can check if an interaction is recorded in the blockchain and that the block belongs to the longest chain (i.e., correct chain), in case of a fork in the
- an SPV client can download all block headers, which have a much smaller size than the blocks (e.g., 80 bytes per block header vs 1 MB per block in Bitcoin), but still contain enough information to correctly .
- ' verify that a transaction is included in some block and verify that the block is included at a certain position in the blockchain.
- Each block header contains the root of a IVIerkie tree, see [Ralph C. Merkle. A digital signature based on a conventional encryption function.
- SPV clients are the most popular clients in the Bitcoin ecosystem and enable various applications to a broad class of users. This is mainly due to the fact that not many people can afford the technical and physical resources needed to run a full node.
- Bi ' tcoin * s blockchain was recently used to build notary services by allowing users to verify the validity and integrity of documents with SPV clients, see [Open tifnestamps. h.ttps: opentimesiamps.org ) 2018] and [Stampery.
- Embodiments of the invention are directed to methods and systems of efficiently determining that a full node maintains a valid longest blockchain as well as verifying an that interaction is valid and stored in the blockchain.
- One embodiment of the invention is directed to a method. The method comprises a client device receiving a verification request comprising an interaction identifier; querying, by the client device, a full node for a random sampling of block headers from the full node; receiving, by the client device, the random sampling of block headers from the full node; verifying, by the client device, the random sampling of block headers; and determining that the blockchain maintained by the full node is valid after verifying the random sampling of block headers.
- Another embodiment of the invention is directed to the client device comprising: a processor; a memory; and a computer readable medium coupled to the processor, the computer readable medium comprising code, executable by the processor, for implementing a method comprising: receiving a verification request comprising an interaction identifier; querying a full node for a random sampling of block headers from the full node; receiving the random sampling of block headers from the full node; verifying the random sampling of block headers; and determining that the blockchain maintained by the full node is valid after verifying the random sampling of block headers.
- Another embodiment is directed to a method.
- the method comprising: receiving, by a full node, a query for a random sampling of block headers including a random number from a client device; selecting, by the full node, the random sampling of block headers from a biookchain; determining, by the fut! node, a plurality ofMerkie mountain range proofs associated with the random sampling of block headers; and transmitting, by the full node, the random sampling of block headers and the plurality of Merkie mountain range proofs to the client device.
- Another embodiment of the invention is directed to the client device comprising: a processor; a memory; and a computer readable medium coupled to the processor, the computer readable medium comprising code, executable b the processor, for implementing a method comprising: receiving a query for a random sampling of block headers including a random number from a client device; selecting the random sampling of block headers from a blockchain; determining a plurality of Merkle mountain range proofs associated with the random sampling of block headers; and transmitting the random sampling of block headers and the plurality of Merkle mountain range proofs to the client device.
- Another embodiment is directed to a method.
- the method comprising: receiving, b a full node, a query for a random sampling of block headers including a random number from a client device; selecting, by the full node, the random sampling of biock headers from a blockchain; determining, by the full node, a plurality of verification proofs associated with the random sampling of block headers; and transmitting, by the full node, the random sampling of block headers and the plurality of verification proofs to the client device, wherein the client device verifies the random sampling of block headers and the plurality of verification proofs.
- Another embodiment of the invention is directed to the full node
- a processor comprising: a processor; a memory; and a computer readable medium coupled to the processor, the computer readable medium comprising code, executable by the processor, for implementing a method comprising: receiving a query for a random sampling of block headers including a random number from a client device; selecting the random sampling of block headers from a blockchain; determining a plurality of verification proofs associated with the random sampling of block headers; and transmitting the random sampling of block headers and the plurality of verification proofs to the client device, wherein the client device verifies the random sampling of block headers and the plurality of verification ' proofs.
- FIG. 1 shows a system according to embodiments of the invention.
- FIG. 2 shows components of a client device according to an embodiment of the invention.
- FIG. 3 shows an example blockchain format.
- FIG. 4 shows an example of updating a Merkle mountain range when new data entries are appended as new leaves of the Merkle mountain range according to embodiments of the invention.
- FIG. 5 shows a blockchain structure according to embodiments of the invention.
- FIG. 6 shows a flowchart of a longest chain verification method according to embodiments of the invention.
- FIG. 7 shows a flowchart of a longest chain verification method performed by a fulf node according to embodiments of the invention.
- FIG. 8 shows a flowchart of an interaction verification method according to embodiments of the invention.
- FIG. 9 shows a flow diagram of verifying a longest chain and an
- FIG. 10 shows a Merkle tree according to embodiments of the invention. DETAILED DESCRIPTION
- a "user” may include an individual. In some embodiments, a user may be associated with one or more personal accounts and/or mobile devices. The user may also be referred to as a cardholder, account holder, or consumer in some embodiments.
- a "client device” may be a computing device capable of transmitting and/or receiving data. Examples of client devices may include a mobile phone, a smart phone, a personal digital assistant (PDA), a laptop computer, a desktop computer, a server computer, a vehicle such as an automobile, a light client device, a tablet PC, etc. 5 Additionally, user devices may be any type of wearable technology device, such as a watch, earpiece, glasses, etc.
- the user device may include one or more processors capable of processing user input.
- the user device may also include one or more input sensors for receiving user input.
- the user device may comprise any electronic device that may be operated by a user, which may also provide remote communication l o capabilities to a network. Examples of remote communication capabilities include using a mobile phone (wireless) network, wireless data network (e.g., 3G, 4G or similar networks), Wi-Fi, i-Max, or any other communication medium that may provide access to a network such as the Internet or a private network.
- a "light client” may be an application or software capable of
- the light client may, for example, be present on a client device, in some embodiments, a light client may communicate with a verification network and verify a longest bfockchain and an interaction.
- a “verification network” may be any set of nodes (computer systems and components) configured to provide verification for an interaction. The verification
- the 20 network may comprise a distributed computing environment utilizing several nodes that are interconnected via communication links, using one or more computer networks or direct connections.
- the verification network may be implemented over any appropriate network, including an intranet, the Internet,, a cellular network, a local area network or any other such network or combination thereof. Components used for such a system 5 can depend at least in part upon the type of network and/or environment selected.
- Protocols and components for communicating via such a network are well known and will not be discussed herein in detail. Communication over the verification network can be enabled by wired or wireless connections and combinations thereof. Nodes may be independently operated by third parties and may be added to, or removed from, the verification network on a continuous basis, in some embodiments, a node in a verification network may be a full node.
- a “node” may be a point at which lines or pathways intersect or branch or can be a central or connecting point.
- a node can be a "graph node,” which can be a data vaiue in a Merkle tree or a Merkle mountain range.
- a graph node can include data such as a hash value, which can be equivalent to child graph nodes of the graph node hashed together.
- a graph node at the bottom of a Merkle tree or a Merkie mountain range can be referred to as a leaf node.
- a graph node at the top of a Merkle tree or a Merkle mountain range can be referred to as a root node.
- a node can also be a "computer node,” which can be any computer or device that connects to the verification network.
- a node that can fully verify each block and interaction in the blockchain can be a full node.
- a “full node” can store the full blockchain (i.e., each block and each interaction).
- a “client device” may be a computer node In the verification network. The use of a node as being a graph node or a computer node will be apparent according to the context in which it is used.
- a "verification request" can be a request message requesting verification.
- a verification request can comprise an interaction identifier.
- a verification request can request verification of an interaction identifier, in some embodiments, the verification request can also comprise a Merkle proof as weiS as a Merkle mountain range proof. The Merkle proof and the Merkle mountain range proof can be associated with the interaction identifier included in the verification request.
- a "verification proof” can be a data item that can be used to verify the truth of a statement.
- a verification proof can be included in a verification request regarding an interaction.
- a verification proof can be a Merkle proof or a Merkle mountain range proof.
- a "Merkle tree" can be a data structure that can encode interaction data.
- a Merkle tree can be a balanced binary tree where the leaf nodes of the tree hold some value, and each non-leaf node can store a hash of a concatenation of the values of both children nodes. When a new leaf is added to a Merkle tree, the entire tree can be recomputed. For example, each node, in the Merkle tree can be determined to be the hash of both children nodes.
- a "Merkie proof can be a proof that an interaction is included in a Merkle tree.
- a Merkle proof can include a path from a Merkle root of a Merkle tree to a node associated with an interaction identifier as well as sibling nodes of each node in the path. The path can include each node connecting the Merkle root node to the node associated with the interaction identifier.
- a "Merkle mountain range” can be a data structure that can encode block headers. For example, a Merkie mountain range can be a type of Merkle tree.
- a Merkle mountain range can be a binar hash tree with n leaves, a root r, and the following properties: 1 ⁇ M can be a hash tree; 2 ⁇ M can have a depth jlog 2 «.]; and 3 ⁇ if n > 1, the number of leaves n ⁇ 2 i + j for a maximum integer i such that 2 l ⁇ n, wherein rJeft can be a Merkie mountain range with 2 l leaves and wherein r. right can be a Merkle mountain range with j leaves.
- a Merkie mountain range can allow for new leafs to be appended to the Merkie mountain range without recomputing the entire Merkle mountain range. A small number of nodes are recomputed when appending a new leaf to a Merkle mountain range.
- a "Merkle mountain range proof” can be a proof that a block header is included in a Merkle mountain range.
- a Merkie mountain range proof can include ' .a path from a Merkle mountain range root to a node associated with a block header. The path can include each node connecting the root node to the node associated with the block header. The Merkle mountain range proof can also include the sibling nodes of each node in the path.
- a "sibling node” can denote a relationship between nodes.
- a node's sibling node can be a node that is in a same hierarchical level under the same parent node in either a Merkle tree or a Merkie mountain range.
- a node that is a parent node can have two child nodes that are on a Sower hierarchical level than the parent node. The two child nodes can toe sibling nodes.
- a "Merkel roof and a "Merkle mountain range root” can be a node at the highest hierarchical leva! in a Merkle tree or a Merkle mountain range, respectively.
- a Merkle root and a Merkie mountain range root do not have any sibling nodes or parent nodes.
- a Merkie root and a Merkie mountain range root can connect to child nodes.
- a "blockchain” can be a distributed database that maintains a
- a blockchain may include a number of blocks of interaction records. Each block in the blockchain can contain also include a timestamp and a link to a previous block. Stated differently, interaction records in a blockchain may be stored as a series of "blocks," or permanent files that include a record of a number of interactions occurring over a given period of time. Blocks may be appended to a blockchain by an appropriate node after it completes the block and the block is validated. Each block can be associated with a block header. In embodiments of the invention, a blockchain may be distributed, and a copy of the blockchain may be maintained at each full node in a verification network. Any node within the verification network may subsequently use the blockchain to verify interactions.
- a "block header” can be a header including information regarding a block.
- a block header can be used to identify a particular block an a blockchain.
- a block header can comprise any suitable information, such as a previous hash, a Merkle root, a timestamp, a nonce, and a Merkie mountain range root.
- a block header can also include a difficulty value.
- An "interaction” may refer to a reciprocal action or influence. An interaction can include a communication, contact, or exchange between parties, devices, and/or entities. Example interactions include a transaction between two parties and a data exchange between two devices. Interactions can also be agreements, contracts, and the like.
- a "server computer” may include a powerful computer or cluster of computers. For example, the server cam uier can be a large mainframe, a
- the server computer may be a database server coupled to a Web server.
- the server computer may comprise one or more computational apparatuses and may use any of a variety of computing structures, arrangements, and compilations for servicing the requests from one or more client computers.
- a "resource provider” may be an entity that can provide a resource such as goods, services, information, and/or access. Examples of resource providers includes merchants, access devices, secure data access points, data providers, transit agencies, governmental entities, venue and dwelling operators, etc. A resource provider may operate a client device.
- a merchant may typically be an entity that engages in transactions and can sell goods or services, or provide access to goods or services.
- a “merchant” may typically be an entity that engages in transactions and can sell goods or services, or provide access to goods or services.
- a "processor” may refer to any suitable data computation device or devices.
- a processor may comprise one o mor microprocessors working togethe to accomplish a desired function.
- the processor may include a CPU comprising, at least one high-speed data processor adequate to execute program components for executing user and/or system-generated requests.
- the CPU may be a microprocessor such as AMD's Athlon, Duron and/or Opieran; IBM and/or Motorola's PowerPC: IBM's and Sony's Cell processor; Intel's Celeron, Itanium, Pentium, Xeon, and/or XScale; and/or the like processors).
- a "memory” may be any suitable device or devices that can store electronic data.
- a suitable memory may comprise a non-transitory computer readable medium that stores instructions that can be executed by a processor to implement a desired method. Examples of memories may comprise one or more memory chips, disk
- Such memories may operate using any suitable electrical, optical, and/or magnetic mode of operation.
- Embodiments of the invention allow for an interaction verification protocol for light clients in blockchain protocols that grow based on the longest chain principle.
- a verifier operating a client device can download and store a logarithmic (rather than a linear) number of block headers to verify any interaction stored on a blockchain.
- Embodiments of the invention can utilize a non- interactive probabilistic protocol to sample a small (e.g., logarithmic) set of random block headers from a full node to limit the likelihood of an adversarial full node cheating in the longest-chain verification process, given the adversary's limited computational power in creating valid blocks.
- a data structure called a Merkle mountain range can allow client devices to verify any interaction in a blockchain with a minimal amount of information.
- the Merkle mountain range can include a Merkle mountain range root that can be stored in the block headers. Further, embodiments of the invention can be implemented in current Bitcoin and/or Ethereum networks via a soft fork.
- the ledger includes a list of blocks of transaction data, the blocks are cryptograph icalSy ctiained together as depicted in FIG. 3.
- a block is created by a computationally intensive process called proof-of-work in which valid blocks need to demonstrate a sufficient "difficulty" (i.e., sufficient computation power to create on average). If there are more than one available chains of blocks, then network participants, i.e., nodes, need to download all blocks in all chains and follow the chain which has the highest total difficulty.
- FIG. 3 shows an example blockchain format.
- the blockchain format shown i FIG. 3 can be used in Bitcoin.
- a biockchain 300 can comprise a plurality of blocks, for example, block 302A and block 302B. Each block can comprise a biock header, e.g., block 302A comprises block header 304.
- the block header 304 can include multiple data elements, such as a previous header hash 308 and a Merkle foot 308.
- the previous header hash 306 can be a hash of the previous block's header.
- the Merkle root 308 can be a root of a Merkle tree which is a tree in whic every leaf node is labelled with the hash of a data block, for example a transaction 310-314. Each leaf of the Merkle tree can represent one of the transactions 310-314.
- PoPoW proof-of-work
- a superblock is a rare block that has a PoW output value (i.e., the block ID) containing more leading zeros than the other valid blocks, and hence, can be used to show that enough work has been done when the chain containing that block was created. It can be shown that, by verifying the validity of a Iogarithmic number of superblocks, a client device can ensure the validity of the entire chain it receives from a full node with high probability.
- PoPoW changes the blockchalrt structure in such a way that each block, instead of having one reference to the immediate previous block, stores multiple references to previous blocks including the superblocks.
- PoPoW requires significant modifications to the bloekchaln structure which can limit its adoption in existing bioekchaths. Moreover, the practicality of the PoPoW approach is yet to be shown , as the constant factors in the protocol's overhead seems to be large.
- Each transaction inclusion proof in PoPoW is increased by miog(n)log(io (n) ⁇ In size to prove that the block that contains the transaction belongs to the correct chain, where is a security parameter and where n is the number of blocks In the biockchain.
- PoPoW increases the size of each proof by a logn factor.
- PoPoW is interactive, meaning that the client device has to communicate over multiple sequential rounds with the client device to obtain a validity proof. This incurs a high latency and communication cost for both the client device and the full node.
- Kiayias et. al. see [Kiayias et al, Non-interactive proofs of proof-of-work. 2017], present an attack agains PoPoW, where an adversar can double-spend bifcoins even if it controls a minority of the hashing power. They also propose a non-interactive proofs of proof-of-work (NiPoPoW) protocol that allows succinct (i.e., logarithmic-size) proofs but with the same proof complexity as in PoPoW.
- NiPoPoW non-interactive proofs of proof-of-work
- an SPV protocol can be executed between a prover, a client device (i.e., a verifier), and a group of full nodes.
- the full nodes can claim to hold a valid copy of the biockchain.
- An adversarial full node may store a non-valid copy of the
- Embodiments of the invention allow the client device to verify the validity of the interaction with the help of the full nodes. Less than half of the full nodes may be controlled by the adversary, and thus collude with a malicious prover. An interaction is said to be valid if it is included in a correctly-mined block of interactions that belongs to the longest chain.
- Embodiments of the invention can provide for the following security, client efficiency, and non-interactiveness properties.
- the security property means that the client device can accept an interaction if the interaction is valid (i.e., is an interaction included in a correctly-mined block that belongs to the longest chain with high probability).
- the client efficiency property means that the client can download and verify a small (e.g., sublinear) number of block headers from a full node, rather than download all block headers in the blockchain.
- the non-interactiveness property means that no subsequent interactions between the prover, the client, and the full nodes are needed.
- the client device can participate in the process with the prover as well as the full nodes to obtain a proof, denoted by tx , that provides the following guarantees; 1 ⁇ proof of inclusion: the interaction is included in some correctly-mined b!ock B on a chain C; and 2) proof of chain: C is the longest (e.g., most difficult) chain agreed upon by a majority of the nodes in the verification network.
- the proof 3 ⁇ 4 can provide the following properties: 1 ) completeness: at the end of the process, the client device can determine that the interaction is valid and 2) soundness: the adversary cannot convince the client device that the interaction is valid.
- Embodiments of the invention allow for a non-interactive SPV protocol for a client device
- a client device can download and store a iogarithmic number of blocks using a probabiiistic verification method as well as using a structure called Merkle mountain range (MMR), see [Peter Todd. Merkle mountain range, https://github.com/opentimestamps/openiimestamps- server/biob/master/doc/merkle-mountain-range.md ].
- An MMR aliows small inclusion proofs, whiie including an additive Iogarithmic factor in addition to the current inclusion proof in Bftooin and Ethereum.
- Embodiments of the invention use an extra hash (i.e., the MM root) in the block headers which can be added to existing blockchains (e.g., Bitcoin) via a soft-fork.
- Theorem 1 there exists a protocol that can provide the completeness and soundness properties, described above, with high probability as well as the following performance guarantees: 1) let n denote the numbe of blocks in the longest chain, and s denote the number of interactions in the block S, n rec ⁇ has size OQogs) and n has size 0(logn). 2) The client device can verify n tx efficiently with an 0(logs + logri) computation overhead.
- the prover can provide the client device with a proof of inclusion which consists of two cryptographic proofs.
- the proof of inclusion can include a proof of longest chain and a proof of interaction.
- the proof of longest chain can be that the block B x is located at height x of the correct (i.e., longest) chain.
- the proof of interaction can be that the interaction tx is recorded properl in the block B x .
- the client device can verify that the interaction is included in a block as well as verify that the block is in the longest chain.
- the prover can maintain a Merkle mountain range over all blocks added to the blockchain so far.
- MMR allows for efficient appends at the prover side and efficient block inclusion verifications at the verifier side.
- the full node appends the hash of B i _ l to the most recent MMR and records the new MMR root, denoted by £êt j , in the header of B t (see FIG. 5).
- £êt j the new MMR root stored at every block height can be seen as a commitment by the full node to the blockchain at that specific height.
- An MMR tree can allow the client device to efficiently verify any blockchain event (i.e., an interaction) with the latest block header.
- MMR allows all previous blocks to be efficiently committed to the latest block header in a single hash.
- the original Merkle tree structure can be used to achieve the same goal, however, updating the Merkle trees with new block headers as the leaves Is not efficient.
- the entire Merkle tree either needs to be restructured, which Is inefficient, or the system can use an "ynbalanced" tree which may yield a proof size of much larger than logn. hashes.
- MMR is a variant of the original Merkle tree that allows a much more efficient update process, thus the overhead for full nodes when processing blocks becomes negligible. Further, introducing MMR into current blockchain protocols only needs a mild modification.
- embodiments of the invention allow client devices to determine, with high probability, which chain is valid and longer by downloading a small (i.e., logn) number of block headers from each chain.
- this can be done using a novel probabilistic verification protocol in which O(logn) block headers are downloaded by the client device from each chain and verified.
- the concept of length is used to mean the number of blocks, for ease of explanation.
- the problem can be formulated to include the concept of total difficulty, to match with the actual
- the first phase can be prove, while the second phase is verify.
- the prove phase can be an interactive protocol performed between the prover and the verifier over O logn) rounds to submit the proof of inciusion to the verifier for a given interaction tx.
- the prove phase can be a non-interactive protocoi to minimize latency, which is described in further detai! herein.
- the verify phase can be executed locally by the verifier and does not require any interaction between the prover and the verifier.
- the two parties i.e., the full node and the verifier
- the verifier can send a random number * ⁇ to the fuii node to request k random blocks from a certain part of the fuii node's header chain.
- the k random blocks can be determined based on the random number ⁇ .
- the full node can select the four block headers of blocks 1, 2, 8, and 10.
- the random number ⁇ can be equal to a vaiue of 3469.
- the fuii node can select the blocks 3, 4, 6, and 9 based on the random number ⁇ .
- the random number ⁇ can be in any suitable format. In other words,
- the full node can use the random value as an input to a function.
- the full node can then select a number of random block headers based on the output of the function.
- the client device can abort the process and blacklist the full node.
- the client device can verify that it received the correct block headers based on the random number ⁇ , for example, block headers 3, 4, 6, and 9 when the random number ⁇ is 3469. Otherwise, the client device can proceed to the next round of requests.
- the full node can split its chain to 2 _1 equal-sized partitions. The full node can sample k headers from the last partition, i.e., from the header at height n— - - to the header at height n.
- the benefit of sampling random block headers from increasingly small partitions of the blockchaln allow the client device to determine that the full node is not controlled by an adversary. As the partitions decrease in size, the full node selects random block headers that are more recent. In this way, the client device, upon receiving the random block headers, can verify more recent biock headers than old block headers, thus preventing adversaries from creating small falsified sidechains (e.g., at a forking point in the blockchain).
- the client device can receive an MMR proof from the full node and can then verif the proof using the latest MMR root, M Hlinger :i , recorded in the header of the iast block, 3 ⁇ 4, To obtain the last proof (i.e., that the biock has been included in the longest chain), the client device can verify an MM proof which can be obtained from the last block header of the longest chain (which is already proved). To obtain a proof that the interaction was included in some block, the client device can verify the Merkle proof provided by the full node against the root of the interaction Merkle tree included the block header. This is described in further detail below.
- the non-interactiveness makes the process more practical since (1 ) the full nodes can send the same proof to many client devices without any recaiculation; and (2) the client device can forward the proof to other new client devices, which can safely verify the correctness of the proof. This reduces both the computation and bandwidth overheads for client devices and full nodes.
- the valid chain is the chain that requires more work to find, e.g., the highest total block difficulty.
- the longest chain rule is a simplified way of determining which chain is valid. In what follows, for ease of explanation, it can be assumed that each block has the same difficulty. However, it is understood that, in some
- each block can have a different difficulty.
- FIG. 1 shows a system 100 comprising a number of components.
- the system 100 comprises a client device 102, a full node 104, and a prover 106.
- the client device 102 cars be jn operative communication with the full node 104 and the prover 106. in some embodiments, the client device 102 can be in operative communication with any suitable number of full nodes, for example, 1 , 2, 10, or 100 full nodes.
- FIG. 1 For simplicity of illustration, a certain number of components are shown in FIG. 1. It is understood, however, that embodiments of the invention may include more than one of each component.
- FIG. 1 may be in operative communication with each other through any suitable communication channel or communications network.
- Suitable communications networks may be any one and/or the combination of the following: a direct interconnection; the Internet; a Local Area Network (LAN); a
- OMNI a secured custom connection
- WAN Wide Area Network
- WAP Wireless Application Protocol
- WAP Wireless Application Protocol
- l-mode Wireless Application Protocol
- Messages between the computers, networks, and devices may be transmitted using a secure communications protocols such as, but not limited to, File Transfer Protocol (FTP); HyperText Transfer Protocol (HTTP); Secure Hypertext Transfer Protocol (HTTPS), Secure Socket Layer (SSL), ISO (e.g., ISO 8583) and/or the like.
- FTP File Transfer Protocol
- HTTP HyperText Transfer Protocol
- HTTPS Secure Hypertext Transfer Protocol
- SSL Secure Socket Layer
- ISO ISO
- the client device 102 can be a device capable of communicating with a verification network, in some embodiments, the client device 102 may be operated by a resource provider, and the client device 102 may be a verifier. The client device 102 may also be capable of receiving a verification request comprising an interaction identifier from a prover 106. The client device 102 can also determine a full node 104 that holds the longest biockchain, and can verify that the interaction identifier is in a valid block in the longest biockchain using information, such as an MMR root in the latest block header, from the full node. The client device 102 can also verify that an interaction associated with the interaction identifier is valid, and can transmit a verification response to the prover 108 regarding the validity of the interaction.
- the client device 102 can then perform additional processing based on the interaction. Additional processing can include performing an action or operation as indicated in the interaction and/or transferring assets, physical and digital, between the verifier and the prover as outlined in the interaction.
- the interaction can be a transaction between a resource provider and a customer.
- the interaction can indicate that the customer transferred assets, physical or digital, to the resource prover.
- the resource prover can provide a resource, as described in the interaction, to the customer.
- Any computer or device that connects to the verification network can be referred to as a node.
- a node that can fully verify each block and interaction in the biockchain can be a full node.
- the full node 104 can store the full biockchain (i.e., each block and each interaction ⁇ in a memory, and can be capable of proving that it holds the longest biockchain.
- the fu!S node 104 can also receive queries for a current height of the biockchain and subsequently determine and return the current height of the biockchain.
- the full node 104 can be capable of partitioning the biockchain into a number of partitions and can select random block headers from a particular partition.
- the prover 106 can be a client device operated by a user. It could be, but need not be, a full node in some embodiments.
- the prover 106 may transmit a verification request regarding a previously performed interaction that was stored on the biockchain to the client device 102.
- the prover 106 can be a user or customer that wants to provide an interaction identifier associated with a valid interaction to a resource provider operating a client device 102 in order to prove that the interaction occurred and is valid.
- FIG. 2 shows a block diagram of a client device 200 according to some embodiments of the invention.
- the exemplary client device 200 may comprise a processor 202.
- the processor 202 may be coupled to a non-transitory computer readable medium 204 comprising an interaction verification module 204A, a one or more output elements 206, one or more input elements 208, a network interface 210, and a secu re memory 212.
- the computer readable medium 204 may comprise code, executable by the processor 202, to implement a method comprising: receiving a verification request comprising an interaction identifier; querying a full node for a random sampling of block headers from the full node; receiving the random sampling of block headers from the full node; verifying the random sampling of block headers; and determining that the biockchain maintained by the full node is valid after verifying the random sampling of block headers.
- the interaction verification module 204A may comprise software code for verifying an interaction, it may comprise software code executable by the processor 202, to implement a method comprising: verifying a Merkle proof received from a prover; verifying a IVIerkle mountain range proof received from a prover; determining if an interaction identifier corresponds to a valid interaction based on verification of the Merkle proof and the Merkle mountain range proof; and transmitting a verification response indicating whether or not the interaction identifier corresponds to the valid interaction.
- the one or more output elements 206 may comprise any suitable device(s) that may output data. Examples of output elements 206 may include display screens, speakers, and data transmission devices.
- the one or more input elements 208 may include any suitable device(s) capable of inputting data into the client device 200.
- suitable device(s) include buttons, touchscreens, touch pads, microphones, etc.
- the network interface 210 may include an interface that can allow the client device 200 to communicate with external computers.
- the network interface 210 may enable the client device 200 to communicate data to and from another device (e.g., resource provider computer, authorization computer, etc.).
- Some examples of the network interface 210 may include a modem, a physical network Interface (such as an Ethernet card or other Network Interface Card (NIC)), a virtual network interface, a communications port, a Personal Computer Memory Card International Association ⁇ PCMCIA) slot and card, or the like.
- the wireless protocols enabled by the network interface 210 may include Wi-FiTM.
- Data transferred via the network interface 210 may be in the form of signals which may be electrical, electromagnetic, optical, or any other signal capable of being received by the externa! communications interface (collectively referred to as "electronic signals” or “electronic messages”). These electronic messages that may comprise data or instructions may be provided between the network interface 210 and other devices via a communications path or channel.
- any suitable communication path or channel may be used such as, for instance, a wire or cable, fiber optics, a telephone line, a cellular link, a radio frequency (RF) fink, a WA or LAN network, the Internet, or any other suitable medium.
- Tr3 ⁇ 4e secure memor 212 may store encrypted access data, key identifiers, public keys, and any othe relevant data securely.
- the secure memory 212 may be in the form of a secure element, a hardware security module, or any other suitable form of secure data storage.
- the client device 200 can store information regarding a genesis block (i.e., the first block in a blockchain).
- An adversary may be present in the verification network according to embodiments of the invention.
- the adversary may be art adaptive (or rushing) adversary.
- the adversary can choose which full nodes in a verification network to corrupt and which blocks to falsify in the blockchain.
- the mining power of the adversary can be bounded by a known fraction, e.g., /(0 ⁇ f ⁇ 1/2).
- the client device is connected to at least one fuii node which has the correct view of the blockchain. This assumption is equivalent to assuming that the client device is not vulnerable to eclipse attacks. Defending against such attacks is orthogonal of this work and has been done by recent papers, see [Hetlman et al, Eclipse attacks on bitcoin's peer-topeer network. In 24th USENiX Security Symposium (USENiX Security 15), pages 129-144,
- a data structure called a Merkfe mountain range can be leveraged to allow a client device to verify any previous interaction using the latest block header. Merkfe trees and Merkfe mountain ranges will be discussed next.
- a Merkle tree can be built on all interactions in the bSockchain, i.e., every interaction is included in the global Merkle tree, The global Merkl tree can be updated after every new block is added to the blockchain.
- miners to maintain all interactions on the blockchain, which the miners often do not do for performance reasons.
- This block verification also requires full nodes to obtain all interactions and for the full nodes to reconstruct the Merkle tree from scratch to keep the tree balanced.
- a Merkle tree can be a balanced binary tree where the leaves of the tree hold some value, and each non-leaf node stores a hash of a concatenation of the values of both children.
- Merkle trees are used to store transaction hashes of a particular block as the leaves, so the root of the tree is a commitment of all interactions in that block. The root is then stored in the header of the block. An SPV proof of an interaction is then the Merkle proof that the hash of the interaction is a leaf in the Merkle tree. Merkie trees and the security of a Merkle proof is discussed as this will extend to a IVIerkie mountain range.
- An MR allows ail previous blocks to be efficiently committed to the latest block header sn a single hash.
- MMR is a variant of the original Merkle tree that allows a much more efficient update process, thus the overhead for full nodes when processing blocks becomes negligible. Further,
- a Merkle tree can be defined as a balanced binary tree where the leaves have some value, and each non-leaf node holds the value (teft where H is a collision-resistant hash function.
- a balanced binary tree means a tree with n leaves has a depth of 0(log 2 n).
- a Merkie proof that k i a node in the Merkie tree MT can be 3 ⁇ 4 eMT «
- the Merkie proof » ⁇ , ⁇ is a path from the root r to the node k and the siblings of each node in the path. Since the Merkie tree MT has a depth of Q(logn), the proof has size 0(logn).
- a prover verifier model is defined below, where a verifier knows the root of a Merkje tree and the prover wants to prove to the verifier that a particular node exists in the tree.
- the verifier has access to a root r of some Merkie tree MT.
- the prover has access to the Merkie tre MT and can send a Merkie proof path of some k e MT ⁇ fl ' kGMr i0 the verifier.
- the verifier can check that the root r is the first value in the proof (i.e.
- the verifier was given a proof for the Meifcie tree MT), and that the hash of the two nodes at each level i the path (i.e., the hash of a node in the path with the node's sibling node) equate the value of one of the nodes of the previous level. If the Merkie proof is verified to be valid, the verifier can accept the proof, otherwise the verifier can reject the proof.
- x' In order for the verifier to accept the Merkie proof fi k T , x' must equal p- II s- or s ( ' I p such that p f _ x ⁇ (x'). Since the sets ⁇ £, 5 ⁇ ⁇ and ⁇ -, s ⁇ differ by af least one value as stated above, x ⁇ x', therefore the adversary found a collision of H( ⁇ ).
- MMR is a variant of a Merkle tree that allows for efficient appending of new data entries. MMR allows for the tree to be reasonably balanced even when new data entries are appended dynamically without rebuilding the entire tree from scratch. Specifically, MMR appends a new data entry by modifying a few nodes of the existing tree and still bounds the Merkle proofs length for any data entry sitting on a leaf by logn, wherein n is the number of leaves in the tree.
- a Merkle mountain range M can be defined as a binary hash tree with n leaves, a root r, and the following properties: 1) M is a hash tree; 2) has depth flogs n); and 3 ⁇ if n > l, let n ⁇ 2 !' + j for the maximum integer i such that 2 i ⁇ n, wherein r. left is an MMR with 2 i leaves and wherein r, right is an MMR with / leaves.
- the Merkie mountain range M is a balanced binar hash tree, i.e., M is a Merkie tree. Therefore, for ail nodes k e M, 3 n k M7 ,
- Protocol 1 shows an example AppendLeaf(r f x) function that can append a new data entry (i.e., x) to an existing MMR (i.e., r).
- FIG. 4 shows an example of updating a MIVIR tree when new data entries are appended as ne leaves of the tree.
- FIG. 4 includes a first Merkie mountain range 402, a second Merkie mountain range 404, and a third Merkie mountain range 408,
- the white nodes can foe either new nodes or nodes that are changed due to a new data entry, such as a new block header being appended as described herein.
- the black nodes can be nodes that are not changed, SvlSvlR guarantees that for every update, log n nodes are either created or modified.
- the first Merkie mountain range 402 includes a first Merkie mountain range root rO, a first block header L0, and a second block header L1.
- the first block header 10 and the second biock header L1 can be hashed together to determine the first Merkie mountain range root rO,
- a third biock header L2, corresponding to a new. third block that is added to the biockchain, can be appended to the Merkie mountain range.
- the third biock header L2 is appended to the first Merkie mountain range 402 resulting in the second Merkie mountain range 404.
- the second Merkie mountain range 404 can tnciude the first block header 10, the second block header L1 , and the third block header L2.
- the first block header L0 and the second block header L1 are not altered when appending the third biock header L2. Due to this, the hash of the first block header L0 and the second block header L1 s the same in the first Merkle mountain range 402 and the second Merkle mountain range 404.
- the first block header L0 and the second block header L1 can be hashed together, resulting in an intermediate value (that can be equivalent to the first Merkle mountain range root rO).
- the intermediate value and the third block header 12 can be hashed together, resulting in the second Merkle mountain range root r1.
- a fourth block header L3, corresponding to a new, fourth biock that is added to the iockchain, can be appended to the Merkle mountain range.
- the fourth block header L3 can be appended to the second Merkle mountain range 404, resulting in the third Merkle mountain range 406.
- the third Merkle mountain range 406 can include the first block header L0, the second block header L1 , the third block header L2, and the fourth block header L3.
- the first block header L0, the second block header L , and the third block header L2 are not altered when appending the fourth biock header L3.
- the hash of the first block header 10 and the second block header 11 is the same in the first Merkle mountain range 402, the second Merkle mountain range 404, and the third Merkle mountain range 406.
- the first block header L0 and the second block header 11 can be hashed together, resulting in a first intermediate value (that can be equivalent to the first Merkle mountain range root rO).
- the third biock header L2 and the fourth block header L3 can be hashed together, resulting in a second intermediate value.
- the first intermediate value and the second intermediate value can be hashed together, resulting in the third Merkle mountain range root r2. Any suitable number of block headers can be appended to the Merkle mountain range in this manner. [0115] FIG.
- the townger Merkle mountain range 408 includes a Wegger Merkle mountain range 408.
- the iarger Merkie mountain range 408 can be created as new block headers are appended to the third Merkle mountai range 406.
- the iarger Merkle mountain range 408 ca be viewed as comprising three smaller Merkle mountain ranges 408A, 4088, and 4Q8C.
- the next block header that is appended to the iarger IVlerkie mountain range 408 can be appended to the smailer Merk!e mountain range 408C.
- the three nodes in 408C can be appended similar to how the first third block header L2 is appended to the first Merkle mountain rartge 402 resulting in the second Merkle mountain range 404.
- a set of M s can be defineel as M ⁇ ⁇ M-i, M 2 , * . ⁇ > M n ⁇ created from some list f3 ⁇ 4 f 3 ⁇ 4. ⁇ «.,x n ⁇ f
- A3 ⁇ 4 * S are unique, each Af ⁇ has a unique root (otherwise there would be a hash collision), and given the Merkle proof that some x k is in M n for k ⁇ ft, 3 ⁇ 4r fc6M a verifier can regenerate r k and that M k is an ancestor of M n (i.e. , M n was created from n ⁇ - k appends to M k ). [0117J This can be proved in the following theorem. Theorem 5.
- An induction proof includes a base case of a - 1 and an induction step.
- the base case (n ⁇ 1) Ai ⁇ - Node(xi ⁇ " t ft Xk n ⁇ i r il- ' n the induction step, assume the theorem holds for ail M m , m ⁇ n and k ⁇ m.
- MMR's additionally give the ability to prove that an MMR is the previous version of another MMR with a short proof. That is, given the k-i MMR and the nth MMR, a prover can give a proof of size (iog(n)) that convinces a verifier of this fact while the verifier's state is k, n and the root of the & ⁇ th and n-th s. This property is formalized below in Lemma 1 ,
- Lemma 1 (MMR inclusion proof). Given a list of n MMRs which are consecutively built based on a list of « numbers, one can prove that any fc-MMR (0 ⁇ fe ⁇ n) is a precedent of the n-M with a proof of size £> ⁇ logw) .
- a new biock header can contain a data field for an MMR root, or the root of the MMR free that commits the headers of all previous blocks.
- a fuli node upon receiving a. new block, can conduct one additional check on the validity of the MMR root. This entails a negligible overhead on the full node.
- FIG. 5 shows a blockchain structure according to embodiments of the invention.
- An MMR root M 3 ⁇ 4 502 can represent the Safest MMR root that is included in the latest biock header (not shown) at the chain head 508,
- a Merkle mountain range 504 can comprise a number of leaves. Each leaf of the Merkle mountain ra ge 504 can be a block header 508,
- the SVIerk!e mountain range 504 includes three block headers, however, it is understood that the Merkle mountain range 504 can include any suitable number of block headers 506, such as 5 biock headers, 10 block headers, 100 biock headers, 1 ,000 block headers, or 100,000 block headers.
- the block headers 506 include a plurality of biock headers associated with, a plurality of blocks.
- Each of the block headers 506 can comprise a MM root 510, a Merkle root 512, a previous hash 518, a nonce 520, and a timestamp 522.
- the chain head 508 can be the block header 506 that is associated with the latest biock.
- the block header at the chain head 508 can be the iatest block header (not shown).
- the nonce 520 can be used to calculate if the previous hash 513 contains a string of leading zeros such that it is iower than a difficulty value.
- the Merkle root 512, the nonce 520, the previous hash 518, and the timestamp 522 can be inputs to a hash function.
- the MMR roof 510 can also be an input to the hash function.
- the output of the hash function is valid if the output is less than or equal to a difficulty value. if the resulting previous hash 518 is Sower than the difficulty value, then the block is a valid block.
- the timestamp 522 can be a sequence of characters or encoded information identifying when a certain even occurred, such as when a block is created and added to the blockchain. [0123]
- the M R root 510 can be an MMR root of the MMR that commits the block headers of ail of the previous blocks.
- the MMR root at the chain head 508 (i.e., M n ) can be the MMR root of the MMR that commits the first block header, the second block header, and the third block header.
- the Merkle root 512 can be a root of a Merkle tree 514 which is a tree, as described herein, in which every leaf node Is labelled with the hash of an interaction 516. Each leaf of the fvlerkte tree can represent an interaction 516.
- the interaction 516 can be associated with an interaction identifier.
- the interaction 516 can be any suitable interaction.
- a suitable interaction can be a transaction, an agreement, a communication, or any other suitable interaction as described herein.
- the interaction 516 can be a
- an interaction can be an agreement that can include information such as the parties involved, details of the agreement (e.g., text), a digital signature of each party involved, a timestamp, a fee, and/or the like.
- embodiments of the invention can employ a probabilistic verification mechanism by which a client device can randomly sample a logarithmic number of block headers, !f these block headers are valid, then the block B belongs to the longest chain with high probability.
- the client device can determine which block headers to sample to prevent the adversary from sampling fake blocks.
- the probabilistic verification allows for the client device to detect at least one fake block with high probability, if there is a known fraction f b of blocks are fake, after randomly sampling enough number of blocks.
- the client device can conclude that the latest possible forking point was on or before height wherein L is the predetermined number of the most recent blocks and c is the malicious, full node's fraction of the total mining power.
- L is the predetermined number of the most recent blocks
- c is the malicious, full node's fraction of the total mining power.
- probabiiistic verification can be conducted to detect at least one fake block in an invalid chain with high probability. Specifically, by randomly sampling K blocks from the invalid chain, the probability that all sampled blocks are valid blocks is (1 - f b f. Hence, the probability that at least one invalid block is sampled is:
- the client device can minimize the sum L + K, i.e., the total number of blocks to download, is the minimum value of L + K that still gives the client device a high probability guarantee. For example, given the Ethereum blockchain with 4,000,000 blocks, one needs to download 18,000 block headers and their proofs to verify if they are on the correct chain. Given that each block header is of size 500 bytes and its proof is of size 7,000 bytes ⁇ logn SH 2 hashes), the total data required to download is still significant (i.e., 120 MB) to client devices, B.
- Approach According to Embodiments of the Invention
- the malicious fuil node controls then producing these blocks will take longer than the honest network will take to create the blocks. This ensures that the honest network creates the blocks before the malicious full node [0129] If the longest chain was created by a malicious full node and the malicious full node was able to pass the initial fact check, then the client device can determine that the latest possible forking point was on or before height -. The malicious full node will be unable to include any honest chain's blocks in its own btockchain (other than the genesis block). This can be done by iteratively pushing back the latest block the rnaiicious full node could have forked off of.
- the method defines a fraction k such that k > c.
- the verifier can sample random blocks out of the first - blocks to ensure that either a c
- the verifier can sample a constant number of blocks.
- the prover can sampie Hog fe (2) - M random blocks. For each block, the verifier verifies that the block's MMR is correctly included in the header's MMR and that the proof of work meets the difficulty value, as described herein.
- L-k implies that the latest possible forking point from the honest chain was at H - This process can be repeated m times to ensure that the forking point was before H— - ⁇ k m
- the client device and the full node cannot forward the proof to other client devices as the client device and the full node cannot prove that the randomness is actually random.
- the mechanism to make embodiments of the invention non-interactive, i.e., removing the randomness exchange step between the client device and the full node, will be discussed in further detail videow.
- the probability the verifier fails (i.e. does not sample any bad block) is Proof.
- n be the length of the chain and c be the fraction of computing power of the adversary relative to the honest computing power.
- the verifier can sample block headers from block to block n in the biockchain.
- h. be the number of bad blocks the adversary has in the interval.
- a be the point at which the adversary forks from the mainchain, there is some i such that ⁇ ⁇ a ⁇ ⁇ -r ⁇ TM, In other words, there is some sampled interval of size ⁇ in the protocol where the adversary's forking point lies between the start of the interval and the midpoint of the interval.
- t be the length from a to n, i.e. the length Of the adversary's fork, l > ⁇
- the number of bad blocks in the interval, h t is the number of bad blocks in the interval
- FiG. 6 shows a flowchart of a longest chain verification method according to an embodiment of the invention.
- the method illustrated in FIG. 8 will be described in the context of a client device determining a fuli node, that maintains the longest biockchain, out of a plurality of fuli nodes.
- the steps are illustrated in a specific order, it is understood that embodiments of the invention may include methods that have the steps in different orders. In addition, steps may be omitted or added and may still be within embodiments of the invention.
- the client device can receive a verification request from a prover, such as a fuli node or another client device.
- the verification request can comprise an interaction identifier and, in some embodiments, a Merkie proof associated with the interaction identifier.
- the interaction identifier can be a unique identifier for an interaction.
- the interaction identifier (ID) can be, for example, a string of alphanumeric characters, a randomly assigned number, a sequentially assigned number, values corresponding to an interaction, a combination thereof, and/or the iike.
- the Merkie proof can inciu fe a path from a Merkie root of a Merkie tree of interactions to a node associated with the interaction identifier as well as sibiings of each node in the path, as describee!
- the verification request can further comprise a Merkie mountain range proof including a path from a Merkie mountain range root to a leaf node associated with a ⁇ block header containing the Merkie tree as weii as siblings of each node in the path, as described herein.
- a Merkie tree 1000 is shown in FIG. 10.
- the Merkie tree 1000 can comprise a number of leaf nodes such as A, B, C, D, E, F, G, and H.
- a Merkie proof for an interaction identifier associated with the leaf node E can include a path from the Merkie root ABCDEFG to the leaf node E including the nodes ABCDEFG, EFGH, EF, and E (shown in as the boided nodes and connection lines in FIG. 10).
- the Merkie proof can also include the sibling nodes of the nodes in the path.
- the sibling nodes include the nodes ABCD, GH, and F (indicated in FIG. 10 by dashed lines).
- the client device can determine a full node that has the longest chain on the biockchain. To determine which full node of a plurality of full nodes has the longest chain, the client device can perform the following steps. [0140] At step S602 5 the client device can query the plurality of full nodes for current heights of the blockchains maintained by the full nodes. The client device can request the current height of the blockchain n from any suitable number of full nodes in the verification network. The current height of the blockchain n can be the current number of blocks in the blockchain (e.g., 100 blocks, 500 blocks, 1000 blocks, 10,000 blocks, or any other suitable number of blocks). A height of a blockchain can also be referred to as the length of the blockchain. In some embodiments, the client device may query every full node in communication range of the client device. In other
- the client device can query a predetermined number of full nodes, for example, 10 full nodes, 100 ful nodes, 500 full nodes, 1000 full nodes, or any suitable number of full nodes.
- the current height of the blockchain n may be different at each full node.
- a malicious full node can arbitrarily choose the current height of the blockchain n.
- the client device can receive a plurality of current heights of the blockchain from the full nodes.
- the client device can determine a full node from among the plurality of fuli nodes.
- the client device can determine which full node reported the correct current height of the blockchain «. In some embodiments, more than one full node may have reported the correct current height of the blockchain n.
- the client device can determine a most frequent height of the plurality of current heights. For example, the client device can receive 10 values for the current height of the blockchain « from ten different full nodes, 7 of which can be equal to a height of n ⁇ 100, 1 of which can be equal to a height of n ⁇ 95, and 2 of which can be equal to a height of « ⁇ 101.
- the query can include a random number ⁇ and a round number.
- the random number ⁇ can be any suitable random number.
- the round number can correspond to the number of times the client device has requested the random sampling of block headers from the full node.
- the round number can be any suitable integer.
- the round number can be 1 for the first time that the client device transmits a request to the full node.
- the full node can determine the random sampling of block headers, as described herein, and transmit the random sampling of block headers to the client device.
- the full node can partition the blockchain maintained by the full node into an equally sized number of partitions based on the round number. The full node can then select the random sampling of block headers from a most recent partition based on the random number, and then transmit the random sampling of block headers to the client device.
- the partitioning of the blockchain is described in further detail below.
- the client device can receive the random sampling of block headers from the full node.
- the client device can receive a plurality of Merkie mountain range proofs from the full node.
- the random sampling of block headers can be determined by the full node as described herein.
- Each MMR proof of the plurality of MMR proofs can be include a path from a Merkie mountain range root to a node in the MMR associated with one of the block headers of the random sampling of block headers, as well as include a sibling node of each node in the path.
- the client device can receive a block header of a fourth block in the blockchain (i.e., the fourth block header L3) as a part of the random sampling of block headers.
- the client device can also receive an MMR proof for the fourth block header L3 that includes a path from the MM root r2 to the fourth block header L3.
- the path can include each of the white nodes in the third Merkie mountain range 406 of FIG. 4; this includes the MMR root r2, 12 (i.e., the hash of the third block header L2 and the fourth block header 13), as well as the fourth block header L3.
- the MMR proof also Includes the sibling node to each node in the path.
- the MMR root r2 does not have a sibling node, as it is the root of the third Merkle mountain range 406.
- the sibling node of 12 i.e., the hash of the third block header L2 and the fourth block header L3 is 11 (i.e., the hash of the first block header L0 and the second block header L1.
- the sibling node of the fourth block header L3 is the third block header L2.
- the client device receives each node in the third Merkle mountain range 406 except the two nodes of the first block header L0 and the second block header 11. 01463
- the client device can verify the block headers.
- the client device can verify the block headers by verifying the validity of the previous hash value and the nonce (e.g., the PoW solution) of each block header, as described herein.
- the nonce can be used to calculate if the previous hash contains a string of leading zeros such that it is lower than a difficulty value. If the resulting previous hash is lower than the difficulty value, then the client device can determine that the block header is a valid block header.
- the Merkle root, the nonce, the previous hash, and the timestamp included in the block header can be inputs to a hash function.
- the MMR root can also foe an input to the hash function.
- the output of the hash function is valid if the output Is less than or equal to a difficulty value.
- the client device can verify the validity of the MMR proof for each block header.
- the client device can verify that each node in the path with two child nodes is equal to the hash of that node's two child nodes. For example, the client device can verif that the node 12 is equal to the hash of both the third block header L2 and the fourth block header L3.
- the client device can also verify that the MMR root r2 is equal to the hash of M and I2. In this way, the client device verifies that each block header of the random sampling of block headers is in the blockchain at the full node.
- the client device can also verify that the start of the path in the MMR proof is the MMR root in the latest block header. [0148] At step S618, the client device can determine if all of the block headers of the plurality of random block headers and the plurality of Svlerkie mountain range proofs are valid. If any one of the block headers or the Mer le mountain range proofs is not valid, then the client device can perform steps S608 to S616 again with a different full node, for example, with a second full node, in some embodiments, the client device can add the full node to a stored list of malicious full nodes, for example by adding an IP address, or other full node identifier, of the malicious full node to a list.
- the client device can determine not to communicate with full nodes that are in the list of malicious fuli nodes. [0143] if the biock headers and the erkle mountain range proofs are valid, then the client device can proceed to step S618. At step S618, the client device can determine if the round number is equal to a predetermined number of rounds.
- the predetermined number of rounds can be any suitable integer. In some embodiments, the predetermined number of rounds can be log n rounds, as described herein, wherein n is the current height of the blockchain. If the round number is less than the
- the client device can proceed to step S620. if the round number is equal to the predetermined number of rounds, the client device can proceed to step S622.
- th client device can update the round number. For example, if the round number is equal to 1 , then the client device can update the round number to be equal to 2. The client device can then perform steps S608 to S618 again.
- the client device can determine that the full node has the iongest chain, as the client device has verified block headers during each round with the full node.
- FIG. 7 shows a flowchart of a iongest chain verification method performed by a full node according to art embodiment of the invention.
- the method illustrated in FIG. 7 will be described in the context of a full node receiving queries from a client device, it is understood, however, that the invention can be applied to other circumstances such as a fuil node proving that it hoids the longest blockchain.
- the steps are illustrated in a specific order, it is understood that embodiments of the invention may include methods that have the steps in different orders. In addition, steps may be omitted or added and may still be within embodiments of the invention.
- the full node can receive a query for the current height of the blockchain n from a client device.
- the fu!i node can determine the current height of the blockchain n.
- the full node can determine the current height of the blockchain n in any suitable manner. For example, the full node can determine the number of blocks in the blockchain. In some embodiments, the full node can determine the number of block headers in the b!ockchairt
- the full node can transmit the current height of the blockchain n to the client device.
- the client device after receiving the current height of the blockchain n, can then determine that the current height of the blockchain reported by the fui! node is comparable to the most frequent height of a plurality of heights received by the client device from a plurality of full nodes.
- the fuH node can receive a query, from the client device, for a random sampling of block headers.
- the query can include a random number.
- the query can include a random number and a round number (i.e., an iteration number).
- the full node can partition the blockchain into a number of partitions based on how many queries for the random sampling of block headers have been received, in some embodiments, the full node can partition the biockchain into a numbef of partitions based on the round number received by the client device.
- Each partition of the biockchain can contain the same number of blocks, for example, three partitions each including 10 blocks.
- each partition of the blockchain can contain a comparable number of blocks, for example, a first partition including 100 blocks and a second partition including 101 blocks. If the round number is equal to 1 , for example, the full node can partition the b ckchain into 1 partition, i.e., the partition will include the full bbckchain.
- the full node can select a plurality of random block headers from the last partition.
- the last partition can be the partition that includes the latest block header.
- the plurality of random block headers can comprise any suitable number of random block headers.
- the full node can determine the number of random block headers based on the random number received from the client device. For example, if the random number is equal to a value of 7, then the full node can select 7 random block headers. In other
- the full node can use the random value as an input to a function.
- the full node can then select a number of random block headers based on the output of the function.
- the full node can partition the bbckchain into 5 partitions, each of the 5 partitions including 60 blocks.
- the full node can select a plurality of random foiock headers from the last partition of 60 blocks.
- the round number will be equal to 8.
- the full node can partition the bbckchain into 8 partitions, each of the 6 partitions including 50 blocks.
- the full node can then select a pluralit of random block headers from the last partition of 50 blocks.
- the last partition of blocks will include the same number of blocks that the full node is selecting as the random block headers. Due to this, the full node will select the most recent number of block headers, including the latest block header. This method of random sampling allows the full node to select and transmit random block headers to the client device as well as the most recent number of block headers, including the latest block header.
- the full node samples from a smaller and more recent partition of the bbckchain.
- An adversary i.e., malicious full node
- the more blocks that the adversary includes in the falsified chain requires more computing power.
- An adversary may not have large amounts of computing power, and may only be able to falsify shorter chains. These shorter chains will have forks closer to the latest block in the blockchain.
- the iterative random block header sampling described herein, allows the client device to verify an increasing number of newer block headers as the partition decreases Irs size over each iteration. In this way, the client device is likely to catch a falsified shorter chain.
- the client device can receive and verify the most recent number of block headers.
- the full node can determine a plurality of Merkle mountain range proofs, one MMR proof for each of the random block headers.
- the full node can determine each node in the MMR that is in a path from the MMR root to the random block header.
- the path can include each node that is between the MMR root and the random block header in the MMR.
- the MMR proof can also include the sibling node of each of the nodes in the path.
- the full node can determine each sibling node of each node in the path in the MMR.
- the full node can include the path and the sibling nodes in the MMR proof.
- the full node can transmit the plurality of random block headers and the plurality of Merkle mountain range proofs to the client device.
- the full node can determine if another query has been received.
- the full node can receive another query for a random sampling of block headers. This next query can include a round number equal to a value of 1 larger than the previous round number.
- the full node can repeat steps S708 to S716 any suitable number of times, as described herein. If the full node does not receive another query for a random sampling of block headers, then the full node can end the process. [0161] FIG.
- FIG. 8 shows a flowchart of an interaction verification method according to an embodiment of the invention.
- the method illustrated in FIG. 8 will be described in the context of a client device receiving a verification request from a prover and proceeding to determine that an interaction is valid. It is understood, however, that the invention can be applied to other circumstances (e.g., verifying that an interaction such as an agreement, contract, transaction, or the like is valid, etc.).
- the steps are illustrated in a specific order, it is understood that embodiments of the invention may include methods that have the steps in different orders. In addition, steps may be omitted or added and may still be within embodiments of the invention.
- the client device can receive a verification request.
- the verification reqyest can be received from a prover.
- the prover can a full node, in other embodiments, the prover can be a client device.
- the verification request can comprise an interaction identifier and, in some embodiments, a Merkle proof and a Merkle mountain range proof.
- the interaction identifier can be a unique identifier for an interaction.
- the interaction identifier (ID) can be, for example, a string of alphanumeric characters, a randomly assigned number, a sequentially assigned number, values corresponding to an interaction, a combination thereof, and/or the like.
- the Merkle proof can include a path from a Merkle root to a node associated with the interaction identifier as well as siblings of eac node in the path, as described herein.
- the Merkie mountain range proof can include a path from a IVIerkie mountain range root to a node associated with a block header containing the Merkle tree as well as siblings of each node in the path, as described herein.
- the verification request can include a Merkle proof comprising a first path and a first plurality of sibling nodes.
- the first path can include a first plurality of nodes in a Merkie tree from a Merkle root to a first node.
- the first node can be associated with the interaction identifier.
- the verification request can also include a Merkle mountain range proof comprising a second path and a second plurality of sibling nodes.
- the second path can include a second plurality of nodes in a Merkle mountain range from a Merkle mountain range root to a second node.
- the second node can be associated with a block header containing the interaction identifier.
- the client device can determine a full node that has the longest chain on the blockchain, as described herein, during which, the client device can receive the latest block header during the last round of querying for the sampling of random block headers.
- the client device can verify the Merkie proof received in the verification request.
- the client device can verify the Merkie proof by verifying that each node in the path, included in the Merkie proof, with two child nodes is equal to the hash of that node's two child nodes, as described herein.
- the client device can also verify that the interaction identifier is the leaf node of the path.
- the client device can verify the MMR proof received in the verification request, as described herein.
- the client device can verify the MMR proof by verifying that each node in the path, included in the MMR proof, with two child nodes is equal to the hash of that node's two child nodes,.
- the client device can also verify that the block header is the leaf node of the path, wherein the block header contains the Merkie root of the Merkie tree.
- the client device can proceed to ste S810.
- the client device can determine that the prover has provided an incorrect proof and terminate the connection with the prover.
- the client device can add the IP address, or other suitable identifier, of the prover to a list of known malicious devices.
- the client device can proceed fo step S8 2.
- the client device can determine that the interaction identifier provided by the prover corresponds with a valid interaction.
- the client device can perform additional processing. Additional processing can include performing an action or operation as indicated in the interaction and/or transferring assets, physical and digital, between the verifier and the prover as outlined in the interaction.
- FIG. 9 shows a flowchart Of a longest chain verification method according to an embodiment of the invention. The method illustrated in FIG.
- the method in FIG. 9 can be performed by a prover 902, a client device 904, and a plurality of fui! nodes.
- the prover 902 can be a client device or a full node, in some embodiments, the prover 902 can be a full node that the client device 904 communicates with during steps S918-S928.
- the prover 902 can transmit a verification request to the client device 904.
- the verification request can comprise an interaction identifier, a fvlerkle proof, and a fviefk!e mountain range proof.
- the interaction identifier can be associated with a previously performed interaction, which may, in some embodiments, be an interaction that was performed between the prover 902 and the client device 904.
- the Merkle proof can comprise a path and sibling nodes as described herein.
- the Merkle proof can be used to determine if an interaction is in a block.
- the Merkle mountain range proof can comprise a path and sibling nodes as described herein.
- the Merkle mountain range proof can be used to determine if a block is in a biockchain.
- the client device 904 can query a plurality of full nodes 906 for current heights of blockchains maintained by the fui! nodes,
- each of the full nodes of the plurality of full nodes 906 can return the height of the biockchain.
- the client device 904 can receive a plurality of current heights.
- the client device 904 can determine a full node from among the plurality of full nodes 906. The client device 904 can determine that the full node returned a current height that is consistent with a most frequently returned current height from the plurality of full nodes 906. [0175] At step SS18, the client device 904 can query the full node for a random sampling of block headers as well as a plurality of MMR proofs, one M proof for each of the block headers of the random sampling of block headers.
- the client device 904 can receive the random sampling of block headers as well as a MMR proof fo each of the block headers.
- the client device 904 can verify the validity of each block header of the random sampling of block headers.
- the client device 904 can verify that the proof-of-work solution of each block header is valid. For example, the client device 904 can verify that the nonce and the previous hash value solve a hash function such that the solution is less than a predetermined number such as a difficulty level.
- the client device 904 can verify the validity of the plurality of MMR proofs received from the full node.
- the client device 904 can verify the validity of the MMR proof for each block header.
- the client device can verify that each node in the path with two child nodes is equal to the hash of that node's two child nodes, as described herein.
- the client device 904 can also verify that the start of the path in the MMR proof is the MMR root in the latest block header.
- the client device 904 can repeat steps S918-S924 any suitable number of times until a round number is equal to a predetermined number of rounds, for example, 5 rounds, 15 rounds, 40 rounds, or any other suitable number of rounds. In some embodiments, the client device 904 can repeat steps S918-S924 until the client device 904 receives the most recent block header.
- the client device 904 can determine that the full node maintains the longest (i.e., correct) blockctiain. The client device 904 can then verify the fvlerkie proof and the MMR proof received from the prover 902 in the verification request. The client device can verify the Merkle proof and the MMR proof in any suitable method described herein. [0181] At step S93Q, after verifying the Merkle proof and the MMR proof, the client device 904 can transmit a verification response to the prover 902. If the Merkle proof and the MMR proof are both valid then the client device 904 can determine that the interaction identifier is associated with a valid interaction. The client device can transmit a verification response indicating that the interaction is valid to the prover 902.
- the client device 904 can perform additional processing as described herein.
- additional processing can include performing an action or operation as indicated in the interaction and/or transferring assets, physical and digital, between the verifier and the prover as outlined in the interaction.
- the client device 904 determines that either the Merkle proof or the MMR proof is invalid, then the client device 904 can transmit a verification response indicating that the interaction is invalid to the prover 902. In some embodiments, the client device 904 may not transmit the verification response if either the Merkle proof or the MMR proof is invalid, in this case, the client device 904 can blacklist the prover 902 and terminate communication therewith.
- Embodiments of the invention can allow for a Fiat-Shamir protocol to remove the interaction between the client devices and the full nodes.
- a full node can figure out locally which random blocks it should send to a client device for the verification without any initial randomness from the client device (e.g., in the form of a random number), yet the client device can verify the correctness of the proof and is guaranteed that the full node is not cheating.
- the Fiat-Shamir protocoi wili be discussed in further detail foeiow.
- ali of the verifier's messages, such as queries are random from some known distribution. Concretely, in some embodiments these messages are block numbers in some predefined intervals.
- Every message of the verifier can be replaced by the result of a query to a random oracle H which in practice is replaced by a hash function such as SHA-3. H can be queried at the current transcript and the oracle's answer is mapped into the verifier's message space, In other words, for some embodiments the queries are the hash of all the previously returned block headers.
- Table 1 shows a comparison between embodiments of the invention and previous works.
- ⁇ is the size of a hash (i.e., 256 bits for SHA258) and B is the size of a block header (i.e., 80 bytes in Bitcoin and 528 bytes in Ethereum).
- c and m can be constants.
- Embodiments of clognlogn ⁇ B log(n ⁇ s) ⁇ H No 1 ⁇ H the invention [0188] As the number of biock headers increases linearly with the size of the blockchain, the resource constraints for current SPV clients also increase. For example, the Ethereum blockchain currently has 6 million blocks, given that each biock header is of size 528 bytes, a light client in Ethereum would have to download and store approximately 3 GB to be able to verify ail events o the Ethereum blockchain. Such requirements are not trivial for current client devices, such as mobile phones and tablets. Embodiments of the invention include an efficient client device which requires less resource constraints but still offers high security guarantee (e.g., secure against a polynomial-time adversary). [0189] Embodiments of the invention provide for a number of advantages. For example, a client device can download less data than previous light clients (e.g., a light client in Ethereum, described above). A light client in Ethereum downloads
- the client device can downioad 12 MB, when conservative security parameters are set. As such, compared to Ethereum, client devices according to embodiments of the invention can receive 250 times less data to verify an interaction on the blockchain.
- a client device can download a logarithmic number of block headers, rather than every block header in a blockchain, in order to verify a given block and interaction in the biockchain. This significantly reduces the amount of data transmitted from a full node to a client device, thus not only reducing storage and performance requirements of resource-limited devices, but also reducing network traffic.
- Embodiments of the invention are not vulnerable to bribing attacks as in PoPoW.
- Embodiments of the invention are not vuinerabie to bribing attacks, because embodiments do not differentiate between blocks in any way before the blocks are mined.
- the set of blocks selected to serve as a proof to the client device are determined only after those blocks are mined via a randomness chosen by the client device during transaction verification. Therefore, the adversary will not be abie to bribe mines in the verification network to buiid a blockchain of fake, but vaiid, blocks.
- Any of the software components or functions described in this application may be implemented as software code to be executed by a processor using any suitable computer language such as, for example, Java, C, C++, C#, Gbfective-C, Swift, or scripting language such as Perl or Python using, for example, conventional or object- oriented techniques.
- the software code may be stored as a series of instructions or commands on a computer readable medium for storage and/or transmission, suitable media include random access memory (RAM), a read only memory (ROM), a magnetic medium such as a hard-drive or a floppy disk, or an optical medium such as a compact disk (CO) or DVD ⁇ digital versatile disk), flash memory, and the like.
- the computer readable medium may be any combination of such storage or transmission devices.
- Such programs may also be encoded and transmitted using carrier signals adapted for transmission via wired, optical, and/or wireless networks conforming to a variety of protocols, including the Internet.
- a computer readable medium according to an embodiment of the present invention may be created using a data signal encoded with such programs.
- Computer readable media encoded with the program code may be packaged with a compatible device or provided separately from other devices (e.g., via Internet download). Any such computer readable medium may reside on or within a single computer product (e,g, a hard drive, a CO, or an entire computer system), and may be present on or within different computer products within a system or network.
- a computer system may include a monitor, printer, or other suitable display for providing any of the results mentioned herein to a user.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
A system and method is disclosed. The method comprises a client device receiving a verification request comprising an interaction identifier. The client device can then query a full node for a random sampling of block headers from the full node. The client device can receive the random sampling of block headers from the full node, and verify the random sampling of block headers. The client device can then determine that the blockchain maintained by the full node is valid after verifying the random sampling of block headers.
Description
VERIFICATION OF INTERACTIONS SYSTEM AND METHOD
CROSS REFERENCE TO RELATED APPLICATIONS
[0001] This application is a PCT application claiming priority to U.S. Provisional Application No. 62/543,259 filed August 9, 2017, which is herein incorporated by reference in its entirety.
BACKGROUND
[0002] To ensure the validity of interactions, verification networks rely on a mechanism to verify if particular interactions are included in a blockchain. A node in the verification network can check if an interaction is recorded in the blockchain and that the block belongs to the longest chain (i.e., correct chain), in case of a fork in the
blockchain. To perform these checks, the nods downloads .all blocks in the biockchain and verifies all of them. Blockchains like Ethereum [Vitaiik Buterin. Ethereum's white paper. https;//github.∞m/ethereum/w and Bitcoin [Satoshs
Nakamoto. Bitcoin: A peer-to-peer electronic cash system, 2008, Available at https://bitcoin.org/bitcoin. pdf] rely on proof-of-work (PoW) [Cynthia Dvvork and Mom Naof. Pricing via processing or combatting junk mail In Advances in Cryptotogy ~~~ CRYPTO' 92: 12th Annual international Cryptotogy Conference Santa Barbara,
California, USA August 16-20, 1992 Proceedings, pages 139-147, Berlin, Heidelberg, 1993. Springer Berlin Heidelberg] to reach agreement on blocks of transactions added to their blockchains. In Bitcoin and Ethereum, syncing ail of these blocks requires a node to send and receive hundreds of gigabytes of data (about 160 GB in Bitcoin, see [Blockchain charts: Bitcoin's biockchain size, July 2018. Available at
https://b!ockchainJrsfo/charts/b!ocks-si2e]1 and 850 GB in Ethereum, see pitinfocharts: Ethereum biockchain size, July 2018, Available at ttps://bitinfocharts.cosn;ethereum3}! taking days for both downloading and verification.
[0003] Having all blocks allows a node to verify the inclusion of any past transaction on the blockchain. Such a requirement especially imposes a significant l
burden on resource-limited clients, often known as light or thin clients, such as smartphones and internet-of-things devices that typically have access to limited bandwidth, storage, and computation resources, but still want to verify the inclusion of transactions on the blockchain. [0004] Bitcoin has a synchronization mechanism, called simplified payment verification (SPV), that allows clients with limited resources, such as mobile phones and tablets, to verify transactions without downloading the entire blocks. In SPV, instead of downloading all blocks from a full node, an SPV client can download all block headers, which have a much smaller size than the blocks (e.g., 80 bytes per block header vs 1 MB per block in Bitcoin), but still contain enough information to correctly .'verify that a transaction is included in some block and verify that the block is included at a certain position in the blockchain. Each block header contains the root of a IVIerkie tree, see [Ralph C. Merkle. A digital signature based on a conventional encryption function. In A Conference on the Theory ancf Applications of Cryptographic Techniques on Advances in Cryptoiogy, CRYPTO '87, pages 368-378, London, UK, UK, 1988, Springer-Verlag], that is constructed over all transactions in the block. The Merkle root, along with a Merkle proof sent by the full node for any given transaction, allows the light client to verify the inclusion of the transaction in the block. Due to the hash of the previous block included in each header, the client can also check the validity of every header on the chain one-by-one. This ensures that the header corresponds to a valid block at a certain position in a blockchain of the same length, which the full node has never sent to the light client in full.
[0005] SPV clients are the most popular clients in the Bitcoin ecosystem and enable various applications to a broad class of users. This is mainly due to the fact that not many people can afford the technical and physical resources needed to run a full node. For example, Bi'tcoin*s blockchain was recently used to build notary services by allowing users to verify the validity and integrity of documents with SPV clients, see [Open tifnestamps. h.ttps: opentimesiamps.org ) 2018] and [Stampery.
https://stampery.com/, 2018]. Also, in a recent work known as Catena, see [Aflft
Tomescu and Srivinas Devadas. Catena: Efficient non-equivocation via bitcoin. In 2017
I BB Symposium on Security and Privacy (SP), pages 393-409, May 2017}, an
authenticated log system leverages BitcoirTs biockchain to aiiow internet browsers to fetch and validate HTTPS certificates. Thus, light-weight verification clients are in great demand. SPV proofs can aiso be used in applications that require cross-ledger verification of transactions, e.g., transferring assets to sidechains, see [Dashjr et al, Enabling biockchain innovations with pegged sidechains, 2014.
https://www.blockstream.com/sidechains.pdf] and [Kiayias et al, Non-interactive proofs of proof-of-work. 2017], and sharding-based biockchain protocols, see [Luu et al, A secure sharding protocol for open blockchains. in Proceedings of the 2016 AC 4 SIGSAC Conference on Computer and Communications Security, CCS '16, pages 17- 30, New York, NY, USA, 2018. ACM], [ okoris-Kogias et al, GmnsLed§er: A secure, scale-out, decentralized iedger via sharding. in 2018 iEEE Symposium on Security and Privacy (S&P), pages 19-34, 2018], and pahdi Zamani, Mahnush Movahedi, and Mariana Raykova. RapidChain: Scaling blockchains via full .sharding.. In 2018 ACM Conference on Computer and Communications Security (CCS), 2018|,
[OO06J As the number of biock headers increases linearly with the size of the biockchain, the resource constraints for current light clients also increase. For example, as of mid-2018, the Ethereum biockchain has more than 6 million blocks, see
itinfocharts: Ethereum biockchain size, July 2018, Available at
tps://b tinfocharts1com ethereum] . Given that each block header is of size 528 bytes, an SPV client in Ethereum would have to download and store more than 3 GB of data to be able to verify all events on the Ethereum biockchain. As such, current light clients cannot handle the large amounts of data needed to verify interactions on blockchains as the length of the blockchains increase. [0007] Embodiments of the invention address these and other problems individually and collectively.
BRIEF SUMMARY
[0008] Embodiments of the invention are directed to methods and systems of efficiently determining that a full node maintains a valid longest blockchain as well as verifying an that interaction is valid and stored in the blockchain. [0009] One embodiment of the invention is directed to a method. The method comprises a client device receiving a verification request comprising an interaction identifier; querying, by the client device, a full node for a random sampling of block headers from the full node; receiving, by the client device, the random sampling of block headers from the full node; verifying, by the client device, the random sampling of block headers; and determining that the blockchain maintained by the full node is valid after verifying the random sampling of block headers.
[0010] Another embodiment of the invention is directed to the client device comprising: a processor; a memory; and a computer readable medium coupled to the processor, the computer readable medium comprising code, executable by the processor, for implementing a method comprising: receiving a verification request comprising an interaction identifier; querying a full node for a random sampling of block headers from the full node; receiving the random sampling of block headers from the full node; verifying the random sampling of block headers; and determining that the blockchain maintained by the full node is valid after verifying the random sampling of block headers.
[0011] Another embodiment is directed to a method. The method comprising: receiving, by a full node, a query for a random sampling of block headers including a random number from a client device; selecting, by the full node, the random sampling of block headers from a biookchain; determining, by the fut! node, a plurality ofMerkie mountain range proofs associated with the random sampling of block headers; and transmitting, by the full node, the random sampling of block headers and the plurality of Merkie mountain range proofs to the client device.
[0012] Another embodiment of the invention is directed to the client device comprising: a processor; a memory; and a computer readable medium coupled to the
processor, the computer readable medium comprising code, executable b the processor, for implementing a method comprising: receiving a query for a random sampling of block headers including a random number from a client device; selecting the random sampling of block headers from a blockchain; determining a plurality of Merkle mountain range proofs associated with the random sampling of block headers; and transmitting the random sampling of block headers and the plurality of Merkle mountain range proofs to the client device.
[0013] Another embodiment is directed to a method. The method comprising: receiving, b a full node, a query for a random sampling of block headers including a random number from a client device; selecting, by the full node, the random sampling of biock headers from a blockchain; determining, by the full node, a plurality of verification proofs associated with the random sampling of block headers; and transmitting, by the full node, the random sampling of block headers and the plurality of verification proofs to the client device, wherein the client device verifies the random sampling of block headers and the plurality of verification proofs.
[0014] Another embodiment of the invention is directed to the full node
comprising: a processor; a memory; and a computer readable medium coupled to the processor, the computer readable medium comprising code, executable by the processor, for implementing a method comprising: receiving a query for a random sampling of block headers including a random number from a client device; selecting the random sampling of block headers from a blockchain; determining a plurality of verification proofs associated with the random sampling of block headers; and transmitting the random sampling of block headers and the plurality of verification proofs to the client device, wherein the client device verifies the random sampling of block headers and the plurality of verification' proofs.
[0015] Further details regarding embodiments of the invention can be found in the Detailed Description and the Figures.
BRIEF DESCRIPTION OF THE DRAWINGS
[0016] FIG. 1 shows a system according to embodiments of the invention.
[0017] FIG. 2 shows components of a client device according to an embodiment of the invention. [0018] FIG. 3 shows an example blockchain format.
[0019] FIG. 4 shows an example of updating a Merkle mountain range when new data entries are appended as new leaves of the Merkle mountain range according to embodiments of the invention.
[0020] FIG. 5 shows a blockchain structure according to embodiments of the invention.
[0021] FIG. 6 shows a flowchart of a longest chain verification method according to embodiments of the invention.
[0022] FIG. 7 shows a flowchart of a longest chain verification method performed by a fulf node according to embodiments of the invention. [0023] FIG. 8 shows a flowchart of an interaction verification method according to embodiments of the invention.
[0024] FIG. 9 shows a flow diagram of verifying a longest chain and an
interaction according to embodiments of the invention.
[0025] FIG. 10 shows a Merkle tree according to embodiments of the invention. DETAILED DESCRIPTION
[0026] Prior to discussing embodiments of the invention, some terms can be described in further detail.
[0027] A "user" may include an individual. In some embodiments, a user may be associated with one or more personal accounts and/or mobile devices. The user may also be referred to as a cardholder, account holder, or consumer in some embodiments.
[0028] A "client device" may be a computing device capable of transmitting and/or receiving data. Examples of client devices may include a mobile phone, a smart phone, a personal digital assistant (PDA), a laptop computer, a desktop computer, a server computer, a vehicle such as an automobile, a light client device, a tablet PC, etc. 5 Additionally, user devices may be any type of wearable technology device, such as a watch, earpiece, glasses, etc. The user device may include one or more processors capable of processing user input. The user device may also include one or more input sensors for receiving user input. The user device may comprise any electronic device that may be operated by a user, which may also provide remote communication l o capabilities to a network. Examples of remote communication capabilities include using a mobile phone (wireless) network, wireless data network (e.g., 3G, 4G or similar networks), Wi-Fi, i-Max, or any other communication medium that may provide access to a network such as the Internet or a private network.
[0028] A "light client" may be an application or software capable of
15 communicating with a verification network. The light client may, for example, be present on a client device, in some embodiments, a light client may communicate with a verification network and verify a longest bfockchain and an interaction.
[0030] A "verification network" may be any set of nodes (computer systems and components) configured to provide verification for an interaction. The verification
20 network may comprise a distributed computing environment utilizing several nodes that are interconnected via communication links, using one or more computer networks or direct connections. The verification network may be implemented over any appropriate network, including an intranet, the Internet,, a cellular network, a local area network or any other such network or combination thereof. Components used for such a system 5 can depend at least in part upon the type of network and/or environment selected.
Protocols and components for communicating via such a network are well known and will not be discussed herein in detail. Communication over the verification network can be enabled by wired or wireless connections and combinations thereof. Nodes may be independently operated by third parties and may be added to, or removed from, the
verification network on a continuous basis, in some embodiments, a node in a verification network may be a full node.
[0031] A "node" may be a point at which lines or pathways intersect or branch or can be a central or connecting point. A node can be a "graph node," which can be a data vaiue in a Merkle tree or a Merkle mountain range. A graph node can include data such as a hash value, which can be equivalent to child graph nodes of the graph node hashed together. A graph node at the bottom of a Merkle tree or a Merkie mountain range can be referred to as a leaf node. A graph node at the top of a Merkle tree or a Merkle mountain range can be referred to as a root node. [0032] A node can also be a "computer node," which can be any computer or device that connects to the verification network. A node that can fully verify each block and interaction in the blockchain can be a full node. A "full node" can store the full blockchain (i.e., each block and each interaction). A "client device" may be a computer node In the verification network. The use of a node as being a graph node or a computer node will be apparent according to the context in which it is used.
[0033] The term "verification" and its derivatives may refer to a process that utilizes information to determine whether an underlying subject is valid under a given set of circumstances. Verification may include any comparison of information to ensure some data or information is correct, valid, accurate, legitimate, and/or in good standing. [0034] A "verification request" can be a request message requesting verification. A verification request can comprise an interaction identifier. A verification request can request verification of an interaction identifier, in some embodiments, the verification request can also comprise a Merkle proof as weiS as a Merkle mountain range proof. The Merkle proof and the Merkle mountain range proof can be associated with the interaction identifier included in the verification request.
[0035] A "verification proof can be a data item that can be used to verify the truth of a statement. A verification proof can be included in a verification request regarding an interaction. A verification proof can be a Merkle proof or a Merkle mountain range proof.
[0036] A "Merkle tree" can be a data structure that can encode interaction data. A Merkle tree can be a balanced binary tree where the leaf nodes of the tree hold some value, and each non-leaf node can store a hash of a concatenation of the values of both children nodes. When a new leaf is added to a Merkle tree, the entire tree can be recomputed. For example, each node, in the Merkle tree can be determined to be the hash of both children nodes.
[00373 A "Merkie proof can be a proof that an interaction is included in a Merkle tree. A Merkle proof can include a path from a Merkle root of a Merkle tree to a node associated with an interaction identifier as well as sibling nodes of each node in the path. The path can include each node connecting the Merkle root node to the node associated with the interaction identifier. 0038J A "Merkle mountain range" can be a data structure that can encode block headers. For example, a Merkie mountain range can be a type of Merkle tree. A Merkle mountain range can be a binar hash tree with n leaves, a root r, and the following properties: 1} M can be a hash tree; 2} M can have a depth jlog2 «.]; and 3} if n > 1, the number of leaves n ~ 2i + j for a maximum integer i such that 2l < n, wherein rJeft can be a Merkie mountain range with 2l leaves and wherein r. right can be a Merkle mountain range with j leaves. A Merkie mountain range can allow for new leafs to be appended to the Merkie mountain range without recomputing the entire Merkle mountain range. A small number of nodes are recomputed when appending a new leaf to a Merkle mountain range.
[0039] A "Merkle mountain range proof can be a proof that a block header is included in a Merkle mountain range. For example, a Merkie mountain range proof can include '.a path from a Merkle mountain range root to a node associated with a block header. The path can include each node connecting the root node to the node associated with the block header The Merkle mountain range proof can also include the sibling nodes of each node in the path.
[0040] A "sibling node" can denote a relationship between nodes. A node's sibling node can be a node that is in a same hierarchical level under the same parent
node in either a Merkle tree or a Merkie mountain range. For -example, a node that is a parent node can have two child nodes that are on a Sower hierarchical level than the parent node. The two child nodes can toe sibling nodes. 0041] A "Merkel roof and a "Merkle mountain range root" can be a node at the highest hierarchical leva! in a Merkle tree or a Merkle mountain range, respectively. A Merkle root and a Merkie mountain range root do not have any sibling nodes or parent nodes. A Merkie root and a Merkie mountain range root can connect to child nodes.
[0042] A "blockchain" can be a distributed database that maintains a
continuously-growing list of records secured from tampering and revision. A blockchain may include a number of blocks of interaction records. Each block in the blockchain can contain also include a timestamp and a link to a previous block. Stated differently, interaction records in a blockchain may be stored as a series of "blocks," or permanent files that include a record of a number of interactions occurring over a given period of time. Blocks may be appended to a blockchain by an appropriate node after it completes the block and the block is validated. Each block can be associated with a block header. In embodiments of the invention, a blockchain may be distributed, and a copy of the blockchain may be maintained at each full node in a verification network. Any node within the verification network may subsequently use the blockchain to verify interactions. [0043] A "block header" can be a header including information regarding a block. A block header can be used to identify a particular block an a blockchain. A block header can comprise any suitable information, such as a previous hash, a Merkle root, a timestamp, a nonce, and a Merkie mountain range root. In some embodiments, a block header can also include a difficulty value. [0044] An "interaction" may refer to a reciprocal action or influence. An interaction can include a communication, contact, or exchange between parties, devices, and/or entities. Example interactions include a transaction between two parties and a data exchange between two devices. Interactions can also be agreements, contracts, and the like.
[0045] A "server computer" may include a powerful computer or cluster of computers. For example, the server cam uier can be a large mainframe, a
minicomputer cluster, or a group of servers functioning as a unit In one example, the server computer may be a database server coupled to a Web server. The server computer may comprise one or more computational apparatuses and may use any of a variety of computing structures, arrangements, and compilations for servicing the requests from one or more client computers.
[0046] A "resource provider" may be an entity that can provide a resource such as goods, services, information, and/or access. Examples of resource providers includes merchants, access devices, secure data access points, data providers, transit agencies, governmental entities, venue and dwelling operators, etc. A resource provider may operate a client device. A merchant may typically be an entity that engages in transactions and can sell goods or services, or provide access to goods or services. [0047] A "merchant" may typically be an entity that engages in transactions and can sell goods or services, or provide access to goods or services.
[0048] A "processor" may refer to any suitable data computation device or devices. A processor may comprise one o mor microprocessors working togethe to accomplish a desired function. The processor may include a CPU comprising, at least one high-speed data processor adequate to execute program components for executing user and/or system-generated requests. The CPU may be a microprocessor such as AMD's Athlon, Duron and/or Opieran; IBM and/or Motorola's PowerPC: IBM's and Sony's Cell processor; Intel's Celeron, Itanium, Pentium, Xeon, and/or XScale; and/or the like processors). [0049] A "memory" may be any suitable device or devices that can store electronic data. A suitable memory may comprise a non-transitory computer readable medium that stores instructions that can be executed by a processor to implement a desired method. Examples of memories may comprise one or more memory chips, disk
1.1
drives, etc. Such memories may operate using any suitable electrical, optical, and/or magnetic mode of operation.
[0050] Details of some embodiments of the present invention will now be described. I. INTRODUCTION
[0051] Embodiments of the invention allow for an interaction verification protocol for light clients in blockchain protocols that grow based on the longest chain principle. In embodiments of the invention, a verifier operating a client device can download and store a logarithmic (rather than a linear) number of block headers to verify any interaction stored on a blockchain. Embodiments of the invention can utilize a non- interactive probabilistic protocol to sample a small (e.g., logarithmic) set of random block headers from a full node to limit the likelihood of an adversarial full node cheating in the longest-chain verification process, given the adversary's limited computational power in creating valid blocks. A data structure called a Merkle mountain range (MivIR) can allow client devices to verify any interaction in a blockchain with a minimal amount of information. The Merkle mountain range can include a Merkle mountain range root that can be stored in the block headers. Further, embodiments of the invention can be implemented in current Bitcoin and/or Ethereum networks via a soft fork.
[0052] Reducing the number of block headers that a client device has to download from a full node is a security challenge. By downloading the entire chain of block headers, the client device can verify that the events proved by the full node are actually recorded on the longest chain. Without being required to send all block headers to the client device, a malicious prover can take advantage of the client device's smaller computational power (relative to the combined computational power of honest nodes) to create and send only a small (but valid) number of fake blocks tricking the client device to accept a smaller fake chain. Existing solutions for handling this challenge are inefficient, complex, and require significant changes to the design of already-established blockchains.
A. Prior Work
[0053] Current blockchain technologies, such as Bitcoin and Ethereum, maintain an append-only ledger in a network. The ledger includes a list of blocks of transaction data, the blocks are cryptograph icalSy ctiained together as depicted in FIG. 3. A block is created by a computationally intensive process called proof-of-work in which valid blocks need to demonstrate a sufficient "difficulty" (i.e., sufficient computation power to create on average). If there are more than one available chains of blocks, then network participants, i.e., nodes, need to download all blocks in all chains and follow the chain which has the highest total difficulty. This mechanism guarantees that, in the long run, the network will agree on a single and valid chain, see [Garay et al, The Bitcoin backbone protocol: Analysis and applications. In Advances in Cryptolog - EUROCRYPT 2015, pages 281-310, 2015], [Bitcoin Website. http://iwmw.b!icoin.org/j, and [Rafael Pass, Lior Seeman, and Abhi Shelat, Analysis of the blockchain protocol in asynchronous networks, in Jean-Sebastien Goren and Jesper Buus Nielsen, editors, Advances in Grypio!ogy™ EUROCRYPT 2017, pages 643-673, Cham, 2017. Springer International Publishing,].
[0054] Nakamoto [Bitcoin Website, http://www.bitcoin.org/] proposes a simplified payment verification (SPV) protocol to verify Bitcoin transactions with minimal trust on some full nodes. Specifically, a .client device downloads all block headers rather than the fuli blocks, which are much smaller in size. A block header contains a hash of a Merkie root that commits all transactions in the block. Therefore, after downloading all block headers in the blockchain, a client device can verify the existence of any transaction in any block, given that a prover provides a Merkie proof of size logs- hashes to the client device, in which s is the number of transactions in the block. For further details on light clients in Bitcoin see [socrates1024. The high-value-hash highway. https://bitcointalk.org/index.php?topic=98986.0, 2012].
[OOSS] FIG. 3 shows an example blockchain format. For example, the blockchain format shown i FIG. 3 can be used in Bitcoin. A biockchain 300 can comprise a plurality of blocks, for example, block 302A and block 302B. Each block can comprise a
biock header, e.g., block 302A comprises block header 304. The block header 304 can include multiple data elements, such as a previous header hash 308 and a Merkle foot 308. The previous header hash 306 can be a hash of the previous block's header. The Merkle root 308 can be a root of a Merkle tree which is a tree in whic every leaf node is labelled with the hash of a data block, for example a transaction 310-314. Each leaf of the Merkle tree can represent one of the transactions 310-314.
[0056] There are two additional solutions to SPVs proposed by Kiayias et. al,, see [Kiayias et al, Proofs of Proofs of Work with SuMnear Complexity, pages 61-78. Springer Berlin Heidelberg, Berlin, Heidelberg, 2016] and [Kiayias et al, Non-interactive proofs of proof-of-work. 20171. They propose an SPV protocol, called proofs of proof- of-work (PoPoW), which reduces the required resources of an SPV client to a
logarithmic number of blocks. The protocol is based on the observation that a certain number of luck blocks called superblocks are expected to exist in a proof-of-work (PoW) chain if it has been created honestly. A superblock is a rare block that has a PoW output value (i.e., the block ID) containing more leading zeros than the other valid blocks, and hence, can be used to show that enough work has been done when the chain containing that block was created. It can be shown that, by verifying the validity of a Iogarithmic number of superblocks, a client device can ensure the validity of the entire chain it receives from a full node with high probability. Inspired by a skip list data structure, PoPoW changes the blockchalrt structure in such a way that each block, instead of having one reference to the immediate previous block, stores multiple references to previous blocks including the superblocks.
10057] However, PoPoW requires significant modifications to the bloekchaln structure which can limit its adoption in existing bioekchaths. Moreover, the practicality of the PoPoW approach is yet to be shown , as the constant factors in the protocol's overhead seems to be large. Each transaction inclusion proof in PoPoW is increased by miog(n)log(io (n)} In size to prove that the block that contains the transaction belongs to the correct chain, where is a security parameter and where n is the number of blocks In the biockchain. Furthermore, PoPoW increases the size of each proof by a logn factor. In addition, PoPoW is interactive, meaning that the client device
has to communicate over multiple sequential rounds with the client device to obtain a validity proof. This incurs a high latency and communication cost for both the client device and the full node.
[0058] In a later work, Kiayias et. al., see [Kiayias et al, Non-interactive proofs of proof-of-work. 2017], present an attack agains PoPoW, where an adversar can double-spend bifcoins even if it controls a minority of the hashing power. They also propose a non-interactive proofs of proof-of-work (NiPoPoW) protocol that allows succinct (i.e., logarithmic-size) proofs but with the same proof complexity as in PoPoW.
[80S9] However, the PoPoW and NIPoPoW protocols are vulnerable to a bribing attack, where an attacker offers an incentive to miners in the network who will be lucky and find superblocks, in exchange for not publishing their blocks to the network. The attacker then builds a fake chain containing the superblocks of the bribed miner's superblocks and uses it to pretend possession of th Iongest chain using a valid PoPoW proof. Such an attack is possibl in any protocol that differentiates between mined blocks in a deterministic way, because the adversary knows in advance the type of blocks that it is willing to bribe. The adversary can advertise for the superblocks before the superblocks are mined and published to the network. To prove block inclusion, vector commitments can be employed as described in
hitps:/ eprtnt Jacr.org/2011 95 ,pd . R Problem De finition
[00603 Consider a blockchain protocol that grows a chain based on the longest
(i.e., most difficult} chain rule of PoW-mined blocks (see [Garay et al, The bitcosn backbone protocol; Analysis and applications. In Annual International Conference on the Theory and Applications of Cryptographic Techniques* pages 281-310. Springer, 2015]}, where honest miners eventuall agree on the chain that requires the largest combined mining power to be created. Also, consider an adversary that owns at most a one half fraction of the mining power (e.g., f < 1/2) in the verification network. As shown in Figure 1, an SPV protocol can be executed between a prover, a client device (i.e., a verifier), and a group of full nodes. The full nodes can claim to hold a valid copy
of the biockchain. An adversarial full node may store a non-valid copy of the
blockchain. The prover wants to convince the client device that a previously performed interaction is valid and has already been recorded on the blockchain. Embodiments of the invention allow the client device to verify the validity of the interaction with the help of the full nodes. Less than half of the full nodes may be controlled by the adversary, and thus collude with a malicious prover. An interaction is said to be valid if it is included in a correctly-mined block of interactions that belongs to the longest chain.
[0061] Embodiments of the invention can provide for the following security, client efficiency, and non-interactiveness properties. The security property means that the client device can accept an interaction if the interaction is valid (i.e., is an interaction included in a correctly-mined block that belongs to the longest chain with high probability). The client efficiency property means that the client can download and verify a small (e.g., sublinear) number of block headers from a full node, rather than download all block headers in the blockchain. The non-interactiveness property means that no subsequent interactions between the prover, the client, and the full nodes are needed.
[0062] To achieve the first property of security, the client device can participate in the process with the prover as well as the full nodes to obtain a proof, denoted by tx, that provides the following guarantees; 1 } proof of inclusion: the interaction is included in some correctly-mined b!ock B on a chain C; and 2) proof of chain: C is the longest (e.g., most difficult) chain agreed upon by a majority of the nodes in the verification network.
[0δ63] Given that the adversary that can control at most an / fraction of the mining power, the proof ¾ can provide the following properties: 1 ) completeness: at the end of the process, the client device can determine that the interaction is valid and 2) soundness: the adversary cannot convince the client device that the interaction is valid.
C. Overview of Embodiments of the Invention
[0064] Embodiments of the invention allow for a non-interactive SPV protocol for a client device, in embodiments of the invention, a client device can download and store a iogarithmic number of blocks using a probabiiistic verification method as well as using a structure called Merkle mountain range (MMR), see [Peter Todd. Merkle mountain range, https://github.com/opentimestamps/openiimestamps- server/biob/master/doc/merkle-mountain-range.md ]. An MMR aliows small inclusion proofs, whiie including an additive Iogarithmic factor in addition to the current inclusion proof in Bftooin and Ethereum. Embodiments of the invention use an extra hash (i.e., the MM root) in the block headers which can be added to existing blockchains (e.g., Bitcoin) via a soft-fork.
[0065] Theorem 1 : there exists a protocol that can provide the completeness and soundness properties, described above, with high probability as weil as the following performance guarantees: 1) let n denote the numbe of blocks in the longest chain, and s denote the number of interactions in the block S, nrec^ has size OQogs) and n has size 0(logn). 2) The client device can verify ntx efficiently with an 0(logs + logri) computation overhead.
[0066] Consider a prover (i.e., a full node) that wants to convince a verifier (i.e., a client device) that an interaction tx is recorded properly in some block Bx on a bSockchain of length n, where x e [1/rt], To achieve this, the prover can provide the client device with a proof of inclusion which consists of two cryptographic proofs. The proof of inclusion can include a proof of longest chain and a proof of interaction. The proof of longest chain can be that the block Bx is located at height x of the correct (i.e., longest) chain. The proof of interaction can be that the interaction tx is recorded properl in the block Bx. The client device can verify that the interaction is included in a block as well as verify that the block is in the longest chain.
[0067] To commit to the entire chain of blocks, the prover can maintain a Merkle mountain range over all blocks added to the blockchain so far. In addition to being a Merkle tree, MMR allows for efficient appends at the prover side and efficient block
inclusion verifications at the verifier side. At every block height i, the full node appends the hash of Bi_l to the most recent MMR and records the new MMR root, denoted by £„ j , in the header of Bt (see FIG. 5). As a result, each MMR root stored at every block height can be seen as a commitment by the full node to the blockchain at that specific height.
[0068] An MMR tree can allow the client device to efficiently verify any blockchain event (i.e., an interaction) with the latest block header. MMR allows all previous blocks to be efficiently committed to the latest block header in a single hash. The original Merkle tree structure can be used to achieve the same goal, however, updating the Merkle trees with new block headers as the leaves Is not efficient. The entire Merkle tree either needs to be restructured, which Is inefficient, or the system can use an "ynbalanced" tree which may yield a proof size of much larger than logn. hashes. MMR is a variant of the original Merkle tree that allows a much more efficient update process, thus the overhead for full nodes when processing blocks becomes negligible. Further, introducing MMR into current blockchain protocols only needs a mild modification.
£©089$ Given any two biockchalns of the same length, one of which is maintained by an adversary with less than on half fraction (i.e., / < 1/2) of mining power, embodiments of the invention allow client devices to determine, with high probability, which chain is valid and longer by downloading a small (i.e., logn) number of block headers from each chain. In embodiments of the invention, this can be done using a novel probabilistic verification protocol in which O(logn) block headers are downloaded by the client device from each chain and verified. Here the concept of length is used to mean the number of blocks, for ease of explanation. Below the problem can be formulated to include the concept of total difficulty, to match with the actual
implementatiori in Bitcoin and Ethereum.
[0070] Next, two phases wiSS be discussed. The first phase can be prove, while the second phase is verify. The prove phase can be an interactive protocol performed between the prover and the verifier over O logn) rounds to submit the proof of inciusion to the verifier for a given interaction tx. In some embodiments, the prove phase can be
a non-interactive protocoi to minimize latency, which is described in further detai! herein. The verify phase can be executed locally by the verifier and does not require any interaction between the prover and the verifier.
[0071] To generate a proof of longest chain, the two parties (i.e., the full node and the verifier) can participate in m - O (log n) rounds of a probabilistic biock sampling protocoi. in each round./ e [l, m], the verifier can send a random number *} to the fuii node to request k random blocks from a certain part of the fuii node's header chain. In some embodiments, the k random blocks can be k = 0(1), in other words, k can be a constant number of blocks sampled in each round. The k random blocks can be determined based on the random number η. For example, if the random number is equal to a va!ue of 0010020080 0, then the full node can select the four block headers of blocks 1, 2, 8, and 10. As another example, the random number η can be equal to a vaiue of 3469. The fuii node can select the blocks 3, 4, 6, and 9 based on the random number η. The random number η can be in any suitable format. In other
embodiments, the full node can use the random value as an input to a function. The full node can then select a number of random block headers based on the output of the function.
[0072] If any of the k blocks are invalid, then the client device can abort the process and blacklist the full node. In some embodiments, the client device can verify that it received the correct block headers based on the random number η, for example, block headers 3, 4, 6, and 9 when the random number η is 3469. Otherwise, the client device can proceed to the next round of requests. In round j, the full node can split its chain to 2 _1 equal-sized partitions. The full node can sample k headers from the last partition, i.e., from the header at height n— - - to the header at height n. For example, if it is the second round, ~ 2, and the current height of the biockchain is n ~ 100, then the full node can partition the biockchain into 22_ i = 2 partitions. The full node can sample k headers from the most recent partition, i.e., the second partition, ranging from the height 100 - ^ = 50 to the header at height n = 100.
[0073] The benefit of sampling random block headers from increasingly small partitions of the blockchaln, allow the client device to determine that the full node is not controlled by an adversary. As the partitions decrease in size, the full node selects random block headers that are more recent. In this way, the client device, upon receiving the random block headers, can verify more recent biock headers than old block headers, thus preventing adversaries from creating small falsified sidechains (e.g., at a forking point in the blockchain).
[0074] To verify each block header, the client device can receive an MMR proof from the full node and can then verif the proof using the latest MMR root, MH„:i , recorded in the header of the iast block, ¾, To obtain the last proof (i.e., that the biock has been included in the longest chain), the client device can verify an MM proof which can be obtained from the last block header of the longest chain (which is already proved). To obtain a proof that the interaction was included in some block, the client device can verify the Merkle proof provided by the full node against the root of the interaction Merkle tree included the block header. This is described in further detail below.
[0075] The intuition behind the probabilistic verification protocol is that given any two b!ockchains of the same length, one of which is maintained by an adversary with f < 1/2 fraction of the honest mining power, the probability that the adversary can mine the same number of blocks as the honest miners reduces exponentially as the valid chain grows. Thus, if the adversary has mined a certain number of valid blocks in any partition and both chains have equal lengths, the adversary must include a sufficient number of fake blocks to engthen" the malicious chain.
[0076] Addiiionaily,. in some embodiments, a Fiat-Shamir heuristic [Amos Fiat and Adi Shamir, How to prove yourself: Practical solutions to identification and signature problems. In Conference on the Theory and Application of Cryptographic- Techniques, pages 186-194, Springer, 1986.] using the random oracle assumption can make the probabilistic verification protocol non-interactive. In the non-interactive protocol, the client device no longer sends a random number in every round for the
sampling of k block headers, yet it is computationally intractable for the adversary to cheat the client device. The non-interactiveness makes the process more practical since (1 ) the full nodes can send the same proof to many client devices without any recaiculation; and (2) the client device can forward the proof to other new client devices, which can safely verify the correctness of the proof. This reduces both the computation and bandwidth overheads for client devices and full nodes.
[0077] The valid chain is the chain that requires more work to find, e.g., the highest total block difficulty. The longest chain rule is a simplified way of determining which chain is valid. In what follows, for ease of explanation, it can be assumed that each block has the same difficulty. However, it is understood that, in some
embodiments, each block can have a different difficulty.
D. System
[0078] FIG. 1 shows a system 100 comprising a number of components. The system 100 comprises a client device 102, a full node 104, and a prover 106. The client device 102 cars be jn operative communication with the full node 104 and the prover 106. in some embodiments, the client device 102 can be in operative communication with any suitable number of full nodes, for example, 1 , 2, 10, or 100 full nodes.
However, for simplicity of illustration, a certain number of components are shown in FIG. 1. It is understood, however, that embodiments of the invention may include more than one of each component.
[0079] The components in FIG. 1 may be in operative communication with each other through any suitable communication channel or communications network.
Suitable communications networks may be any one and/or the combination of the following: a direct interconnection; the Internet; a Local Area Network (LAN); a
Metropolitan Area Network {MAN}; an Operating Missions as Nodes on the Internet
(OMNI); a secured custom connection; a Wide Area Network (WAN); a wireless network (e.g., employing protocols such as, but not limstecf to a Wireless Application Protocol (WAP), l-mode, and/or the like); and/or the like. Messages between the computers, networks, and devices may be transmitted using a secure communications protocols
such as, but not limited to, File Transfer Protocol (FTP); HyperText Transfer Protocol (HTTP); Secure Hypertext Transfer Protocol (HTTPS), Secure Socket Layer (SSL), ISO (e.g., ISO 8583) and/or the like.
[0080] The client device 102 can be a device capable of communicating with a verification network, in some embodiments, the client device 102 may be operated by a resource provider, and the client device 102 may be a verifier. The client device 102 may also be capable of receiving a verification request comprising an interaction identifier from a prover 106. The client device 102 can also determine a full node 104 that holds the longest biockchain, and can verify that the interaction identifier is in a valid block in the longest biockchain using information, such as an MMR root in the latest block header, from the full node. The client device 102 can also verify that an interaction associated with the interaction identifier is valid, and can transmit a verification response to the prover 108 regarding the validity of the interaction.
[0081] The client device 102 can then perform additional processing based on the interaction. Additional processing can include performing an action or operation as indicated in the interaction and/or transferring assets, physical and digital, between the verifier and the prover as outlined in the interaction. For example, the interaction can be a transaction between a resource provider and a customer. The interaction can indicate that the customer transferred assets, physical or digital, to the resource prover. Upon verifying the interaction, as described herein, the resource prover can provide a resource, as described in the interaction, to the customer.
[0082] Any computer or device that connects to the verification network can be referred to as a node. A node that can fully verify each block and interaction in the biockchain can be a full node. The full node 104 can store the full biockchain (i.e., each block and each interaction} in a memory, and can be capable of proving that it holds the longest biockchain. The fu!S node 104 can also receive queries for a current height of the biockchain and subsequently determine and return the current height of the biockchain. In some embodiments, the full node 104 can be capable of partitioning the
biockchain into a number of partitions and can select random block headers from a particular partition.
[0083] In some embodiments, the prover 106 can be a client device operated by a user. It could be, but need not be, a full node in some embodiments. The prover 106 may transmit a verification request regarding a previously performed interaction that was stored on the biockchain to the client device 102. As an example, the prover 106 can be a user or customer that wants to provide an interaction identifier associated with a valid interaction to a resource provider operating a client device 102 in order to prove that the interaction occurred and is valid, [0084] FIG. 2 shows a block diagram of a client device 200 according to some embodiments of the invention. The exemplary client device 200 may comprise a processor 202. The processor 202 may be coupled to a non-transitory computer readable medium 204 comprising an interaction verification module 204A, a one or more output elements 206, one or more input elements 208, a network interface 210, and a secu re memory 212.
[0085] The computer readable medium 204 may comprise code, executable by the processor 202, to implement a method comprising: receiving a verification request comprising an interaction identifier; querying a full node for a random sampling of block headers from the full node; receiving the random sampling of block headers from the full node; verifying the random sampling of block headers; and determining that the biockchain maintained by the full node is valid after verifying the random sampling of block headers.
[0086] The interaction verification module 204A may comprise software code for verifying an interaction, it may comprise software code executable by the processor 202, to implement a method comprising: verifying a Merkle proof received from a prover; verifying a IVIerkle mountain range proof received from a prover; determining if an interaction identifier corresponds to a valid interaction based on verification of the Merkle proof and the Merkle mountain range proof; and transmitting a verification
response indicating whether or not the interaction identifier corresponds to the valid interaction.
[0087] The one or more output elements 206 may comprise any suitable device(s) that may output data. Examples of output elements 206 may include display screens, speakers, and data transmission devices.
[0088] The one or more input elements 208 may include any suitable device(s) capable of inputting data into the client device 200. Examples of input devices include buttons, touchscreens, touch pads, microphones, etc.
[0089] The network interface 210 may include an interface that can allow the client device 200 to communicate with external computers. The network interface 210 may enable the client device 200 to communicate data to and from another device (e.g., resource provider computer, authorization computer, etc.). Some examples of the network interface 210 may include a modem, a physical network Interface (such as an Ethernet card or other Network Interface Card (NIC)), a virtual network interface, a communications port, a Personal Computer Memory Card International Association {PCMCIA) slot and card, or the like. The wireless protocols enabled by the network interface 210 may include Wi-Fi™.
[0090] Data transferred via the network interface 210 may be in the form of signals which may be electrical, electromagnetic, optical, or any other signal capable of being received by the externa! communications interface (collectively referred to as "electronic signals" or "electronic messages"). These electronic messages that may comprise data or instructions may be provided between the network interface 210 and other devices via a communications path or channel. As noted above, any suitable communication path or channel may be used such as, for instance, a wire or cable, fiber optics, a telephone line, a cellular link, a radio frequency (RF) fink, a WA or LAN network, the Internet, or any other suitable medium.
[00913 Tr¾e secure memor 212 may store encrypted access data, key identifiers, public keys, and any othe relevant data securely. The secure memory 212 may be in the form of a secure element, a hardware security module, or any other suitable form of
secure data storage. In some embodiments, the client device 200 can store information regarding a genesis block (i.e., the first block in a blockchain).
E. Threat Model
[0092] An adversary may be present in the verification network according to embodiments of the invention. The adversary may be art adaptive (or rushing) adversary. As such, the adversary can choose which full nodes in a verification network to corrupt and which blocks to falsify in the blockchain. The mining power of the adversary can be bounded by a known fraction, e.g., /(0 < f < 1/2).
[0093] !n some embodiments, it can be assumed that the client device is connected to at least one fuii node which has the correct view of the blockchain. This assumption is equivalent to assuming that the client device is not vulnerable to eclipse attacks. Defending against such attacks is orthogonal of this work and has been done by recent papers, see [Hetlman et al, Eclipse attacks on bitcoin's peer-topeer network. In 24th USENiX Security Symposium (USENiX Security 15), pages 129-144,
Washington, DC, 2015. USENiX Association] and ervais et al, Tampering with the delivery of blocks and transactions in bitcoin. In Proceedings of the 22Nd ACM
SIGSAC Conference on Computer and Communications Security, CCS Ί5, pages 692- 705, New York, NY, USA, 2015. ACM.]. In some embodiments, it can be assumed that the adversary cannot drop or tamper with messages transmitted between the client device and full nodes. The ciient device is not assumed to know any state in the chain, except the genesis block (i.e., the first block). il. MERKLE MOUNTAIN RANGE
[0094] A data structure called a Merkfe mountain range (MMR) can be leveraged to allow a client device to verify any previous interaction using the latest block header. Merkfe trees and Merkfe mountain ranges will be discussed next.
[0095] The need to download all block headers in prior work is, in part, due to the verifications of interactions or events in all previous blocks. After the longest chain has been verified and accepted, with a few block headers downloaded, verification of an
interaction in some previous block may include verifying that the block actually belongs to the longest chain. The naive approach is to download all Intermediate block headers from the block containing the interaction to the latest block, which inherently requires downloading a linear number of block headers from the chain. However, embodiments of the invention Improve upon this by allowing for the verification of any interaction (i.e., obtain a proof 7treC(tX)) in the blockchain using the latest block header of the latest block in the blockchain.
[0096] In a first solution to achieving this, a global Merkle tree can be built on all interactions in the bSockchain, i.e., every interaction is included in the global Merkle tree, The global Merkl tree can be updated after every new block is added to the blockchain. However, such a solution requires miners to maintain all interactions on the blockchain, which the miners often do not do for performance reasons. This block verification also requires full nodes to obtain all interactions and for the full nodes to reconstruct the Merkle tree from scratch to keep the tree balanced. [0097] A Merkle tree can be a balanced binary tree where the leaves of the tree hold some value, and each non-leaf node stores a hash of a concatenation of the values of both children. In Bitcoin and Ethereum, Merkle trees are used to store transaction hashes of a particular block as the leaves, so the root of the tree is a commitment of all interactions in that block. The root is then stored in the header of the block. An SPV proof of an interaction is then the Merkle proof that the hash of the interaction is a leaf in the Merkle tree. Merkie trees and the security of a Merkle proof is discussed as this will extend to a IVIerkie mountain range. An MR allows ail previous blocks to be efficiently committed to the latest block header sn a single hash. MMR is a variant of the original Merkle tree that allows a much more efficient update process, thus the overhead for full nodes when processing blocks becomes negligible. Further,
Introducing Mlv R only requires a mild modification to the current Bitcoin and Ethereum protocol.
[0098] A Merkle tree can be defined as a balanced binary tree where the leaves have some value, and each non-leaf node holds the value (teft
where H is a collision-resistant hash function. A balanced binary tree means a tree with n leaves has a depth of 0(log2 n).
[0099] Given a Merkie tree MT} with a root r, a Merkie proof that k i a node in the Merkie tree MT can be ¾eMT« The Merkie proof »,<·,· is a path from the root r to the node k and the siblings of each node in the path. Since the Merkie tree MT has a depth of Q(logn), the proof has size 0(logn).
[0100] A prover verifier model, is defined below, where a verifier knows the root of a Merkje tree and the prover wants to prove to the verifier that a particular node exists in the tree. First, the verifier has access to a root r of some Merkie tree MT. The prover has access to the Merkie tre MT and can send a Merkie proof path of some k e MT ~ fl'kGMr i0 the verifier. The verifier can check that the root r is the first value in the proof (i.e. that the verifier was given a proof for the Meifcie tree MT), and that the hash of the two nodes at each level i the path (i.e., the hash of a node in the path with the node's sibling node) equate the value of one of the nodes of the previous level. If the Merkie proof is verified to be valid, the verifier can accept the proof, otherwise the verifier can reject the proof.
[0101] Theorem 2. Given a Merkie tree MT, a polynomial-time adversary cannot produce a valid Merkie proof f! &iTi for a node k not in the Merkie tree MT. valid erkSe proof means that an honest verifier wi Si accept it. This can be referred to as the soundness of Merkie proofs. As a proof, assume that the adversary can produce a valid Merkie proof ¾e,¾r. Let r be the root of Merkie- tree MT, the Merkie proof ¾eMT starts with the root r, if it does not, the verifier can reject the Merkie proof. Since k g MT (i.e., the node k is not in the Merkie tree MT), the path the adversary gives must have some initial depth i at which the path differs from any true path in the Merkie tree MT. [0102] Let pi be a node in a path at levei i and s be its sibling, and let ρ(· and s(- be the true nodes in the path in in the Merkie tree MT where x— pt $ <¾ o ~ $( }{ t such that H(x) = pt... , . In order for the verifier to accept the Merkie proof fik T, x' must equal p- II s- or s(' I p such that pf_x ~ (x'). Since the sets {ρ£, 5έ} and {ρ-, s }
differ by af least one value as stated above, x≠x', therefore the adversary found a collision of H(±).
[0103] Theorem 3. Given a Merkle tree MT, and a node k e MT, a polynomial- time adversary cannot generate a Merkle proof ¾eMT that is not a true path in the Merkle tree MT. This is referred to as the completeness of Merkle proofs. As a proof, similar to the proof of soundness above, if there is some point in the path differentiates from a true path in the Merkle tree MT, in order for it to be valid, the adversary must have found a hash collision.
[01043 A more efficient solution leverages the recently introduced data structure caiied a Merkle mountain range (MMR), see [Peter Todd. Merkle mountain range.
https.7/github.com/opentimestamps/opentimestamps-server/blob/master/doc/merkle- mountain-range.md], to commit to ail previous block headers in the latest block. Having this commitment ailows a client device to efficiently verify if a previous block belongs to the longest chain based on the latest block header of the blockchain. Thus, the full node can prove that an interaction was included in the longest chain by providing an MfVIR proof (to prove that a btock belongs to the longest chain), in addition to the current Merkle proof (which shows that the interaction is included in said block). Next, an explanation of how .MMR. works and why it is better than a standard Merkle tree will be discussed, [01 OS] MMR is a variant of a Merkle tree that allows for efficient appending of new data entries. MMR allows for the tree to be reasonably balanced even when new data entries are appended dynamically without rebuilding the entire tree from scratch. Specifically, MMR appends a new data entry by modifying a few nodes of the existing tree and still bounds the Merkle proofs length for any data entry sitting on a leaf by logn, wherein n is the number of leaves in the tree.
[0108] A Merkle mountain range M, can be defined as a binary hash tree with n leaves, a root r, and the following properties: 1) M is a hash tree; 2) has depth flogs n); and 3} if n > l, let n ~ 2!' + j for the maximum integer i such that 2i < n, wherein r. left is an MMR with 2i leaves and wherein r, right is an MMR with / leaves.
The Merkie mountain range M is a balanced binar hash tree, i.e., M is a Merkie tree. Therefore, for ail nodes k e M, 3 nk M7,
[0107] Appending new nodes to an MMR will now be discussed. Theorem 4. Given an MMR , with root r and n leaves,, a function AppendLeaf if, x) can return an MMR M with n + 1 leaves (the n ieaves of M plus a new leaf x added as the right-most leaf). An induction proof, following, includes a base case of n ~ 1 and an induction step. In the base case (n ~ 1), M is a single node r with depth 0. r. children™ 0, so the function AppendLeaf can return a new node with 'left ~ r and right ~ x. and value - (x\\r). This Is a balanced binary hash tree with 2 Ieaves and depth 1 = lcg2 2 in the inductio step, assume the theorem holds for all with < n Ieaves. Let M be an MMR with n Ieaves and root r, AppendLeaf (r, x) will return the following:
[0108] s) if n - 2l for some i e AppendLeaf returns a new node r with left = r, right ~. x, and value - f(rj jx). M' is the new tree with the three properties of an MMR. The three properties being: 1) since M is a hash tree, Af is also a hash tree; 2} Since the depth of - log2 n, the depth of ' = log2 n - 1 ·-·-·-·· flog2(n + 1)1; and 3) n' - 2* + i, r left = - an MMR with «' = 2* ieaves, and r', right = # - an MMR with 1 leaf. The Ieaves of Mf are the ieaves of M plus x added as the new right-most leaf.
[0109] ii) Otherwise, 3tj € such that n ~ maXi 2,f ··{· /, AppendLeaf returns r with rJe £ the same, and rigkt ~ AppendLea '(r. rigkt, x), and value = H(rJeft I r.rigkt). M' is the new tree with the following MMR conditions satisfied. (1 and 3) r left is an MMR by definition with tl leaves, r', right is an MMR by the induction hypothesis with + 1 Ieaves, thus M' is a hash tree. (2) has depth g2 2 = ί≥ j, thus M' has depth / + 1 - flog2(n + l)]. The leaves of M! are the leaves of r' left - r eft, then the Ieaves of r', right which by the induction hypothesis will be the original leaves of r, right pius x on the right-most side.
[0110] Protocol 1 , below, shows an example AppendLeaf(rf x) function that can append a new data entry (i.e., x) to an existing MMR (i.e., r). Protocol 1 -
AppendLeaf (M M R root r, new leaf node x):
1 : if r children a power of 2 then root— Node
3: return root
4: eise
5: right— Appendle f(r, right, x)
6: r. value = H(r. left\ \r. right)
7: r. children + +
8: return r
9: end if [0111] FIG. 4 shows an example of updating a MIVIR tree when new data entries are appended as ne leaves of the tree. FIG. 4 includes a first Merkie mountain range 402, a second Merkie mountain range 404, and a third Merkie mountain range 408, The white nodes can foe either new nodes or nodes that are changed due to a new data entry, such as a new block header being appended as described herein. The black nodes can be nodes that are not changed, SvlSvlR guarantees that for every update, log n nodes are either created or modified.
[0 12] The first Merkie mountain range 402 includes a first Merkie mountain range root rO, a first block header L0, and a second block header L1. The first block header 10 and the second biock header L1 can be hashed together to determine the first Merkie mountain range root rO,
[0113] A third biock header L2, corresponding to a new. third block that is added to the biockchain, can be appended to the Merkie mountain range. Specifically, the third biock header L2 is appended to the first Merkie mountain range 402 resulting in the second Merkie mountain range 404. The second Merkie mountain range 404 can tnciude the first block header 10, the second block header L1 , and the third block header L2. The first block header L0 and the second block header L1 are not altered
when appending the third biock header L2. Due to this, the hash of the first block header L0 and the second block header L1 s the same in the first Merkle mountain range 402 and the second Merkle mountain range 404. The first block header L0 and the second block header L1 can be hashed together, resulting in an intermediate value (that can be equivalent to the first Merkle mountain range root rO). The intermediate value and the third block header 12 can be hashed together, resulting in the second Merkle mountain range root r1.
[0114] A fourth block header L3, corresponding to a new, fourth biock that is added to the iockchain, can be appended to the Merkle mountain range. Specifically, the fourth block header L3 can be appended to the second Merkle mountain range 404, resulting in the third Merkle mountain range 406. The third Merkle mountain range 406 can include the first block header L0, the second block header L1 , the third block header L2, and the fourth block header L3. The first block header L0, the second block header L , and the third block header L2 are not altered when appending the fourth biock header L3. Due to this, the hash of the first block header 10 and the second block header 11 is the same in the first Merkle mountain range 402, the second Merkle mountain range 404, and the third Merkle mountain range 406. The first block header L0 and the second block header 11 can be hashed together, resulting in a first intermediate value (that can be equivalent to the first Merkle mountain range root rO). Similarly, the third biock header L2 and the fourth block header L3 can be hashed together, resulting in a second intermediate value. The first intermediate value and the second intermediate value can be hashed together, resulting in the third Merkle mountain range root r2. Any suitable number of block headers can be appended to the Merkle mountain range in this manner. [0115] FIG. 4 aiso includes a Iarger Merkle mountain range 408. The iarger Merkie mountain range 408 can be created as new block headers are appended to the third Merkle mountai range 406. The iarger Merkle mountain range 408 ca be viewed as comprising three smaller Merkle mountain ranges 408A, 4088, and 4Q8C. As an example, the next block header that is appended to the iarger IVlerkie mountain range 408 can be appended to the smailer Merk!e mountain range 408C. The three nodes in
408C can be appended similar to how the first third block header L2 is appended to the first Merkle mountain rartge 402 resulting in the second Merkle mountain range 404.
[01 IS] A set of M s can be defineel as M ~ {M-i, M2, * .■ > Mn} created from some list f¾f ¾. <«.,xn}f where M, is a single node with vaiue and r(- is the root node of an i leaf MMR, Μέ = AppendLeaf(ri-.r, xi ), A feature of the way MMRs are constructed Is that, assuming al! A¾ *S are unique, each Af{ has a unique root (otherwise there would be a hash collision), and given the Merkle proof that some xk is in Mn for k < ft, ¾rfc6M a verifier can regenerate rk and that Mk is an ancestor of Mn (i.e. , Mn was created from n ~- k appends to Mk). [0117J This can be proved in the following theorem. Theorem 5. For k ≤ n, given an MMR proof i" fee<wn = > the MIVfR proof that leaf ½ is in n, a verifier can regenerate ?¾, the root of Mk. An induction proof, following, includes a base case of a - 1 and an induction step. In the base case (n ~ 1), Ai{ - Node(xi}" t ftXk n ~ iril- 'n the induction step, assume the theorem holds for ail Mm, m < n and k ≤ m. Given Mn , any k and 7fcew ~ [rWf rn. left, rn. right, . ], if fe ~ n then r¾ ~ ¾. Otherwise, let i be the maximum integer such that n - 2' + / where / > 0. There can be three possibilities; 1) k ~ 2',
fe < 2* , thus xk is in the left subtree of Mn . Let n' - 2' and ?y— r„. left, we get that ~ ^xkmn— [r r . i^/ii]. Since ' < ft, by the induction hypothesis we can get τ¾ from ¾,eM , . 3} fe > 2*, thus ¾ is in the right subtree of Hn. Since fe < n and t is the maximum integer such that n ~ 2l + j for some > 0, Ϊ is also the maximum integer such that k - + ./" for some f > 0. Thus rk, left - ¾. left. Note rn.right is the MMR Mj where fe is the fe'— fe - 2i - tft leaf. Thus, rk, right - Mk> and flx , f - - r»- · By the induction hypothesis ry can be extracted from Ώχ , Mj. The verifier can hash the left and right roots to get the value of rk,
[0118] Unlike classical Merkle trees, MMR's additionally give the ability to prove that an MMR is the previous version of another MMR with a short proof. That is, given
the k-i MMR and the nth MMR, a prover can give a proof of size (iog(n)) that convinces a verifier of this fact while the verifier's state is k, n and the root of the &~th and n-th s. This property is formalized below in Lemma 1 ,
[0119] Lemma 1 (MMR inclusion proof). Given a list of n MMRs which are consecutively built based on a list of « numbers, one can prove that any fc-MMR (0 < fe < n) is a precedent of the n-M with a proof of size £>{logw) .
[0120] A new biock header, according to embodiments of the invention, can contain a data field for an MMR root, or the root of the MMR free that commits the headers of all previous blocks. A fuli node, upon receiving a. new block, can conduct one additional check on the validity of the MMR root. This entails a negligible overhead on the full node.
[0121] FIG. 5 shows a blockchain structure according to embodiments of the invention. An MMR root M¾ 502 can represent the Safest MMR root that is included in the latest biock header (not shown) at the chain head 508, A Merkle mountain range 504 can comprise a number of leaves. Each leaf of the Merkle mountain ra ge 504 can be a block header 508, In FIG, 5, the SVIerk!e mountain range 504 includes three block headers, however, it is understood that the Merkle mountain range 504 can include any suitable number of block headers 506, such as 5 biock headers, 10 block headers, 100 biock headers, 1 ,000 block headers, or 100,000 block headers. [0122] The block headers 506 include a plurality of biock headers associated with, a plurality of blocks. Each of the block headers 506 can comprise a MM root 510, a Merkle root 512, a previous hash 518, a nonce 520, and a timestamp 522. The chain head 508 can be the block header 506 that is associated with the latest biock. The block header at the chain head 508 can be the iatest block header (not shown). The nonce 520 can be used to calculate if the previous hash 513 contains a string of leading zeros such that it is iower than a difficulty value. The Merkle root 512, the nonce 520, the previous hash 518, and the timestamp 522 can be inputs to a hash function. In some embodiments, the MMR roof 510 can also be an input to the hash function. The output of the hash function is valid if the output is less than or equal to a difficulty value.
if the resulting previous hash 518 is Sower than the difficulty value, then the block is a valid block. The timestamp 522 can be a sequence of characters or encoded information identifying when a certain even occurred, such as when a block is created and added to the blockchain. [0123] The M R root 510 can be an MMR root of the MMR that commits the block headers of ail of the previous blocks. For example, the MMR root at the chain head 508 (i.e., Mn) can be the MMR root of the MMR that commits the first block header, the second block header, and the third block header. The Merkle root 512 can be a root of a Merkle tree 514 which is a tree, as described herein, in which every leaf node Is labelled with the hash of an interaction 516. Each leaf of the fvlerkte tree can represent an interaction 516. The interaction 516 can be associated with an interaction identifier. The interaction 516 can be any suitable interaction. For example, a suitable interaction can be a transaction, an agreement, a communication, or any other suitable interaction as described herein. As an example, the interaction 516 can be a
transaction that can include information such as the parties involved, a list of transaction inputs, a list of transaction outputs, a fee, a timestamp, a transaction identifier, and/or the like. As another example, an interaction can be an agreement that can include information such as the parties involved, details of the agreement (e.g., text), a digital signature of each party involved, a timestamp, a fee, and/or the like. III, P OBABiLiSTiC VERIFICATION OF NON-MALICIOUS FULL NODE
[0124] In order to reduce the number of block headers that client devices need to download, embodiments of the invention can employ a probabilistic verification mechanism by which a client device can randomly sample a logarithmic number of block headers, !f these block headers are valid, then the block B belongs to the longest chain with high probability. The client device can determine which block headers to sample to prevent the adversary from sampling fake blocks. The probabilistic verification allows for the client device to detect at least one fake block with high probability, if there is a known fraction fb of blocks are fake, after randomly sampling enough number of blocks.
A. Naive Approach
[0125] if the Sanger chain was created by a cheating prover and the cheating prover was able to pass an initial fact check, such as verifying a predetermined number of the most recent blocks, then the client device can conclude that the latest possible forking point was on or before height wherein L is the predetermined number of the most recent blocks and c is the malicious, full node's fraction of the total mining power. Given that fb is established, probabiiistic verification can be conducted to detect at least one fake block in an invalid chain with high probability. Specifically, by randomly sampling K blocks from the invalid chain, the probability that all sampled blocks are valid blocks is (1 - fb f. Hence, the probability that at least one invalid block is sampled is:
1 - (I - /*)*
[0126] This probability approaches 1 quickly as K grows. Note that a client device can check if a sampled block belongs to the committed chain (i.e., on the same chain with the L blocks in the initial fact check step) based on the MMR commitment in the last block.
[0127] To evaluate the performance of the naive approach, the client device can minimize the sum L + K, i.e., the total number of blocks to download,
is the minimum value of L + K that still gives the client device a high probability guarantee. For example, given the Ethereum blockchain with 4,000,000 blocks, one needs to download 18,000 block headers and their proofs to verify if they are on the correct chain. Given that each block header is of size 500 bytes and its proof is of size 7,000 bytes {logn SH 2 hashes), the total data required to download is still significant (i.e., 120 MB) to client devices, B. Approach According to Embodiments of the Invention
[0128] Although the naive approach significantly reduces the number of block headers to download, it still requires a large number of block headers. A goal is to
reduce the number of block headers download by the client device to a much smaller value, for example 0{logri). block headers, it can now be shown that this is possible by recursively sampling more and more block headers, by a client device, from different intervals of the blockchain maintained by a full node. The goal is to ensure that in each interval of the chain a cheating prover {i.e., a malicious full node) would have to at least create a fraction of the blocks. However, if this fraction is larger than the fraction of the mining power the malicious fuil node controls then producing these blocks will take longer than the honest network will take to create the blocks. This ensures that the honest network creates the blocks before the malicious full node [0129] If the longest chain was created by a malicious full node and the malicious full node was able to pass the initial fact check, then the client device can determine that the latest possible forking point was on or before height -. The malicious full node will be unable to include any honest chain's blocks in its own btockchain (other than the genesis block). This can be done by iteratively pushing back the latest block the rnaiicious full node could have forked off of.
[0130] In some embodiments, the method defines a fraction k such that k > c. The verifier can sample random blocks out of the first - blocks to ensure that either a c
cheating prover will be caught or that the cheating prover had to create at least a fraction of k them honestly. The verifier can sample a constant number of blocks.
Concretely, to ensure that with probability 1 - 2~λ at least a k fraction of the blocks were created, the prover can sampie Hogfe(2) - M random blocks. For each block, the verifier verifies that the block's MMR is correctly included in the header's MMR and that the proof of work meets the difficulty value, as described herein.
[0131] Assuming that the malicious node created a k fraction of the first - blocks but had a c fraction of the mining power it can be determined that that it took the
L-fe L
malicious full node— > - honest chain block intervals to do this. This, however,
c2 c
L-k implies that the latest possible forking point from the honest chain was at H - This
process can be repeated m times to ensure that the forking point was before H— - · km
- untii it can be ensured that the forking point had to be before the genesis block.
This is a contradiction as the genesis block is committed to in the header's MMR and also because the main chain only exists from the genesis block on. Thus, it is not possible for the malicious node to create blocks that occur before the genesis block.
H-c I°g2(-J-)
Note that this will take log¾(— ) = jj— = O(log(H)) iterations. In each iteration,
~ L l°g2(-)
a constant number of MM proof venfications can be performed as weil as a constant number of difficulty checks. Since the MMR proof verifications are 0(log(H)) in size the asymptotic communication complexity of the protocol is O(logfH)2). [0132] Next, the source of randomness wili be discussed. Since the probabilistic verification uses randomness for sampling, one solution is for the client device to send the randomness to the full node. The full node can then use the randomness to sample K blocks and send them back to the client device. This prevents the full node from biasing the sampled blocks and avoiding the detection of invalid blocks. However, this mechanism requires interaction between the client device and the full node. Further, the client device and the full node cannot forward the proof to other client devices as the client device and the full node cannot prove that the randomness is actually random. The mechanism to make embodiments of the invention non-interactive, i.e., removing the randomness exchange step between the client device and the full node, will be discussed in further detail beiow.
1. Probabilistic Sampling
[0133] Recall that in the probabilistic sampling model the verifier requests the MMR proof for & random block headers in the blockchain from a full node. The full node can successivel partition the. blockchain in half and queries another random k block headers from the partition that includes the latest block header. The verifier does this until the size of the partition is at most k (i.e., queries all of the last k blocks). The adversary's computing power is less tha the honest network's computing power
therefore in order to fool the verifier that the malicious full node has a biockchain equal length to an honest full node's biockchain, the malicious full node must insert bad blocks into their chain, Le., blocks without proper proofs work. 0134] Theorem 8. The probability the verifier fails (i.e. does not sample any bad block) is Proof. Let n be the length of the chain and c be the fraction of computing power of the adversary relative to the honest computing power. At any round i in the protocol, the verifier can sample block headers from block to block n in the biockchain. Let h. be the number of bad blocks the adversary has in the interval. Thus the probability the verifier fai is to sample a bad block in round is Pr[fail] - i The probability the verifier fails is then Pr[fail] =
Π¾?Η i- Since each is < 1, if one Ρέ is small, then the probability of failure is small.
£0135] Let a be the point at which the adversary forks from the mainchain, there is some i such that ~ < a < ~ -r ~~™, In other words, there is some sampled interval of size ~ in the protocol where the adversary's forking point lies between the start of the interval and the midpoint of the interval. Let t be the length from a to n, i.e. the length Of the adversary's fork, l > ~ The number of bad blocks in the interval, ht =
(1 ~ c)l≥ (i ~c)™. Thus, the probability that the verifier fails to catch the adversary is at most the probability the verifier fails at step i, i.e., Pr[fail]≤ Pr[fail at i] <
( f ' ft)* ~ (— ) . Note if I≤ kt the verifier will sample all the adversary's bad blocks and Pr[f ail] - 0.
2. Method
[0136] FiG. 6 shows a flowchart of a longest chain verification method according to an embodiment of the invention. The method illustrated in FIG. 8 will be described in the context of a client device determining a fuli node, that maintains the longest
biockchain, out of a plurality of fuli nodes. Although the steps are illustrated in a specific order, it is understood that embodiments of the invention may include methods that have the steps in different orders. In addition, steps may be omitted or added and may still be within embodiments of the invention. [0137] Before step S602, the client device can receive a verification request from a prover, such as a fuli node or another client device. The verification request can comprise an interaction identifier and, in some embodiments, a Merkie proof associated with the interaction identifier. The interaction identifier can be a unique identifier for an interaction. The interaction identifier (ID) can be, for example, a string of alphanumeric characters, a randomly assigned number, a sequentially assigned number, values corresponding to an interaction, a combination thereof, and/or the iike. The Merkie proof can inciu fe a path from a Merkie root of a Merkie tree of interactions to a node associated with the interaction identifier as well as sibiings of each node in the path, as describee! herein, in some embodiments, the verification request can further comprise a Merkie mountain range proof including a path from a Merkie mountain range root to a leaf node associated with a■ block header containing the Merkie tree as weii as siblings of each node in the path, as described herein.
[0138] A Merkie tree 1000 is shown in FIG. 10. The Merkie tree 1000 can comprise a number of leaf nodes such as A, B, C, D, E, F, G, and H. A Merkie proof for an interaction identifier associated with the leaf node E can include a path from the Merkie root ABCDEFG to the leaf node E including the nodes ABCDEFG, EFGH, EF, and E (shown in as the boided nodes and connection lines in FIG. 10). The Merkie proof can also include the sibling nodes of the nodes in the path. In this example, the sibling nodes include the nodes ABCD, GH, and F (indicated in FIG. 10 by dashed lines).
[0139] After receiving the verification request from a prover, the client device can determine a full node that has the longest chain on the biockchain. To determine which full node of a plurality of full nodes has the longest chain, the client device can perform the following steps.
[0140] At step S6025 the client device can query the plurality of full nodes for current heights of the blockchains maintained by the full nodes. The client device can request the current height of the blockchain n from any suitable number of full nodes in the verification network. The current height of the blockchain n can be the current number of blocks in the blockchain (e.g., 100 blocks, 500 blocks, 1000 blocks, 10,000 blocks, or any other suitable number of blocks). A height of a blockchain can also be referred to as the length of the blockchain. In some embodiments, the client device may query every full node in communication range of the client device. In other
embodiments, the client device can query a predetermined number of full nodes, for example, 10 full nodes, 100 ful nodes, 500 full nodes, 1000 full nodes, or any suitable number of full nodes. The current height of the blockchain n may be different at each full node. A malicious full node can arbitrarily choose the current height of the blockchain n.
[0141] At ste S604, after querying the plurality of fuli nodes for the current height of the blockchain n, the client device can receive a plurality of current heights of the blockchain from the full nodes.
[0142] At step S608, the client device can determine a full node from among the plurality of fuli nodes. The client device can determine which full node reported the correct current height of the blockchain «. In some embodiments, more than one full node may have reported the correct current height of the blockchain n. To determine the correct current height of the blockchain n, the client device can determine a most frequent height of the plurality of current heights. For example, the client device can receive 10 values for the current height of the blockchain « from ten different full nodes, 7 of which can be equal to a height of n ~ 100, 1 of which can be equal to a height of n ~ 95, and 2 of which can be equal to a height of « ~ 101. The client device can determine the most frequent height to be n ~ 100. After determining the most frequent height, the client device can select a fuil node of the plurality of fuil nodes that reported the current height comparable to the most frequent height, i.e., a full node with a current height of n = 100.
[0143] At step S608, after determining the fu!i node, the client device can query the full node for a random sampling of block headers. The query can include a random number η and a round number. The random number η can be any suitable random number. The round number can correspond to the number of times the client device has requested the random sampling of block headers from the full node. The round number can be any suitable integer. For example, the round number can be 1 for the first time that the client device transmits a request to the full node. The full node can determine the random sampling of block headers, as described herein, and transmit the random sampling of block headers to the client device. In some embodiments, after the full node receives the query for the random sampling of block headers, the full node can partition the blockchain maintained by the full node into an equally sized number of partitions based on the round number. The full node can then select the random sampling of block headers from a most recent partition based on the random number, and then transmit the random sampling of block headers to the client device. The partitioning of the blockchain is described in further detail below.
[0144] At step S610, the client device can receive the random sampling of block headers from the full node. In some embodiments, the client device can receive a plurality of Merkie mountain range proofs from the full node. The random sampling of block headers can be determined by the full node as described herein. Each MMR proof of the plurality of MMR proofs can be include a path from a Merkie mountain range root to a node in the MMR associated with one of the block headers of the random sampling of block headers, as well as include a sibling node of each node in the path.
[0145] For example, in reference to the third Merkie mountain range 406 of FIG. 4, the client device can receive a block header of a fourth block in the blockchain (i.e., the fourth block header L3) as a part of the random sampling of block headers. The client device can also receive an MMR proof for the fourth block header L3 that includes a path from the MM root r2 to the fourth block header L3. The path can include each of the white nodes in the third Merkie mountain range 406 of FIG. 4; this includes the MMR root r2, 12 (i.e., the hash of the third block header L2 and the fourth block header
13), as well as the fourth block header L3. The MMR proof also Includes the sibling node to each node in the path. The MMR root r2 does not have a sibling node, as it is the root of the third Merkle mountain range 406. The sibling node of 12 (i.e., the hash of the third block header L2 and the fourth block header L3 is 11 (i.e., the hash of the first block header L0 and the second block header L1. The sibling node of the fourth block header L3 is the third block header L2. In the example of the third Merkle mountain range 406 in FIG. 4, the client device receives each node in the third Merkle mountain range 406 except the two nodes of the first block header L0 and the second block header 11. 01463 At step S612, after receiving the random sampling of block headers from the full node, the client device can verify the block headers. In some embodiments, the client device can verify the block headers by verifying the validity of the previous hash value and the nonce (e.g., the PoW solution) of each block header, as described herein. The nonce can be used to calculate if the previous hash contains a string of leading zeros such that it is lower than a difficulty value. If the resulting previous hash is lower than the difficulty value, then the client device can determine that the block header is a valid block header. The Merkle root, the nonce, the previous hash, and the timestamp included in the block header can be inputs to a hash function. In some embodiments, the MMR root can also foe an input to the hash function. The output of the hash function is valid if the output Is less than or equal to a difficulty value.
[01473 At step S814, after verifying the validity of the PoW of each block header of the random sampling of block headers, the client device can verify the validity of the MMR proof for each block header. The client device can verify that each node in the path with two child nodes is equal to the hash of that node's two child nodes. For example, the client device can verif that the node 12 is equal to the hash of both the third block header L2 and the fourth block header L3. The client device can also verify that the MMR root r2 is equal to the hash of M and I2. In this way, the client device verifies that each block header of the random sampling of block headers is in the blockchain at the full node. The client device can also verify that the start of the path in the MMR proof is the MMR root in the latest block header.
[0148] At step S618, the client device can determine if all of the block headers of the plurality of random block headers and the plurality of Svlerkie mountain range proofs are valid. If any one of the block headers or the Mer le mountain range proofs is not valid, then the client device can perform steps S608 to S616 again with a different full node, for example, with a second full node, in some embodiments, the client device can add the full node to a stored list of malicious full nodes, for example by adding an IP address, or other full node identifier, of the malicious full node to a list. The client device can determine not to communicate with full nodes that are in the list of malicious fuli nodes. [0143] if the biock headers and the erkle mountain range proofs are valid, then the client device can proceed to step S618. At step S618, the client device can determine if the round number is equal to a predetermined number of rounds. The predetermined number of rounds can be any suitable integer. In some embodiments, the predetermined number of rounds can be log n rounds, as described herein, wherein n is the current height of the blockchain. If the round number is less than the
predetermined number of rounds, the client device can proceed to step S620. if the round number is equal to the predetermined number of rounds, the client device can proceed to step S622.
[01 SO] At step S620, th client device can update the round number. For example, if the round number is equal to 1 , then the client device can update the round number to be equal to 2. The client device can then perform steps S608 to S618 again.
[01-51] At step S622, after determining that the round number is equal to the predetermined number of rounds, the client device can determine that the full node has the iongest chain, as the client device has verified block headers during each round with the full node.
[0152] FIG. 7 shows a flowchart of a iongest chain verification method performed by a full node according to art embodiment of the invention. The method illustrated in FIG. 7 will be described in the context of a full node receiving queries from a client device, it is understood, however, that the invention can be applied to other
circumstances such as a fuil node proving that it hoids the longest blockchain. Although the steps are illustrated in a specific order, it is understood that embodiments of the invention may include methods that have the steps in different orders. In addition, steps may be omitted or added and may still be within embodiments of the invention. [01 S3] At step S702, the full node can receive a query for the current height of the blockchain n from a client device. At step S704, after receiving the query for the current height of the blockchain n, the fu!i node can determine the current height of the blockchain n. The full node can determine the current height of the blockchain n in any suitable manner. For example, the full node can determine the number of blocks in the blockchain. In some embodiments, the full node can determine the number of block headers in the b!ockchairt
[0154] At step S7G6, after determining the current height of the blockchain n, the full node can transmit the current height of the blockchain n to the client device. The client device, after receiving the current height of the blockchain n, can then determine that the current height of the blockchain reported by the fui! node is comparable to the most frequent height of a plurality of heights received by the client device from a plurality of full nodes.
[0155] At step S7G8, the fuH node can receive a query, from the client device, for a random sampling of block headers. The query can include a random number. In some embodiments, the query can include a random number and a round number (i.e., an iteration number). At step S710, the full node can partition the blockchain into a number of partitions based on how many queries for the random sampling of block headers have been received, in some embodiments, the full node can partition the biockchain into a numbef of partitions based on the round number received by the client device. Each partition of the biockchain can contain the same number of blocks, for example, three partitions each including 10 blocks. In some embodiments, each partition of the blockchain can contain a comparable number of blocks, for example, a first partition including 100 blocks and a second partition including 101 blocks. If the
round number is equal to 1 , for example, the full node can partition the b ckchain into 1 partition, i.e., the partition will include the full bbckchain.
[0156] At step S712, after partitioning the bbckchain into a number of partitions, the full node can select a plurality of random block headers from the last partition. The last partition can be the partition that includes the latest block header. The plurality of random block headers can comprise any suitable number of random block headers. The full node can determine the number of random block headers based on the random number received from the client device. For example, if the random number is equal to a value of 7, then the full node can select 7 random block headers. In other
embodiments, the full node can use the random value as an input to a function. The full node can then select a number of random block headers based on the output of the function.
[0157] If the round number is equal to 5 and the current height of the bbckchain is n— 300, for example, then the full node can partition the bbckchain into 5 partitions, each of the 5 partitions including 60 blocks. The full node can select a plurality of random foiock headers from the last partition of 60 blocks. In the next round, the round number will be equal to 8. During this round, the full node can partition the bbckchain into 8 partitions, each of the 6 partitions including 50 blocks. The full node can then select a pluralit of random block headers from the last partition of 50 blocks. In a certain round (e.g., a final round), the last partition of blocks will include the same number of blocks that the full node is selecting as the random block headers. Due to this, the full node will select the most recent number of block headers, including the latest block header. This method of random sampling allows the full node to select and transmit random block headers to the client device as well as the most recent number of block headers, including the latest block header.
[0158] In each subsequent round (i.e., iteration), the full node samples from a smaller and more recent partition of the bbckchain. An adversary (i.e., malicious full node) could falsify chain of blocks by creating a fork from the longest chain. The more blocks that the adversary includes in the falsified chain requires more computing power.
An adversary may not have large amounts of computing power, and may only be able to falsify shorter chains. These shorter chains will have forks closer to the latest block in the blockchain. As such, the iterative random block header sampling, described herein, allows the client device to verify an increasing number of newer block headers as the partition decreases Irs size over each iteration. In this way, the client device is likely to catch a falsified shorter chain. During the last round, the client device can receive and verify the most recent number of block headers.
[0159] At step S714, the full node can determine a plurality of Merkle mountain range proofs, one MMR proof for each of the random block headers. The full node can determine each node in the MMR that is in a path from the MMR root to the random block header. The path can include each node that is between the MMR root and the random block header in the MMR. The MMR proof can also include the sibling node of each of the nodes in the path. The full node can determine each sibling node of each node in the path in the MMR. The full node can include the path and the sibling nodes in the MMR proof.
[0160] At step S716, after determining the plurality of Merkle mountain range proofs, the full node can transmit the plurality of random block headers and the plurality of Merkle mountain range proofs to the client device. At step S718, the full node can determine if another query has been received. The full node can receive another query for a random sampling of block headers. This next query can include a round number equal to a value of 1 larger than the previous round number. The full node can repeat steps S708 to S716 any suitable number of times, as described herein. If the full node does not receive another query for a random sampling of block headers, then the full node can end the process. [0161] FIG. 8 shows a flowchart of an interaction verification method according to an embodiment of the invention. The method illustrated in FIG. 8 will be described in the context of a client device receiving a verification request from a prover and proceeding to determine that an interaction is valid. It is understood, however, that the invention can be applied to other circumstances (e.g., verifying that an interaction such
as an agreement, contract, transaction, or the like is valid, etc.). Although the steps are illustrated in a specific order, it is understood that embodiments of the invention may include methods that have the steps in different orders. In addition, steps may be omitted or added and may still be within embodiments of the invention. [0162 At step S802, the client device can receive a verification request. The verification reqyest can be received from a prover. In some embodiments, the prover can a full node, in other embodiments, the prover can be a client device. The verification request can comprise an interaction identifier and, in some embodiments, a Merkle proof and a Merkle mountain range proof. The interaction identifier can be a unique identifier for an interaction. The interaction identifier (ID) can be, for example, a string of alphanumeric characters, a randomly assigned number, a sequentially assigned number, values corresponding to an interaction, a combination thereof, and/or the like. The Merkle proof can include a path from a Merkle root to a node associated with the interaction identifier as well as siblings of eac node in the path, as described herein. The Merkie mountain range proof can include a path from a IVIerkie mountain range root to a node associated with a block header containing the Merkle tree as well as siblings of each node in the path, as described herein.
[0163] In some embodiments, the verification request can include a Merkle proof comprising a first path and a first plurality of sibling nodes. The first path can include a first plurality of nodes in a Merkie tree from a Merkle root to a first node. The first node can be associated with the interaction identifier. The verification request can also include a Merkle mountain range proof comprising a second path and a second plurality of sibling nodes. The second path can include a second plurality of nodes in a Merkle mountain range from a Merkle mountain range root to a second node. The second node can be associated with a block header containing the interaction identifier.
[01643 At step S804, after receiving the verification request, the client device can determine a full node that has the longest chain on the blockchain, as described herein, during which, the client device can receive the latest block header during the last round of querying for the sampling of random block headers.
[01 ©5] At step S808, after determining the longest chain maintained by an honest full node as well as receiving the latest block header, the client device can verify the Merkie proof received in the verification request. The client device can verify the Merkie proof by verifying that each node in the path, included in the Merkie proof, with two child nodes is equal to the hash of that node's two child nodes, as described herein. The client device can also verify that the interaction identifier is the leaf node of the path.
[0166] The client device can verify the MMR proof received in the verification request, as described herein. The client device can verify the MMR proof by verifying that each node in the path, included in the MMR proof, with two child nodes is equal to the hash of that node's two child nodes,. The client device can also verify that the block header is the leaf node of the path, wherein the block header contains the Merkie root of the Merkie tree.
[0167] At step S808, if either the Merkie proof or the Merkie mountain range proof are not valid, the client device can proceed to ste S810. At step S81Q, the client device can determine that the prover has provided an incorrect proof and terminate the connection with the prover. In some embodiments, the client device can add the IP address, or other suitable identifier, of the prover to a list of known malicious devices.
[01683 !? Merkie proof and the Merkie mountain range proof are valid, the client device can proceed fo step S8 2. The client device can determine that the interaction identifier provided by the prover corresponds with a valid interaction. At step S812, the client device can perform additional processing. Additional processing can include performing an action or operation as indicated in the interaction and/or transferring assets, physical and digital, between the verifier and the prover as outlined in the interaction. [0169] FIG. 9 shows a flowchart Of a longest chain verification method according to an embodiment of the invention. The method illustrated in FIG. 9 will be described in the context of a client device determining a full node, that maintains the longest blOGkehain, out of a plurality of full nodes, and then verifying an interaction associated with an interaction identifier received from a prover. Although the steps are illustrated in
a specific order, it is understood that embodiments of the invention may include methods that have the steps in different orders. In addition, steps may be omitted or added and may still be within embodiments of the invention.
[0170] The method in FIG. 9 can be performed by a prover 902, a client device 904, and a plurality of fui! nodes. The prover 902 can be a client device or a full node, in some embodiments, the prover 902 can be a full node that the client device 904 communicates with during steps S918-S928.
[0171] At step S9G2, the prover 902 can transmit a verification request to the client device 904. The verification request can comprise an interaction identifier, a fvlerkle proof, and a fviefk!e mountain range proof. The interaction identifier can be associated with a previously performed interaction, which may, in some embodiments, be an interaction that was performed between the prover 902 and the client device 904. The Merkle proof can comprise a path and sibling nodes as described herein. The Merkle proof can be used to determine if an interaction is in a block. The Merkle mountain range proof can comprise a path and sibling nodes as described herein. The Merkle mountain range proof can be used to determine if a block is in a biockchain.
[0172] At step S904-S908, after receiving the verification request, the client device 904 can query a plurality of full nodes 906 for current heights of blockchains maintained by the fui! nodes, |0173] At step S91Q-S914, after the plurality of full nodes 906 receive the query for the current height of the biockchain, each of the full nodes of the plurality of full nodes 906 can return the height of the biockchain. The client device 904 can receive a plurality of current heights.
[0174] At step S916, after receiving a plurality of current heights, the client device 904 can determine a full node from among the plurality of full nodes 906. The client device 904 can determine that the full node returned a current height that is consistent with a most frequently returned current height from the plurality of full nodes 906.
[0175] At step SS18, the client device 904 can query the full node for a random sampling of block headers as well as a plurality of MMR proofs, one M proof for each of the block headers of the random sampling of block headers.
[0176] At step S920, the client device 904 can receive the random sampling of block headers as well as a MMR proof fo each of the block headers.
[0177] At step S922, after receiving the random sampling of block headers, the client device 904 can verify the validity of each block header of the random sampling of block headers. The client device 904 can verify that the proof-of-work solution of each block header is valid. For example, the client device 904 can verify that the nonce and the previous hash value solve a hash function such that the solution is less than a predetermined number such as a difficulty level.
[0178] At step S924, the client device 904 can verify the validity of the plurality of MMR proofs received from the full node. The client device 904 can verify the validity of the MMR proof for each block header. The client device can verify that each node in the path with two child nodes is equal to the hash of that node's two child nodes, as described herein. The client device 904 can also verify that the start of the path in the MMR proof is the MMR root in the latest block header.
[01 9] At step S926, after verifying the random block headers and the plurality of MMR proofs, the client device 904 can repeat steps S918-S924 any suitable number of times until a round number is equal to a predetermined number of rounds, for example, 5 rounds, 15 rounds, 40 rounds, or any other suitable number of rounds. In some embodiments, the client device 904 can repeat steps S918-S924 until the client device 904 receives the most recent block header.
[0180] At step S928, after repeating steps S918-S924, the client device 904 can determine that the full node maintains the longest (i.e., correct) blockctiain. The client device 904 can then verify the fvlerkie proof and the MMR proof received from the prover 902 in the verification request. The client device can verify the Merkle proof and the MMR proof in any suitable method described herein.
[0181] At step S93Q, after verifying the Merkle proof and the MMR proof, the client device 904 can transmit a verification response to the prover 902. If the Merkle proof and the MMR proof are both valid then the client device 904 can determine that the interaction identifier is associated with a valid interaction. The client device can transmit a verification response indicating that the interaction is valid to the prover 902.
[0182] After and/or concurrently with transmitting the verification response, the client device 904 can perform additional processing as described herein. For example, additional processing can include performing an action or operation as indicated in the interaction and/or transferring assets, physical and digital, between the verifier and the prover as outlined in the interaction.
[0183] If the client device 904 determines that either the Merkle proof or the MMR proof is invalid, then the client device 904 can transmit a verification response indicating that the interaction is invalid to the prover 902. In some embodiments, the client device 904 may not transmit the verification response if either the Merkle proof or the MMR proof is invalid, in this case, the client device 904 can blacklist the prover 902 and terminate communication therewith.
IV. NON-INTERACTIVE
[0184] Embodiments of the invention can allow for a Fiat-Shamir protocol to remove the interaction between the client devices and the full nodes. Specifically, a full node can figure out locally which random blocks it should send to a client device for the verification without any initial randomness from the client device (e.g., in the form of a random number), yet the client device can verify the correctness of the proof and is guaranteed that the full node is not cheating. The Fiat-Shamir protocoi wili be discussed in further detail foeiow. [0185] in some embodiments, ali of the verifier's messages, such as queries, are random from some known distribution. Concretely, in some embodiments these messages are block numbers in some predefined intervals. It is possible to turn an interactive protocol into a non-interactive protocol whose security holds in the random oracle model, see [Amos Fiat and Adi Shamir. How to prove yourself: Practical
solutions to identification and signature problems, in Conference on th Theory and Application of Cryptographic Techniques, pages 188-194. Springer, 1986.]. Every message of the verifier can be replaced by the result of a query to a random oracle H which in practice is replaced by a hash function such as SHA-3. H can be queried at the current transcript and the oracle's answer is mapped into the verifier's message space, In other words, for some embodiments the queries are the hash of all the previously returned block headers.
V. ANALYSIS
[0186] The overhead incurred on full nodes to i) generate new block headers (due to generating the MMR root) and ii) verify the new block headers (due to verification of the MMR root), can be evaluated. We report the experimental results on Table 1 , below.
[0187] Table 1 , below, shows a comparison between embodiments of the invention and previous works. Ή is the size of a hash (i.e., 256 bits for SHA258) and B is the size of a block header (i.e., 80 bytes in Bitcoin and 528 bytes in Ethereum). c and m can be constants.
Table 1 Chain proof size Event proof size Interactive Extra block data
PoPoW mlogn■ loglogn■ B mlogn■ loglogn■ B Yes logn
+ logs · H
NIPoPoW mlogn · loglogn · B mlogn · loglogn · B No logn
+ logs■ H
Embodiments of clognlogn■ B log(n■ s)■ H No 1 · H the invention
[0188] As the number of biock headers increases linearly with the size of the blockchain, the resource constraints for current SPV clients also increase. For example, the Ethereum blockchain currently has 6 million blocks, given that each biock header is of size 528 bytes, a light client in Ethereum would have to download and store approximately 3 GB to be able to verify ail events o the Ethereum blockchain. Such requirements are not trivial for current client devices, such as mobile phones and tablets. Embodiments of the invention include an efficient client device which requires less resource constraints but still offers high security guarantee (e.g., secure against a polynomial-time adversary). [0189] Embodiments of the invention provide for a number of advantages. For example, a client device can download less data than previous light clients (e.g., a light client in Ethereum, described above). A light client in Ethereum downloads
approximately 3 GB of data to be ab!e to verify all events on the Ethereum blockchain. According to embodiments of the invention, the client device can downioad 12 MB, when conservative security parameters are set. As such, compared to Ethereum, client devices according to embodiments of the invention can receive 250 times less data to verify an interaction on the blockchain.
[0190] As another example, a client device can download a logarithmic number of block headers, rather than every block header in a blockchain, in order to verify a given block and interaction in the biockchain. This significantly reduces the amount of data transmitted from a full node to a client device, thus not only reducing storage and performance requirements of resource-limited devices, but also reducing network traffic.
[0191] Another advantage is that embodiments of the invention are not vulnerable to bribing attacks as in PoPoW. Embodiments of the invention are not vuinerabie to bribing attacks, because embodiments do not differentiate between blocks in any way before the blocks are mined. The set of blocks selected to serve as a proof to the client device are determined only after those blocks are mined via a randomness chosen by the client device during transaction verification. Therefore, the adversary will
not be abie to bribe mines in the verification network to buiid a blockchain of fake, but vaiid, blocks.
[0192] Any of the software components or functions described in this application may be implemented as software code to be executed by a processor using any suitable computer language such as, for example, Java, C, C++, C#, Gbfective-C, Swift, or scripting language such as Perl or Python using, for example, conventional or object- oriented techniques. The software code may be stored as a series of instructions or commands on a computer readable medium for storage and/or transmission, suitable media include random access memory (RAM), a read only memory (ROM), a magnetic medium such as a hard-drive or a floppy disk, or an optical medium such as a compact disk (CO) or DVD {digital versatile disk), flash memory, and the like. The computer readable medium may be any combination of such storage or transmission devices.
[0193] Such programs may also be encoded and transmitted using carrier signals adapted for transmission via wired, optical, and/or wireless networks conforming to a variety of protocols, including the Internet. As such, a computer readable medium according to an embodiment of the present invention may be created using a data signal encoded with such programs. Computer readable media encoded with the program code may be packaged with a compatible device or provided separately from other devices (e.g., via Internet download). Any such computer readable medium may reside on or within a single computer product (e,g, a hard drive, a CO, or an entire computer system), and may be present on or within different computer products within a system or network. A computer system may include a monitor, printer, or other suitable display for providing any of the results mentioned herein to a user.
[0194] The above description is illustrative and is not restrictive. Many variations of the invention will become apparent to those skilled in the art upon review of the disclosure. The scope of the invention should, therefore, be determined not with reference to the above description, but instead shouid be determined with reference to the pending claims along with their full scope or equivalents.
[0195] One or more features from any embodiment may be combined with one or more features of any other embodiment without departing from the scope of the invention.
[0196] As used herein, the use of "a," "an," or "the" is intended to mean "at ieast one," unless specifically indicated to the contrary.
Claims
WHAT IS CLAIMED IS: 1. A method comprising:
receiving, by a client device, a verification request comprising an interaction identifier;
querying, by the client device, a full node for a random sampling of block headers from the full node;
receiving, by the client device, the random sampling of block headers from the full node;
verifying, by the client device, the random sampling of block headers; and determining that a blockchain maintained by the full node is valid after verifying the random sampling of block headers.
2. The method of claim 1 further comprising:
querying, by the client device, a plurality of full nodes for current heights of bSockchasns maintained by the full nodes;
receiving, by the client device, a plurality of current heights for the biockehasns maintained by the full nodes; and
determining, b the client device, the full node from among the plurality of full nodes.
3. The method of claim 2, wherein determining the full node further comprises:
determining, by the client device, a most frequent height of the plurality of current heights; and
selecting, by the client device, the full node of the plurality of full nodes that reported a current height comparable to the most frequent height.
4. The method of claim 1 , wherein the verification request includes a Merkle proof comprising a first path and a first plurality of sibling graph nodes, the first path including a first plurality of graph nodes in a Merkle free from a Merkle root to a first graph node, the first graph node associated with the interaction identifier,
and wherein the verification request includes a Merkle mountain range proof comprising a second path and a second plurality of sibling graph nodes, the second path including a second plurality of graph nodes in a Merkle mountain range from a Mefkle mountain range root to a second graph node, the second graph node associated with a block header containing the interaction identifier.
5. The method of claim 4 further comprising:
verifying, by the client device, the Merkle proof;
verifying, by the client device, the Merkle mountain range proof;
determining, by the client device, if the interaction identifier corresponds to a valid interaction based on verification of the Merkle proof and the Merkle mountain range proof; and
transmitting, fay the client device, a verification response indicating whether or not the interaction identifier corresponds to the valid interaction.
6. The method of claim 1 , wherein after verifying the random sampling of block headers the method further comprises:
repeating, by the client device, the querying, receiving, and verifying steps, for a predetermined number of rounds.
7. The method of claim 1 , wherein querying the full node fo a random sampling of block headers from the full node further comprises;
transmitting, by the clien device, a random number to the full node, wherein the full node partitions the blockchain maintained by the full node into substantially equally sized number of partitions, selects the random sampling of block headers from a most recent partition based on the random number, and transmits the random sampling of block headers to the client device.
8. The method of claim 7, wherein the full node determines a plurality of Merkle mountain range proofs associated with the random sampling of block headers from the full node and transmit the plurality of Merkle mountai range proofs to the client device.
9. The method of claim 1 further comprising:
performing, by the client device, additional processing based on an interaction associated with the interaction identifier, wherein the additional processing includes performing an action or operation as indicated in the interaction or transferring assets between the client device and a prover as outlined in the interaction.
10. The method of claim 1 , wherein each block header of the random sampling of block headers comprises a previous hash value, a nonce, a timestamp, a IWerkie root, and a Svterkie mountain range root.
11. The method of claim 10 further comprising:
obtaining, by the client device, a pluralit of Merkie mountain range proofs associated with the random sampling of block headers from the full node; and
wherein verifying the random sampling of block headers further comprises:
verifying, by the client device, validity of the previous hash value and the nonce; and
verifying, by the client device, the plurality of Merkle mountain range proofs.
12. A client device comprising:
a processor;
a memory; and
a computer readable medium coupled to the processor, the computer readable medium comprising code, executable by the processor, for implementing a method comprising:
receiving a verification request comprising an interaction identifier;
querying a full node for a random sampling of block headers from the full node;
receiving the random sampling of block headers from the full node;
verifying the random sampling of block headers; and
determining that a blockchain maintained by the full node is valid after verifying the random sampling of block headers.
13. The client device of claim 12, wherein the method further comprises:
querying a plurality of full nodes for current heights of blockchains maintained by the full nodes;
receiving a plurality of current heights for the blockchains maintained by the full nodes; and
determining the full node from among the plurality of full nodes,
14. The client device of claim 13, wherein determining the full node further comprises:
determining, by the client device, a most frequent height of the plurality of current heights; and
selecting, by the client device, the full node of the plurality of full nodes that reported a currant height comparable to the most frequent height.
15. The client device of claim 12, wherein the verification request inciudes a Merkle proof comprising a first path and a first plurality of sibling grap nodes, the first path including a first plurality of graph nodes in a Merkie tree from a Merkle root to a first graph node, the first graph node associated with the interaction identifier,
and wherein the verification request includes a Merkle mountain range proof comprising a second path and a second plurality of sibling graph nodes, th second path including a second plurality of graph nodes in a Merkle mountain range from a Merkle mountain range root to a second graph node, the second graph node associated with a block header containing the interaction identifier.
16. The client device of claim 15, wherein the method further comprises:
verifying, by the client device, the Merkle proof;
verifying, by the client device, the MerkSe mountain range proof;
determining, by the client device, if the interaction identifier corresponds to a valid interaction based on verification of the Merkle proof and the Merkle mountain range proof; and
transmitting, by the client device, a verification response indicating whether or not the interaction identifier corresponds to the valid interaction.
17. The client device of claim 12, wherein after verifying the random sampiing of block headers the method further comprises:
repeating, by the client device, the querying, receiving, and verifying steps for a predetermined number of rounds.
18. The client device of claim 12, wherei querying the full node for a random sampling of block headers from the fu!S node further comprises:
transmitting, by the client device, a random number to the full node, wherein the full node partitions the biockch in maintained by the full node into substantially equally sized number of partitions, selects the random sampling of block headers from a most recent partition based on the random number, and transmits the random sampling of block headers to the client device.
19, The client device of claim 18, wherein the full node determines a plurality of Merkle mountain range proofs associated with the random sampling of block headers from the full node and transmits the plurality of Merkle mountain range proofs to the client device.
20. The client device of claim 12, wherein the method further comprises;
performing, by the client device, additional processing based on an interaction associated with the interaction identifier, wherein the additional processing includes performing an action or operation as indicated in the interaction or transferring assets between the client device and a prover as outlined in the interaction.
21. The client device of claim 12, wherein each block header of the random sampling of block headers comprises a previous hash value, a nonce, a timestamp, a Merkle root, and a erkle mountain range root.
22. The ciient device of claim 21 , wherein the method further comprises:
receiving, by the ciient device, a plurality of Merkle mountain range proofs associated with the random sampling of block headers from the full node; and
wherein verifying the random sampling of block headers further comprises:
verifying, by the ciient device, validity of the previous hash value and the nonce; and
verifying, by the client device, the plurality of Merkle mountain range proofs.
23. A method comprising:
receiving, by a full node, a query for a random sampling of block headers including a random number from a ciient device;
selecting, by the full node, the random sampling of block headers from a blockchain;
determining, by the full node, a plurality of verification proofs associated with the random sampling of block headers; and
transmitting, by the full node, the random sampling of block headers and the plurality of verification proofs to the client device, wherein the client device verifies the random sampling of block headers and the plurality of verification proofs.
24. The method of claim 23, wherein the plurality of verification proofs are a plurality of fvterkle mountain range proofs.
25. The method of claim 23, wherein the method further comprises:
6.1
partitioning, b the full node, the biockchain Into partitions including a most recent partition comprisirtg a latest block header, wherein the random sampling of block headers are selected from the most recent partition.
26. The method of claim 25, wherein the biockchain is partitioned into the partitions based on a number of queries received.
27. The method of claim 25 further comprising:
determining, by the full node, that a number of blocks in the most recent partition is substantially equivalent to a number of block headers included in the random sampi ing of b lock header's .
28. The method of claim 23 further comprising:
receiving, by the full node, a query for a current height of the biockchain from the client device;
determining, by the full node, the current height of the biockchain; and transmitting, by the full node, the current height of the biockchain to the client device, wherein the client device determines if the current height of the biockchain is substantially equivalent to a plurality of current heights received from a plurality of full nodes.
29. A full node comprising:
a processor;
a memory; and
a computer readable medium coupled to the processor, the computer readable medium comprising code, executable by the processor, for implementing a method comprising:
receiving a query for a random sampling of block headers including a random number from a client device;
selecting the random sampling of block headers from a biockchain;
determining a plurality of verification proofs associated with the random sampling of block headers; and
12 transmitting the random sampling of block headers and the plurality of
] 3 verification proofs to the client device, wherein the client device verifies the random
14 sampling of block headers and the plurality of verification proofs. ϊ 30, The full node of claim 29, wherein the plurality of verification proofs
2 are a plurality of fvlerkie mountain range proofs.
1 31. The full node of claim 29, wherein the method further comprises:
2 partitioning, by the full node, the biockchain into partitions including a most
3 recent partition comprising a latest block header, wherein the random sampling of block
4 headers are selected from a most recent partition.
1 32. The full node of claim 31 , wherein the biockchain is partitioned into
2 the partitions based on a number of queries received.
1 33. The full node of claim 31 , wherein the method further comprises:
2 determining, by the full node, that a number of blocks in the most recent
3 partition is substantially equivalent to a number of block headers included in the random
4 sampling of block headers.
5 34, The full node of claim 29, wherein the method further comprises:
2 receiving, by the full node, a query for a current height of the biockchain
3 from the client device;
4 determining, by the full node, the current height of the biockchain; and
5 transmitting, by the fuli node, the current height of the biockchain to the
6 client device, wherein the client device determines if the current height of the biockchain
7 is substantiall equivalent to a plurality of current heights received from a plurality of full
8 nodes.
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/636,313 US11871485B2 (en) | 2017-08-09 | 2018-08-09 | Verification of interactions system and method |
EP18844755.1A EP3665858B1 (en) | 2017-08-09 | 2018-08-09 | Verification of interactions system and method |
US18/499,800 US20240074004A1 (en) | 2017-08-09 | 2023-11-01 | Verification of interactions system and method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201762543259P | 2017-08-09 | 2017-08-09 | |
US62/543,259 | 2017-08-09 |
Related Child Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/636,313 A-371-Of-International US11871485B2 (en) | 2017-08-09 | 2018-08-09 | Verification of interactions system and method |
US18/499,800 Continuation US20240074004A1 (en) | 2017-08-09 | 2023-11-01 | Verification of interactions system and method |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2019032891A1 true WO2019032891A1 (en) | 2019-02-14 |
Family
ID=65272660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2018/046101 WO2019032891A1 (en) | 2017-08-09 | 2018-08-09 | Verification of interactions system and method |
Country Status (3)
Country | Link |
---|---|
US (2) | US11871485B2 (en) |
EP (1) | EP3665858B1 (en) |
WO (1) | WO2019032891A1 (en) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110138566A (en) * | 2019-05-14 | 2019-08-16 | 数字钱包(北京)科技有限公司 | Verification method, device, electronic equipment and computer readable storage medium |
CN110598456A (en) * | 2019-09-24 | 2019-12-20 | 腾讯科技(深圳)有限公司 | Data storage method and device, electronic equipment and storage medium |
CN110889729A (en) * | 2019-11-29 | 2020-03-17 | 腾讯科技(深圳)有限公司 | Data verification method and device based on block chain network |
CN111539818A (en) * | 2020-03-06 | 2020-08-14 | 杜晓楠 | Method for adaptive adjustment of sampling window in block chain, computer readable storage medium and block chain network |
CN112380149A (en) * | 2021-01-18 | 2021-02-19 | 腾讯科技(深圳)有限公司 | Data processing method, device, equipment and medium based on node memory |
CN112488683A (en) * | 2020-12-11 | 2021-03-12 | 深圳前海微众银行股份有限公司 | Method and device for offline transaction of block chain |
CN112738141A (en) * | 2019-10-14 | 2021-04-30 | 北京清红微谷技术开发有限责任公司 | State verification method and system based on responsibility mechanism and P2P network |
WO2021108258A1 (en) * | 2019-11-25 | 2021-06-03 | Visa International Service Association | Optimizations for verification of interactions system and method using probability density functions |
WO2021107408A1 (en) * | 2019-11-26 | 2021-06-03 | 한양대학교 산학협력단 | Leaderless blockchain consensus method and device therefor |
CN113132433A (en) * | 2019-12-31 | 2021-07-16 | 航天信息股份有限公司 | Block chain fragmentation method and device, electronic equipment and storage medium |
WO2021165848A1 (en) * | 2020-02-19 | 2021-08-26 | nChain Holdings Limited | Platform services verification |
KR20210106911A (en) * | 2020-02-20 | 2021-08-31 | 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 | Data storage method and apparatus for blockchain, device, and medium |
US11177962B2 (en) | 2019-02-05 | 2021-11-16 | Visa International Service Association | Optimizations for verification of interactions system and method |
TWI762851B (en) * | 2019-04-18 | 2022-05-01 | 開曼群島商創新先進技術有限公司 | Data verification method, system, device and equipment in blockchain ledger |
US20220191037A1 (en) * | 2019-03-27 | 2022-06-16 | Koc Universitesi | Distributed hash table based blockchain architecture for resource constrained environments |
JP2022540959A (en) * | 2019-08-01 | 2022-09-20 | ブルーム・テクノロジー・インコーポレイテッド | A certifiable pruning system for ledgers |
WO2022214264A1 (en) * | 2021-04-08 | 2022-10-13 | Nchain Licensing Ag | Uniform resource identifier |
US11871485B2 (en) | 2017-08-09 | 2024-01-09 | Visa International Service Association | Verification of interactions system and method |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3887995A1 (en) * | 2018-11-28 | 2021-10-06 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and system for reducing the size of a blockchain |
CN112487061B (en) * | 2020-12-03 | 2022-07-22 | 南京理工大学 | Big data tracing method and system based on block chain and computer equipment |
US20220399988A1 (en) * | 2021-06-14 | 2022-12-15 | International Business Machines Corporation | Linking blockchain operations |
US20230119482A1 (en) * | 2021-10-15 | 2023-04-20 | Chia Network Inc. | Method for securing private structured databases within a public blockchain |
US20230179424A1 (en) * | 2021-12-03 | 2023-06-08 | International Business Machines Corporation | Compressible blockchains |
IT202200003839A1 (en) * | 2022-03-01 | 2023-09-01 | Traent S R L | STORAGE OF DATA RENDERED TO EVIDENCE OF TAMPERING IN ACCORDANCE WITH CORRESPONDING CERTIFIED CONSISTENCY TESTS |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120078752A1 (en) * | 2009-06-04 | 2012-03-29 | Accumulate Ab | Transaction identified handling system |
WO2016029119A1 (en) * | 2014-08-21 | 2016-02-25 | myVBO, LLC | Systems and methods for managing alternative currency transactions and optimizing financial rewards |
US20160330034A1 (en) * | 2015-05-07 | 2016-11-10 | Blockstream Corporation | Transferring ledger assets between blockchains via pegged sidechains |
US20170132619A1 (en) * | 2015-11-06 | 2017-05-11 | SWFL, Inc., d/b/a "Filament" | Systems and methods for autonomous device transacting |
US20170213289A1 (en) * | 2016-01-27 | 2017-07-27 | George Daniel Doney | Dividend Yielding Digital Currency through Elastic Securitization, High Frequency Cross Exchange Trading, and Smart Contracts |
Family Cites Families (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3189619B1 (en) * | 2014-09-03 | 2021-02-17 | NantOmics, LLC | Device, method and computer program product for synthetic genomic variant-based secure transaction |
US10193696B2 (en) * | 2015-06-02 | 2019-01-29 | ALTR Solutions, Inc. | Using a tree structure to segment and distribute records across one or more decentralized, acylic graphs of cryptographic hash pointers |
US10038695B2 (en) * | 2015-06-02 | 2018-07-31 | ALTR Solutions, Inc. | Remotely deauthenticating a user from a web-based application using a centralized login server |
US10404469B2 (en) * | 2016-04-08 | 2019-09-03 | Chicago Mercantile Exchange Inc. | Bilateral assertion model and ledger implementation thereof |
US10417188B2 (en) * | 2016-05-27 | 2019-09-17 | Mastercard International Incorporated | Method and system for transferring trust across block chain segments |
US10460124B2 (en) * | 2016-06-20 | 2019-10-29 | Netapp, Inc. | Per-volume tenant encryption and external key manager |
US10420013B2 (en) * | 2016-07-12 | 2019-09-17 | Coco Communications Corp | Systems and methods for distributing content in a vehicle-based wireless network |
US20180083786A1 (en) * | 2016-09-22 | 2018-03-22 | Google Inc. | Methods and systems of performing tamper-evident logging using block lattices |
US20180167198A1 (en) * | 2016-12-09 | 2018-06-14 | Cisco Technology, Inc. | Trust enabled decentralized asset tracking for supply chain and automated inventory management |
EP3563545B1 (en) * | 2016-12-30 | 2024-07-17 | INTEL Corporation | Blockchains for securing iot devices |
US10552601B2 (en) * | 2017-01-18 | 2020-02-04 | Red Hat, Inc. | Deferred subscription activation using blockchain |
US10909534B2 (en) * | 2017-02-08 | 2021-02-02 | Prortus | Cryptocurrency with value based on electronic resources made available to peer nodes |
EP3583530B1 (en) * | 2017-02-17 | 2022-10-19 | Nokia Technologies Oy | Voting-consensus distributed ledger |
CN111917864B (en) * | 2017-02-22 | 2023-08-22 | 创新先进技术有限公司 | Service verification method and device |
US11233656B2 (en) * | 2017-02-24 | 2022-01-25 | Nec Corporation | Method for mining a block in a decentralized blockchain consensus network |
WO2018170504A1 (en) * | 2017-03-17 | 2018-09-20 | Labyrinth Research Llc | Unified control of privacy-impacting devices |
US10716094B2 (en) * | 2017-03-23 | 2020-07-14 | Ofinno, Llc | Packet duplication in a wireless device and wireless network |
US20180285217A1 (en) * | 2017-03-31 | 2018-10-04 | Intel Corporation | Failover response using a known good state from a distributed ledger |
US10832230B2 (en) * | 2017-04-04 | 2020-11-10 | International Business Machines Corporation | Scalable and distributed shared ledger transaction management |
US10607297B2 (en) * | 2017-04-04 | 2020-03-31 | International Business Machines Corporation | Scalable and distributed shared ledger transaction management |
CN109792437B (en) * | 2017-05-16 | 2021-01-12 | 北京大学深圳研究生院 | Consensus method for decentralized domain name system |
US10581621B2 (en) * | 2017-05-18 | 2020-03-03 | International Business Machines Corporation | Enhanced chaincode analytics provenance in a blockchain |
US10740733B2 (en) * | 2017-05-25 | 2020-08-11 | Oracle International Corporaton | Sharded permissioned distributed ledgers |
WO2018224955A1 (en) * | 2017-06-07 | 2018-12-13 | nChain Holdings Limited | Computer-implemented system and method for managing large blocks over a blockchain network |
US10581613B2 (en) * | 2017-06-09 | 2020-03-03 | Ecole Polytechnique Federale De Lausanne (Epfl) | Cryptographically verifiable data structure having multi-hop forward and backwards links and associated systems and methods |
EP3642998B1 (en) * | 2017-06-23 | 2022-01-26 | Visa International Service Association | Verification and encryption scheme in data storage |
US11038681B2 (en) * | 2017-06-26 | 2021-06-15 | Myomega Systems Gmbh | Using blockchain to track information for devices on a network |
EP3435273A1 (en) * | 2017-07-25 | 2019-01-30 | Gemalto Sa | Consensus protocol for permissioned ledgers |
DE102017212809B3 (en) * | 2017-07-26 | 2018-09-27 | Audi Ag | Method for checking the data transport via a first communication connection between two data processing devices and motor vehicle realized between two first interface units |
US11281644B2 (en) * | 2017-07-28 | 2022-03-22 | Hitachi, Ltd. | Blockchain logging of data from multiple systems |
US10594488B2 (en) * | 2017-08-05 | 2020-03-17 | Proclus Technologies Limited | Method and system for implementing automatic transaction rebroadcasting for transient blockchains |
US20190044725A1 (en) * | 2017-08-05 | 2019-02-07 | Proclus Technologies Limited | Method and System for Securing a Blockchain with Proof-of-Transactions |
US11871485B2 (en) | 2017-08-09 | 2024-01-09 | Visa International Service Association | Verification of interactions system and method |
US10601598B2 (en) * | 2017-11-02 | 2020-03-24 | Keir Finlow-Bates | System and method for storing the location on a blockchain of a hash of a digital item within said digital item |
US11308106B1 (en) * | 2018-05-21 | 2022-04-19 | Amazon Technologies, Inc. | Caching results for sub-queries to different data store locations |
US11177962B2 (en) * | 2019-02-05 | 2021-11-16 | Visa International Service Association | Optimizations for verification of interactions system and method |
US11468044B2 (en) * | 2019-11-25 | 2022-10-11 | Visa International Service Association | Optimizations for verification of interactions system and method using probability density functions |
US20220114584A1 (en) * | 2020-10-08 | 2022-04-14 | Geeq Corporation | Apparatus and methods to define and use bearer tokens, certified tokens and applications using bearer tokens and certified tokens |
US11508140B2 (en) * | 2020-10-09 | 2022-11-22 | Sensormatic Electronics, LLC | Auto-configuring a region of interest (ROI) associated with a camera |
US11611506B2 (en) * | 2020-10-09 | 2023-03-21 | Juniper Networks, Inc. | Processing a flow at the egress node in segment routing |
-
2018
- 2018-08-09 US US16/636,313 patent/US11871485B2/en active Active
- 2018-08-09 EP EP18844755.1A patent/EP3665858B1/en active Active
- 2018-08-09 WO PCT/US2018/046101 patent/WO2019032891A1/en unknown
-
2023
- 2023-11-01 US US18/499,800 patent/US20240074004A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120078752A1 (en) * | 2009-06-04 | 2012-03-29 | Accumulate Ab | Transaction identified handling system |
WO2016029119A1 (en) * | 2014-08-21 | 2016-02-25 | myVBO, LLC | Systems and methods for managing alternative currency transactions and optimizing financial rewards |
US20160330034A1 (en) * | 2015-05-07 | 2016-11-10 | Blockstream Corporation | Transferring ledger assets between blockchains via pegged sidechains |
US20170132619A1 (en) * | 2015-11-06 | 2017-05-11 | SWFL, Inc., d/b/a "Filament" | Systems and methods for autonomous device transacting |
US20170213289A1 (en) * | 2016-01-27 | 2017-07-27 | George Daniel Doney | Dividend Yielding Digital Currency through Elastic Securitization, High Frequency Cross Exchange Trading, and Smart Contracts |
Non-Patent Citations (1)
Title |
---|
See also references of EP3665858A4 * |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11871485B2 (en) | 2017-08-09 | 2024-01-09 | Visa International Service Association | Verification of interactions system and method |
US11177962B2 (en) | 2019-02-05 | 2021-11-16 | Visa International Service Association | Optimizations for verification of interactions system and method |
US11799660B2 (en) | 2019-02-05 | 2023-10-24 | Visa International Service Association | Optimizations for verification of interactions system and method |
US12058271B2 (en) * | 2019-03-27 | 2024-08-06 | Koc Universitesi | Distributed hash table based blockchain architecture for resource constrained environments |
US20220191037A1 (en) * | 2019-03-27 | 2022-06-16 | Koc Universitesi | Distributed hash table based blockchain architecture for resource constrained environments |
TWI762851B (en) * | 2019-04-18 | 2022-05-01 | 開曼群島商創新先進技術有限公司 | Data verification method, system, device and equipment in blockchain ledger |
CN110138566A (en) * | 2019-05-14 | 2019-08-16 | 数字钱包(北京)科技有限公司 | Verification method, device, electronic equipment and computer readable storage medium |
JP7289983B2 (en) | 2019-08-01 | 2023-06-12 | ブルーム・テクノロジー・インコーポレイテッド | A certifiable pruning system for ledgers |
JP2022540959A (en) * | 2019-08-01 | 2022-09-20 | ブルーム・テクノロジー・インコーポレイテッド | A certifiable pruning system for ledgers |
CN110598456A (en) * | 2019-09-24 | 2019-12-20 | 腾讯科技(深圳)有限公司 | Data storage method and device, electronic equipment and storage medium |
CN112738141A (en) * | 2019-10-14 | 2021-04-30 | 北京清红微谷技术开发有限责任公司 | State verification method and system based on responsibility mechanism and P2P network |
CN112738141B (en) * | 2019-10-14 | 2023-10-24 | 上海树图区块链研究院 | State verification method and system based on blame mechanism and P2P network |
WO2021108258A1 (en) * | 2019-11-25 | 2021-06-03 | Visa International Service Association | Optimizations for verification of interactions system and method using probability density functions |
US11468044B2 (en) | 2019-11-25 | 2022-10-11 | Visa International Service Association | Optimizations for verification of interactions system and method using probability density functions |
WO2021107408A1 (en) * | 2019-11-26 | 2021-06-03 | 한양대학교 산학협력단 | Leaderless blockchain consensus method and device therefor |
CN110889729A (en) * | 2019-11-29 | 2020-03-17 | 腾讯科技(深圳)有限公司 | Data verification method and device based on block chain network |
CN110889729B (en) * | 2019-11-29 | 2024-03-26 | 腾讯科技(深圳)有限公司 | Data verification method and device based on blockchain network |
CN113132433A (en) * | 2019-12-31 | 2021-07-16 | 航天信息股份有限公司 | Block chain fragmentation method and device, electronic equipment and storage medium |
CN113132433B (en) * | 2019-12-31 | 2022-09-02 | 航天信息股份有限公司 | Block chain fragmentation method and device, electronic equipment and storage medium |
WO2021165848A1 (en) * | 2020-02-19 | 2021-08-26 | nChain Holdings Limited | Platform services verification |
KR20210106911A (en) * | 2020-02-20 | 2021-08-31 | 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 | Data storage method and apparatus for blockchain, device, and medium |
KR102572552B1 (en) * | 2020-02-20 | 2023-08-29 | 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 | Data storage method and apparatus for blockchain, device, and medium |
CN111539818A (en) * | 2020-03-06 | 2020-08-14 | 杜晓楠 | Method for adaptive adjustment of sampling window in block chain, computer readable storage medium and block chain network |
CN112488683B (en) * | 2020-12-11 | 2024-02-23 | 深圳前海微众银行股份有限公司 | Under-chain transaction method and device of blockchain |
CN112488683A (en) * | 2020-12-11 | 2021-03-12 | 深圳前海微众银行股份有限公司 | Method and device for offline transaction of block chain |
CN112380149A (en) * | 2021-01-18 | 2021-02-19 | 腾讯科技(深圳)有限公司 | Data processing method, device, equipment and medium based on node memory |
WO2022214264A1 (en) * | 2021-04-08 | 2022-10-13 | Nchain Licensing Ag | Uniform resource identifier |
Also Published As
Publication number | Publication date |
---|---|
US20240074004A1 (en) | 2024-02-29 |
EP3665858B1 (en) | 2022-05-25 |
EP3665858A1 (en) | 2020-06-17 |
US20220311619A9 (en) | 2022-09-29 |
US20220116223A1 (en) | 2022-04-14 |
US11871485B2 (en) | 2024-01-09 |
EP3665858A4 (en) | 2020-07-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240074004A1 (en) | Verification of interactions system and method | |
EP3693886B1 (en) | Optimizations for verification of interactions system and method | |
JP6908700B2 (en) | Systems and methods for information protection | |
US11468044B2 (en) | Optimizations for verification of interactions system and method using probability density functions | |
CN111639361A (en) | Block chain key management method, multi-person common signature method and electronic device | |
US10819505B2 (en) | System and method for information protection | |
CN111047324B (en) | Method and apparatus for updating a set of public keys at a blockchain node | |
CN108055122B (en) | Verifiable memory leak prevention dynamic searchable encryption method and cloud server | |
Zhang et al. | Provable multiple replication data possession with full dynamics for secure cloud storage | |
US20200082361A1 (en) | System and method for controlling a ledger of transactions | |
Schröder et al. | Verifiable data streaming | |
US20040107346A1 (en) | Efficient authenticated dictionaries with skip lists and commutative hashing | |
CN109670826B (en) | Anti-quantum computation block chain transaction method based on asymmetric key pool | |
Xie et al. | Blockchain‐Based Cloud Data Integrity Verification Scheme with High Efficiency | |
JP2022527610A (en) | Methods and equipment for propagating blocks in blockchain networks | |
CN116324778A (en) | Updatable private collection intersections | |
Leung | Vault: Fast bootstrapping for cryptocurrencies | |
Gabizon et al. | Plumo: Towards scalable interoperable blockchains using ultra light validation systems | |
CN110557247B (en) | Identity-based blockchain method and system | |
Buldas et al. | Optimally tight security proofs for hash-then-publish time-stamping | |
CN115943609A (en) | Block propagation for poisoned transactions in block chain networks | |
CN109670827B (en) | Anti-quantum computation blockchain transaction method based on symmetric key pool | |
CN116579026A (en) | Cloud data integrity auditing method, device, equipment and storage medium | |
Sengupta et al. | Publicly verifiable secure cloud storage for dynamic data using secure network coding | |
Frey et al. | Dietcoin: shortcutting the Bitcoin verification process for your smartphone |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18844755 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
ENP | Entry into the national phase |
Ref document number: 2018844755 Country of ref document: EP Effective date: 20200309 |