IP Library › Granted Patent US 12,493,877
Granted Patent B2
US 12,493,877 · App. 18/410,830 · Granted Dec 9, 2025

Constraints on outputs of an unlocking transaction in a blockchain

Inventors: Ying Chan (Cambridge, GB); Dean Kramer (London, GB)
Assignee: NCHAIN LICENSING AG
G06Q20/401G06F16/2365G06F16/2379G06Q10/10G06Q20/02G06Q20/065G06Q20/36H04L9/0643G06Q2220/00H04L9/50
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,493,877
App. No.
18/410,830
Granted
Dec 9, 2025
Kind
B2
Abstract

Trustless deterministic state machines can be implemented using a blockchain infrastructure and state machines can run concurrently over more than one blockchain transaction. Disclosed herein are processes, apparatuses, and articles of manufacture to create, at a node, a first transaction that includes 1) a first output having a first spendable value and a first locking script and 2) a second output having a second spendable value and a second locking script. Included, in the first locking script, is a first set of constraints on a first selected transaction output. Included, in the second locking script, a second set of constraints on a second selected transaction output. Furthermore, either the first set of constraints or the second set of constraints is configured to impose a constraint on a locking script of a spending transaction having as a spending transaction output the first selected transaction output or the second selected transaction output.

Claims (75)

1 . A computer-implemented method, comprising:

creating, at a node in a blockchain network, a first blockchain transaction, wherein the first blockchain transaction includes:

a first output having a first spendable value and a first locking script; and

a second output having a second spendable value and a second locking script;

including, in the first locking script, a first set of constraints on a first selected transaction output, wherein:

the first set of constraints are to be met by a first unlocking script if the first selected transaction output is to be valid for spending the first spendable value; and

including, in the second locking script, a second set of constraints on a second selected transaction output, wherein the second set of constraints are to be met by a second unlocking script if the second selected transaction output is to be valid for spending the second spendable value, wherein:

the first set of constraints are to be met by execution, by a first verifying node of the blockchain network, of a first spending blockchain transaction having a first spending unlocking script; and

the second set of constraints are to be met by execution, by a second verifying node of the blockchain network, of a second spending blockchain transaction, distinct from the first spending blockchain transaction, having a second spending unlocking script;

at the first verifying node:

processing the first spending unlocking script with the first locking script to produce a verification result indicating whether the first spending transaction output satisfies the first set of constraints;

validating the first spending blockchain transaction based at least in part on the verification result; and

responsive to validating the first spending blockchain transaction, propagating the first spending blockchain transaction to other nodes in the blockchain network; and

at the second verifying node:

processing the second spending unlocking script with the second locking script to produce a second verification result indicating whether the second spending transaction output satisfies the second set of constraints;

validating the second spending blockchain transaction based at least in part on the second verification result; and

responsive to validating the second spending blockchain transaction, propagating the second spending blockchain transaction to other nodes in the blockchain network.

2 . The method according to claim 1 , wherein:

the first unlocking script comprises fields of the first blockchain transaction, fields of the first spending blockchain transaction, and fields of the second spending blockchain transaction; and

the first locking script comprises a first comparison of extracted fields of the first blockchain transaction and a second comparison of extracted fields of the first spending blockchain transaction.

3 . The method according to claim 1 , wherein the first set of constraints is distinct from the second set of constraints and distinct from constraints on a transaction input of the first blockchain transaction.

4 . The method according to claim 1 , wherein the first set of constraints and the second set of constraints each comprise a common set of constraints.

5 . The method according to claim 1 , wherein a constraint on a locking script of the of the first spending blockchain transaction requires that, for the first spending blockchain transaction to be valid, the locking script of the first spending blockchain transaction is required to include a reference to at least one field of the spending transaction.

6 . The method according to claim 1 , wherein a constraint on the locking script requires that, for the spending transaction to be valid, the locking script of the spending transaction is required to include a copy of a portion of the first locking script and/or a copy of a portion of the second locking script.

7 . The method of claim 1 , wherein the first set of constraints and/or the second set of constraints comprises a hash of a portion of the first locking script and/or a hash of a portion of the second locking script, and/or a constraint on a size of a portion of the first locking script and/or a size of a portion of the second locking script.

8 . The method of claim 1 , wherein the first set of constraints and/or the second set of constraints comprise an optional reference to input data.

