Systems and methods are described for transferring and verifying the transfer of an asset from a limited-participant side chain back to a main blockchain. A public difference, associated with a secret difference, is determined as a difference between a main blockchain address and the public offline key of a transferring participant. The public difference is used, along with each participant public online key, to generate a ring signature key for each participant. A ring signature is then generated over the ring signature keys, based on the public online keys and a set of uniform random scalars (each associated with a participant public online key). The main blockchain address, a first coefficient from the ring signature, and the uniform random scalars are then published. When verified, the published ring signature shows that the transferring participant has control of the main blockchain address and the private offline key.
|
1. A method for transferring an asset on a side chain ledger to a main blockchain, where the asset was originally transferred from the main blockchain to the side chain ledger, the side chain having a fixed set of participants, comprising:
receiving a public main blockchain address, where each participant is associated with a secret offline key and a secret online key, and each participant is also associated with public versions of the two secret keys generated by multiplying each key by point G of an elliptic curve group, the public versions being provided to every other participant in the fixed set, the secret keys for each participant being generated using different computing devices;
when the transfer of the asset is performed, generating, by a computing device associated with a participant wanting to transfer the asset back to the main blockchain, a public difference for each participant based on each participant public offline key and the public main blockchain address, such that when the asset is transferred to the main blockchain address, access to the main blockchain address by the transferring participant is based on the public offline key associated with the transferring participant and control of the address is proven without associating a participant identity with the address;
generating, by the computing device associated with the transferring participant, a ring signature key for each of the fixed set of participants based on the generated public online keys for each participant and the generated public differences for each participant;
generating a ring signature, over the generated set of ring signature keys; and
publishing the ring signature on a sidechain ledger, the published ring signature being verified on the side chain ledger by at least one of the participants to indicate that the transfer of the asset is valid.
10. A method for verifying transfer of an asset from a side chain to a main blockchain on a side chain ledger, the side chain having a fixed set of participants, comprising:
determining, by a processor circuitry associated with a computing device of a participant wanting to verify transfer of the asset to the main blockchain, the computing device being in communication with a sidechain server storing the side chain ledger, a set of ring signature keys, each ring signature key being based on a hash function applied to a difference between a received main blockchain address A and public offline keys associated with each participant of the fixed set, the output of the hash function being multiplied by a standard elliptic curve group generator G and added to public online keys setoff each corresponding participant, the received main blockchain address A being from a published ring signature on the side chain ledger associated with control of a public address associated with the main blockchain, the set of participants having an index where an index number is associated with each participant;
determining, by the processor circuitry, a set of coefficients based on the determined set of ring signature keys, a received set of second uniform random scalars obtained from the published ring signature, a received first coefficient also from the published ring signature, and the hash function, each of the determined set of coefficients being further based on a previous participant coefficient according to the index;
determining a first coefficient based on a first uniform random scalar from the received set of second uniform random scalars, a last determined coefficient according to the index and a last determined ring signature key, also according to the index;
comparing the determined first coefficient to the received first coefficient; and
comparing the received main blockchain address A to the public address associated with the main blockchain, the transfer being verified when the determined first coefficient is equal to the received first coefficient and the received main blockchain address A corresponds to the public address associated with the main blockchain, such that when the asset is transferred to the public address associated with the main blockchain, access is based on a public offline key associated with a transferring participant and control of the public address is proven without associating a participant identity with the public address.
2. The method of
3. The method of
4. The method of
determining an ith uniform random scalar of the second uniform random scalars for the transferring participant based on the first uniform random scalar, the determined ith coefficient and the secret difference; and
determining coefficients for every other participant in the set of participants based on a second uniform random scalar for each other participant, a coefficient for a previous participant according to the index, and a public online key of the previous participant.
6. The method of
8. The method of
11. The method of
12. The method of
13. The method of
|
This application claims the benefit of U.S. Provisional Application No. 62/476,168, filed Mar. 24, 2017, which is incorporated herein in its entirety.
A portion of the disclosure of this patent document including any priority documents contains material that is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
One or more implementations relate generally to digital cryptocurrencies, and more specifically to transferring an asset on a side chain ledger to a main blockchain such that control of an address associated with a main blockchain may be proven without associating a participant identity with the address.
Systems and methods are described for transferring an asset on a ledger of a side chain having a fixed set of participants to a main blockchain, where the asset was originally transferred from the main blockchain to the side chain ledger. At a setup time of the side chain, two secret keys each participant may provide an offline key and an online key. Public versions of the two secret keys may also be provided by each participant by multiplying by point G of an elliptic curve group, the public versions being provided to every participant in the fixed set. When the transfer of the asset is performed, a public main blockchain address is received, and a computing device of a transferring participant may generate a public difference for each participant based on each participant public offline key and the public main blockchain address The computing device may then generate a ring signature key for each of the fixed set based on the generated public online keys and generated public differences. A ring signature may then be generated over the generated set of ring signature keys, based on the generated public online keys, a first uniform random scalar, and a set of second uniform random scalars. The uniform random scalars may each be associated with a generated public online key, and, to generate the ring signature, a set of coefficients may be determined. The transaction may be completed by publishing the ring signature on a sidechain ledger stored on a sidechain server in communication with the server of the transferring participant, the published ring signature including the main blockchain address, a first coefficient of the set of coefficients, and a scalar set including the first uniform random scalar and the set of second uniform random scalars. The published ring signature may be retrieved from the side chain ledger by a computing device of at least one of the other participants and verified to indicate that the transfer of the asset is valid, the verification showing that the transferring participant has control of the main blockchain address and the private offline key.
In addition to the foregoing, systems and methods for verifying transfer of the asset from the side chain to the main blockchain on the side chain ledger are described. To perform the verification, a processor (e.g. of a computing device of one of the other participants) in communication with the sidechain server storing the side chain ledger may determine a set of ring signature keys based on a hash function applied to a difference between a received main blockchain address and public offline keys associated with each participant of the fixed set. The outputs of the hash functions may then be multiplied by point G of the elliptic curve group described above, and added to the public online keys of the corresponding participants. As described above, the received main blockchain address may be retrieved from a published ring signature on the side chain ledger, the set of participants having an index where an index number is associated with each participant. A set of coefficients may be determined by the processor based on the determined set of ring signature keys, a received set of second uniform random scalars obtained from the published ring signature, a received first coefficient also from the published ring signature, and the hash function, where each of the determined set of coefficients are further based on a previous participant coefficient according to the index. A first coefficient may be determined based on a first uniform random scalar from the received set of second uniform random scalars, a last determined coefficient according to the index and a last determined ring signature key, also according to the index. The received main blockchain address may be compared to the public address associated with the main blockchain, where the transfer being verified when the determined first coefficient is equal to the received first coefficient and the received main blockchain address corresponds to the public address associated with the main blockchain.
In the following drawings like reference numbers are used to refer to like elements. Although the following figures depict various examples, the one or more implementations are not limited to the examples depicted in the figures.
Since the introduction of Bitcoin (see S. Nakamoto, Bitcoin: A peer-to-peer electronic cash system, 2009, https://www.bitcoin.org/bitcoin.pdf, incorporated herein by reference) in 2009, there has been great interest in the potential of decentralized cryptocurrencies. The present invention implements a scheme by which members of a fixed group, having fixed signing keys, can prove control of an arbitrary new key without associating their own identity (only that they belong to the group) to the new key. The application is to patch ring-signature-like behavior onto a main blockchain, such as Bitcoin or Pretty Good Privacy (“PGP”), which does not directly support this. This delegation, to an arbitrary new key, is referred to herein as “whitelisting” because a dynamic whitelist of authorized keys may be created for repeated use by members of the fixed group.
For example, suppose there is a private sidechain with a fixed membership set but stronger privacy properties than a main blockchain (e.g., Bitcoin). When moving coins from the private sidechain back to the main blockchain, it is desirable that the destination main blockchain addresses be provably in control of a participant of the sidechain. This prevents malicious or erroneous behavior on the sidechain, which can likely be resolved by its participants, from translating to theft on the wider main blockchain network, which may be irreversible.
One way to allow sidechain participants to whitelist arbitrary keys would be to simply have participants sign the key they want to whitelist. To avoid revealing their specific identity, they could use a ring signature, such as a Borromean ring signature. A problem with this solution, however, is that it only proves that a participant signed off on a ring signature key, not that they control it (or any main blockchain address associated with the ring signature key). Thus any security failure that allows text substitution could be used to subvert this and redirect coins to an attacker-controlled address.
Another way to allow sidechain participants to whitelist arbitrary keys is to have a participant sign an arbitrary message with the sum of a key P and the whitelisted key W. Such a signature with the key P+W proves knowledge of either (a) discrete logarithms of both P and W; or (b) neither, since the sum would have to match the sum of P+W. This makes directly attacking participants' signing schemes much harder, but allows an attacker to whitelist arbitrary “garbage” keys by computing W as the difference between an attacker-controlled key and P. The effect of garbage keys is to “burn” stolen coins on the main blockchain, destroying them by transferring the sidechain coins to a main blockchain address associated with W when the sidechain asset ring signature is published on the sidechain ledger. Since the attacker does not know P and the participant associated with P does not know the attacker-controlled key, neither party would be able to access the stolen coins. In an important sense, this “burning coins” attack may be a good thing: it permits offline delegation. That is, the key P does not need to be available on the ledger at the time of the transaction. Instead, participants could choose S=P+W, sign with this to transfer an asset to the main blockchain, and only later compute the discrete logarithm of W=P−S. This allows P to be in cold storage or be otherwise inaccessible, improving the overall system security.
A modification of the difference-of-keys described above, which prevents this “garbage key” attack, is to instead have participants sign some message with the key P+H(W)W, for H some random-oracle hash that maps group elements to scalars. This resultant key, and its discrete logarithm, cannot be known until after W is chosen, so W cannot be selected as the difference between it and P. (Note that P could still be some chosen difference; however P is a fixed key and must be verified out-of-band to have come from a legitimate participant anyway.) This scheme no longer supports offline delegation. However, offline delegation can be achieved by introducing an offline key, P′, and signing with the key P+H(W+P′)(W+P′). This provides the best of both worlds: P′ does not need to be online to delegate, allowing it to be securely stored and preventing real-time attacks on the underlying address behind W. P does need to be online, but its compromise only allows an attacker to whitelist “garbage keys”, not attacker-controlled ones.
The present invention allowing sidechain participants to whitelist arbitrary keys utilizes a different scheme: each participant i chooses two keys, P_i and Q_i. P_i may be referred to as the “online key” and Q_i as the “offline key”. To whitelist a key W, the transferring participant computes the public main blockchain key L_j=P_j+H(W+Q_j)(W+Q_j) for every participant j of the sidechain. The transferring participant will accordingly know the discrete logarithm of L_i for their own keys P_i and Q_i. Next, the transferring participant signs a message containing every P_i and Q_i as well as W with a ring signature over all the public main blockchain keys L_j. This proves that the transferring participant knows the discrete logarithm of some L_i (though it is zero-knowledge which one), and therefore knows a) the discrete logarithms of all of W, P_i and Q_i, or b) the discrete logarithm of P_i but of neither W nor Q_i. In other words, compromise of the online key P_i allows an attacker to whitelist “garbage keys” for which nobody knows the discrete logarithm; to whitelist an attacker-controlled key, the attacker must compromise both P_i and Q_i. This is difficult because by design, only the sum S=W+Q_i is used when signing; then by choosing S freely, a participant can delegate without the secret offline key to Q_i ever being online. Later, when the transferring participant wants to actually use W, they will need to compute its key as the difference between S and Q_i; but this can be done offline and much later and with more expensive security requirements.
To facilitate an understanding of the subject matter described below, many aspects are described in terms of sequences of actions. At least one of these aspects defined by the claims is performed by an electronic hardware component. For example, it will be recognized that the various actions can be performed by specialized circuits or circuitry, by program instructions being executed by one or more processors, or by a combination of both. The description herein of any sequence of actions is not intended to imply that the specific order described for performing that sequence must be followed. All methods described herein can be performed in any suitable order unless otherwise indicated herein or otherwise clearly contradicted by context.
To further elaborate the storing and verification of transactions on blockchain ledgers,
To assist in making sure a previous owner of an asset did not transact the same asset twice, a proof of work system 150 may be implemented on each block in a ledger (such as a ring signature). For an exemplary timestamp scheme, the proof-of-work may be implementing by incrementing a nonce (number used once, a conventional cryptographic concept) 155 in the block 160 until a value is found that gives the block's previous hash 165 the required zero bits initially recorded with the asset. As seen in system 150 (implemented on a side chain server, for example), each block 160 may also include the ring signature 170 allowing other participants of the side chain to verify control of an address associated with a main blockchain without associating the transferring participant's identity with the address.
As an example, suppose there are n participants of the fixed set. The elliptic curve group G′ would be generated by the point G, and a 256-bit prime number p exists such that curve group G′ hasp points. The integers mod p, denoted Z/pZ, are then isomorphic to G′ (having a one-to-one relationship) according to the mapping x→xG. Z/pZ are also referred to below as scalars and the p elements of G′ are also referred to as points. By multiplying the secret online key and the secret offline key by point G, points on the elliptic curve group G′ are associated with the keys while obscuring the secret key values to outsiders to the side chain. At setup time, for each participant i ∈{1, . . . , n} two secret keys would be determined: an offline participant key pion and an online participant key pioff. The corresponding public keys may be expressed as Pioff=pioff*G and Pion=pion*G. These public keys would be registered as part of the public parameters of the system and made available to each participant of the side chain.
Returning to method 200, a processor may send a parent chain asset 225 to the side chain ledger 220 having a fixed set of participants at step 230. This may be done to take advantage of features on the side chain ledger 220 (such as greater security, privacy, and/or flexibility) that are not available on the larger main blockchain 210. At step 235, the asset may be claimed by a participant of the sidechain ledger 220. When the participant wishes to transfer the asset back to the main blockchain, a ring signature may be generated by the computing device of the transferring participant at step 240. The generation of the ring signature is described in further detail below, in the discussion of
As stated above, a ring signature is made by a transferring participant when they wish to move the asset back to the main blockchain.
The computing device may then generate a ring signature key for each of the fixed set based on the generated public online keys for each participant and a generated public difference Dj at step 330. In an embodiment, each public difference Dj may be determined as the difference between the main blockchain address and a public offline key of a participant j. The ring signature key may then be determined as a sum of the participant public online key and a product of the public difference Dj and a hash function applied to the public difference Dj. That is, for each j∈{1, . . . , n}, the computing device may determine a ring signature key Pj←Pion+H (Dj)Dj for each participant j (including the transferring participant) where function H may be defined as a hash function modeled as a random oracle.
A ring signature may then be generated at step 340 over the generated set of ring signature keys {Pi}j=1n. Any suitable ring signature may be used. For example, RST ring signatures, AOS ring signatures, or short accountable ring signatures are all examples of ring signatures that may be used. In an exemplary embodiment, the ring signature may be generated based on the generated public online keys Pion (for i ranging from 1 to n), a first uniform random scalar k, and a set of second uniform random scalars sj. The uniform random scalars may each be associated with a generated public online key, and, to generate the ring signature, a set of coefficients may be determined and a uniform random scalar may be determined for the transferring participant. For example, assume the set of participants having an index where an index number is associated with each participant from 1 to n, where the transferring participant is the ith number in the index. The transferring participant may choose scalar k uniformly randomly and determine an ith coefficient (corresponding to the transferring participant) based on a hash of the first uniform random scalar and a point on the elliptic curve group (e.g., ei←H({Pj}j=1n∥kG∥i). The hash function may be the same hash function used to generate the ring signature keys, and G likewise may be the same point on the elliptic curve used to determine the public differences Dj for the participants. Coefficients for every other participant in the set of participants may be determined based on a second uniform random scalar for each other participant, a coefficient for a previous participant according to the index, and a public online key of the previous participant. For example, the formula for determining coefficients for the other participants may be expressed as: ej←H({Pj}j=1n∥sjG+ej-1Pj-1∥j), for j from i+1 to n and from 1 to i−1, and where scalar sj is selected uniformly at random by the transferring participant. For the first coefficient e1, the coefficient e0 is defined to equal en. Finally, the computing device may determine the ith uniform random scalar of the second uniform random scalars for the transferring participant based on the first uniform random scalar, the determined ith coefficient (described above) and the secret difference (e.g., using the formula si=k−eid.)
The transaction may be completed by publishing the ring signature on a sidechain ledger stored on a sidechain server in communication with the computing device of the transferring participant at step 350. The published ring signature may include the main blockchain address A, a first coefficient e1 of the set of coefficients, and a scalar set including the ith uniform random scalar and the set of second uniform random scalars. In some embodiments, the published first coefficient e1 may be a coefficient corresponding to a participant besides the first in the index j. To verify the ring signature, is only required that the verifier know the index number of the participant the first coefficient corresponds to, and that the choice of published coefficient reveal no information about the index number i of the transferring participant who produced the ring signature. The published ring signature, which may be expressed as [A, e1{s}j=1n], is verified on the side chain ledger by at least one of the participants to indicate that the transfer of the asset is valid, the verification showing that the transferring participant has control of the main blockchain public address and the public offline key (used to create the secret difference.
A set of coefficients may then be determined at step 420 by the processor based on the determined set of ring signature keys, a received set of second uniform random scalars obtained from the published ring signature, a received first coefficient also from the published ring signature, and the hash function, where each of the determined set of coefficients are further based on a previous participant coefficient according to the index. That is, For j∈2, . . . , n of the index of participants j, the verifier computes ej←H({Pj}j=1n∥sjG+ej-1Pj-1∥j) to obtain all coefficients except the first coefficient e1.
The first coefficient e1 may be determined at step 430 based on a first uniform random scalar from the received set of second uniform random scalars, a last determined coefficient according to the index and a last determined ring signature key, also according to the index. For example, the first coefficient may be determined by the formula: e1←H({Pj}j=1n∥s1G+enPn∥1) The determined first coefficient e1 may be compared to the received first coefficient ê1 at step 440, where the ring signature (and thus, control over the ring signature key Pj) is verified when the determined first coefficient is equal to the received first coefficient. The determined first coefficient not being equal to the received first coefficient signifies that the ring signature is invalid, and thus the transfer is rejected (as shown in
The bus 514 may comprise any type of bus architecture. Examples include a memory bus, a peripheral bus, a local bus, etc. The processing unit 502 is an instruction execution machine, apparatus, or device and may comprise a microprocessor, a digital signal processor, a graphics processing unit, an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), etc. The processing unit 502 may be configured to execute program instructions stored in memory 504 and/or storage 506 and/or received via data entry module 508.
The memory 504 may include read only memory (ROM) 516 and random access memory (RAM) 518. Memory 504 may be configured to store program instructions and data during operation of device 500. In various embodiments, memory 504 may include any of a variety of memory technologies such as static random access memory (SRAM) or dynamic RAM (DRAM), including variants such as dual data rate synchronous DRAM (DDR SDRAM), error correcting code synchronous DRAM (ECC SDRAM), or RAMBUS DRAM (RDRAM), for example. Memory 504 may also include nonvolatile memory technologies such as nonvolatile flash RAM (NVRAM) or ROM. In some embodiments, it is contemplated that memory 504 may include a combination of technologies such as the foregoing, as well as other technologies not specifically mentioned. When the subject matter is implemented in a computer system, a basic input/output system (BIOS) 520, containing the basic routines that help to transfer information between elements within the computer system, such as during start-up, is stored in ROM 516.
The storage 506 may include a flash memory data storage device for reading from and writing to flash memory, a hard disk drive for reading from and writing to a hard disk, a magnetic disk drive for reading from or writing to a removable magnetic disk, and/or an optical disk drive for reading from or writing to a removable optical disk such as a CD ROM, DVD or other optical media. The drives and their associated computer-readable media provide nonvolatile storage of computer readable instructions, data structures, program modules and other data for the hardware device 500.
It is noted that the methods described herein can be embodied in executable instructions stored in a non-transitory computer readable medium for use by or in connection with an instruction execution machine, apparatus, or device, such as a computer-based or processor-containing machine, apparatus, or device. It will be appreciated by those skilled in the art that for some embodiments, other types of computer readable media may be used which can store data that is accessible by a computer, such as magnetic cassettes, flash memory cards, digital video disks, Bernoulli cartridges, RAM, ROM, and the like may also be used in the exemplary operating environment. As used here, a “computer-readable medium” can include one or more of any suitable media for storing the executable instructions of a computer program in one or more of an electronic, magnetic, optical, and electromagnetic format, such that the instruction execution machine, system, apparatus, or device can read (or fetch) the instructions from the computer readable medium and execute the instructions for carrying out the described methods. A non-exhaustive list of conventional exemplary computer readable medium includes: a portable computer diskette; a RAM; a ROM; an erasable programmable read only memory (EPROM or flash memory); optical storage devices, including a portable compact disc (CD), a portable digital video disc (DVD), a high definition DVD (HD-DVD™), a BLU-RAY disc; and the like.
A number of program modules may be stored on the storage 506, ROM 516 or RAM 518, including an operating system 522, one or more applications programs 524, program data 526, and other program modules 528. A user may enter commands and information into the hardware device 500 through data entry module 508. Data entry module 508 may include mechanisms such as a keyboard, a touch screen, a pointing device, etc. Other external input devices (not shown) are connected to the hardware device 500 via external data entry interface 530. By way of example and not limitation, external input devices may include a microphone, joystick, game pad, satellite dish, scanner, or the like. In some embodiments, external input devices may include video or audio input devices such as a video camera, a still camera, etc. Data entry module 508 may be configured to receive input from one or more users of device 500 and to deliver such input to processing unit 502 and/or memory 504 via bus 514.
The hardware device 500 may operate in a networked environment using logical connections to one or more remote nodes (not shown) via communication interface 512. The remote node may be another computer, a server, a router, a peer device or other common network node, and typically includes many or all of the elements described above relative to the hardware device 500. The communication interface 512 may interface with a wireless network and/or a wired network. Examples of wireless networks include, for example, a BLUETOOTH network, a wireless personal area network, a wireless 802.11 local area network (LAN), and/or wireless telephony network (e.g., a cellular, PCS, or GSM network). Examples of wired networks include, for example, a LAN, a fiber optic network, a wired personal area network, a telephony network, and/or a wide area network (WAN). Such networking environments are commonplace in intranets, the Internet, offices, enterprise-wide computer networks and the like. In some embodiments, communication interface 512 may include logic configured to support direct memory access (DMA) transfers between memory 504 and other devices.
In a networked environment, program modules depicted relative to the hardware device 500, or portions thereof, may be stored in a remote storage device, such as, for example, on a server. It will be appreciated that other hardware and/or software to establish a communications link between the hardware device 500 and other devices may be used.
It should be understood that the arrangement of hardware device 500 illustrated in
In the description that follows, the subject matter will be described with reference to acts and symbolic representations of operations that are performed by one or more devices, unless indicated otherwise. As such, it will be understood that such acts and operations, which are at times referred to as being computer-executed, include the manipulation by the processing unit of data in a structured form. This manipulation transforms the data or maintains it at locations in the memory system of the computer, which reconfigures or otherwise alters the operation of the device in a manner well understood by those skilled in the art. The data structures where data is maintained are physical locations of the memory that have particular properties defined by the format of the data. However, while the subject matter is being described in the foregoing context, it is not meant to be limiting as those of skill in the art will appreciate that various of the acts and operation described hereinafter may also be implemented in hardware.
For purposes of the present description, the terms “component,” “module,” and “process,” may be used interchangeably to refer to a processing unit that performs a particular function and that may be implemented through computer program code (software), digital or analog circuitry, computer firmware, or any combination thereof.
It should be noted that the various functions disclosed herein may be described using any number of combinations of hardware, firmware, and/or as data and/or instructions embodied in various machine-readable or computer-readable media, in terms of their behavioral, register transfer, logic component, and/or other characteristics. Computer-readable media in which such formatted data and/or instructions may be embodied include, but are not limited to, physical (non-transitory), non-volatile storage media in various forms, such as optical, magnetic or semiconductor storage media.
Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense as opposed to an exclusive or exhaustive sense; that is to say, in a sense of “including, but not limited to.” Words using the singular or plural number also include the plural or singular number respectively. Additionally, the words “herein,” “hereunder,” “above,” “below,” and words of similar import refer to this application as a whole and not to any particular portions of this application. When the word “or” is used in reference to a list of two or more items, that word covers all of the following interpretations of the word: any of the items in the list, all of the items in the list and any combination of the items in the list.
While one or more implementations have been described by way of example and in terms of the specific embodiments, it is to be understood that one or more implementations are not limited to the disclosed embodiments. To the contrary, it is intended to cover various modifications and similar arrangements as would be apparent to those skilled in the art. Therefore, the scope of the appended claims should be accorded the broadest interpretation so as to encompass all such modifications and similar arrangements.
Maxwell, Gregory, Poelstra, Andrew, Willen, Glenn, Sanders, Gregory, Nick, Jonas, Corollo, Matt
Patent | Priority | Assignee | Title |
11348095, | Apr 11 2017 | nChain Licensing AG | Rapid distributed consensus on blockchain |
11403622, | Apr 11 2017 | nChain Licensing AG | Secure re-use of private key for dynamic group of nodes |
11538023, | Apr 11 2017 | nChain Licensing AG | Secure transfer between blockchains |
11669631, | Sep 25 2017 | Bundesdruckerei GmbH | Datacule structure and method for storing data in a tamper-proof manner |
11694198, | Feb 08 2018 | nChain Holdings Ltd | System and method for transferring resources using a blockchain |
11716204, | Aug 28 2018 | Digital data management | |
11876887, | Apr 11 2017 | nChain Licensing AG | Rapid distributed consensus on blockchain |
12058233, | Apr 11 2017 | nChain Licensing AG | Secure re-use of private key for dynamic group of nodes |
12093951, | Apr 22 2019 | UNITED SERVICES AUTOMOBILE ASSOCIATION USAA | Systems and methods for verification and enablement of financial instruments |
ER551, |
Patent | Priority | Assignee | Title |
20120089494, | |||
20120296829, | |||
20160330034, | |||
20160342989, | |||
20160358165, | |||
20170154331, | |||
20170236104, | |||
20170323294, | |||
20180089641, | |||
20180096163, | |||
20180101906, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 23 2018 | Blockstream Corporation | (assignment on the face of the patent) | / | |||
Sep 11 2020 | POELSTRA, ANDREW | Blockstream Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 053789 | /0140 | |
Sep 11 2020 | MAXWELL, GREGORY | Blockstream Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 053789 | /0140 | |
Sep 11 2020 | SANDERS, GREGORY | Blockstream Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 053789 | /0140 | |
Sep 11 2020 | NICK, JONAS | Blockstream Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 053789 | /0140 | |
Sep 13 2020 | WILLEN, GLENN | Blockstream Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 053789 | /0140 | |
Sep 15 2020 | COROLLO, MATT | Blockstream Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 053789 | /0140 |
Date | Maintenance Fee Events |
Mar 23 2018 | BIG: Entity status set to Undiscounted (note the period is included in the code). |
Apr 24 2018 | SMAL: Entity status set to Small. |
Jan 18 2024 | M2551: Payment of Maintenance Fee, 4th Yr, Small Entity. |
Date | Maintenance Schedule |
Oct 13 2023 | 4 years fee payment window open |
Apr 13 2024 | 6 months grace period start (w surcharge) |
Oct 13 2024 | patent expiry (for year 4) |
Oct 13 2026 | 2 years to revive unintentionally abandoned end. (for year 4) |
Oct 13 2027 | 8 years fee payment window open |
Apr 13 2028 | 6 months grace period start (w surcharge) |
Oct 13 2028 | patent expiry (for year 8) |
Oct 13 2030 | 2 years to revive unintentionally abandoned end. (for year 8) |
Oct 13 2031 | 12 years fee payment window open |
Apr 13 2032 | 6 months grace period start (w surcharge) |
Oct 13 2032 | patent expiry (for year 12) |
Oct 13 2034 | 2 years to revive unintentionally abandoned end. (for year 12) |