Movatterモバイル変換


[0]ホーム

URL:


US11658801B2 - System for securing verification key from alteration and verifying validity of a proof of correctness - Google Patents

System for securing verification key from alteration and verifying validity of a proof of correctness
Download PDF

Info

Publication number
US11658801B2
US11658801B2US16/762,471US201816762471AUS11658801B2US 11658801 B2US11658801 B2US 11658801B2US 201816762471 AUS201816762471 AUS 201816762471AUS 11658801 B2US11658801 B2US 11658801B2
Authority
US
United States
Prior art keywords
computer
script
transaction
implemented method
proof
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US16/762,471
Other versions
US20200266985A1 (en
Inventor
Alexandra COVACI
Simone MADEO
Patrick MOTYLINSKI
Stephane Vincent
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nchain Licensing AG
Original Assignee
Nchain Licensing AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from GBGB1718505.9Aexternal-prioritypatent/GB201718505D0/en
Priority claimed from GBGB1719998.5Aexternal-prioritypatent/GB201719998D0/en
Priority claimed from GBGB1720768.9Aexternal-prioritypatent/GB201720768D0/en
Priority claimed from GBGB1801753.3Aexternal-prioritypatent/GB201801753D0/en
Priority claimed from GBGB1805948.5Aexternal-prioritypatent/GB201805948D0/en
Priority claimed from GBGB1806444.4Aexternal-prioritypatent/GB201806444D0/en
Application filed by Nchain Licensing AGfiledCriticalNchain Licensing AG
Assigned to NCHAIN HOLDINGS LTDreassignmentNCHAIN HOLDINGS LTDASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: VINCENT, STEPHANE, COVACI, Alexandra, MADEO, Simone, MOTYLINSKI, Patrick
Assigned to NCHAIN HOLDINGS LTDreassignmentNCHAIN HOLDINGS LTDASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: VINCENT, STEPHANE, COVACI, Alexandra, MADEO, Simone, MOTYLINSKI, Patrick
Assigned to NCHAIN HOLDINGS LTDreassignmentNCHAIN HOLDINGS LTDASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: COVACI, Alexandra, MADEO, Simone, MOTYLINSKI, Patrick, VINCENT, STEPHANE
Assigned to NCHAIN HOLDINGS LTDreassignmentNCHAIN HOLDINGS LTDASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: VINCENT, STEPHANE, COVACI, Alexandra, MADEO, Simone, MOTYLINSKI, Patrick
Assigned to NCHAIN HOLDINGS LTDreassignmentNCHAIN HOLDINGS LTDASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: COVACI, Alexandra, MOTYLINSKI, Patrick, VINCENT, STEPHANE, MADEO, Simone
Assigned to NCHAIN HOLDINGS LTDreassignmentNCHAIN HOLDINGS LTDASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: COVACI, Alexandra, VINCENT, STEPHANE, MADEO, Simone, MOTYLINSKI, Patrick
Publication of US20200266985A1publicationCriticalpatent/US20200266985A1/en
Assigned to NCHAIN LICENSING AGreassignmentNCHAIN LICENSING AGCHANGE OF NAME (SEE DOCUMENT FOR DETAILS).Assignors: NCHAIN HOLDINGS LTD
Application grantedgrantedCritical
Publication of US11658801B2publicationCriticalpatent/US11658801B2/en
Activelegal-statusCriticalCurrent
Adjusted expirationlegal-statusCritical

Links

Images

Classifications

Definitions

Landscapes

Abstract

The invention relates to distributed ledger technologies such as consensus-based blockchains. A blockchain transaction may include digital resources that are encumbered by a locking script that encodes a set of conditions that must be fulfilled before the encumbered resources may be used (e.g., transferring ownership/control of encumbered resources). A worker (e.g., a computer system) performs one or more computations to generate a proof, which is encoded as part of an unlocking script. A verification algorithm may utilize the proof, a verification key, and additional data such as a cryptographic material associated with the worker (e.g., a digital signature) to verify that digital assets of the transaction should be transferred. As a result of the validation of this transaction, any third party is able to check the contract was executed corrected rather than re-executing the contract, thus saving computational power.

Description

FIELD OF INVENTION
This invention relates generally to blockchain technologies, and more particularly to enabling execution of a zero-knowledge protocol on a blockchain by utilizing a locking script to secure a verification key from alteration and verify the validity of a proof of correctness. This invention further utilises cryptographic and mathematical techniques to enforce security in relation to electronic transfers conducted over a blockchain network. The invention is particularly suited, but not limited to, use in smart contract generation and execution.
BACKGROUND OF INVENTION
In this document, the term ‘blockchain’ may refer to any of several types of electronic, computer-based, distributed ledgers. These include consensus-based blockchain and transaction-chain technologies, permissioned and un-permissioned ledgers, shared ledgers and variations thereof. The most widely known application of blockchain technology is the Bitcoin ledger, although other blockchain implementations have been proposed and developed. While Bitcoin may be referred to as a useful application of the technology described in the present disclosure, for the purpose of convenience and illustration, Bitcoin is just one of many applications to which the technology described in the present disclosure may be applied. However, it should be noted that the invention is not limited to use with the Bitcoin blockchain; alternative blockchain implementations and protocols, including non-commercial applications, also fall within the scope of the present invention.
A blockchain is a peer-to-peer, electronic ledger which is implemented as a computer-based decentralised, distributed system made up of blocks which in turn may be made up of transactions and other information. In some examples, a “blockchain transaction” refers to an input message encoding a structured collection of field values comprising data and a set of conditions, where fulfillment of the set of conditions is prerequisite for the set of fields to be written to a blockchain data structure. For example, with Bitcoin each transaction is a data structure that encodes the transfer of control of a digital asset between participants in the blockchain system, and includes at least one input and at least one output. In some embodiments, a “digital asset” refers to binary data that is associated with a right to use. Examples of digital assets include Bitcoin, ether, and Litecoins. In some implementations, transferring control of a digital asset can be performed by reassociating at least a portion of a digital asset from a first entity to a second entity. Each block of the blockchain may contain a hash of the previous block to that blocks become chained together to create a permanent, unalterable record of all transactions which have been written to the blockchain since its inception.
In some examples, “stack-based scripting language” refers to a programming language that supports various stack-based or stack-oriented execution models and operations. That is, the stack-based scripting language may utilize a stack. With the stack, values can be pushed onto the top of the stack or popped from the top of the stack. Various operations performed to the stack can result in pushing or popping one or more of the values to or from the top of the stack. For example, an OP_EQUAL operation pops the top two items from the stack, compares them, and pushes a result (e.g., 1 if equal or 0 if unequal) to the top of the stack. Other operations performed to the stack, such as OP_PICK, may allow items to be selected from positions other than the top of the stack. In some scripting languages employed by some of the present embodiments, there may be at least two stacks:
a main stack and an alternate stack. Some operations of the scripting language can move items from the top of one stack to the top of another stack. For example, OP_TOALTSTACK, moves a value from the top of the main stack to the top of the alternate stack. It should be noted that a stack-based scripting language, in some cases, may not be limited solely to operation in a strictly last-in-first-out (LIFO) manner. For example, a stack-based scripting language may support operations that copies or moves the n-th item in the stack to the top (e.g., OP_PICK and OP_ROLL respectively, in Bitcoin). Scripts written in a stack-based scripting language may be pushed onto a logical stack that can be implemented using any suitable data structure such as a vector, list, or stack.
In order for a transaction to be written to the blockchain, it must be “validated”. Network nodes (mining nodes) perform work to ensure that each transaction is valid, with invalid transactions rejected from the network. A node can have standards for validity different from other nodes. Because validity in the blockchain is consensus based, a transaction is considered valid if a majority of nodes agree that a transaction is valid. Software clients installed on the nodes perform this validation work on transactions referencing an UTXO in part by executing the UTXO locking and unlocking scripts. If execution of the locking and unlocking scripts evaluates to TRUE and other validation conditions, if applicable, are met, the transaction is validated by the node. The validated transaction is propagated to other network nodes, whereupon a mining node can select to include the transaction in a blockchain. Thus, in order for a transaction to be written to the blockchain, it must be i) validated by the first node that receives the transaction—if the transaction is validated, the node relays it to the other nodes in the network; and ii) added to a new block built by a mining node; and iii) mined, i.e., added to the public ledger of past transactions. The transaction is considered to be confirmed when a sufficient number of blocks is added to the blockchain to make the transaction practically irreversible.
Although blockchain technology is most widely known for the use of cryptocurrency implementation, digital entrepreneurs have begun exploring the use of both the cryptographic security system Bitcoin is based on and the data that can be stored on the Blockchain to implement new systems. It would be highly advantageous if the blockchain could be used for automated tasks and processes which are not limited to the realm of cryptocurrency. Such solutions would be able to harness the benefits of the blockchain (e.g. a permanent, tamper proof records of events, distributed processing etc.) while being more versatile in their applications.
The present disclosure describes technical aspects of one or more blockchain-based computer programs. A blockchain-based computer program may be a machine readable and executable program recorded in a blockchain transaction. The blockchain-based computer program may comprise rules that can process inputs in order to produce results, which can then cause actions to be performed dependent upon those results. One area of current research is the use of blockchain-based computer programs for the implementation of “smart contracts”. Unlike a traditional contract which would be written in natural language, smart contracts may be computer programs designed to automate the execution of the terms of a machine-readable contract or agreement.
Another area of blockchain-related interest is the use of ‘tokens’ (or ‘coloured coins’) to represent and transfer real-world entities via the blockchain. A potentially sensitive or secret item can be represented by the token which has no discernible meaning or value. The token thus serves as an identifier that allows the real-world item to be referenced from the blockchain.
In embodiments, although interaction with specific entities can be encoded at specific steps in the smart contract, the smart contract can otherwise be automatically executed and self-enforced. It is machine readable and executable. In some examples, automatic execution refers to the execution of the smart contract that is successfully performed to enable transfer of the UTXO. Note that in such examples, “an entity” that is able to cause the transfer of the UTXO refers to an entity that is able to create the unlocking script without being required to prove knowledge of some secret. In other words, the unlocking transaction can be validated without verifying that the source of the data (e.g., an entity that created the unlocking transaction) has access to a cryptographic secret (e.g., private asymmetric key, symmetric key, etc.). Also, in such examples, self-enforcement refers to the validation nodes of the blockchain network being caused to enforce the unlocking transaction according to the constraints. In some examples, “unlocking” a UTXO (also known as “spending the UTXO) is used in the technical sense, referring to creating an unlocking transaction that references the UTXO and executes as valid.
A blockchain transaction output includes a locking script and information regarding ownership of digital assets such as Bitcoins. The locking script, which may also be referred to as an encumbrance, “locks” the digital assets by specifying conditions that are required to be met in order to transfer the UTXO. For example, a locking script could require that certain data be provided in an unlocking script to unlock the associated digital assets. The locking script is also known as “scriptPubKey” in Bitcoin. A technique for requiring a party to provide data to unlock a digital asset involves embedding a hash of the data inside the locking script.
SUMMARY OF INVENTION
Thus, it is desirable to provide methods and systems that improve blockchain technology in one or more of these aspects. Such an improved solution has now been devised. Thus, in accordance with the present invention there is provided a method as defined in the appended claims.
Such an improved solution has now been devised.
Thus, in accordance with the present invention there are provided systems and methods as defined in the appended claims.
In accordance with the invention there may be provided a computer-implemented method for a node of a blockchain network, the computer-implemented method comprising: generating a transaction output of a transaction comprising an indication of a digital asset and a locking script that encodes a set of conditions for transferring control of the digital asset, satisfaction of the set of conditions to be determined based at least in part on a verification key and a proof; generating a transaction input of the transaction, the transaction input comprising: an identifier associated with the transaction output; and an unlocking script comprising the proof; and verifying the set of conditions are satisfied based at least in part on the locking script and the unlocking script; and transferring control of the digital asset in response to verifying satisfaction of the set of conditions.
The verification key may comprises a first plurality of elements of a finite field and the proof comprises a second plurality of elements of the finite field.
The elements of the field may be points on an elliptic curve.
The elements of the finite field may be encoded in a compressed format.
Preferably, the method may include a client encoding the transaction input with the verification key and a first digital certificate associated with the client and a worker encoding the transaction input with the proof and a second digital certificate associated with the worker.
The locking script may comprise instructions that, contingent upon a condition of the set of conditions being unsatisfied by the unlocking script, reclaim the digital asset for the provider of the digital asset.
The locking script may further comprise a redeem script, wherein the verification key and the redeem script encodes sufficient information to determine satisfaction of the at least subset of the set of conditions; and the locking script encodes, as one condition the set of conditions, that a hash of the redeem script matches a predetermined value.
The redeem script may be less than or equal to a predetermined maximum size, such as 520 bytes.
The unlocking script may comprise one or more elements of the verification key, and the redeem script may comprise at least some of the remaining elements of the verification. The unlocking script and the redeem script may collectively comprise the verification key.
The locking script, unlocking script, and redeem script of the transaction may be in accordance with a Pay-to-Script-Hash transaction of a Bitcoin-based protocol or variations thereof.
The transaction may be in accordance with a standard transaction of a blockchain-based protocol such as a Bitcoin protocol.
The scripts, such as the locking script and the unlocking script, may be encoded with commands and data in a stack-based scripting language, wherein the commands and the data are placed on a stack in a last-in-first-out order.
The set of conditions may comprise one or more bilinear constraints.
It is also desirable to provide a system, comprising: a processor; and memory including executable instructions that, as a result of execution by the processor, causes the system to perform any of the methods as claimed.
It is also desirable to provide a non-transitory computer-readable storage medium having stored thereon executable instructions that, as a result of execution by one or more processors of a computer system, cause the computer system to at least perform any of the methods as claimed.
The invention can be described as a verification method/system, and/or as a control method/system for controlling the exchange or transfer of a digital asset via a blockchain. In some embodiments, the digital asset is a token or a portion of cryptocurrency. As explained below, the invention can also be described as a secure method/system for new, improved and advantageous ways of performing operations via a blockchain network or platform.
BRIEF DESCRIPTION OF THE DRAWINGS
These and other aspects of the present invention will be apparent from and elucidated with reference to, the embodiment described herein. An embodiment of the present invention will now be described, by way of example only, and with reference to the accompany drawings, in which:
FIG.1 illustrates a blockchain environment in which various embodiments can be implemented;
FIG.2 illustrates a computing environment which may be utilized to implement a protocol in accordance with various embodiments;
FIG.3 illustrates a diagram of an environment suitable for performance of a verifiable computation;
FIG.4 illustrates an example diagram wherein a point on an elliptic curve is represented using a compressed and uncompressed encoding that is suitable for use with a blockchain script such as a locking or unlocking script, in accordance with an embodiment;
FIG.5 illustrates a diagram wherein a client supplies the verification key to be used in validation of a proof;
FIG.6 illustrates a diagram wherein a worker supplies the verification key to be used in validation of a proof;
FIG.7 illustrates a diagram of aprocess700 for generating a redeem script in accordance with an embodiment; and
FIG.8 illustrates a computing device that can be used to practice at least one embodiment of the present disclosure.
DETAILED DESCRIPTION
Reference will first be made toFIG.1, which illustrates an example blockchain network100 associated with a blockchain in accordance with an embodiment of the present disclosure. In the embodiment, the example blockchain network100 comprises blockchain nodes that are implemented as peer-to-peer distributed electronic devices, each running an instance of software and/or hardware that performs operations that follow a blockchain protocol that is, at least in part, agreed to among operators ofnodes102. In some examples, “nodes” refers to peer-to-peer electronic devices that are distributed among the blockchain network. An example of a blockchain protocol is the Bitcoin protocol.
In some embodiments, thenodes102 can be comprised of any suitable computing device (e.g., by a server in a data centre, by a client computing device (e.g., a desktop computer, laptop computer, tablet computer, smartphone, etc.), by multiple computing devices in a distributed system of a computing resource service provider, or by any suitable electronic client device such as thecomputing device800 ofFIG.8). In some embodiments, thenodes102 have inputs to receive data messages or objects representative of proposed transactions, such as atransaction104. The nodes, in some embodiments, are be queryable for information they maintain, such as for information of a state of thetransaction104.
As shown inFIG.1, some of thenodes102 are communicatively coupled to one or more other of thenodes102. Such communicative coupling can include one or more of wired or wireless communication. In the embodiment, thenodes102 each maintain at least a portion of a “ledger” of all transactions in the blockchain. In this manner, the ledger would be a distributed ledger. A transaction processed by a node that affects the ledger is verifiable by one or more of the other nodes such that the integrity of the ledger is maintained.
As for whichnodes102 can communicate with which other nodes, it can be sufficient that each of the nodes in the example blockchain network100 are able to communicate with one or more other of thenodes102 such that a message that is passed between nodes can propagate throughout the example blockchain network100 (or some significant portion of it), assuming that the message is one that the blockchain protocol indicates should be forwarded. One such message might be the publication of a proposed transaction by one of thenodes102, such asnode102A, which would then propagate along a path such as apath106. Another such message might be the publication of a new block proposed for inclusion onto a blockchain.
In an embodiment, at least some of thenodes102 are mining nodes that perform complex calculations, such as solving cryptographic problems. A mining node that solves the cryptographic problem creates a new block for the blockchain and broadcasts the new block to others of thenodes102. The others of thenodes102 verify the work of the mining node and, upon verification, accept the block into the blockchain (e.g., by adding it to the distributed ledger of the blockchain). In some examples, a block is a group of transactions, often marked with a timestamp and a “fingerprint” (e.g., a hash) of the previous block. In this manner, each block may become linked to a previous block, thereby creating the “chain” that links the blocks in the blockchain. In embodiments, valid blocks are added to the blockchain by a consensus of thenodes102. Also in some examples, a blockchain comprises a list of validated blocks.
In an embodiment, at least some of thenodes102 operate as validating nodes that validate transactions as described in the present disclosure. In some examples, a transaction includes data that provides proof of ownership of a digital asset (e.g., a number of Bitcoins) and conditions for accepting or transferring ownership/control of the digital asset. In some examples, an “unlocking transaction” refers to a blockchain transaction that reassociates (e.g., transferring ownership or control) at least a portion of a digital asset, indicated by an UTXO of a previous transaction, to an entity associated with a blockchain address. In some examples, a “previous transaction” refers to a blockchain transaction that contains the UTXO being referenced by the unlocking transaction. In some embodiments, the transaction includes a “locking script” that encumbers the transaction with conditions that must be fulfilled before ownership/control can be transferred (“unlocked”).
In some embodiments, the blockchain address is a string of alphanumeric characters that is associated with an entity to which control of at least a portion of a digital asset is being transferred/reassociated. In some blockchain protocols implemented in some embodiments, there is a one-to-one correspondence between a public key associated with the entity and the blockchain address. In some embodiments, validation of transactions involves validating one or more conditions specified in a locking script and/or unlocking script. Upon successful validation of thetransaction104, the validation node adds thetransaction104 to the blockchain and distributes it to thenodes102.
Systems and methods described herein relate to enabling a locking script to secure the verification key VKfrom alteration and checking validity of a proof π, thereby allowing execution of a zero-knowledge protocol on a blockchain during transaction validation.
A verifiable computation is a technique that allows the generation of proofs of computation. In an embodiment, such a technique is utilized by a client to outsource, to another computing entity referred to herein as a worker, the evaluation of a function f on an input x. In some cases, the client is computationally limited so that it is infeasible for the client to perform the evaluation of the function (e.g., the expected runtime of the calculation using computing resources available to the client exceeds a maximum acceptable threshold), although such need not be the case, and the client may, generally, speaking, delegate evaluation of the function f on the input x based on any suitable criterion, such as computational runtime, computational cost (e.g., the financial cost of allocating computing resources to perform the evaluation of the function), and more.
A worker, in an embodiment, is any suitable computing entity such as a blockchain node as described in greater detail elsewhere in the present disclosure. In an embodiment, a worker (e.g., a blockchain node) evaluates the function f on input x and generates an output y and a proof π of the correctness of the output y that can be verified by other computing entities such as the client as described above and/or other nodes of the blockchain network. Proofs, which may also be referred to as arguments, can be verified faster than doing the actual computational—accordingly, computational overhead can be reduced (e.g., reducing power overhead and the cost associated with powering and running computing resources) by verifying the correctness of the proof instead of re-computing the function f over input x to determine the correctness of the output generated by the worker described above. In zero-knowledge verifiable computation the worker provides an attestation to the client that the worker knows an input with a particular property.
An efficient variant of a zero-knowledge proof of knowledge is zk_SNARK (Succinct Non-interactive ARgument of Knowledge). In an embodiment, all pairings-based zk-SNARKs include a process where the worker computes a number of group elements using generic group operations and the verifier checks the proof using a number of pairing product equations. in an embodiment, the linear interactive proof works over a finite field and the worker's and verifier's message include, encode, reference, or otherwise include information usable to determine vectors of field elements.
In an embodiment, systems and methods described herein allow mining nodes of a blockchain to perform a computation (e.g., evaluation of function f on input x) once and generate a proof that can be used to verify correctness of the output wherein evaluating correctness of the proof is computationally less expensive than evaluating the function. In this context, the cost (i.e., how expensive) of operations and tasks may refer to the computational complexity of performing the operation or task. In an embodiment, computational complexity refers to the average computational cost or the worst-case computational cost of performing the sorting algorithm—for example, a heapsort algorithm and a quicksort algorithm both have an average computational cost of O(n log n), but quicksort has a worst-case computational cost of O(n2) whereas heapsort has a worst-case computation cost of O(n log n). In an embodiment, the average computational cost and/or the worst-case computational cost of evaluating the function f on input x is worse than that of evaluating correctness of the proof. Accordingly, the use of systems and methods described herein are highly advantageous and, may, for example, allow for more computationally expensive contracts to be run as such contacts would not increase the time required to validate the blockchain proportionally. Further advantages may include reduction in power consumption of verifier systems, thereby improving the efficiency of verifier computer systems and reducing the energy costs associated with running such verifier computer systems in evaluating correctness of proofs. Currently, smart contracts must be executed and validated on all nodes—this constraint limits the complexity of smart contracts. Methods and systems described herein can be utilized to implement a system that improves the efficiency of the blockchain by executing a contract once to generate a proof of correctness and, based on the proof of correctness provided by the worker and the verification key provided by the client, all nodes of the blockchain can verify validity of the contract. In this way, the efficiency of the blockchain is improved by increasing the throughput of smart contracts that can be performed in aggregate by nodes of the blockchain and/or enable the computation of more computationally expensive smart contracts.
In an embodiment, a verification key VKor portions thereof can be extracted from public parameters generated in a setup phase of a zero-knowledge protocol and used together with a proof π, and the input/output data to verify the alleged proof of correctness computation provided by a worker. For example, as described in greater detail above and below, systems and methods that allow a locking script secures the verification key VKfrom alteration and checks the validity of the proof π, allowing the execution of a zero-knowledge protocol on blockchain during transaction validation. Accordingly, the present disclosure presents systems and methods to execute the verification phase using blockchain scripts (e.g., in a Bitcoin-based network) for storing the elements used in the verification of the computation.
FIG.2 illustrates acomputing environment200 which may be utilized to implement a protocol in accordance with various embodiments. The protocol may be implemented using blockchain technologies to store proof-of-correctness and combine the “correct-by-construction” cryptography approach with smart contracts. In an embodiment, a public verifiable computation scheme comprises three phases: a setup phase, a computation phase and a verification phase.
A setup phase may be performed as part of a process to outsource the performance of computational tasks. A client, as referred to below, may refer to an entity such as a customer or client computer system that delegates performance of a computational task to a worker, which may be a different computer system. Clients may, generally speaking, delegate the performance of computational tasks for a variety of reasons, including but not limited to limited computing resources, lack of computing resources, financial costs associated with utilizing a client computer system to perform the task, energy costs associated with utilizing a client computer system to perform the task (e.g., a mobile device or laptop that relies on a battery for power may utilize a worker to perform computationally intensive tasks, thereby saving power and prolonging the usage of the battery-powered device), and more.
In an embodiment, the setup phase involves a client, customer, employee of an organization, or any other suitable entity writing contracts in a formal language with precise semantics. The contract may be written in a high-level programming language such as C or Java. Generally speaking, contracts may be expressed in any language or syntax that is or can be converted to a format that can be manipulated by a computer system. In an embodiment, a domain specific language, with a limited purpose, may provide type-safety and restricted expressivity may be utilized. The source code generated may be a precise description of a contract.
Thecompiler202 may be any hardware, software, or a combination thereof that includes executable code that, if executed by one or more processors of a computer system, causes the system to take, as input, thesource code206 and produces a circuit. Acompiler202 may refer to a computer program that executes or performs instructions based on instructions that have been compiled into a machine-readable format such as binary code. It should be noted that while acompiler202 is illustrated, interpreters, assemblers, and other suitable software and/or hardware component may be utilized to convert the source code to a circuit. In an embodiment, the circuit is an arithmetic circuit that comprises wires that carry values from a field F and connect to logical and/or arithmetic gates. In an embodiment, the circuit
Figure US11658801-20230523-P00001
is used by the system to generate aquadratic program Q208 that comprises a set of polynomials that provide a complete description of the original circuit
Figure US11658801-20230523-P00001
.
In an embodiment, thecompiler202 is able to recognise a substantial subset of a programming language such as C or Java including but not limited to: pre-processor directives, static initializers, global and local functions, block-scoped variables, arrays, data structures, pointers, function calls, function operators (e.g., functors), conditionals and loops, and arithmetic and bitwise Boolean operators. In an embodiment, thecompiler202 but does not support the entire set of commands in accordance with standards of the programming language (this may, in some cases, be intended to prevent certain types of algorithms from being executed in a smart contract, such as to prohibit recursive algorithms). In an embodiment, the compiler expands expressions of the source code into an arithmetic gate language to produce an arithmetic circuit. Circuit implementations have been contemplated in the past by Campanelli, M., et al. (2017) in “Zero-Knowledge Contingent Payments Revisited: Attacks and Payments for Services” and by Tillich, S. and Smart, B in “Circuits of Basic Functions Suitable For MPC and FHE.” The arithmetic circuit may be utilized to build a Quadratic Arithmetic Problem (QAP) by thecompiler202 or any other suitable hardware, software, or combination thereof (e.g., a software module not illustrated inFIG.2). The quadratic program is compiled into a set of cryptographic routines for the client (e.g., key generation and verification) and the worker (e.g., computation and proof generation) in accordance with an embodiment. In some embodiments, arithmetic circuit optimisation techniques such as those described in U.K. Pat. Application No. 1718505.9 may be utilized in order to reduce the required resources necessary for a worker to determine an outcome of the smart contract.
In an embodiment, thekey generator204 is hardware, software, or a combination thereof that includes executable code which, if executed by one or more processors of a computer system, causes the system to generate an evaluation key and a verification key form a quadratic program. Techniques for encoding computations as quadratic programs are contemplated in “Quadratic Span Programs and Succinct NIZKs without PCPs” by Gennaro, R., et al. (2013). In an embodiment, the quadratic arithmetic problem (QAP) Q encodes the circuit
Figure US11658801-20230523-P00001
over a field F and contains a set of m+1 polynomials:
V={vk(x)},W={wk(x)},Y={yk(x)}
with 0≤k≤m. A target polynomial t(x) is also defined. Given a function ƒ that takes n elements of F as input and outputs n′ elements, with N=n+n′, then Q computes ƒ if {c1, . . . , cN}ϵFNis a valid assignment of the group of input and outputs of ƒ and if there exists a list of coefficients {cN+1, . . . , cm} such that t(x) divides p(x):
p(x)=(v0(x)+k=1mck·vk(x))·(w0(x)+k=1mck·wk(x))-(y0(x)+k=1mck·yk(x))
Therefore, in an embodiment, there must exist some polynomial h(x) such that h(x)·t(x)=p(x). The size of Q is m, and its degree is the degree of t(x).
In an embodiment, building a QAP for an arithmetic circuit comprises pick an arbitrary root rgϵF for each multiplication gate g in the circuit and defining the target polynomial to be t(x)=Πg(x−rg). In an embodiment, an index kϵ{1 . . . m} is associated to each input of the circuit and to each output from a multiplication gate. The polynomials in V encode the left input into each gate, the W encode the right input into each gate, and the Y encode the outputs. For instance, vk(rg)=1 if the k-th wire is a left input to gate g, and vk(rg)=0 otherwise. Therefore, for a particular gate g and its root rg, the previous Equation can be simplified as follows:
k=1mck·vk(rg))·(Σk=1mck·wk(rg))=(ΣkϵIleftck)·(ΣkϵIrightck)=cgyk(rg)=cg
The output value of the gate is equal to the product of its inputs. The divisibility check decomposes into deg(t(x)) separate checks, one for each gate g and root rgof t(x), such that p(rg)=0. Addition gates and multiplication-by-constant gates do not contribute to the size or degree of the QAP.
In an embodiment, the QAP is defined over a field Fp, where p is a large prime. In an embodiment, it is desirable that QAP over Fp efficiently computes any function that can be expressed in terms of addition and multiplication modulo p. An arithmetic split gate may be designed to translate an arithmetic wire aϵFp, known to be in [0, 2k-1], into k binary output wires. Accordingly, it follows that, Boolean functions can be expressed using arithmetic gates. For instance, NAND(a,b)=1−ab. Each embedded Boolean gate costs only one multiply. Moreover, new gates such as split can be defined as standalone and composed with other gates. Given input aϵFpknown to be in [0, 2k-1], the split gate outputs k wires holding the binary digits a1, . . . , akof a such Σk2i-1ai=a and each aiis either 0 or 1.
Finally, the public parameters to be used by all provers and verifiers are generated by the system as part of the setup phase. It should be noted that the evaluation key EKand the verification key VKare derived using a secret value selected by the client. Akey generator204 may utilize the quadratic arithmetic program (QAP) in connection with the key generation algorithm to generate theevaluation key EK210 and theverification key VK212.
In an embodiment, performing a computational task involves the computation of a function on an input216 (i.e., a process for evaluating f(x)) by a worker. In an embodiment, the worker is any suitable computer system that the client may delegate a computational task to. Theinput216, in an embodiment, includes information that attests to the worker's identity, such as a digital signature generated using a private key associated with the worker. In an embodiment, the worker is a computer system that the client pays a fee for a successful computation (e.g., via a transfer of digital assets). The client, in an embodiment provides an input x and the evaluation key EKto a worker, the worker uses theevaluation module214 to a compute routine to compute the output y (i.e., y=f(x) wherein the input is x and the function is f) and uses theevaluation key EK210 to produce a proof-of-correctness218. The evaluation module, in an embodiment, is hardware and/or software that includes instructions that, if executed by one or more processors of a computer system, cause the computer system to evaluate the values of the internal circuit wires of theQAP208 and produce an output y of the QAP.
In an embodiment, each polynomial vk(x)ϵF of the quadratic program is mapped to an element gvk(s)in a bilinear group, where s is a secret value selected by the client, g is a generator of the group, and F is the field of discrete logarithms of g. In an embodiment, for a given input, the worker evaluates the circuit to obtain the output and the values of the internal circuit wires, which correspond to the coefficients ciof the quadratic program. Accordingly, a worker can evaluate v(s)=Σkϵ{m} ck·vk(S) to get gv(s); compute w(s) and y(s); compute h(x)=p(x)/t(x)=Σdhi·xi; and compute gh(s)using the hiand gs(i)terms in the evaluation key. In an embodiment, the proof-of-correctness218 comprises (gv(s), gw(s), gy(s), gh(s)) and a verifier uses the bilinear map to check that p(s)=h(s)·t(s). In an embodiment, the proof π is stored on theblockchain222 for later use or can be verified by multiple parties without requiring the prover to separately interact with each of these. In an embodiment, the evaluation of the circuit storage of the proof-of-correctness may be performed to unlock digital assets encumbered by a locking script of a transaction.
In an embodiment, the proof π is broadcast to a blockchain network and averifier220 is used to verify the proof. In an embodiment, theverifier220 is any suitable computing entity, such as a node on a blockchain. It should further be noted that in some cases, the same computing entity that generates the evaluation key EKand verification key VKalso verifies the proof. In an embodiment, nodes of blockchain can validate a payment transaction using the verification key VKand the proof π, thus validating the contract if the verification succeeds. One requirement of the protocol is that the worker cannot provide incorrect proofs, even when it knows the verification key VK. Thus, in this protocol, a common reference string (CRS) is produced by the client or by a trusted third party who publishes at least the evaluation key EKand verification key VK. In an embodiment, the published verification key VKcan be used by any computing entity to verify computations.
Using techniques described herein, a client is able to partially obfuscate transaction data, such as the identity of the recipients of a blockchain transaction. In an embodiment, the unlocking script does not expose the recipient's address and the recipient's public key. However, in some cases, the value of the transaction (e.g., amount of digital assets transferred) may be visible to nodes of the blockchain network. In an embodiment, cryptographic techniques as described above and below are utilized by the client to covert locking scripts into quadratic arithmetic programs and the worker to solve arithmetic programs to generate proofs.
Generally speaking, a client is able to use standard transactions (e.g., standard transactions as defined in a Bitcoin-based blockchain network) such as P2PK and P2PKH to pay a counterparty or worker. For example, in an embodiment, a client converts a P2PK locking script into an arithmetic circuit and broadcasts a payment transaction that includes a puzzle derived from the circuit. A counterparty or worker receives the circuit, provides an appropriate input (e.g., information that attests to the worker's identity such as a shared secret between the client and the worker or a digital signature generated using the worker's private key) and runs the circuit to generate a proof-of-correctness π. In an embodiment, the proof is used to unlock digital assets, and furthermore, it may be the case that information identifying the counterparty or worker (e.g., a public key and/or digital signature associated with the counterparty or worker) is not recorded to the blockchain in an unobfuscated format.
In an embodiment, the verification key and the corresponding proof are generated according to techniques described above and/or below. Accordingly, a verifier is given verification key VKand proof π:
VK={αvαwαwαyββryt(s)rvvi(s)rwwi(s)ryyi(s)}i=0NProofπ={i=N+1mairvvi(s)i=N+1maiαvrvvi(s)i=N+1mairwwi(s)i=N+1maiαwrwwi(s)i=N+1mairyyi(s)i=N+1maiαyryyi(s)i=N+1mai(rvβvi(s)+rwβwi(s)+ryβyi(s))i=0dhisi}
such that the verifier computes a plurality of elliptic curve multiplications (e.g., one for each public input variable) and five pair checks, one of which includes an additional pairing multiplication.
Given verification key VK, proof π, and (a1, a2, . . . , aN), to verify that t(x) divides p(x) and hence (xN+1, . . . , xm)=f(x0, . . . , xN), the verifier proceeds as follows. First it checks all the three α terms:
e(avrvVmid(s)
Figure US11658801-20230523-P00002
,
Figure US11658801-20230523-P00003
)=e(rvVmid(s)
Figure US11658801-20230523-P00002
v
Figure US11658801-20230523-P00003
)
e(awrwVmid(s)
Figure US11658801-20230523-P00002
,
Figure US11658801-20230523-P00003
)=ew
Figure US11658801-20230523-P00002
,rwWmid(s)
Figure US11658801-20230523-P00003
)
e(ayryVmid(s)
Figure US11658801-20230523-P00002
,
Figure US11658801-20230523-P00003
)=e(ryYmid(s)
Figure US11658801-20230523-P00002
y
Figure US11658801-20230523-P00003
)
wherein Vmid(S)=Σi=N+1maivi(s), Wmid(s)=Σi=N+1maiwi(s), and Ymid(s)=Σi=N+1maiyi(s). Then, the verifier checks the term β:
e(rvVmid(s)
Figure US11658801-20230523-P00002
+ryYmid(s)
Figure US11658801-20230523-P00002
Figure US11658801-20230523-P00003
e
Figure US11658801-20230523-P00002
,rwWmid(s)
Figure US11658801-20230523-P00003
)=e(Zmid(s)
Figure US11658801-20230523-P00002
,
Figure US11658801-20230523-P00003
)
and Zmid(s)=Σi=N+1mai(rvβvi(s)+rwβwi(s)+ryβyi(s)). Finally, the verifier checks the divisibility requirement:
e(rvV(s)
Figure US11658801-20230523-P00002
,RwW(s)
Figure US11658801-20230523-P00003
)=e(ryY(s)
Figure US11658801-20230523-P00002
,
Figure US11658801-20230523-P00003
e(ryt(s)
Figure US11658801-20230523-P00002
,h(s)
Figure US11658801-20230523-P00003
)
wherein rvV (s)
Figure US11658801-20230523-P00002
i=0mrvaivi(s)
Figure US11658801-20230523-P00002
, rwW (s)
Figure US11658801-20230523-P00003
i=0mrwaiw (s)
Figure US11658801-20230523-P00003
, ryY(s)
Figure US11658801-20230523-P00002
i=0mryaiy(s)
Figure US11658801-20230523-P00002
, and h(s)
Figure US11658801-20230523-P00003
i=0dhi
Figure US11658801-20230523-P00003
.
Thus, upon considering the notation from the sections described above and the examples described in this disclosure, the verification comprises a set of pair checks of the following elements, in accordance with one embodiment:
e(π2,VK2)=e(π1,VK3)e(π4,VK2)=e(VK5,π3,)e(π6,VK2)=e(π5,VK6)e((π1+π6),VK2)=e(π7,VK2)e((a0VK10+a1VK11+a2VK12+a3VK13+a4VK14+π2+a7VK15),(a0VK16+a1VK17+a2VK18+a3VK19+a4VK20+π4+a7VK21))=e((a0VK22+a1VK23+a2VK24+a3VK25+a4VK26+π6+a7VK15),VK2)*e(VK9,π8)
FIG.3 illustrates a diagram300 for coordinating the performance of a verifiable computation. Theclient302,worker304, andverifier306 may be nodes of a blockchain network. Theclient302 may be any suitable computer system any may include executable code which, if executed by one or more processors of a computer system, causes the computer system to receive asmart contract308. In an embodiment, thesmart contract308 is encoded in a high-level programming language as source code such as C, C++, or Java. In an embodiment, software such as a compiler, interpreter, and/or assembler may be utilized to transform thesmart contract308 to anarithmetic circuit310 which consists of “wires” that carry values from a field IF and connect to addition and multiplication gates. It should be noted that the arithmetic circuit may refer to a logical circuit that can be implemented by a physical circuit comprising a series of physical gates (e.g., using transistor-transistor logic (TTL) integrated circuits such as 7400-series gates, flip-flops, buffers, decoders, multiplexers, and the like) connected by physical wires.
In an embodiment, theclient302 provides theworker304 with anarithmetic circuit310 and aninput312 to the circuit. Thecircuit310 may be used to generate a quadratic program Q that comprises a set of polynomials that provide a complete description of the original circuit. In either case, theworker304 may execute the circuit
Figure US11658801-20230523-P00001
or the quadratic program
Figure US11658801-20230523-P00003
on theinput312 to generate one ormore outputs314. In some embodiments, the worker (i.e., the prover) is expected to obtain, as the output, a valid transcript for {
Figure US11658801-20230523-P00001
, x, y} that is an assignment of values to the circuit wires such that the values assigned to the input wires are those of x, the intermediate values correspond to the correct operation of each gate in
Figure US11658801-20230523-P00001
, and the values assigned to the output wire(s) is y; if the claimed output is incorrect (i.e., y≠
Figure US11658801-20230523-P00002
(x)), then a valid transcript for {
Figure US11658801-20230523-P00001
, x, y} does not exist. In an embodiment, the worker is expected to provide a subset of the values of the circuit wires, wherein the selected subset of the values of the circuit wires are not known to the worker a priori.
In embodiments, the output the values of the internal circuit wires (or a subset thereof), and the evaluation key EKEKare used to produce the proof-of-correctness316. The proof π can be stored on the blockchain and verified by multiple parties without requiring theworker304 to separately interact with the multiple parties. In this manner, averifier306 can validate the payment transaction using the public verification key VKand the proof π, thereby validating the contract. In some cases, theclient302 may reclaim digital assets encumbered by the payment transaction if the verification fails. In some cases, theverifier306 and theclient302 are the same computer system.
FIG.4 illustrates a diagram400 of an embodiment of the present disclosure. Specifically,FIG.4 depicts a point on anelliptic curve402 that is encoded in various formats that are suitable for use in a blockchain based script such as a Bitcoin-based locking and unlocking script.
In various embodiments, elliptic curve points may be encoded in locking and unlocking scripts that are executed in association with transactions. On a Bitcoin-based system, these scripts may be written in a stack-based scripting language. For example, the verification key VKmay comprise {VK1, VK2,VK3, . . . , VKn} and the proof π may comprise a set of elements {π1, . . . , π8} wherein VKiand πjare points on an elliptic curve over a finite field
Figure US11658801-20230523-P00004
p, E(
Figure US11658801-20230523-P00004
p).FIG.4 illustrates an example diagram400 wherein a point on anelliptic curve402 is represented using either a compressed (PC) or an uncompressed (PU) encoding that is suitable for use with a blockchain script such as a locking or unlocking script.
In an embodiment, let PϵE(
Figure US11658801-20230523-P00004
p) be a point on the elliptic curve. If P≠
Figure US11658801-20230523-P00005
, the point is represented by its affine coordinate. Inuncompressed encoding404 the point P is represented by information indicating an uncompressed encoding (e.g., aprefix406 such as the parameter ‘C’ described below) and two field elements (x and y coordinates408 and410), while in the compressed encoding the point is represented only by its x-coordinate and an additional bit to uniquely identify the y-coordinate. Accordingly, in an embodiment, PU=C∥X∥Y where:
    • C=0x04
    • X=FieldElements2OctetString (x)
    • Y=FieldElements2OctetString (y)
      wherein the double-pipe operator “∥” refer to a concatenation operation and the FieldElements2OctetString( ) function can be used to convert elements of fields (e.g., finite fields) to octet strings comprising exactly eight bits. Regarding the compressed encoding, PC=C∥X where:
C={0x02ifyeven0x03ifyoddX=FieldElements2OctetString(x)
In an embodiment, anuncompressed encoding404 comprises a point P of a finite field (i.e., PϵE(
Figure US11658801-20230523-P00004
p)) such as the x-coordinate408 and y-coordinate410 of a point on an elliptic curve. Theuncompressed encoding404 further comprises information usable to determine the encoding is an uncompressed encoding (e.g., aprefix406 value prepended/appended to the x-coordinate408 and the y-coordinate410). Conversely, a compressed encoding412 comprises an encoding of a pint P of a finite field (e.g., as described above) and information usable to determine the encoding is a compressed encoding. For example, acompressed encoding412A encodes aprefix414 and the x-coordinate408 of a point P, wherein the corresponding y-coordinate is determinable based at least in part on theprefix414. For example, theprefix414 indicates the y-coordinate is even. Conversely, a secondcompressed encoding412B encodes adifferent prefix416 and an x-coordinate408 of a point P, and is used to determine a y-coordinate that is odd.
It should be noted that, generally speaking, the uncompressed point PUmay be expressed in any suitable format that encodes information usable to determine that PUis an uncompressed elliptic curve point, the x-coordinate of the point, and the y-coordinate of the point. Similarly, the compressed point PCmay be expressed in any suitable format that encodes information usable to determine that PCis a compressed elliptic curve point and compressed information that is usable to determine the x-coordinate and y-coordinate of the point.
As an example, consider the representation of points of a secp256k1 elliptic curve in a Bitcoin-based system. In an embodiment where uncompressed points are represented, the first octet in an encoded bit string of an uncompressed elliptic curve P is 0x04 followed by two 256-bit numbers corresponding to the X coordinate of the point and the Y coordinate of the point (i.e., P=C∥X∥Y). As an example, a Distinguished Encoding Rules (DER) encoding format is used, although other suitable encoding formats are contemplated in the scope of this disclosure such as Basic Encoding Rules (BER) and Canonical Encoding Rules (CER).
In an embodiment, a one-byte script opcode including the length of the elliptic curve point is concatenated to the actual point (e.g., the length is concatenated to the front of the actual point). For example, if:
    • x=0xe3b01684a8a8b66f8e44203db5869b4dcb74a0afc905ae9197ed74a8d6cecdcc
    • y=0x6424d186a23687532c8b20911defc2f42c93749b3736857912c6abe2dc3f01d1
      the compressed and uncompressed scripts PCand PUare, in an embodiment, respectively:
      Script PC: 0x21∥0x03e3b01684a8a8b6618e44203db5869b4dcb74a0afc905ae9197ed74a8d6cecdcc
      Script PU: 0x41∥ 0x04e3b01684a8a8b66f8e44203db5869b4dcb74a0afc905ae9197ed74a8d6cecdcc6424d1 86a23687532c8b20911defc2f42c93749b3736857912c6abe2dc3f01d1
In an embodiment, a client is a party of a smart contract and determines to utilize a blockchain for execution of the contract. As part of the determination, the client posts a payment transition to the blockchain to transfer digital assets controlled by the client to a party (e.g., a worker) that publishes a proof π. A verifier compute system such as those described above may perform a verification routine to determine that the proof π is correct.
In accordance with a protocol, the client may generate a common reference string for the production and generation of the proof π. In some embodiments, the common reference string is generated by a trusted party (e.g., a third party). It should be noted that while a trusted third party may generate the common reference string, that the introduction of a trusted third party to the protocol is optional—the protocol requires a client and worker and may be performed without an additional third party.
Continuing with the protocol, the verification of the computation occurs as part of the verification stage of a transaction. In an embodiment, such as a Bitcoin-based network, the client or worker is constrained to provide {VK1, VK2, VK3, . . . , VKn} as part of a locking script and/or an unlocking script. This constraint can be achieved in various ways. For example, in an embodiment, the worker provides the verification key VKthrough the injection of a serialised unlocking transaction that comprises {VK1, VK2, VK3, . . . , VKn} in one of its unlocking scripts. As a second example, the client broadcasts a transaction where the locking script comprises {VK1, VK2, VK3, . . . , VKn} and equations utilized in the Validation phase and creates a transaction input signed with SIGHASH_NONE|SIGHASH_ANYONECANPAY that comprises verification key VK. The client passes this input to the worker, who needs to add {π1, . . . , π8}, sign, and broadcast. As yet another example, the worker provides verification key VKby using a fixed-length script hash (e.g., 20-byte script hash) in the locking script of the transaction paying for the execution. Of course, these are merely illustrative examples of how {VK1, VK2, VK3, . . . , VKn} are provided as part of a locking script, an unlocking script, or any other suitable scripts or operations that are executed as part of the verification of a transaction in accordance with any suitable blockchain protocol. In an embodiment, the worker provides {π1, . . . , π8} as part of an unlocking script and the proof π is authorised if it meets the conditions set in the output script.
A blockchain-based system such a Bitcoin-based system, in an embodiment, supports execution of operations (also referred to as opcodes and commands) in accordance with a scripting language such as Script (e.g., Bitcoin-based systems support Script). In an embodiment, a transaction comprises locking (output) and unlocking (input) scripts and can be identifiable as one of a list of standard types. For example, in a Bitcoin-based system, there are five standard types: Pay-to-Public-Key (P2PK), Pay-to-Public-Key-Hash (P2PKH), Multi-signature, Pay-to-Script-Hash (P2SH), and OP_RETURN.
In running the proposed zk-protocol as described herein, information such as the common reference string, the proof π, and/or portions thereof are stored on the blockchain. Furthermore, as part a validation process, it may also the case that a system is to extract specific elements pushed on the stack in the transaction validation process and check the pairing from the validation phase as described above.
Transactions may include small programs known as scripts embedded into their inputs and outputs, which specify how and by whom the outputs of the transactions can be accessed. On the Bitcoin platform, these scripts are written using a stack-based scripting language. In an embodiment, a protocol includes various technical rules and syntax-based restrictions on transactions that determine whether a transaction is a standard transaction or a non-standard transaction. In an embodiment, there are restrictions to the size of elements pushed on the execution stack and on the total size of input scripts. For example, in a Bitcoin-based system, every element pushed on the execution stack is limited to 520 bytes and each input script is limited to 1650 bytes. In an embodiment, after the script execution, the stack includes exactly one non-false element. Input scripts cannot include any OP codes other than OP_PUSHDATA (except for the redeem script portion). In an embodiment, a Bitcoin-based system requires a minimum output value of 546 satoshis, although it should be noted that different blockchain systems may define a different amount and/or unit of digital assets to be included as an output value (e.g., a minimum payment to the mining nodes of the transaction). In an embodiment, the minimum output value is zero (i.e., there is no required transferred of digital assets). Transactions that deviate from these rules are considered non-standard.
As part of the validation phase, a verifier (e.g., the client) extracts elements of the verification key VKand proof π and uses them in pairing checks. In an embodiment, the verification check comprises a bilinear mapping that satisfies a set of constraints. As an example, consider a bilinear mapping e(x,y)=2xy) that satisfies constraints of the form e(VK112)=e(VK11)*e(VK12), such as in the following manner:
e(3,4+5)=23*9=227
e(3,4)*e(3,5)=23*423*5=212215=227
It should be noted that such a pairing described above is for illustrative purposes—while such a mapping may not be useful, verbatim, for application in cryptographic systems, it should be noted that the process for verifying the bilinear constraints remains the same wherein the bilinear maps are extended over elliptic curves. Again, for illustrative purposes, an example for how to extract and use information from the common reference string (e.g., the verification key VK) and proof π in the validation phase using Bitcoin scripts is shown below:
Verification KeyVK= {VK1, VK2, VK3, VK4, VK5, VK6}
Proofπ = {π1, π2, π3,,. . . , π8}
Validation checke(π2, VK2) = e(π1, VK3)
e(π4, VK2) = e(VK5, π3,)
e(π6, VK2) = e(π5, VK6)
. . .
It should be noted that in the example provided above is merely used to illustrate examples of pair checks and may include additional constraints, such as those discussed, above, in connection withFIG.2.
There are various techniques for providing the verification key VKfor use in connection with the validation of a proof π.FIG.5 is an illustrative diagram500 where aclient510 supplies the verification key VKto be used in validation of a proof π. In an embodiment, a client creates atransaction output502, wherein the transaction comprises or is otherwise associated with an output value504 (e.g., payment of digital assets to a worker for contract execution) and alocking script508 that performs a verification check comprising a bilinear mapping that satisfies a set of constraints. In an embodiment, the locking script verifies the integrity of the verification key VKbased at least in part on a digital signature of the client. In some cases, the locking script may specify that if the validation fails, the client is able to re-claim the digital assets as described above, in connection with the transaction. Such a transaction may be sent to a blockchain network to be mined by nodes of the blockchain network (e.g., workers). In some blockchain systems, the transaction encodes, in association with the locking script, a parameter indicating the size (e.g., in bytes) of the locking script, which may be referred to as thelocking script size506, such as is illustrated in connection withFIG.5.
As an example, a locking script may be described based on the following:
OP_IF
//verify the integrity of the VK
<PubKey Alice> OP_CHECKSIGVERIFY
OP_0 OP_PICK OP_DUP <VK6> OP_EQUALVERIFY
OP_1 OP_SUB OP_PICK OP_DUP <VK5> OP_EQUALVERIFY
OP_(|VK| − i) OP_SUB OP_PICK OP_DUP <VKi> OP_EQUALVERIFY
//verify the pairings
//e(π2, VK2) = e(π1, VK3)
//left part
OP_DEPTH OP_3 OP_SUB OP_PICK
OP_5 OP_PICK OP_PAIRING OP_TOALTSTACK
//right part
OP_DEPTH OP_2 OP_SUB OP_PICK
OP_4 OP_PICK OP_PAIRING OP_TOALTSTACK
//empty the stack
14*times {OP_DROP}
OP_FROMALTSTACK OP_FROMALTSTACK OP_EQUALVERIFY [1]
//for e(π1, VKj)
OP_DEPTH OP_(i + 1) OP_SUB OP_PICK
OP_(|VK| − j + 1) OP_PICK
OP_PAIRING OP_TOALTSTACK
//for e(VKj, π1)
OP_(|VK| − j ) OP_PICK
OP_DEPTH OP_(i + 1) OP_SUB OP_PICK
OP_PAIRING OP_TOALTSTACK
<PubKey Bob> OP_CHECKSIG
OP_ELSE
 <n days> OP_CHECKSEQUENCEVERIFY
 <PubKey Alice > OP_CHECKSIG
OP_ENDIF
It should be noted that the example provided above is descriptive of a locking script and not necessarily, verbatim, alocking script508 itself. For example some fields above that are described in brackets—such as “<PubKey Client>” which may refer to the client's public key—are not included, verbatim, in alocking script508. Similarly, some fields in parentheses may be based on a mathematical computation—for example, “OP_(i+1)” as described above may not be included, verbatim, in a locking script, but rather refers to an opcode or command that is determined based at least in part on a mathematical computation—in this case, ‘i’ refers to the number of elements of proof π and, accordingly, in an example where proof π={π1, . . . , π8} “OP_(i+1)” may, in a locking script, be represented as “OP_7” in a stack-based scripting language. It should further be noted that text following the double slashes “//” above refer to comments which do not correspond to executable code. For example, “//verify the pairings” does not map to executable code and merely indicates, to a human, that the text following to comment is utilized to perform a verification of the pairings.
It should be noted, again, that thetransaction output502 as described above is merely illustrative and that may such variations may exist—the transaction may include any suitable payment amount in any suitable unit of measurement, and that various locking scripts may exist, such as those that utilize some or all functionality of locking scripts as described above. Generally speaking, alocking script508 may be any suitable set of commands that performs a set of pairing check. In an embodiment, thelocking script508 includes an integrity check of the verification key VKusing at least an asymmetric public key associated with the client. In an embodiment, a locking script allows a client to reclaim digital assets if the validation fails. In an embodiment, thelocking script508 includes instructions to mark the transaction as invalid after a threshold duration (e.g., a value corresponding to “<n days>” as described above).
Theclient510, which may be a client such as those described elsewhere in this disclosure, may create atransaction input512 that references thetransaction502 described above and transmits it to a counterparty (e.g., a worker that will purported compute a valid proof π). In an embodiment, thetransaction input512 may encode anidentifier514 associated with thetransaction output502, atransaction output index516 associated with the transaction output502 (e.g., in some cases, the index is zero-based), an unlocking script520, a parameter indicating the size (e.g., in bytes) of the unlocking script, which may be referred to as the unlockingscript size518, asequence number522, and any suitable combination thereof. For example, in some embodiments, the unlocking script size is not explicitly encoded in thetransaction input512 and is otherwise derivable (e.g., through the detection of a specific terminating sequence that indicates the end of the unlocking script. In an embodiment, the unlockingscript518 comprises the verification key VK524 and adigital signature526 associated with the client. In some cases, the unlockingscript518 includes additional information, such as an indication of branching information that controls the execution the verification process.
As an example, an unlocking script may be described based on the following:
    • <VK1><VK2><VK3><VK4><VK5><VK6><Sig A>1
It should be noted that the example provided above is descriptive of an unlocking script and not necessarily, verbatim, an unlocking script itself. For example some fields above that are described in brackets are not included, verbatim, in an unlockingscript518. Returning to the example above, which is descriptive of an unlocking script, an unlockingscript518 may comprise an ordered or unordered sequence of elements of a verification key VK524, adigital signature526 associated with the client, and branching information. In an embodiment, thedigital signature526 includes a hash type flag. In an embodiment, the hash flag is SIGHASH_NONE|SIGHASH_ANYONECANPAY in accordance with a Bitcoin-based system. An unlockingscript518 may comprise execution control information that is usable in conjunction with the locking script to validate a transaction. For example, in the example described above, the “1” indicates that the script should go into the first branch of a control statement in an unlocking script (e.g., an OP_IF branch instead of an OP_ELSE branch).
In an embodiment, theworker528 computes a proof π530 and appends it with adigital signature532 associated with the worker to the unlockingscript518 and broadcasts the transaction (e.g., to the client and/or one or more nodes of a blockchain network).
As an example, an unlocking script having the proof and the worker's digital signature may be described based on the following:
    • <Sig B><π1><π2> . . . <π8><VK1><VK2><VK3><VK4><VK5><VK6><Sig A>1.
Accordingly, in an embodiment, an unlocking script in accordance with the description immediately above is able to satisfy the conditions placed on the output by the locking script and may allow the digital assets (e.g., as indicated by an output value) to be spent.
There are various techniques for providing the validation key VKfor use in connection with the validation of a proof π.FIG.6 is an illustrative diagram600 where a worker supplies the verification key VKto be used in validation of a proof π. Thetransaction output602 may be in accordance with a Bitcoin-based system and may comprise anoutput value604, a locking script606 (optionally, in some systems), and alocking script608. In an embodiment, the transaction is a Pay-to-Script-Hash (P2SH) transaction in accordance with a Bitcoin-based system. In an embodiment, thetransaction output612 is in accordance with a Bitcoin-based system and comprises atransaction ID614, anoutput index616, an unlockingscript size618, an unlockingscript618, and asequence number622 as described in connection withFIG.5 above. It should be noted that while the structure of a transaction described inFIG.6 may be in accordance with those described inFIG.5,FIG.6 may include, in particular, alocking script608 and unlockingscript618 in accordance with a P2SH transaction. Theclient610 may generate the verification key VKand the redeemscript628 and provide them to theworker624.
In an embodiment, a blockchain system supports various types of transactions. In an embodiment, a supported transaction (e.g., a standard transaction) is a script-hash-based transaction such as a Pay-to-Script-Hash (P2SH) transaction in accordance with a Bitcoin-based system. Generally speaking, a script-hash-based transaction refers to any transaction wherein verifying the validity of an unlocking script includes providing a script that matches a specified hash value. For example, in a Bitcoin-based P2SH transaction, an unlockingscript620 comprises a redeemscript628 and alocking script608 comprises at least one condition that the hash of the redeem script supplied by the unlocking script matches a specified value. For example, in a Bitcoin-based system, a locking script may be described based on the following:
OP_HASH160<20-byte hash of redeem script>OP_EQUAL
In some cases, theworker624 provides theverification key VK626 to be used in the validation phase. The unlocking conditions that check the Validation Phase can, in an embodiment, be stored in a redeem script. In an embodiment, the locking script of the P2SH transaction comprises a hash of the redeem script and in some cases, the redeem script is kept secret (e.g., encrypted by the worker) and is only revealed upon an indication to cause the transfer of the output value.
In an embodiment, aclient610 creates a P2SH unspent transaction output by identifying a redeem script and applies a hash to it (e.g., HASH160). To transfer the UTXO, the client creates an input script (which references the UTXO) that includes and/or otherwise references the redeem script. It should be noted that, in an embodiment, the redeem script is suitable to store arbitrary data, although a blockchain-based system may have restrictions on the type or amount of data that may be included in a redeem script. For example, in connection with Bitcoin-based systems there may be limitations on the size of data that can be published to the stack (e.g., a PUSHDATA operation is limited to 520 bytes of data). In an embodiment, a redeem script comprises compressed and uncompressed points PCand PU, respectively, as described in connection withFIG.4. Accordingly, in an embodiment, the maximum number of elliptic curve points that can be stored in a redeem script in accordance with a Bitcoin-based protocol is 15 compressed (e.g., 15 points*34 bytes/point=510 bytes) or 7 uncompressed points (7 points*66 bytes/point=462 bytes). In an embodiment, the unlockingscript618 comprises the proof630, the redeemscript628, and commands (e.g., opcodes) that may, collectively, be used to satisfy a set of conditions encoded in thelocking script608.
FIG.7 is an illustrative diagram of aprocess700 for generating a redeem script in accordance with an embodiment. In an embodiment, theprocess700 is implemented using hardware, software, or a combination thereof. A suitable system for performing the process includes a worker that supplies a P2SH unlocking script in connection with the discussions ofFIG.6.
In an embodiment, the system determines the verification key VKis of a sufficient cardinality. In an embodiment, the system determines702 the size of a redeem script comprising each element of the verification key and a script to check a set of constraints, wherein the redeem script and a proof π are sufficient to unlock a corresponding locking script. The system may determine whether704 the size of such a redeem script exceed a predetermined threshold, which may be based on a size limit imposed by the blockchain protocol—for example, a blockchain protocol may require the redeem script be less than or equal to 520-bytes in size. If redeem script is of a sufficient size, the system generates706 a redeem script and unlocking script wherein the redeem script comprises the verification key and a script to check a set of constraints and the unlocking script comprises a proof π, wherein the redeem script and unlocking script together comprise a set of commands sufficient to validate the payment transaction.
For example, in the case where the cardinality of the verification key VKis smaller than 16 it may be that:
Redeem Script<VK1> < VK2> < VK3> < VK4> < VK5> < VK6>
OP_DEPTH OP_3 OP_SUB OP_PICK OP_5 OP_PICK OP_PAIRING
OP_TOALTSTACK OP_DEPTH OP_2 OP_SUB OP_PICK OP_4 OP_PICK
OP_PAIRING OP_TOALTSTACK 14*{OP_DROP} OP_FROMALTSTACK
OP_FROMALTSTACK OP_EQUALVERIFY [1]
OP_DEPTH OP_5 OP_SUB OP_PICK OP_5 OP_PICK OP_PAIRING
OP_TOALTSTACK OP_1 OP_PICK OP_DEPTH OP_3 OP_SUB OP_PICK
OP_PAIRING OP_TOALTSTACK 14*{OP_DROP} OP_FROMALTSTACK
OP_FROMALTSTACK OP_EQUALVERIFY [2]
Unlocking ScriptOP_1 < π1> < π2> . . . < π8> <Redeem Script>
Locking ScriptOP_HASH160 <20-byte-hash of [Redeem Script]> OP_EQUAL

wherein the redeem script and unlocking script are sufficient to unlock the locking script.
If the redeem script exceeds the predetermined threshold, the system generates708 a unlocking script that stores one or more elements of the verification key VKin the part of the unlocking script that precedes the redeem script so that the total size of the redeem script is within the threshold and generates710 a redeem script with the elements of the verification key and the constraints as described above. In an embodiment, the one or more elements verification key VKmay be encoded elsewhere in the unlocking script. For example, in the case where the cardinality of VKis greater than 15 it may be that:
Redeem ScriptOP_DUP OP_TOALTSTACK OP_HASH160 <20-byte-hash of VK6>
OP_EQUALVERIFY OP_DUP OP_TOALTSTACK OP_HASH160 <20-byte-hash of VK5>
OP_EQUALVERIFY OP_DUP OP_TOALTSTACK
OP_HASH160 <20-byte-hash of VK4> OP_DUP OP_TOALTSTACK
OP_HASH160 <20-byte-hash of VK3> OP_EQUALVERIFY OP_DUP
OP_TOALTSTACK OP_HASH160 <20-byte-hash of VK2>
OP_EQUALVERIFY OP_DUP OP_TOALTSTACK OP_HASH160 <20-byte-hash of VK1>
OP_EQUALVERIFY OP_FROMALTSTACK
OP_FROMALTSTACK OP_FROMALTSTACK OP_FROMALTSTACK
FROMALTSTACK OP_FROMALTSTACK
OP_DEPTH OP_3 OP_SUB OP_PICK OP_5 OP_PICK OP_PAIRING
OP_TOALTSTACK OP_DEPTH OP_2 OP_SUB OP_PICK OP_4 OP_PICK
OP_PAIRING OP_TOALTSTACK 14*{OP_DROP} OP_FROMALTSTACK
OP_FROMALTSTACK OP_EQUALVERIFY [1]
Unlocking ScriptOP_1 < π1> < π2> . . . < π8> <VK1> < VK2> < VK3> < VK4>
< VK5> < VK6> < Redeem Script >
Locking ScriptOP_HASH160 <20-byte-hash of [Redeem Script]> OP_EQUAL

wherein the redeem script and unlocking script are sufficient to unlock the locking script.
Thus, by encoding the stages necessary in the Validation phase in a locking script, the validation of the transaction should become an equivalent process with the Validation phase of a zk-protocol. In an embodiment, an OP_VERIFYPROOF op code can be used as follows:
TypeScript
Unlocking ScriptOP_1 < π1> < π2> . . . < π8> <VK1> < VK2>
< VK3> < VK4> < VK5> < VK6>
Locking Script// extract πi
OP_DEPTH OP_(i + 1) OP_SUB OP_PICK
// extract VKj
OP_(|VK| − j + 1) OP_PICK
// pairing call
OP_PAIRING OP_TOALTSTACK
// extract πk
OP_DEPTH OP_(k + 1) OP_SUB OP_PICK
// extract VKm
OP_(|VK| − m + 1) OP_PICK
// pairing call
OP_PAIRING OP_TOALTSTACK
//empty the stack
(|VK| + | π |) * OP_DROP
// verify the result of the operation
OP_FROMALTSTACK OP_FROMALTSTACK
OP_EQUALVERIFY
The unlocking and locking scripts may be implemented in any suitable manner. The unlocking script is implemented in any suitable manner wherein the unlocking script encodes <π1> . . . <π8> and the verification key VK. Similarly, the locking script may be implemented in any suitable manner in which πiand VKjare extracted and a pairing call is made. In an embodiment, OP_PAIRING as described above is an op code that supports elliptic curves with efficient bilinear mappings such as a bn128 curve defined by the equation y2=x3+3.
FIG.8 is an illustrative, simplified block diagram of acomputing device800 that can be used to practice at least one embodiment of the present disclosure. In various embodiments, thecomputing device800 can be used to implement any of the systems illustrated and described above. For example, thecomputing device800 can be configured for use as a data server, a web server, a portable computing device, a personal computer, or any electronic computing device. As shown inFIG.8, thecomputing device800 could include one ormore processors802 that, in embodiments, communicate with and are operatively coupled to a number of peripheral subsystems via abus subsystem804. In some embodiments, these peripheral subsystems include astorage subsystem806 comprising amemory subsystem808 and a file/disk storage subsystem810, one or more user interface input devices812, one or more userinterface output devices814, and anetwork interface subsystem816.Such storage subsystem806 could be used for temporary or long-term storage of information.
In some embodiments, thebus subsystem804 provides a mechanism for enabling the various components and subsystems ofcomputing device800 to communicate with each other as intended. Although thebus subsystem804 is shown schematically as a single bus, alternative embodiments of the bus subsystem utilize multiple busses. In some embodiments, thenetwork interface subsystem816 provides an interface to other computing devices and networks. Thenetwork interface subsystem816, in some embodiments, serves as an interface for receiving data from and transmitting data to other systems from thecomputing device800. In some embodiments, thebus subsystem804 is utilised for communicating data such as details, search terms, and so on.
In some embodiments, the user interface input devices812 includes one or more user input devices such as a keyboard; pointing devices such as an integrated mouse, trackball, touchpad, or graphics tablet; a scanner; a barcode scanner; a touch screen incorporated into the display; audio input devices such as voice recognition systems, microphones; and other types of input devices. In general, use of the term “input device” is intended to include all possible types of devices and mechanisms for inputting information to thecomputing device800. In some embodiments, the one or more userinterface output devices814 include a display subsystem, a printer, or non-visual displays such as audio output devices, etc. In some embodiments, the display subsystem includes a cathode ray tube (CRT), a flat-panel device such as a liquid crystal display (LCD), light emitting diode (LED) display, or a projection or other display device. In general, use of the term “output device” is intended to include all possible types of devices and mechanisms for outputting information from thecomputing device800. The one or more userinterface output devices814 can be used, for example, to present user interfaces to facilitate user interaction with applications performing processes described and variations therein, when such interaction may be appropriate.
In some embodiments, thestorage subsystem806 provides a computer-readable storage medium for storing the basic programming and data constructs that provide the functionality of at least one embodiment of the present disclosure. The applications (programs, code modules, instructions), when executed by one or more processors in some embodiments, provide the functionality of one or more embodiments of the present disclosure and, in embodiments, are stored in thestorage subsystem806. These application modules or instructions can be executed by the one ormore processors802. In various embodiments, thestorage subsystem806 additionally provides a repository for storing data used in accordance with the present disclosure. In some embodiments, thestorage subsystem806 comprises amemory subsystem808 and a file/disk storage subsystem810.
In embodiments, thememory subsystem808 includes a number of memories, such as a main random access memory (RAM)818 for storage of instructions and data during program execution and/or a read only memory (ROM)820, in which fixed instructions can be stored. In some embodiments, the file/disk storage subsystem810 provides a non-transitory persistent (non-volatile) storage for program and data files and can include a hard disk drive, a floppy disk drive along with associated removable media, a Compact Disk Read Only Memory (CD-ROM) drive, an optical drive, removable media cartridges, or other like storage media.
In some embodiments, thecomputing device800 includes at least onelocal clock824. Thelocal clock824, in some embodiments, is a counter that represents the number of ticks that have transpired from a particular starting date and, in some embodiments, is located integrally within thecomputing device800. In various embodiments, thelocal clock824 is used to synchronize data transfers in the processors for thecomputing device800 and the subsystems included therein at specific clock pulses and can be used to coordinate synchronous operations between thecomputing device800 and other systems in a data centre. In another embodiment, the local clock is a programmable interval timer.
Thecomputing device800 could be of any of a variety of types, including a portable computer device, tablet computer, a workstation, or any other device described below. Additionally, thecomputing device800 can include another device that, in some embodiments, can be connected to thecomputing device800 through one or more ports (e.g., USB, a headphone jack, Lightning connector, etc.). In embodiments, such a device includes a port that accepts a fibre-optic connector. Accordingly, in some embodiments, this device is that converts optical signals to electrical signals that are transmitted through the port connecting the device to thecomputing device800 for processing. Due to the ever-changing nature of computers and networks, the description of thecomputing device800 depicted inFIG.8 is intended only as a specific example for purposes of illustrating the preferred embodiment of the device. Many other configurations having more or fewer components than the system depicted inFIG.8 are possible.
It should be noted that the above-mentioned embodiments illustrate rather than limit the invention, and that those skilled in the art will be capable of designing many alternative embodiments without departing from the scope of the invention as defined by the appended claims. In the claims, any reference signs placed in parentheses shall not be construed as limiting the claims. The word “comprising” and “comprises”, and the like, does not exclude the presence of elements or steps other than those listed in any claim or the specification as a whole. In the present specification, “comprises” means “includes or consists of” and “comprising” means “including or consisting of”. The singular reference of an element does not exclude the plural reference of such elements and vice-versa. The invention may be implemented by means of hardware comprising several distinct elements, and by means of a suitably programmed computer. In a device claim enumerating several means, several of these means may be embodied by one and the same item of hardware. The mere fact that certain measures are recited in mutually different dependent claims does not indicate that a combination of these measures cannot be used to advantage.
All references, including publications, patent applications, and patents, cited herein are hereby incorporated by reference to the same extent as if each reference were individually and specifically indicated to be incorporated by reference and were set forth in its entirety herein.

Claims (19)

The invention claimed is:
1. A computer-implemented method comprising:
generating a transaction output of a transaction comprising an indication of a digital asset and a locking script that encodes a set of conditions for transferring control of the digital asset, satisfaction of the set of conditions to be determined based at least in part on a verification key and a proof;
generating a transaction input of the transaction, the transaction input comprising:
an identifier associated with the transaction output; and
an unlocking script comprising the proof; and
verifying the set of conditions are satisfied based at least in part on the locking script and the unlocking script; and
transferring control of the digital asset in response to verifying satisfaction of the set of conditions,
wherein a client encodes the transaction input with the verification key and a first digital certificate associated with the client and a worker encodes the transaction input with the proof and a second digital certificate associated with the worker.
2. The computer-implemented method according toclaim 1, wherein the verification key comprises a first plurality of elements of a finite field and the proof comprises a second plurality of elements of the finite field.
3. A system, comprising:
a processor; and
memory including executable instructions that, as a result of being executed by the processor, causes the system to perform the computer-implemented method according toclaim 2.
4. A non-transitory computer-readable storage medium having stored thereon executable instructions that, as a result of being executed by a processor of a computer system, cause the computer system to at least perform the computer-implemented method according toclaim 2.
5. The computer-implemented method according toclaim 2, wherein elements of the finite field are points on an elliptic curve.
6. A system, comprising:
a processor; and
memory including executable instructions that, as a result of being executed by the processor, causes the system to perform the computer-implemented method according toclaim 5.
7. A non-transitory computer-readable storage medium having stored thereon executable instructions that, as a result of being executed by a processor of a computer system, cause the computer system to at least perform the computer-implemented method according toclaim 5.
8. The computer-implemented method according toclaim 2, wherein the elements of the finite field are encoded in a compressed format.
9. A system, comprising:
a processor; and
memory including executable instructions that, as a result of being executed by the processor, causes the system to perform the computer-implemented method according toclaim 8.
10. The computer-implemented method according toclaim 1, wherein the locking script comprises instructions that, contingent upon a condition of the set of conditions being unsatisfied by the unlocking script, reclaim the digital asset for a provider of the digital asset.
11. The computer-implemented method according toclaim 1, wherein:
the unlocking script further comprises a redeem script, wherein the verification key and the redeem script are to satisfy the set of conditions; and
the locking script encodes a condition of the set of conditions that a hash of the redeem script matches a predetermined value.
12. The computer-implemented method according toclaim 11, wherein the redeem script is less than or equal to 520 bytes in size.
13. The computer-implemented method according toclaim 11, wherein the unlocking script comprises one or more elements of the verification key.
14. The computer-implemented method according toclaim 11, wherein the transaction is a P2SH transaction in accordance with a Bitcoin-based protocol.
15. The computer-implemented method according toclaim 1, wherein the transaction is a standard transaction in accordance with a blockchain-based protocol.
16. The computer-implemented method according toclaim 1, wherein the locking script and unlocking script are encoded in a stack-based scripting language.
17. The computer-implemented method according toclaim 1, wherein the set of conditions comprise a bilinear constraint.
18. A system, comprising:
a processor; and
memory including executable instructions that, as a result of being executed by the processor, causes the system to perform the computer-implemented method according toclaim 1.
19. A non-transitory computer-readable storage medium having stored thereon executable instructions that, as a result of being executed by a processor of a computer system, cause the computer system to at least perform the computer-implemented method according toclaim 1.
US16/762,4712017-11-092018-10-29System for securing verification key from alteration and verifying validity of a proof of correctnessActive2039-07-06US11658801B2 (en)

Applications Claiming Priority (19)

Application NumberPriority DateFiling DateTitle
GB1718505.92017-11-09
GBGB1718505.9AGB201718505D0 (en)2017-11-092017-11-09Computer-implemented system and method
GB17185052017-11-09
GB1719998.52017-11-30
GB17199982017-11-30
GBGB1719998.5AGB201719998D0 (en)2017-11-302017-11-30Computer-Implemented system and method
GBGB1720768.9AGB201720768D0 (en)2017-12-132017-12-13Computer-implemented system and method
GB1720768.92017-12-13
GB17207682017-12-13
GB18017532018-02-02
GBGB1801753.3AGB201801753D0 (en)2018-02-022018-02-02Computer-implemented system and method
GB1801753.32018-02-02
GB18059482018-04-10
GBGB1805948.5AGB201805948D0 (en)2018-04-102018-04-10Computer-implemented system and method
GB1805948.52018-04-10
GB18064442018-04-20
GBGB1806444.4AGB201806444D0 (en)2018-04-202018-04-20Computer-implemented system and method
GB1806444.42018-04-20
PCT/IB2018/058433WO2019092543A1 (en)2017-11-092018-10-29System for securing verification key from alteration and verifying validity of a proof of correctness

Related Parent Applications (1)

Application NumberTitlePriority DateFiling Date
PCT/IB2018/058433A-371-Of-InternationalWO2019092543A1 (en)2017-11-092018-10-29System for securing verification key from alteration and verifying validity of a proof of correctness

Related Child Applications (1)

Application NumberTitlePriority DateFiling Date
US18/134,276ContinuationUS12219044B2 (en)2017-11-092023-04-13System for securing verification key from alteration and verifying validity of a proof of correctness

Publications (2)

Publication NumberPublication Date
US20200266985A1 US20200266985A1 (en)2020-08-20
US11658801B2true US11658801B2 (en)2023-05-23

Family

ID=64100702

Family Applications (10)

Application NumberTitlePriority DateFiling Date
US16/762,471Active2039-07-06US11658801B2 (en)2017-11-092018-10-29System for securing verification key from alteration and verifying validity of a proof of correctness
US16/762,466Active2039-07-13US11575511B2 (en)2017-11-092018-10-29System for simplifying executable instructions for optimised verifiable computation
US16/762,461PendingUS20210377041A1 (en)2017-11-092018-10-29System for recording verification keys on a blockchain
US16/762,475ActiveUS11635950B2 (en)2017-11-092018-10-29Arithmetic enhancement of C-like smart contracts for verifiable computation
US16/762,490PendingUS20210192514A1 (en)2017-11-092018-11-01Distributed computing system and method
US18/105,672ActiveUS12200103B2 (en)2017-11-092023-02-03System for simplifying executable instructions for optimised verifiable computation
US18/130,373ActiveUS12309168B2 (en)2017-11-092023-04-03Arithmetic enhancement of C-like smart contracts for verifiable computation
US18/134,276ActiveUS12219044B2 (en)2017-11-092023-04-13System for securing verification key from alteration and verifying validity of a proof of correctness
US18/667,910ActiveUS12407693B2 (en)2017-11-092024-05-17System for securing verification key from alteration and verifying validity of a proof of correctness
US18/810,422PendingUS20240413971A1 (en)2017-11-092024-08-20System for simplifying executable instructions for optimised verifiable computation

Family Applications After (9)

Application NumberTitlePriority DateFiling Date
US16/762,466Active2039-07-13US11575511B2 (en)2017-11-092018-10-29System for simplifying executable instructions for optimised verifiable computation
US16/762,461PendingUS20210377041A1 (en)2017-11-092018-10-29System for recording verification keys on a blockchain
US16/762,475ActiveUS11635950B2 (en)2017-11-092018-10-29Arithmetic enhancement of C-like smart contracts for verifiable computation
US16/762,490PendingUS20210192514A1 (en)2017-11-092018-11-01Distributed computing system and method
US18/105,672ActiveUS12200103B2 (en)2017-11-092023-02-03System for simplifying executable instructions for optimised verifiable computation
US18/130,373ActiveUS12309168B2 (en)2017-11-092023-04-03Arithmetic enhancement of C-like smart contracts for verifiable computation
US18/134,276ActiveUS12219044B2 (en)2017-11-092023-04-13System for securing verification key from alteration and verifying validity of a proof of correctness
US18/667,910ActiveUS12407693B2 (en)2017-11-092024-05-17System for securing verification key from alteration and verifying validity of a proof of correctness
US18/810,422PendingUS20240413971A1 (en)2017-11-092024-08-20System for simplifying executable instructions for optimised verifiable computation

Country Status (9)

CountryLink
US (10)US11658801B2 (en)
EP (8)EP3707855A1 (en)
JP (13)JP7221954B2 (en)
KR (7)KR102743526B1 (en)
CN (8)CN118413305A (en)
SG (5)SG11202004146WA (en)
TW (2)TWI837103B (en)
WO (5)WO2019092545A1 (en)
ZA (1)ZA202002575B (en)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US9430909B2 (en)2014-04-082016-08-30Micro-Gaming Ventures, LLCLocation-based wagering via remote devices
US11783679B2 (en)2014-04-082023-10-10Micro-Gaming Ventures, LLCLocation-based wagering via remote devices
US10903997B2 (en)2017-10-192021-01-26Autnhive CorporationGenerating keys using controlled corruption in computer networks
GB201720946D0 (en)2017-12-152018-01-31Nchain Holdings LtdComputer-implemented system and method
JP7221954B2 (en)2017-11-092023-02-14エヌチェーン ライセンシング アーゲー A system for protecting verification keys from modification and validating proofs of correctness
CN118041602A (en)2017-11-092024-05-14区块链控股有限公司System and method for ensuring correct execution of a computer program using a mediator computer system
KR20250095647A (en)2017-12-132025-06-26엔체인 라이센싱 아게System and method for securely sharing cryptographic material
CN110032568B (en)*2018-12-202020-05-12阿里巴巴集团控股有限公司Data structure reading and updating method and device, and electronic equipment
US12058271B2 (en)*2019-03-272024-08-06Koc UniversitesiDistributed hash table based blockchain architecture for resource constrained environments
GB201907392D0 (en)2019-05-242019-07-10Nchain Holdings LtdProof-of-work
GB201907345D0 (en)2019-05-242019-07-10Nchain Holdings LtdProtocol for validating blockchain transactions
GB201907396D0 (en)2019-05-242019-07-10Nchain Holdings LtdHash function attacks
GB201907347D0 (en)*2019-05-242019-07-10Nchain Holdings LtdIn-script functions within a blockchain transaction
US11711202B2 (en)2019-05-292023-07-25International Business Machines CorporationCommitting data to blockchain based on approximate hash verification
US11516000B2 (en)*2019-05-292022-11-29International Business Machines CorporationApproximate hash verification of unused blockchain output
US11570002B2 (en)2019-05-292023-01-31International Business Machines CorporationReduced-step blockchain verification of media file
US11429738B2 (en)2019-05-292022-08-30International Business Machines CorporationBlockchain endorsement with approximate hash verification
US11539527B2 (en)2019-05-292022-12-27International Business Machines CorporationPeer node recovery via approximate hash verification
EP3754899B1 (en)*2019-06-202022-03-02Telefónica Iot & Big Data Tech, S.A.Method and system for inter-dlt networks trust enhancement
SG11202004455UA (en)*2019-06-282020-06-29Alibaba Group Holding LtdSystem and method for executing different types of blockchain contracts
CN110445755A (en)*2019-07-042019-11-12杭州复杂美科技有限公司Hand over pregnable defence method, equipment and storage medium
GB2587190B (en)2019-09-122021-12-01Nchain Holdings LtdStoring a program on a blockchain
GB201913143D0 (en)*2019-09-122019-10-30Nchain Holdings LtdRunning a program from a blockchain
JP7284064B2 (en)*2019-10-162023-05-30株式会社日立製作所 Consortium Blockchain System, Calculator, Transaction Approval Method
CN111143859A (en)*2020-01-072020-05-12杭州宇链科技有限公司Module for collecting credible data and data transmission method
US12175462B2 (en)*2020-02-212024-12-24International Business Machines CorporationResolution of conflicting data
US11792022B2 (en)2020-02-212023-10-17International Business Machines CorporationResolution of conflicting data
CN115066672A (en)*2020-02-212022-09-16松下电器(美国)知识产权公司Control method, analysis device, and program
US11188316B2 (en)*2020-03-092021-11-30International Business Machines CorporationPerformance optimization of class instance comparisons
CN111506783B (en)*2020-04-082023-12-22百度在线网络技术(北京)有限公司Transaction request processing method, device, equipment and medium in blockchain
CA3091660A1 (en)*2020-08-312021-11-03Polymath Inc.Method, system, and medium for blockchain-enabled atomic settlement
CN111768187A (en)*2020-08-312020-10-13支付宝(杭州)信息技术有限公司Method for deploying intelligent contract, block chain node and storage medium
CN112926978A (en)*2020-09-072021-06-08陈建芸Payment information processing method and system based on block chain communication
US12141125B2 (en)*2020-09-292024-11-12International Business Machines CorporationTransaction reordering in blockchain
US11029920B1 (en)*2020-10-212021-06-08Chariot Technologies Lab, Inc.Execution of a conditional statement by an arithmetic and/or bitwise unit
US11456871B2 (en)*2020-11-032022-09-27Provide Technologies, Inc.System and method for autonomous mapping of enterprise identity
KR102346292B1 (en)*2020-11-112022-01-03엘에스웨어(주)System and method for classifing transaction using key information
EP4256751A1 (en)*2020-12-022023-10-11Trock, StanislavBlockchain
KR102346293B1 (en)*2020-12-082022-01-03엘에스웨어(주)Blockchain system and performance method for distributed processing of transaction using common keyset information
GB2602010A (en)*2020-12-152022-06-22Nchain Holdings LtdGenerating and validating blockchain transactions
CN113222747B (en)*2020-12-312024-01-26上海零数众合信息科技有限公司Block chain privacy transaction method
KR102594655B1 (en)*2021-01-112023-10-27충남대학교 산학협력단Zero-knowledge proof system and proof method that can be verified through dynamic calculation
US11144978B1 (en)*2021-02-252021-10-12Mythical, Inc.Systems and methods to support custom bundling of virtual items within an online game
US12041190B2 (en)*2021-06-252024-07-16Prateek GOELSystem and method to manage large data in blockchain
CN113469690B (en)*2021-07-232024-03-26佳乔(深圳)投资有限公司Transaction settlement method based on blockchain
CN113610474B (en)*2021-08-162023-09-22傲林科技有限公司Inventory management method and system based on event network
US20230130347A1 (en)*2021-10-262023-04-27Mastercard Asia/Pacific Pte. Ltd.Methods and systems for generating and validating transactions on a distributed ledger
US20230298064A1 (en)*2022-01-262023-09-21Seek Xr, Inc.Systems and methods for facilitating redemption of unique digital asset utility
CN116820419A (en)*2022-03-222023-09-29瑞昱半导体股份有限公司 Source code verification method and non-transitory computer-readable storage medium device
GB2618106A (en)*2022-04-272023-11-01Nchain Licensing AgMessaging protocol for compact script transactions
US11818207B1 (en)*2022-07-082023-11-14T-Mobile Innovations LlcMethods and systems for ledger based content delivery using a mobile edge computing (MEC) server
CN114978514B (en)*2022-07-272022-11-01杭州友恭科技有限公司Key management method, system, device, electronic device and storage medium
US12301558B1 (en)2022-08-232025-05-13Wells Fargo Bank, N.A.Secure generation of authentication datasets from network activity
US12299093B1 (en)2022-08-232025-05-13Wells Fargo Bank, N.A.Machine-learning for real-time and secure analysis of digital metrics
US12200132B1 (en)2022-08-252025-01-14Wells Fargo Bank, N.A.Secure multi-verification of biometric data in a distributed computing environment
US12347095B1 (en)2022-08-262025-07-01Wells Fargo Bank, N.A.Sensor data processing for monitoring device performance
US12248545B1 (en)2022-09-012025-03-11Wells Fargo Bank, N.A.Secure digital authorization via generated datasets
US11792259B1 (en)2022-09-282023-10-17T-Mobile Innovations LlcMethods and systems for distributing rendering across devices in a customer premise
CN115801288B (en)*2023-01-102023-04-18南方科技大学Verification method, system and equipment based on block chain and zero knowledge proof
GB2627758A (en)*2023-02-282024-09-04Nchain Licensing AgVerification of scalar multiplication of elliptic curve points in script
GB2627756A (en)*2023-02-282024-09-04Nchain Licensing AgVerification of scalar multiplication of elliptic curve points in script
GB2627757A (en)*2023-02-282024-09-04Nchain Licensing AgVerification of scalar multiplication of elliptic curve points in script
CN116610362B (en)*2023-04-272024-02-23合芯科技(苏州)有限公司Method, system, equipment and storage medium for decoding instruction set of processor
US20240386511A1 (en)*2023-05-192024-11-21Rockwell Automation Technologies, Inc.Industrial manufacturing smart contracts
WO2024249467A2 (en)*2023-05-312024-12-05Visa International Service AssociationSystem, method, and computer program product for key-value commitments from accumulators and vector commitments
US20240411900A1 (en)*2023-06-082024-12-12Auradine, Inc.End-to-end hardware acceleration for zkp from witness generation to proof generation
KR102677928B1 (en)*2023-07-132024-06-25쿠팡 주식회사Server and managing information method thereof
CN119396369A (en)*2024-09-122025-02-07中国第一汽车股份有限公司 Strategy code generation method, device, electronic device and readable storage medium

Citations (77)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US4667290A (en)1984-09-101987-05-19501 Philon, Inc.Compilers using a universal intermediate language
US5297150A (en)1992-06-171994-03-22International Business Machines CorporationRule-based method for testing of programming segments
US5404531A (en)1989-10-111995-04-04Matsushita Electric Industrial Co., Ltd.Method and apparatus for compiler processing on program related to data transfer and calculation, and method of managing memory
US5499191A (en)1992-06-151996-03-12Minc IncorporatedMulti-level logic optimization in programmable logic devices
US5920830A (en)1997-07-091999-07-06General Electric CompanyMethods and apparatus for generating test vectors and validating ASIC designs
US6519754B1 (en)1999-05-172003-02-11Synplicity, Inc.Methods and apparatuses for designing integrated circuits
US20030125917A1 (en)2002-01-022003-07-03International Business Machines CorporationSize reduction techniques for vital compliant VHDL simulation models
US20040015739A1 (en)2001-08-072004-01-22Ulrich HeinkelTestbench for the validation of a device under test
US20060149962A1 (en)2003-07-112006-07-06Ingrian Networks, Inc.Network attached encryption
US20070061487A1 (en)2005-02-012007-03-15Moore James FSystems and methods for use of structured and unstructured distributed data
US7209555B2 (en)2001-10-252007-04-24Matsushita Electric Industrial Co., Ltd.Elliptic curve converting device, elliptic curve converting method, elliptic curve utilization device and elliptic curve generating device
US20070157132A1 (en)2005-12-302007-07-05Tatung CompanyProcess of automatically translating a high level programming language into a hardware description language
US7281017B2 (en)2002-06-212007-10-09Sumisho Computer Systems CorporationViews for software atomization
US20080127067A1 (en)2006-09-062008-05-29Matthew Edward AubertineMethod and system for timing code execution in a korn shell script
US7590236B1 (en)2004-06-042009-09-15Voltage Security, Inc.Identity-based-encryption system
US20100067686A1 (en)2006-10-302010-03-18Kazuhiro MinematsuShared key block cipher apparatus, its method, its program and recording medium
US20100131933A1 (en)2008-11-212010-05-27Korea University Industrial & Academic Collaboration FoundationSystem and Method for translating high programming level languages code into Hardware Description Language code
US20100272209A1 (en)2007-11-182010-10-28Dae Won LeeMethods of joint coding in mobile communication system
US20110200188A1 (en)2010-02-182011-08-18Lahouari GhoutiMethod of performing cipher block chaining using elliptic polynomial cryptography
US8165287B2 (en)2008-12-302012-04-24King Fahd University Of Petroleum & MineralsCryptographic hash functions using elliptic polynomial cryptography
US8331556B2 (en)2007-07-062012-12-11France TelecomAsymmetrical method of encryption or signature verification
US20130031446A1 (en)2010-04-272013-01-31Nec CorporationCoding device, error-correction code configuration method, and program thereof
US20130097420A1 (en)2011-10-142013-04-18Certicom Corp.Verifying Implicit Certificates and Digital Signatures
US8607129B2 (en)2011-07-012013-12-10Intel CorporationEfficient and scalable cyclic redundancy check circuit using Galois-field arithmetic
US8824670B2 (en)2009-06-302014-09-02MorphoCryptography by parameterizing on elliptic curve
US20140321644A1 (en)2013-04-292014-10-30Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of National DefenceMethod and system for calculations on encrypted data
JP5697153B2 (en)2011-08-042015-04-08キヤノンマーケティングジャパン株式会社 Information processing system, portable terminal, control method, and program
US9026978B1 (en)2013-10-242015-05-05Cadence Design Systems, Inc.Reverse interface logic model for optimizing physical hierarchy under full chip constraint
US20150379510A1 (en)2012-07-102015-12-31Stanley Benjamin SmithMethod and system to use a block chain infrastructure and Smart Contracts to monetize data transactions involving changes to data included into a data supply chain.
US20160004820A1 (en)2005-02-012016-01-07Newsilike Media Group, Inc.Security facility for maintaining health care data pools
US9286602B2 (en)2011-03-182016-03-15Blackberry LimitedSecure financial transactions
US20160087802A1 (en)2014-09-232016-03-24Texas Instruments IncorporatedHomogeneous Atomic Pattern for Double, Add, and Subtract Operations for Digital Authentication Using Elliptic Curve Cryptography
US20160162897A1 (en)2014-12-032016-06-09The Filing Cabinet, LLCSystem and method for user authentication using crypto-currency transactions as access tokens
US20160283941A1 (en)2015-03-272016-09-29Black Gold Coin, Inc.Systems and methods for personal identification and verification
WO2016155804A1 (en)2015-03-312016-10-06Nec Europe Ltd.Method for verifying information
US9483596B1 (en)2016-01-082016-11-01International Business Machines CorporationMulti power synthesis in digital circuit design
US20160357948A1 (en)2015-06-042016-12-08Fujitsu LimitedInformation processing device and management method
WO2016206567A1 (en)2015-06-262016-12-29阿里巴巴集团控股有限公司Distributed stream computing system, method and device
WO2017008829A1 (en)2015-07-102017-01-19Nec Europe Ltd.A method and a system for reliable computation of a program
US9569771B2 (en)2011-04-292017-02-14Stephen LesavichMethod and system for storage and retrieval of blockchain blocks using galois fields
US20170091750A1 (en)2014-03-122017-03-30Enrico MaimTransactional system with peer-to-peer distributed architecture for exchanging units of account
WO2017079652A1 (en)2015-11-052017-05-11Pulsifer AllenCryptographic transactions system
US20170131983A1 (en)2015-11-112017-05-11Oracle International CorporationCompiler optimized data model evaluation
US20170132619A1 (en)2015-11-062017-05-11SWFL, Inc., d/b/a "Filament"Systems and methods for autonomous device transacting
US20170142103A1 (en)2015-11-162017-05-18Safran Identity & SecurityIdentification method of an entity
US20170140408A1 (en)2015-11-162017-05-18Bank Of America CorporationTransparent self-managing rewards program using blockchain and smart contracts
US20170177312A1 (en)2015-12-182017-06-22International Business Machines CorporationDynamic recompilation techniques for machine learning programs
US20170180341A1 (en)2015-12-222017-06-22Mcafee, Inc.Simplified sensor integrity
US20170178263A1 (en)2015-12-162017-06-22International Business Machines CorporationMultimedia content player with digital rights management while maintaining privacy of users
US20170220815A1 (en)2016-01-282017-08-03Nasdaq, Inc.Systems and methods for securing and disseminating time sensitive information using a blockchain
US20170249716A1 (en)2016-02-262017-08-31Google Inc.Compiler Techniques for Mapping Program Code to a High Performance, Power Efficient, Programmable Image Processing Hardware Platform
WO2017145010A1 (en)2016-02-232017-08-31nChain Holdings LimitedSecure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system
WO2017148527A1 (en)2016-03-032017-09-08Nec Europe Ltd.Method for managing data in a network of nodes
CN107179932A (en)2017-05-262017-09-19福建师范大学The optimization method and its system instructed based on FPGA High Level Synthesis
US20170278100A1 (en)2016-03-252017-09-28International Business Machines CorporationCryptographically assured zero-knowledge cloud service for composable atomic transactions
US20170279611A1 (en)2016-03-242017-09-28International Business Machines CorporationCryptographically assured zero-knowledge cloud services for elemental transactions
US20170277909A1 (en)2016-03-282017-09-28International Business Machines CorporationCryptographically provable zero-knowledge content distribution network
US20170286079A1 (en)2016-04-052017-10-05International Business Machines CorporationLLVM-Based System C Compiler for Architecture Synthesis
US20170286717A1 (en)2016-04-052017-10-05Vchain Technology LimitedMethod and system for managing personal information within independent computer systems and digital networks
US20170287090A1 (en)2016-03-312017-10-05Clause, Inc.System and method for creating and executing data-driven legal contracts
WO2017178956A1 (en)2016-04-112017-10-19nChain Holdings LimitedA method for secure peer-to-peer communication on a blockchain
CN107274184A (en)2017-05-112017-10-20上海点融信息科技有限责任公司block chain data processing based on zero-knowledge proof
US20170317834A1 (en)2016-04-302017-11-02Civic Technologies, Inc.Methods and systems of providing verification of information using a centralized or distributed ledger
US20170337319A1 (en)2016-05-202017-11-23Ecole polytechnique fédérale de Lausanne (EPFL)System and Method for Optimization of Digital Circuits with Timing and Behavior Co-Designed by Introduction and Exploitation of False Paths
EP3249599A1 (en)2016-05-272017-11-29Sony CorporationBlockchain-based system, and electronic apparatus and method in the system
US20170352209A1 (en)2016-06-062017-12-07Safran Identity & SecurityProcess for verification of an access right of an individual
US20170353309A1 (en)2016-06-062017-12-07Microsoft Technology Licensing, LlcCryptographic applications for a blockchain system
US20180034634A1 (en)2017-09-122018-02-01QED-it Systems LTDMethod and system for determining desired size of private randomness using tsallis entropy
US20180039667A1 (en)2016-08-052018-02-08Chicago Mercantile Exchange Inc.Systems and methods for blockchain rule synchronization
US20180117446A1 (en)2016-05-022018-05-03Bao TranSmart device
US20180167201A1 (en)2016-12-082018-06-14Sensoriant, Inc.System and methods for sharing and trading user data and preferences between computer programs and other entities while preserving user privacy
WO2018127446A1 (en)2017-01-062018-07-12Koninklijke Philips N.V.Distributed privacy-preserving verifiable computation
WO2018127456A2 (en)2017-01-062018-07-12Koninklijke Philips N.V.Pinocchio / trinocchio on authenticated data
US10135607B1 (en)2017-08-112018-11-20Dragonchain, Inc.Distributed ledger interaction systems and methods
US20190095631A1 (en)2017-08-112019-03-28Dragonchain, Inc.Security systems and methods based on cryptographic utility token inventory tenure
US20190138753A1 (en)2017-11-082019-05-09Analog Devices, Inc.Remote re-enrollment of physical unclonable functions
US20190295182A1 (en)2016-07-142019-09-26Digital Asset Holdings, LLCDigital asset architecture

Family Cites Families (93)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
JPH05252336A (en)1992-03-041993-09-28Toshiba Corp Image forming device
US8639625B1 (en)*1995-02-132014-01-28Intertrust Technologies CorporationSystems and methods for secure transaction management and electronic rights protection
JPH08305547A (en)*1995-05-111996-11-22Oki Electric Ind Co LtdComputer employing pld, compiler and operating system
US6064928A (en)1997-04-242000-05-16Automation Systems Laboratory, Inc.Mechanical sensor diagnostic method and system
US6161180A (en)1997-08-292000-12-12International Business Machines CorporationAuthentication for secure devices with limited cryptography
US7181017B1 (en)2001-03-232007-02-20David FelsherSystem and method for secure three-party communications
WO2003032557A2 (en)*2001-10-112003-04-17California Institute Of TechnologyMethod and system for compiling circuit designs
US6983456B2 (en)*2002-10-312006-01-03Src Computers, Inc.Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms
US20050004899A1 (en)2003-04-292005-01-06Adrian BaldwinAuditing method and service
US7178118B2 (en)*2003-05-302007-02-13Synplicity, Inc.Method and apparatus for automated circuit design
US7059517B2 (en)2003-12-312006-06-13Hewlett-Packard Development Company, L.P.On-line PIN verification using polynomials
US7664957B2 (en)2004-05-202010-02-16Ntt Docomo, Inc.Digital signatures including identity-based aggregate signatures
US7697691B2 (en)*2004-07-142010-04-13Intel CorporationMethod of delivering Direct Proof private keys to devices using an on-line service
US8874477B2 (en)2005-10-042014-10-28Steven Mark HoffbergMultifactorial optimization system and method
JP5537032B2 (en)*2005-12-132014-07-02コーニンクレッカ フィリップス エヌ ヴェ Secure threshold decryption protocol calculation
WO2007102518A1 (en)*2006-03-072007-09-13The University Of TokushimaArithmetic encoding device, arithmetic encoding method, arithmetic encoding program, and computer-readable recording medium containing the program
WO2007149527A2 (en)2006-06-212007-12-27Element Cxi, LlcFault tolerant integrated circuit architecture
US8923510B2 (en)2007-12-282014-12-30Intel CorporationMethod and apparatus for efficiently implementing the advanced encryption standard
US8189771B2 (en)2009-01-122012-05-29King Fahd University Of Petroleum & MineralsHash functions with elliptic polynomial hopping
FR2948661B1 (en)2009-07-312011-07-29Arkema France COMPOSITION BASED ON ORGANIC SULFIDE WITH MASKED ODOR
JP5159752B2 (en)2009-12-032013-03-13セイコープレシジョン株式会社 Communication data verification device and computer program therefor
US8667301B2 (en)*2010-04-012014-03-04Apple Inc.Obfuscating transformations on data array content and addresses
US10515567B2 (en)2010-06-012019-12-24Ternarylogic LlcCryptographic machines with N-state lab-transformed switching devices
US8924966B1 (en)*2011-03-312014-12-30Emc CorporationCapture/revert module for complex assets of distributed information technology infrastructure
EP2705479A4 (en)2011-05-032014-12-24Panther Payments LlcMethod and system for facilitating person-to person payments
US9215076B1 (en)*2012-03-272015-12-15Amazon Technologies, Inc.Key generation for hierarchical data access
US9921813B2 (en)*2012-11-072018-03-20Koninklijke Philips N.V.Compiler generating operator free code
US9306738B2 (en)*2012-12-212016-04-05Microsoft Technology Licensing, LlcManaged secure computations on encrypted data
CN105074717A (en)*2013-01-162015-11-18迈克菲公司Detection of malicious scripting language code in a network environment
US8683193B1 (en)2013-03-012014-03-25Robert HansenStrict communications transport security
US11127001B2 (en)2013-05-092021-09-21Wayne Fueling Systems LlcSystems and methods for secure communication
US9553982B2 (en)2013-07-062017-01-24Newvoicemedia, Ltd.System and methods for tamper proof interaction recording and timestamping
JP5842255B2 (en)*2013-12-122016-01-13国立大学法人東京工業大学 Apparatus and method for generating logic circuit from logic circuit description in programming language
JP6095584B2 (en)2014-01-152017-03-15日本電信電話株式会社 Multi-party calculation system, secret calculation device, multi-party calculation method and program
US9830580B2 (en)*2014-03-182017-11-28nChain Holdings LimitedVirtual currency system
US10409827B2 (en)*2014-10-312019-09-1021, Inc.Digital currency mining circuitry having shared processing logic
US10025926B2 (en)2014-11-192018-07-17The Mitre CorporationSide-channel leakage evaluator and analysis kit
CN104580240A (en)2015-01-222015-04-29杭州安存网络科技有限公司Chat evidence fixing method and device
EP3259871B1 (en)2015-02-202020-09-16Telefonaktiebolaget LM Ericsson (publ)Method of providing a hash value for a piece of data, electronic device and computer program
HK1249791A1 (en)*2015-03-312018-11-09Nasdaq, Inc.Systems and methods of blockchain transaction recordation
US20160321751A1 (en)*2015-04-282016-11-03Domus Tower, Inc.Real-time settlement of securities trades over append-only ledgers
US20160342977A1 (en)*2015-05-202016-11-24Vennd.io Pty LtdDevice, method and system for virtual asset transactions
US10339523B2 (en)2015-07-142019-07-02Fmr LlcPoint-to-point transaction guidance apparatuses, methods and systems
US20170085545A1 (en)2015-07-142017-03-23Fmr LlcSmart Rules and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems
US20170091756A1 (en)2015-07-142017-03-30Fmr LlcPoint-to-Point Transaction Guidance Apparatuses, Methods and Systems
US11488147B2 (en)2015-07-142022-11-01Fmr LlcComputationally efficient transfer processing and auditing apparatuses, methods and systems
US20170048209A1 (en)2015-07-142017-02-16Fmr LlcCrypto Key Recovery and Social Aggregating, Fractionally Efficient Transfer Guidance, Conditional Triggered Transaction, Datastructures, Apparatuses, Methods and Systems
US10366204B2 (en)*2015-08-032019-07-30Change Healthcare Holdings, LlcSystem and method for decentralized autonomous healthcare economy platform
DE102015114215A1 (en)2015-08-272017-03-02Rwe Ag SUPPLY SYSTEM AND METHOD FOR OPERATING A SUPPLY SYSTEM
US20170091726A1 (en)*2015-09-072017-03-30NXT-ID, Inc.Low bandwidth crypto currency transaction execution and synchronization method and system
WO2017057625A1 (en)*2015-09-302017-04-06積水化学工業株式会社Interlayer for laminated glass, and laminated glass
EP3380984A4 (en)*2015-11-242019-07-31Ben-Ari, AdiA system and method for blockchain smart contract data privacy
US9992028B2 (en)2015-11-262018-06-05International Business Machines CorporationSystem, method, and computer program product for privacy-preserving transaction validation mechanisms for smart contracts that are included in a ledger
JP2017111591A (en)2015-12-162017-06-22株式会社ソシオネクストDesign method, design program, and design device
WO2017111973A1 (en)*2015-12-222017-06-29Intel CorporationEfficient and secure sharing of large data repositories
US9960920B2 (en)2016-01-262018-05-01Stampery Inc.Systems and methods for certification of data units and/or certification verification
JP6511201B1 (en)*2016-02-232019-05-15エヌチェーン ホールディングス リミテッドNchain Holdings Limited Registry and Automated Management Method for Sophisticated Trading Enforced by Blockchain
BR112018016819A2 (en)2016-02-232018-12-26Nchain Holdings Ltd method and systems for protecting a controlled digital resource using a distributed scatter table and ledger and a blockchain
EP4235552A3 (en)*2016-02-232023-09-13nChain Licensing AGMethods and systems for efficient transfer of entities on a peer-to-peer distributed ledger using the blockchain
WO2017161417A1 (en)2016-03-212017-09-28National Ict Australia LimitedBusiness process execution on a blockchain platform
US12288203B2 (en)*2016-04-142025-04-29American Express Travel Related Services Company, Inc.Systems and methods for an electronic wallet payment tool
US10803537B2 (en)*2016-04-182020-10-13R3 Ltd.System and method for managing transactions in dynamic digital documents
US11341484B2 (en)*2016-04-292022-05-24Nchain Holdings Ltd.Implementing logic gate functionality using a blockchain
WO2017190795A1 (en)2016-05-062017-11-09Rwe International SeSystem for evaluating telemetry data
US9967088B2 (en)2016-05-232018-05-08Accenture Global Solutions LimitedRewritable blockchain
US20170344988A1 (en)2016-05-242017-11-30Ubs AgSystem and method for facilitating blockchain-based validation
KR101795696B1 (en)2016-07-142017-11-09주식회사 코인플러그Method for providing archiving and verification services of data transceived via messenger service and server using the same
US10832247B2 (en)2016-09-152020-11-10American Express Travel Related Services Company, Inc.Systems and methods for blockchain based payment networks
US20180091316A1 (en)2016-09-262018-03-29Shapeshift AgSystem and method of providing a multi-validator oracle
CN106506146A (en)2016-10-262017-03-15北京瑞卓喜投科技发展有限公司Based on the Transaction Information method of calibration of block chain technology, apparatus and system
CN106534317B (en)2016-11-172019-09-03杭州云象网络技术有限公司A kind of calamity based on block chain technology is for cloud storage system construction method
TWM543413U (en)*2016-12-052017-06-11Taiwan United Financial Technology Co LtdWeb lending platform using technology of blockchain for deal
CN106780032A (en)*2016-12-162017-05-31杭州云象网络技术有限公司A kind of block chain interchain assets transfer method under multichain scene
CN106790253A (en)*2017-01-252017-05-31中钞信用卡产业发展有限公司北京智能卡技术研究院Authentication method and device based on block chain
US10880089B2 (en)2017-03-152020-12-29NuID, Inc.Methods and systems for universal storage and access to user-owned credentials for trans-institutional digital authentication
KR101882802B1 (en)2017-04-172018-07-27주식회사 코인플러그Method for blockchain based management of documents in use of unspent transaction output based protocol and document management server using the same
US10419209B1 (en)2017-04-262019-09-17Wells Fargo Bank, N.A.Parallel assurance of blockchain signatures
CN107040545B (en)2017-05-262019-05-31中国人民解放军信息工程大学Project file Life cycle method for security protection
CA3067134A1 (en)*2017-06-222018-12-27Softhale NvInhalation device with multiliquid-nozzle and method
CN107329815B (en)*2017-06-262020-08-04浙江工业大学 A Cloud Task Load Balancing Scheduling Method Based on BP-Tabu Search
CN107330775A (en)*2017-07-052017-11-07贵州大学A kind of first valency sealing method of commerce based on bit coin agreement
CN107426234A (en)2017-08-082017-12-01武汉协鑫新能源电力设计有限公司A kind of green electric power supply authentication mechanism based on block chain technology
GB201720946D0 (en)2017-12-152018-01-31Nchain Holdings LtdComputer-implemented system and method
JP7221954B2 (en)*2017-11-092023-02-14エヌチェーン ライセンシング アーゲー A system for protecting verification keys from modification and validating proofs of correctness
CN108009441B (en)2017-11-232023-05-30创新先进技术有限公司Method and apparatus for resource transfer and funds transfer
US10949511B2 (en)2017-11-302021-03-16Bank Of America CorporationMulticomputer processing for data authentication using a blockchain approach
US20190180276A1 (en)2017-12-072019-06-13Bank Of America CorporationAutomated Event Processing Computing Platform for Handling and Enriching Blockchain Data
US10715317B2 (en)2017-12-122020-07-14International Business Machines CorporationProtection of confidentiality, privacy and financial fairness in a blockchain based decentralized identity management system
FR3075534B1 (en)2017-12-142020-01-10CopSonic DIGITAL KEY STORAGE DEVICE FOR SIGNING TRANSACTIONS ON A BLOCK CHAIN
FR3098947B1 (en)2019-07-192021-09-10Idemia Identity & Security France Process for processing a transaction issued from a proof entity
US20210342490A1 (en)*2020-05-042021-11-04Cerebri AI Inc.Auditable secure reverse engineering proof machine learning pipeline and methods
US11226799B1 (en)*2020-08-312022-01-18International Business Machines CorporationDeriving profile data for compiler optimization
CN113779578B (en)*2021-09-132024-01-19支付宝(杭州)信息技术有限公司Intelligent confusion method and system for mobile terminal application

Patent Citations (78)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US4667290A (en)1984-09-101987-05-19501 Philon, Inc.Compilers using a universal intermediate language
US5404531A (en)1989-10-111995-04-04Matsushita Electric Industrial Co., Ltd.Method and apparatus for compiler processing on program related to data transfer and calculation, and method of managing memory
US5499191A (en)1992-06-151996-03-12Minc IncorporatedMulti-level logic optimization in programmable logic devices
US5297150A (en)1992-06-171994-03-22International Business Machines CorporationRule-based method for testing of programming segments
US5920830A (en)1997-07-091999-07-06General Electric CompanyMethods and apparatus for generating test vectors and validating ASIC designs
US6519754B1 (en)1999-05-172003-02-11Synplicity, Inc.Methods and apparatuses for designing integrated circuits
US20040015739A1 (en)2001-08-072004-01-22Ulrich HeinkelTestbench for the validation of a device under test
US7209555B2 (en)2001-10-252007-04-24Matsushita Electric Industrial Co., Ltd.Elliptic curve converting device, elliptic curve converting method, elliptic curve utilization device and elliptic curve generating device
US20030125917A1 (en)2002-01-022003-07-03International Business Machines CorporationSize reduction techniques for vital compliant VHDL simulation models
US7085701B2 (en)2002-01-022006-08-01International Business Machines CorporationSize reduction techniques for vital compliant VHDL simulation models
US7281017B2 (en)2002-06-212007-10-09Sumisho Computer Systems CorporationViews for software atomization
US20060149962A1 (en)2003-07-112006-07-06Ingrian Networks, Inc.Network attached encryption
US7590236B1 (en)2004-06-042009-09-15Voltage Security, Inc.Identity-based-encryption system
US20070061487A1 (en)2005-02-012007-03-15Moore James FSystems and methods for use of structured and unstructured distributed data
US20160004820A1 (en)2005-02-012016-01-07Newsilike Media Group, Inc.Security facility for maintaining health care data pools
US20070157132A1 (en)2005-12-302007-07-05Tatung CompanyProcess of automatically translating a high level programming language into a hardware description language
US20080127067A1 (en)2006-09-062008-05-29Matthew Edward AubertineMethod and system for timing code execution in a korn shell script
US20100067686A1 (en)2006-10-302010-03-18Kazuhiro MinematsuShared key block cipher apparatus, its method, its program and recording medium
US8331556B2 (en)2007-07-062012-12-11France TelecomAsymmetrical method of encryption or signature verification
US20100272209A1 (en)2007-11-182010-10-28Dae Won LeeMethods of joint coding in mobile communication system
US20100131933A1 (en)2008-11-212010-05-27Korea University Industrial & Academic Collaboration FoundationSystem and Method for translating high programming level languages code into Hardware Description Language code
US8165287B2 (en)2008-12-302012-04-24King Fahd University Of Petroleum & MineralsCryptographic hash functions using elliptic polynomial cryptography
US8824670B2 (en)2009-06-302014-09-02MorphoCryptography by parameterizing on elliptic curve
US20110200188A1 (en)2010-02-182011-08-18Lahouari GhoutiMethod of performing cipher block chaining using elliptic polynomial cryptography
US20130031446A1 (en)2010-04-272013-01-31Nec CorporationCoding device, error-correction code configuration method, and program thereof
US9286602B2 (en)2011-03-182016-03-15Blackberry LimitedSecure financial transactions
US9569771B2 (en)2011-04-292017-02-14Stephen LesavichMethod and system for storage and retrieval of blockchain blocks using galois fields
US8607129B2 (en)2011-07-012013-12-10Intel CorporationEfficient and scalable cyclic redundancy check circuit using Galois-field arithmetic
JP5697153B2 (en)2011-08-042015-04-08キヤノンマーケティングジャパン株式会社 Information processing system, portable terminal, control method, and program
US20130097420A1 (en)2011-10-142013-04-18Certicom Corp.Verifying Implicit Certificates and Digital Signatures
US20150379510A1 (en)2012-07-102015-12-31Stanley Benjamin SmithMethod and system to use a block chain infrastructure and Smart Contracts to monetize data transactions involving changes to data included into a data supply chain.
US20140321644A1 (en)2013-04-292014-10-30Her Majesty The Queen In Right Of Canada, As Represented By The Minister Of National DefenceMethod and system for calculations on encrypted data
US9026978B1 (en)2013-10-242015-05-05Cadence Design Systems, Inc.Reverse interface logic model for optimizing physical hierarchy under full chip constraint
US20170091750A1 (en)2014-03-122017-03-30Enrico MaimTransactional system with peer-to-peer distributed architecture for exchanging units of account
US20160087802A1 (en)2014-09-232016-03-24Texas Instruments IncorporatedHomogeneous Atomic Pattern for Double, Add, and Subtract Operations for Digital Authentication Using Elliptic Curve Cryptography
US20160162897A1 (en)2014-12-032016-06-09The Filing Cabinet, LLCSystem and method for user authentication using crypto-currency transactions as access tokens
US20160283941A1 (en)2015-03-272016-09-29Black Gold Coin, Inc.Systems and methods for personal identification and verification
WO2016155804A1 (en)2015-03-312016-10-06Nec Europe Ltd.Method for verifying information
US20160357948A1 (en)2015-06-042016-12-08Fujitsu LimitedInformation processing device and management method
WO2016206567A1 (en)2015-06-262016-12-29阿里巴巴集团控股有限公司Distributed stream computing system, method and device
WO2017008829A1 (en)2015-07-102017-01-19Nec Europe Ltd.A method and a system for reliable computation of a program
WO2017079652A1 (en)2015-11-052017-05-11Pulsifer AllenCryptographic transactions system
US20170132619A1 (en)2015-11-062017-05-11SWFL, Inc., d/b/a "Filament"Systems and methods for autonomous device transacting
US20170131983A1 (en)2015-11-112017-05-11Oracle International CorporationCompiler optimized data model evaluation
US20170142103A1 (en)2015-11-162017-05-18Safran Identity & SecurityIdentification method of an entity
US20170140408A1 (en)2015-11-162017-05-18Bank Of America CorporationTransparent self-managing rewards program using blockchain and smart contracts
US20170178263A1 (en)2015-12-162017-06-22International Business Machines CorporationMultimedia content player with digital rights management while maintaining privacy of users
US20170177312A1 (en)2015-12-182017-06-22International Business Machines CorporationDynamic recompilation techniques for machine learning programs
US20170180341A1 (en)2015-12-222017-06-22Mcafee, Inc.Simplified sensor integrity
US9483596B1 (en)2016-01-082016-11-01International Business Machines CorporationMulti power synthesis in digital circuit design
US20170220815A1 (en)2016-01-282017-08-03Nasdaq, Inc.Systems and methods for securing and disseminating time sensitive information using a blockchain
WO2017145010A1 (en)2016-02-232017-08-31nChain Holdings LimitedSecure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system
US20170249716A1 (en)2016-02-262017-08-31Google Inc.Compiler Techniques for Mapping Program Code to a High Performance, Power Efficient, Programmable Image Processing Hardware Platform
WO2017148527A1 (en)2016-03-032017-09-08Nec Europe Ltd.Method for managing data in a network of nodes
US20170279611A1 (en)2016-03-242017-09-28International Business Machines CorporationCryptographically assured zero-knowledge cloud services for elemental transactions
US20170278100A1 (en)2016-03-252017-09-28International Business Machines CorporationCryptographically assured zero-knowledge cloud service for composable atomic transactions
US20170277909A1 (en)2016-03-282017-09-28International Business Machines CorporationCryptographically provable zero-knowledge content distribution network
US20170287090A1 (en)2016-03-312017-10-05Clause, Inc.System and method for creating and executing data-driven legal contracts
US20170286079A1 (en)2016-04-052017-10-05International Business Machines CorporationLLVM-Based System C Compiler for Architecture Synthesis
US20170286717A1 (en)2016-04-052017-10-05Vchain Technology LimitedMethod and system for managing personal information within independent computer systems and digital networks
WO2017178956A1 (en)2016-04-112017-10-19nChain Holdings LimitedA method for secure peer-to-peer communication on a blockchain
US20170317834A1 (en)2016-04-302017-11-02Civic Technologies, Inc.Methods and systems of providing verification of information using a centralized or distributed ledger
US20180117446A1 (en)2016-05-022018-05-03Bao TranSmart device
US20170337319A1 (en)2016-05-202017-11-23Ecole polytechnique fédérale de Lausanne (EPFL)System and Method for Optimization of Digital Circuits with Timing and Behavior Co-Designed by Introduction and Exploitation of False Paths
EP3249599A1 (en)2016-05-272017-11-29Sony CorporationBlockchain-based system, and electronic apparatus and method in the system
US20170353309A1 (en)2016-06-062017-12-07Microsoft Technology Licensing, LlcCryptographic applications for a blockchain system
US20170352209A1 (en)2016-06-062017-12-07Safran Identity & SecurityProcess for verification of an access right of an individual
US20190295182A1 (en)2016-07-142019-09-26Digital Asset Holdings, LLCDigital asset architecture
US20180039667A1 (en)2016-08-052018-02-08Chicago Mercantile Exchange Inc.Systems and methods for blockchain rule synchronization
US20180167201A1 (en)2016-12-082018-06-14Sensoriant, Inc.System and methods for sharing and trading user data and preferences between computer programs and other entities while preserving user privacy
WO2018127446A1 (en)2017-01-062018-07-12Koninklijke Philips N.V.Distributed privacy-preserving verifiable computation
WO2018127456A2 (en)2017-01-062018-07-12Koninklijke Philips N.V.Pinocchio / trinocchio on authenticated data
CN107274184A (en)2017-05-112017-10-20上海点融信息科技有限责任公司block chain data processing based on zero-knowledge proof
CN107179932A (en)2017-05-262017-09-19福建师范大学The optimization method and its system instructed based on FPGA High Level Synthesis
US10135607B1 (en)2017-08-112018-11-20Dragonchain, Inc.Distributed ledger interaction systems and methods
US20190095631A1 (en)2017-08-112019-03-28Dragonchain, Inc.Security systems and methods based on cryptographic utility token inventory tenure
US20180034634A1 (en)2017-09-122018-02-01QED-it Systems LTDMethod and system for determining desired size of private randomness using tsallis entropy
US20190138753A1 (en)2017-11-082019-05-09Analog Devices, Inc.Remote re-enrollment of physical unclonable functions

Non-Patent Citations (96)

* Cited by examiner, † Cited by third party
Title
"Mastering bitcoin : [unlocking digital cryptocurrencies]", 20 December 2014, O'REILLY MEDIA , Beijing Cambridge Farnham Köln Sebastopol Tokyo , ISBN: 978-1-4493-7404-4, article ANDREAS M. ANTONOPOULOS: "Mastering Bitcoin - Unlocking Digital Cryptocurrencies", XP055306939*
Andreas M. Antonopoulos: "Mastering Bitcoin—Unlocking Digital Cryptocurrencies" In: "Mastering bitcoin : [unlocking digital cryptocurrencies]", Dec. 20, 2014 (Dec. 20, 2014), O'Reilly Media, Beijing Cambridge Farnham Koln Sebastopol Tokyo, XP055306939, ISBN: 978-1-4493-7404-4 p. 134-138, p. 124 (Year: 2014).*
Antonopoulos, "Mastering Bitcoin—Unlocking Digital Cryptocurrencies," O'Reilly Media, Inc., Dec. 20, 2014, 282 pages.
Ben-Sasson et al. "Scalable Zero Knowledge via Cycles of Elliptic Curves" [online] IACR, Sep. 18, 2016 [retrieved Feb. 10, 2022]. Retrieved from https://eprint.iacr.org/2014/595.pdf, 2016, 49 pages.
Ben-Sasson et al., "SNARKs for C: Verifying program executions succinctly and in zero knowledge," Advances in Cryptology—CRYPTO 2013, Aug. 18, 2013, 19 pages.
Ben-Sasson et al., "Succinct Non-Interactive Zero Knowledge for a von Neumann Architecture," USENIX Security 2014, first disclosed Dec. 30, 2013, last revised May 19, 2015, https://eprint.iacr.org/2013/879.pdf, 37 pages.
Ben-Sasson et al., "Zerocash: Decentralized Anonymous Payments from Bitcoin," 2014 IEEE Symposium on Security and Privacy, May 18, 2014, http://zerocash-project.org/media/pdf/zerocash-oakland2014.pdf, 16 pages.
Bitcoinstrings, "Blockchain in Words," retrieved from https://bitcoinstrings.com/blk00281.txt, Dec. 2013, 667 pages.
Bowe, "Pay-to-Sudoku," GitHub, retrieved from https://github.com/zcash-hackworks/pay-to-sudoku/blob/master/README.md, 2016, 2 pages.
Brown et al., "Transport layer security (tls) evidence extensions," Working Draft, IETF Secretariat, Internet-Draft drafthousley-evidence-extns-01, https://tools.ietf.org/pdf/draft-housley-evidence-extns-01, Nov. 2006 [retrieved May 2, 2018], 21 pages.
Buterin, "Quadratic Arithmetric Programs: from Zero to Hero," retrieved from https://medium.com/@VitalikButerin/quadratic-arithmetic-programs-from-zero-to-hero-f6d558cea649, Dec. 11, 2016, 9 pages.
Campanelli et al., "Zero-knowledge contingent payments revisited: Attacks and payments for services," Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security, Oct. 30, 2017, 28 pages.
Canetti et al., "Practical Delegation of Computation Using Multiple Servers," CCS, Oct. 17, 2011, 10 pages.
Castor, "Trust Your Oracle? Cornell Launches Tool for Confidential Blockchain Queries," CoinDesk, retrieved from https://www.coindesk.com/tech/2017/05/17/trust-your-oracle-cornell-launches-tool-for-confidential-blockchain-queries/, May 17, 2017, 5 pages.
Commercial Search Report dated Feb. 28, 2018, United Kingdom Patent Application No. 1719998.5, filed Nov. 30, 2017, 6 pages.
Costello et al., "Geppetto: versatile Verifiable Computation," 2015 IEEE Symposium on Security and Privacy, 2015, 22 pages.
Covaci et al., "Computer-implemented system and method," United Kingdom Patent Application No. 1720946.1, filed Dec. 15, 2017.
Covaci et al., "Extracting Information from the CRS in a ZK Protocol on Blockchain," United Kingdom Patent Application No. 1719998.5, filed Nov. 30, 2017.
Covaci et al., "Logic Minimisation of C-like Smart Contracts for Optimised Verifiable Computation," United Kingdom Patent Application No. 1718505.9, filed Nov. 9, 2017.
Covaci et al., "NECTAR: Non-Interactive Smart Contract Protocol using Blockchain Technology," arXiv preprint arXiv:1803 04860, Mar. 13, 2018, 8 pages.
Davidsen et al., "Empowering the Economy of Things," 2017, 54 pages.
Eberhardt et al., "ZoKrates—Scalable Privacy-Preserving Off-Chain Computations," Information Systems Engineering (ISE), Aug. 2018, 8 pages.
Ethereum Foundation, "ZoKrates—A Toolbox for zkSNARKS on Ethereum," https://www.youtube.com/watch?v=sSlrywb5J_0, Nov. 26, 2017, 12 pages.
Fee et al., "Cryptography using Chebyshev polynomials," Maple Summer Workshop, Burnaby, Canada, Jul. 11, 2004, http://www.cecm.sfu.ca/CAG/ppaers/CHEB, 16 pages.
Fiore et al., Hash First, Argue Later Adaptive Verifiable Computations on Outsourced Data, ACM Computer and Communications Security, 2016, 40 pages.
Fournet et al., "A Certified Compiler for Verifiable Computing," HAL Open Science, Jun. 2016, 14 pages.
Franz et al., "CBMC-GC: An ANSI C Compiler for Secure Two-Party Computations," retrieved from https://arise.or.at/pubpdf/CBMC-GC_An_ANSI_C_Compiler_for_Secure_Two-Party_Computations.pdf, 2014, 5 pages.
Fuchsbauer et al., "Proofs on Encrypted Values in Bilinear Groups and an Applicaiton to Anonymity of Signatures," Third International Conference on Pairing-based Cryptography, Aug. 2009, 26 pages.
Gennaro et al., "Quadratic Span Programs and Succint NIZKs without PCPs," Annual International Conference on the Theory and Applications of Cryptographic Techniques, May 26, 2013, 20 pages.
Gennaro et al., "Robust Threshold DSS Signatures," International Conference on the Theory and Applications of Cryptographic Techniques, May 12, 1996, https://link.springer.com/content/pdf/10.1007%2F3-540-68339-9_31.pdf, 18 pages.
Goldfeder et al., "Escrow Protocols for Cryptocurrencies: How to Buy Physical Goods Using Bitcoin," retrieved from http://stevengoldfeder.com/papers/escrow.pdf, Jul. 26, 2018, 27 pages.
Hajjeh et al., "TLS Sign," TLS Working Group, Internet Draft Version 4, Dec. 15, 2007 [retrieved May 2, 2018], https://tools.ietf.org/html/draft-hajjeh-tls-sign-04, 12 pages.
Hearn, "Continuing the zkSNARK Tutorials," retrieved from https://blog.plan99.net/vntinyram-7b9d5b299097, Dec. 15, 2016, 9 pages.
Hong et al., "Verifiable Computation of Large Polynomials," retrieved from http://or.nsfc.gov.cn/bitstream/00001903-5/154735/1/1000009080185.pdf, Dec. 16, 2014, 13 pages.
International Search Report and Written Opinion dated Jan. 15, 2019, Patent Application No. PCT/IB2018/058434, 11 pages.
International Search Report and Written Opinion dated Jan. 17, 2019, Patent Application No. PCT/IB2018/058432, 11 pages.
International Search Report and Written Opinion dated Jan. 17, 2019, Patent Application No. PCT/IB2018/058437, 10 pages.
International Search Report and Written Opinion dated Jan. 22, 2019, Patent Application No. PCT/IB2018/058583, 10 pages.
International Search Report and Written Opinion dated Jan. 23, 2019, Patent Application No. PCT/IB2018/058433, 12 pages.
International Search Report and Written Opinion dated Jan. 23, 2019, Patent Application No. PCT/IB2018/058491, 12 pages.
International Search Report and Written Opinion dated Mar. 14, 2019, Patent Application No. PCT/IB2018/059770, 12 pages.
International Search Report and Written Opinion dated Mar. 19, 2019, Patent Application No. PCT/IB2018/059918, 14 pages.
Jakob Eberhardt: "ZoKrates—A Toolbox for zkSNARKs on Ethereum", Youtube, Nov. 4, 2017 (Nov. 4, 2017), p. 1 pp., XP054979013, Retrieved from the Internet: URL:https://www.youtube.com/watch?v=sSlryw_b5J 0&t=4s (Year: 2017).*
Jehan, "Rockchain Decentralized Audited Data Networks," White Paper, retrieved from https://www.rockchain.org/RockchainWhitePaper.pdf, Jan. 20, 2018, 28 pages.
Kerber, "Verifiable Computation in Smart Contracts," University of Edinburgh School of Informatics Computer Science 4th Year Project Report, published online Apr. 4, 2017 [retrieved May 2, 2018], https://git.drwx.org/bsc/proj-report/raw/branch/master/report.pdf, 49 pages.
Keutzer et al., "Anatomy of a Hardware Compiler," 1988, 10 pages.
Kiayias et al., "Proofs of Proofs of Work with Sublinear Complexity," Financial Cryptography and Data Security, 2016, 18 pages.
Kosba et al., "Hawk: The Blockchain Model of Cryptography and Privacy-Preserving Smart Contracts," IEEE Symposium on Security and Privacy, May 22, 2016, 31 pages.
Kreuter, "Techniques for Scalable Secure Computation Systems," retrieved from https://repository.library.northeastern.edu/files/neu:cj82rh04k/fulltext.pdf, May 2018, 145 pages.
Król et al., "SPOC: Secure Payments for Outsourced Computations," Jul. 17, 2018, 6 pages.
Kumaresan et al., "How to Use Bitcoin to Incentivize Correct Computations," retrieved from https://people.csail.mit.edu/ranjit/papers/incentives.pdf, Nov. 2014, 12 pages.
Kuzminov et al., "Bridging the Gaps with Iolite Blockchain," Iolite Foundation White Paper, 2017, 13 pages.
Malkhi et al., "Fairplay—A Secure Two-Party Computation System," Aug. 2004, 17 pages.
Mathworks, "Matlab Coder—Generate C and C++ Code From MATLAB Code," 9 pages.
MATTEO CAMPANELLI ; ROSARIO GENNARO ; STEVEN GOLDFEDER ; LUCA NIZZARDO: "Zero-Knowledge Contingent Payments Revisited: Attacks and Payments for Services", IACR, INTERNATIONAL ASSOCIATION FOR CRYPTOLOGIC RESEARCH, vol. 20171101:190916, Report 2017/566, 9 June 2017 (2017-06-09), International Association for Cryptologic Research , pages 1 - 26, XP061023635*
Matteo Campanelli et al: "Zero-Knowledge Contingent Payments Revisited: Attacks and Payments for Services", IACR, International Association for Cryptologic Research, vol. 20171101:190916 Jun. 9, 2017 (Jun. 9, 2017), p. 1-26, XP061023635, Retrieved from the Internet: URL:http://eprint.iacr.org/2017/566.pdf (Year: 2017).*
Maxwell et al., "Chat logs," Bitcoin-wizards IRC Chat Channel, Aug. 16, 2013 [retrieved May 2, 2018], https://download.wpsoftware.net/bitcoin/wizards/2013/08/13-08-16.log, 1 page.
Maxwell et al., "CoinCovenants using SCIP signatures, an amusingly bad idea," Bitcoin Forum, Aug. 20, 2013 [retrieved Apr. 13, 2018], https://bitcointalk.org/index.php?topic=278122.0, 5 pages.
Maxwell et al., "Really Really ultimate blockchain compression: CoinWitness," Bitcoin Forum, Aug. 19, 2013 [retrieved Apr. 11, 2018], https://bitcointalk.org/index.php?topic=277389.0, 7 pages.
Maxwell, "The First Successful Zero-Knowledge Contingent Payment," Bitcoin Core, retrieved from https://bitcoincore.org/en/2016/02/26/zero-knowledge-contingent-payments-announcement/, Feb. 26, 2016, 5 pages.
Mayer, "zk-SNARK Explained: Basic Principles," Dec. 13, 2016, 9 pages.
Mayer, "zk-SNARK explained: Basic Principles," retrieved from https://www.researchgate.net/publication/321124635_zk-SNARK_explained_Basic_Principles, Dec. 2016, 9 pages.
Müller, "A Short Note on Secret Sharing Using Elliptic Curves," Proceedings of SECRYPT 2008, Jul. 26, 2008, http://www.scitepress.org/Papers/2008/19183/19183.pdf, 4 pages.
Nakamoto, "Bitcoin: A Peer-to-Peer Electronic Cash System," Bitcoin, Oct. 31, 2008, https://bitcoin.org/bitcoin.pdf, 9 pages.
Ning, "Automatically Convert MATLAB Code to C Code," https://www.mathworks.com/videos/automatically-converting-matlab-code-to-c-code-96483.html, Aug. 19, 2014, 8 pages.
Parno et al., "Pinocchio: Nearly Practical Verifiable Computation," IEEE Symposium on Security and Privacy, May 19-22, 2013, 16 pages.
Parno, "A Note on the Unsoundness of vnTinyRAM's SNARK," retrieved from https://eprint.iacr.org/2015/437, May 6, 2015, 4 pages.
Prasad et al., "Effect pf Quine-McCluskey Simplification on Boolean Space Complexity," IEEE Xplore, Jul. 25-26, 2009, 6 pages.
Ritzdorf et al., "TLS-N: Non-repudiation over TLS Enabling Ubiquitous Content Signing for Disintermediation," IACR ePrint report, first disclosed 2017 [retrieved May 2, 2018], 16 pages.
Satoshi et al., "Connection Limits," Bitcoin Forum, Aug. 9, 2010, https://bitcointalk.org/index.php?topic=741.0;prev_next=prev, 2 pages.
Schaeffer et al., "ZoKrates—a Toolbox for zkSNARKS on Ethereum," https://github.com/Zokrates/ZoKrates, Feb. 4, 2019, 3 pages.
Schoenmakers et al., "Trinocchio: Privacy-Preserving Outsourcing by Distributed Verifiable Computation," International Conference on Applied Cryptography and Network Security, Jun. 19, 2016, https://eprint.iacr.org/2015/480.pdf, 33 pages.
Stuart, "EECS Presents Awards for Outstanding PhD and SM Theses," EECS, Nov. 8, 2017, 2 pages.
Sward et al. "Data Insertion in Bitcoin's Blockchain" [online] Augustana College, Jul. 2017 [retrieved Feb. 10, 2022]. Retrieved from the Internet: URL: https://digitalcommons.augustana.edu/cgi/viewcontent.cgi?article=1000&context=cscfaculty 2017, 19 pages.
Teutsch et al., "A scalable verification solution for blockchains," Nov. 16, 2017, https://people.cs.uchicago.edu/˜teutsch/papers/truebit.pdf, 50 pages.
Tillich et al., "Circuits of basic functions suitable for MPC and FHE," https://homes.esat.kuleuven.be/˜nsmart/MPC/, first disclosed 2012, retrieved May 2, 2018, 2 pages.
Todd, "[bitcoin-dev] Building Blocks of the State Machine Approach to Consensus," petertodd.org, Jun. 20, 2016, https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2016-June/012773.html, six pages.
Turner, "CSE 260. Introduction to Digital Logic and Computer Design," Syllabus and Text Book, https://www.arl.wustl.edu/-jst/cse/260/ddc.pdf, 2015, 435 pages.
Turner, "Designing Digital Circuits a modern approach," CSE 260, Introduction to Digital Logic and Computer Design, Spring 2014, 435 pages.
UK Commercial Search Report dated Dec. 3, 2018, Patent Application No. GB1806444.4, 8 pages.
UK Commercial Search Report dated Feb. 2, 2018, Patent Application No. GB 1718505.9, 7 pages.
UK Commercial Search Report dated May 31, 2018, Patent Application No. GB1801753.3, 8 pages.
UK Commercial Search Report dated Oct. 25, 2018, Patent Application No. GB1805948.5, 9 pages.
UK IPO Search Report dated Jul. 26, 2018, Patent Application No. GB1801753.3, 5 pages.
UK IPO Search Report dated Nov. 2, 2018, Patent Application No. GB1805948.5, 4 pages.
UK IPO Search Report dated Nov. 8, 2018, Patent Application No. GB1806444.4, 6 pages.
United Kingdom Commercial Search Report dated Apr. 20, 2018, Patent Application No. 1720768.9, filed Dec. 13, 2017, 8 pages.
United Kingdom Intellectual Property Office Search Report dated Jun. 12, 2018, Patent Application No. 1720768.9, filed Dec. 13, 2017, 7 pages.
United Kingdom Intellectual Property Office Search Report dated May 3, 2018, Patent Application No. 1719998.5, filed Nov. 30, 2017, 6 pages.
United Kingdom IPO Search Report dated Apr. 27, 2018, Patent Application No. 1718505.9, filed Nov. 9, 2017, 5 pages.
Viacoin Dev Team, "Styx: Unlinkable Anonymous Atomic Payment Hub for Viacoin," viacoin.org, Oct. 14, 2016, http://docplayer.net/35213119-Styx-unlinkable-anonymous-atomic-payment-hub-for-viacoin-viacoin-dev-team-viacoin-org.html, 18 pages.
Virza, "On Deploying Succinct Zero-Knowledge Proofs" [online] MIT, Sep. 2017 [retrieved Feb. 10, 2022]. Retrieved from the Internet: URL:On Deploying Succinct Zero-Knowledge Proofs, 2016, 131 pages.
Wikipedia, "Precompiled Header," Retrieved Mar. 30, 2022, https://en.wikipedia.org/w/index.php?title=Precompiled_header&oldid=807155683, 3 pages.
Wikipedia, "Zero Knowledge Contingent Payment," Bitcoin Wiki, retrieved from https://en.bitcoin.it/wiki/Zero_Knowledge_Contingent_Payment, Apr. 8, 2020, 3 pages.
Wu et al., "Libsnark: a C++ Library for zkSNARK Proofs," SCIPR Lab, libsnark/README.md at 92a80f74727091fdc40e6021dc42e9f6b67d5176, Aug. 18, 2017, 9 pages.
ZCash, "zk-SNARKs," zCash website, retreived Apr. 1, 2022 from https://web.archive.org/web/20171107012237/https://z.cash/technology/zksnarks.html, Nov. 24, 2017, 1 page.

Also Published As

Publication numberPublication date
TWI837103B (en)2024-04-01
EP4312403A2 (en)2024-01-31
KR20250005429A (en)2025-01-09
US11635950B2 (en)2023-04-25
CN111406379A (en)2020-07-10
WO2019092545A1 (en)2019-05-16
US11575511B2 (en)2023-02-07
CN111345004B (en)2023-12-01
CN111345004A (en)2020-06-26
WO2019092544A1 (en)2019-05-16
JP2025011223A (en)2025-01-23
JP7572468B2 (en)2024-10-23
JP2023182741A (en)2023-12-26
JP2023179687A (en)2023-12-19
EP3707623B1 (en)2025-05-14
US20240413971A1 (en)2024-12-12
US20200266985A1 (en)2020-08-20
EP4546718A3 (en)2025-05-14
JP2021502636A (en)2021-01-28
EP3707871B1 (en)2022-05-18
CN117640170A (en)2024-03-01
US20230318804A1 (en)2023-10-05
JP7234229B2 (en)2023-03-07
JP2023036962A (en)2023-03-14
EP4546718A2 (en)2025-04-30
CN118413305A (en)2024-07-30
KR20250005540A (en)2025-01-09
SG11202004146WA (en)2020-06-29
WO2019092561A1 (en)2019-05-16
KR20200080265A (en)2020-07-06
KR20200086281A (en)2020-07-16
EP3707855A1 (en)2020-09-16
ZA202002575B (en)2023-12-20
EP3707852B1 (en)2024-06-12
US20230318805A1 (en)2023-10-05
US20240313947A1 (en)2024-09-19
KR20250005502A (en)2025-01-09
TWI806918B (en)2023-07-01
KR20200079503A (en)2020-07-03
JP2023052834A (en)2023-04-12
EP4092953A1 (en)2022-11-23
JP2021502747A (en)2021-01-28
EP3707856A1 (en)2020-09-16
JP2021502746A (en)2021-01-28
KR20200086282A (en)2020-07-16
SG11202004149UA (en)2020-06-29
US12200103B2 (en)2025-01-14
JP2021502634A (en)2021-01-28
JP2024099659A (en)2024-07-25
US20200366492A1 (en)2020-11-19
CN111345005A (en)2020-06-26
CN111316595B (en)2024-09-03
JP2024156763A (en)2024-11-06
EP4312403A3 (en)2024-02-21
US12219044B2 (en)2025-02-04
CN111316594A (en)2020-06-19
US20230269070A1 (en)2023-08-24
JP2023075152A (en)2023-05-30
TW201923648A (en)2019-06-16
WO2019092543A1 (en)2019-05-16
KR102743526B1 (en)2024-12-17
CN119155068A (en)2024-12-17
JP7221954B2 (en)2023-02-14
US12309168B2 (en)2025-05-20
SG11202004147RA (en)2020-06-29
SG11202004148PA (en)2020-06-29
TW201923567A (en)2019-06-16
JP7208989B2 (en)2023-01-19
EP3707852A1 (en)2020-09-16
US20200348916A1 (en)2020-11-05
EP3707871A1 (en)2020-09-16
US12407693B2 (en)2025-09-02
KR102738013B1 (en)2024-12-05
JP7477674B2 (en)2024-05-01
JP7534024B2 (en)2024-08-14
CN111316595A (en)2020-06-19
JP2021502745A (en)2021-01-28
KR20200086284A (en)2020-07-16
US20210377041A1 (en)2021-12-02
WO2019092542A1 (en)2019-05-16
SG11202004153UA (en)2020-06-29
US20210192514A1 (en)2021-06-24
EP3707623A1 (en)2020-09-16

Similar Documents

PublicationPublication DateTitle
US12407693B2 (en)System for securing verification key from alteration and verifying validity of a proof of correctness
US20250141659A1 (en)System and method for authenticating off-chain data based on proof verification
KR102809216B1 (en) System and method for ensuring correct execution of computer programs using an arbitrator computer system
HK40082675A (en)System for recording verification keys on a blockchain
HK40027158A (en)System for recording verification keys on a blockchain
HK40027158B (en)System for recording verification keys on a blockchain

Legal Events

DateCodeTitleDescription
FEPPFee payment procedure

Free format text:ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STPPInformation on status: patent application and granting procedure in general

Free format text:DOCKETED NEW CASE - READY FOR EXAMINATION

ASAssignment

Owner name:NCHAIN HOLDINGS LTD, ANTIGUA AND BARBUDA

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:COVACI, ALEXANDRA;MADEO, SIMONE;MOTYLINSKI, PATRICK;AND OTHERS;SIGNING DATES FROM 20171109 TO 20171110;REEL/FRAME:053032/0115

Owner name:NCHAIN HOLDINGS LTD, ANTIGUA AND BARBUDA

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:COVACI, ALEXANDRA;MADEO, SIMONE;MOTYLINSKI, PATRICK;AND OTHERS;SIGNING DATES FROM 20180206 TO 20180212;REEL/FRAME:053032/0037

Owner name:NCHAIN HOLDINGS LTD, ANTIGUA AND BARBUDA

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:COVACI, ALEXANDRA;MADEO, SIMONE;MOTYLINSKI, PATRICK;AND OTHERS;SIGNING DATES FROM 20170103 TO 20171218;REEL/FRAME:053032/0100

Owner name:NCHAIN HOLDINGS LTD, ANTIGUA AND BARBUDA

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:COVACI, ALEXANDRA;MADEO, SIMONE;MOTYLINSKI, PATRICK;AND OTHERS;REEL/FRAME:053032/0161

Effective date:20171207

Owner name:NCHAIN HOLDINGS LTD, ANTIGUA AND BARBUDA

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:COVACI, ALEXANDRA;MADEO, SIMONE;MOTYLINSKI, PATRICK;AND OTHERS;SIGNING DATES FROM 20180424 TO 20180507;REEL/FRAME:053728/0809

Owner name:NCHAIN HOLDINGS LTD, ANTIGUA AND BARBUDA

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:COVACI, ALEXANDRA;MADEO, SIMONE;MOTYLINSKI, PATRICK;AND OTHERS;SIGNING DATES FROM 20180420 TO 20180507;REEL/FRAME:053743/0001

STPPInformation on status: patent application and granting procedure in general

Free format text:NON FINAL ACTION MAILED

STPPInformation on status: patent application and granting procedure in general

Free format text:RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

ASAssignment

Owner name:NCHAIN LICENSING AG, SWITZERLAND

Free format text:CHANGE OF NAME;ASSIGNOR:NCHAIN HOLDINGS LTD;REEL/FRAME:062114/0402

Effective date:20201125

STCFInformation on status: patent grant

Free format text:PATENTED CASE


[8]ページ先頭

©2009-2025 Movatter.jp