A computer-implemented method performed by a node of a blockchain network, wherein copies of a blockchain are maintained across at least some of the nodes of the blockchain network, the blockchain comprising a chain of blocks each comprising one or more transactions, each transaction comprising one or more outputs, and each output comprising a locking script formulated in a first language, wherein the first language is not Turing complete and is a stack-based language for placing values onto a stack and reading values from the stack; wherein the method comprises: accessing the locking script from at least a first output of a first of said transactions (Tx i), the locking script of the first output specifying, in the first language, one or more conditions for unlocking said first output; and receiving a second transaction ( Tx j) not yet recorded on the blockchain, wherein the second transaction comprises an input comprising an unlocking script formulated in the first language; the method further comprises: extracting, from the first transaction, a portion of code formulated in a second language other than the first language, wherein the second language is Turing complete and is not stack-based; running the extracted portion of code in the second language, wherein as a result thereof the code generates at least one first value; writing the first value to the stack, the stack being readable by the locking script in the first language; and running, in the first language, the locking script from the first output of the first transaction together with the unlocking script from the second transaction, thereby evaluating the one or more conditions, the method comprising validating the second transaction on condition of said one or more conditions being met; wherein the unlocking script is configured to read the first value from the stack; wherein the second value is included in the second transaction (Tx j), the method comprising extracting the second value from the second transaction; and wherein the unlocking script is configured to compare the first value as read from the stack with the second value as extracted from the second transaction, the one or more conditions comprising a condition that the first value matches the second value. accessing the locking script from at least a first output of a first of said transactions (Tx i), the locking script of the first output specifying, in the first language, one or more conditions for unlocking said first output; and receiving a second transaction ( Tx j) not yet recorded on the blockchain, wherein the second transaction comprises an input comprising an unlocking script formulated in the first language; the method further comprises: extracting, from the first transaction, a portion of code formulated in a second language other than the first language, wherein the second language is Turing complete and is not stack-based; running the extracted portion of code in the second language, wherein as a result thereof the code generates at least one first value; writing the first value to the stack, the stack being readable by the locking script in the first language; and running, in the first language, the locking script from the first output of the first transaction together with the unlocking script from the second transaction, thereby evaluating the one or more conditions, the method comprising validating the second transaction on condition of said one or more conditions being met; wherein the unlocking script is configured to read the first value from the stack; wherein the second value is included in the second transaction (Tx j), the method comprising extracting the second value from the second transaction; and wherein the unlocking script is configured to compare the first value as read from the stack with the second value as extracted from the second transaction, the one or more conditions comprising a condition that the first value matches the second value. extracting, from the first transaction, a portion of code formulated in a second language other than the first language, wherein the second language is Turing complete and is not stack-based; running the extracted portion of code in the second language, wherein as a result thereof the code generates at least one first value; writing the first value to the stack, the stack being readable by the locking script in the first language; and running, in the first language, the locking script from the first output of the first transaction together with the unlocking script from the second transaction, thereby evaluating the one or more conditions, the method comprising validating the second transaction on condition of said one or more conditions being met; wherein the unlocking script is configured to read the first value from the stack; wherein the second value is included in the second transaction (Tx j), the method comprising extracting the second value from the second transaction; and wherein the unlocking script is configured to compare the first value as read from the stack with the second value as extracted from the second transaction, the one or more conditions comprising a condition that the first value matches the second value.