9 . The method of claim 1 , wherein each of a plurality of outputs of the first blockchain transaction is constrained by a different constraint applied to outputs of the plurality of outputs.

10 . The method according to claim 1 , wherein the first verifying node and the second verifying node operate on the same computing device.

11 . A system, comprising:

at least one processor; and

at least one memory including executable instructions that, as a result of execution by the at least one processor, causes the system to perform a method, the method comprising:

creating a first blockchain transaction, wherein the first blockchain transaction includes:

a first output having a first spendable value and a first locking script; and

a second output having a second spendable value and a second locking script;

including, in the first locking script, a first set of constraints on a first selected transaction output, wherein:

the first set of constraints are to be met by a first unlocking script if the first selected transaction output is to be valid for spending the first spendable value; and

including, in the second locking script, a second set of constraints on a second selected transaction output, wherein the second set of constraints are to be met by a second unlocking script if the second selected transaction output is to be valid for spending the second spendable value, wherein:

the first set of constraints are to be met by execution, by a first verifying node of a blockchain network, of a first spending blockchain transaction having a first spending unlocking script; and

the second set of constraints are to be met by execution, by a second verifying node of the blockchain network, of a second spending blockchain transaction, distinct from the first spending blockchain transaction, having a second spending unlocking script;

at the first verifying node:

processing the first spending unlocking script with the first locking script to produce a verification result indicating whether the first spending transaction output satisfies the first set of constraints;

validating the first spending blockchain transaction based at least in part on the verification result; and

responsive to validating the first spending blockchain transaction, propagating the first spending blockchain transaction to other nodes in the blockchain network; and

at the second verifying node:

processing the second spending unlocking script with the second locking script to produce a second verification result indicating whether the second spending transaction output satisfies the second set of constraints;

validating the second spending blockchain transaction based at least in part on the second verification result; and

responsive to validating the second spending blockchain transaction, propagating the second spending blockchain transaction to other nodes in the blockchain network.

12 . The system of claim 11 , wherein:

the first unlocking script comprises fields of the first blockchain transaction, fields of the first spending blockchain transaction, and fields of the second spending blockchain transaction; and

the first locking script comprises a first comparison of extracted fields of the first blockchain transaction and a second comparison of extracted fields of the first spending blockchain transaction.

13 . The system of claim 11 ,

wherein a constraint on a locking script of the of the first spending blockchain transaction requires that, for the first spending blockchain transaction to be valid, the locking script of the first spending blockchain transaction is required to include a reference to at least one field of the spending transaction.

14 . The system of claim 11 , wherein a constraint on the locking script requires that, for the spending transaction to be valid, the locking script of the spending transaction is required to include a copy of a portion of the first locking script and/or a copy of a portion of the second locking script.

15 . 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 a method, the method comprising:

creating a first blockchain transaction, wherein the first blockchain transaction includes:

a first output having a first spendable value and a first locking script; and

a second output having a second spendable value and a second locking script;

including, in the first locking script, a first set of constraints on a first selected transaction output, wherein:

the first set of constraints are to be met by a first unlocking script if the first selected transaction output is to be valid for spending the first spendable value; and

including, in the second locking script, a second set of constraints on a second selected transaction output, wherein the second set of constraints are to be met by a second unlocking script if the second selected transaction output is to be valid for spending the second spendable value, wherein:

the first set of constraints are to be met by execution, by a first verifying node of a blockchain network, of a first spending blockchain transaction having a first spending unlocking script; and

the second set of constraints are to be met by execution, by a second verifying node of the blockchain network, of a second spending blockchain transaction, distinct from the first spending blockchain transaction, having a second spending unlocking script;

at the first verifying node:

processing the first spending unlocking script with the first locking script to produce a verification result indicating whether the first spending transaction output satisfies the first set of constraints;

validating the first spending blockchain transaction based at least in part on the verification result; and

responsive to validating the first spending blockchain transaction, propagating the first spending blockchain transaction to other nodes in the blockchain network; and

at the second verifying node:

processing the second spending unlocking script with the second locking script to produce a second verification result indicating whether the second spending transaction output satisfies the second set of constraints;

validating the second spending blockchain transaction based at least in part on the second verification result; and

responsive to validating the second spending blockchain transaction, propagating the second spending blockchain transaction to other nodes in the blockchain network.

