Forcing the injection of a previous transaction's bytecode into a blockchain transaction

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current blockchain technologies face limitations in encoding complex conditions for digital asset transfers due to restrictive scripting languages that lack support for loops and recursion, leading to security vulnerabilities and limited functionality, particularly in smart contracts.

Innovation Solution

The implementation of self-referencing and self-replicating blockchain transaction locking scripts that allow access to undetermined data from determined or undetermined sources, enabling secure and flexible smart contracts through parameterized constraints and state machines, without requiring verification of secret access.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If restrictive scripting languages are used in blockchain transactions, then security is improved, but functionality and complexity of conditions are limited

Engineering Contradiction:
ImprovesecurityVSAvoidfunctionality
Core Design Contradiction:
ReliabilityVSAdaptability or versatility

Solution Approach 1:

The patent segments the scripting functionality into two distinct parts: locking scripts that define conditions and unlocking scripts that provide proofs. This segmentation allows each script type to have specialized, simplified validation logic (improving security) while the combination enables complex conditional logic (improving functionality). The locking script contains the conditions and the unlocking script contains the data needed to satisfy those conditions, creating a secure yet flexible system.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces transaction data as an intermediary between the locking and unlocking scripts. This intermediary carries the necessary information (such as previous transaction data, asset identifiers, and condition parameters) that enables complex functionality without requiring the scripting language itself to be complex. The intermediary allows the system to achieve versatility through data structure design rather than through complex scripting capabilities.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Adaptability or versatility

If complex conditions are encoded in blockchain transactions, then functionality is improved, but security vulnerabilities increase

Engineering Contradiction:
ImprovefunctionalityVSAvoidsecurity
Core Design Contradiction:
Adaptability or versatilityVSReliability

Solution Approach 1:

The patent extracts the complex conditional logic from the validation process and places it into the locking script, which is executed once during transaction creation. The unlocking script then only needs to provide simple proofs that the conditions are met, rather than evaluating complex conditions itself. This extraction separates the complexity of condition definition from the simplicity of condition verification, maintaining security while enabling functionality.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent performs preliminary action by having the locking script pre-define all validation conditions before the transaction is broadcast to the network. These conditions are embedded in the transaction data and are immutable once the transaction is confirmed. This preliminary definition of conditions eliminates the need for complex runtime evaluation, as validators only need to check whether the provided unlocking data satisfies the pre-defined conditions, thereby maintaining security while supporting complex functionality.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If self-referencing scripts are implemented, then adaptability is improved, but device complexity increases

Engineering Contradiction:
ImproveadaptabilityVSAvoidscript complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent implements nesting by allowing unlocking scripts to reference and incorporate data from previous transactions, which themselves contain locking scripts and other transaction data. This nested structure enables self-referencing functionality where transactions can reference their own or other transactions' data without requiring complex external state management. The nesting approach achieves adaptability through hierarchical data organization rather than through complex script logic.

Inventive Principle:
Principle #7Nested doll (Nesting)

Solution Approach 2:

The patent uses copying by allowing scripts to reference immutable copies of previous transaction data through cryptographic hashes and transaction identifiers. Instead of duplicating complex logic, the system copies and references essential data elements (such as previous output data, asset identifiers, and condition parameters) that are already validated and stored in the blockchain. This copying mechanism enables self-referencing functionality while keeping script complexity low, as the referenced data is already in a verified and standardized format.

Inventive Principle:
Principle #26Copying

Data Source

PatentEP3631723B1Forcing the injection of a previous transaction's bytecode into a blockchain transaction
Publication Date: 2025.07.09 NCHAIN LICENSING AG
  • EP3631723B1 patent drawingFigure 1
  • EP3631723B1 patent drawingFigure 2
  • EP3631723B1 patent drawingFigure 3

AI summary

The invention relates to distributed ledge technologies such as consensus-based blockchains. Methods for causing an injection of a serialized previous transaction into a locking script are described. The invention is implemented using a blockchain network, which may be, for example, a Bitcoin blockchain. A first transaction to validate is received at a node in a blockchain network, with the first transaction including a first script. The first script, as a result of being executed, causes the node to at least obtain a first set of field values corresponding to the first transaction and obtain a second set of field values corresponding to a particular transaction. A second transaction is obtained, with the second transaction having been validated and including a second script. The second script, as a result of being executed, causes the node to at least obtain the first set of field values and the second set of field values of the particular transaction supplied as a result of execution of the first script, extract a transaction identifier from the first set of field values, and determine, based at least in part on the second set of field values, that the particular transaction corresponds to the transaction identifier. The first transaction is validated by executing the first script and the second script.