16 . The non-transitory computer-readable storage medium of claim 15 , wherein:

the first unlocking script comprises fields of the first blockchain transaction, fields of the first spending blockchain transaction, and fields of the second spending blockchain transaction; and

the first locking script comprises a first comparison of extracted fields of the first blockchain transaction and a second comparison of extracted fields of the first spending blockchain transaction.

17 . The non-transitory computer-readable storage medium of claim 15 , wherein a constraint on a locking script of the of the first spending blockchain transaction requires that, for the first spending blockchain transaction to be valid, the locking script of the first spending blockchain transaction is required to include a reference to at least one field of the spending transaction.

18 . The non-transitory computer-readable storage medium of claim 15 , wherein a constraint on the locking script requires that, for the spending transaction to be valid, the locking script of the spending transaction is required to include a copy of a portion of the first locking script and/or a copy of a portion of the second locking script.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2024
From: KRAMER, DEAN
To: NCHAIN HOLDINGS LTD
Reel/Frame 066110/0456 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2024
From: CHAN, YING; KRAMER, DEAN
To: NCHAIN HOLDINGS LTD
Reel/Frame 066110/0589 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 12, 2024
From: CHAN, YING; KRAMER, DEAN
To: NCHAIN HOLDINGS LTD
Reel/Frame 066110/0677 →
CHANGE OF NAME Recorded Jan 12, 2024
From: NCHAIN HOLDINGS LTD
To: NCHAIN LICENSING AG
Reel/Frame 066294/0111 →
Priority Claims (3)
GB 1713790 · Aug 29, 2017 · national
GB 1713794 · Aug 29, 2017 · national
GB 1713805 · Aug 29, 2017 · national
Continuity (2)
Continuation 16642842
Related Publication 20240346498A1 · Oct 17, 2024
References Cited (59)
US 10833843B1 · Vijayvergia et al. · 2020 [cited by applicant]
US 11196566B2 · Middleton et al. · 2021 [cited by applicant]
US 20160283939A1 · Finlow-Bates · 2016 [cited by examiner]
US 20160292672A1 · Fay et al. · 2016 [cited by applicant]
US 20160292680A1 · Wilson, Jr. · 2016 [cited by examiner]
US 20160330034A1 · Back et al. · 2016 [cited by applicant]
US 20170085545A1 · Lohe et al. · 2017 [cited by applicant]
US 20170091750A1 · Maim · 2017 [cited by examiner]
US 20170109657A1 · Marcu et al. · 2017 [cited by applicant]
US 20170132621A1 · Miller et al. · 2017 [cited by applicant]
US 20170187535A1 · Middleton · 2017 [cited by examiner]
US 20170228731A1 · Sheng · 2017 [cited by examiner]
US 20170287090A1 · Hunn · 2017 [cited by examiner]
US 20170300872A1 · Brown et al. · 2017 [cited by applicant]
US 20170301047A1 · Brown et al. · 2017 [cited by applicant]
US 20170345011A1 · Salami et al. · 2017 [cited by applicant]
US 20180005186A1 · Hunn · 2018 [cited by applicant]
US 20180096360A1 · Christidis · 2018 [cited by examiner]
US 20180123779A1 · Zhang · 2018 [cited by applicant]
US 20180165758A1 · Saxena et al. · 2018 [cited by applicant]
US 20180205555A1 · Watanabe et al. · 2018 [cited by applicant]
US 20180241546A1 · Leng et al. · 2018 [cited by applicant]
US 20180253702A1 · Dowding · 2018 [cited by examiner]
US 20180260909A1 · Li · 2018 [cited by examiner]
US 20180300382A1 · Madisetti et al. · 2018 [cited by applicant]
US 20190019183A1 · Karame et al. · 2019 [cited by applicant]
US 20190042989A1 · Scott · 2019 [cited by applicant]
US 20200327498A1 · Weber et al. · 2020 [cited by applicant]
US 20210211468A1 · Griffin · 2021 [cited by examiner]
CN 105893042A · 2016 [cited by applicant]
CN 106940854A · 2017 [cited by applicant]
CN 107203368A · 2017 [cited by applicant]
RU 2015146675A · 2017 [cited by applicant]
WO 2017027484A1 · 2017 [cited by applicant]
WO 2017122187A2 · 2017 [cited by applicant]
WO 2017173399A1 · 2017 [cited by applicant]
K. Christidis and M. Devetsikiotis, “Blockchains and Smart Contracts for the Internet of Things,” in IEEE Access, vol. 4, pp. 2292-2303, 2016, doi: 10.1109/ACCESS.2016.2566339. (Year: 2016). [cited by examiner]
Anonymous, “Smart Contracts/EVM FAQ Counterparty,” retrieved from https://web.archive.org/web/20170719092538/https://counterparty.io/docs/faq-smartcontracts/, Jul. 19, 2017, 7 pages. [cited by applicant]
Antonopoulos et al., “Bitcoin Book,” GitHub, retrieved from https://github.com/bitcoinbook/bitcoinbook, Jun. 8, 2017, 4 pages. [cited by applicant]
Antonopoulos, “Mastering Bitcoin—Unlocking Digital Cryptocurrencies,” O'Reilly Media, Inc., Dec. 20, 2014, 282 pages. [cited by applicant]
BitFury Group, “Smart Contracts on Bitcoin Blockchain,” BitFury Group Limited, Aug. 13, 2015 (updated Sep. 4, 2015), http://bitfury.com/content/5-white-papers-research/contracts-1.1.1.pdf, 20 pages. [cited by applicant]
Christidis, K. et al., “Blockchains and Smart Contracts for the Internet of Things”, IEEE Access, vol. 4. 2016 pp. 2292-2303. [cited by applicant]
Clack et al., “Smart Contract Templates: Essential Requirements and Design Options”, 2016, 15 pages. [cited by applicant]
Delgado-Segura et al., “Bitcoin Private Key Locked Transactions,” Cryptology ePrint Archive: Report 2016/1184, Dec. 30, 2016, 8 pages. [cited by applicant]
International Search Report and Written Opinion mailed Nov. 15, 2018, Patent Application No. PCT/IB2018/056431, 12 pages. [cited by applicant]
International Search Report and Written Opinion mailed Nov. 15, 2018, Patent Application No. PCT/IB2018/056432, 12 pages. [cited by applicant]
International Search Report and Written Opinion mailed Oct. 26, 2018, Patent Application No. PCT/IB2018/056430, 13 pages. [cited by applicant]
Möser et al., “Bitcoin Covenants,” Medical Image Computing and Computer-Assisted Intervention, Aug. 31, 2016, 16 pages. [cited by applicant]
Nakamoto, “Bitcoin: A Peer-to-Peer Electronic Cash System,” Bitcoin, Oct. 31, 2008, https://bitcoin.org/bitcoin.pdf, 9 pages. [cited by applicant]
Satoshi et al., “Connection Limits,” Bitcoin Forum, Aug. 9, 2010, https://bitcointalk.org/index.php?topic=741.0; prev_next=prev, 2 pages. [cited by applicant]
Scoca et al., “Smart Contract Negotation in Cloud Computing” IEEE 10th International Conderence on Cloud Computing (CLOUD), 2017, pp. 592-599. [cited by applicant]
UK Commercial Search Report mailed Jan. 19, 2018, Patent Application No. GB1713790.2, 7 pages. [cited by applicant]
UK Commercial Search Report mailed Jan. 19, 2018, Patent Application No. GB1713794.4, 7 pages. [cited by applicant]
UK Commercial Search Report mailed Jan. 19, 2018, Patent Application No. GB1713805.8, 7 pages. [cited by applicant]
UK IPO Search Report mailed Feb. 28, 2018, Patent Application No. GB1713794.4, 8 pages. [cited by applicant]
UK IPO Search Report mailed Jan. 23, 2018, Patent Application No. GB1713805.8, 6 pages. [cited by applicant]
Wu et al., “A Cloudlet-based Multi-lateral Resource Exchange Framework for Mobile Users,” IEEE Conference on Computer Communications (INFOCOM), Apr. 26, 2015, 9 pages. [cited by applicant]
Japan Patent Office, “Notice of Reasons for Rejection”, in Application No. 2023-045174, Mar. 26, 2024, 4 pages. [cited by applicant]
Tateishi et al., “Blockchain Application Development Practices and Future Challenges” Sonoward Engineering Symposium 2017, Information Processing Society of Japan, 22 pages. [cited by applicant]