<a class="mention" href="/@joe">@joe</a><a class="mention" href="/@musiq">@musiq</a> I don't think that's correct. The only trace of tx1 inside of tx2 is tx1's txid.
Here is tx2:
inputs: [
input {
input_output_point {
tx1_txid,
tx1_output_index
}
input_unlock_script [
push reduced tx2 // tx1 unlock "script" is part of tx2 and contains reduced version of tx2. tx1 lock script enforces constraints on this (tx2) transaction by examining the reduced tx2
]
}
]
outputs: [
output {
unlock script [
verify_sig_for_tx3 // tx2 lock script is part of tx2 and contains logic to verify validity of tx3 meta-evaluation
]
}
]
The only blowup I see is if you want to spend multiple outputs using this trick in one transaction, each unlock script could contain n-1 copies of the reduced tx. I think this can be mitigated with the correct choice of SIGHASH_NONE/ONE/ALL.
<a class="mention" href="/@joe">@joe</a><a class="mention" href="/@musiq">@musiq</a> I don't think that's correct. The only trace of tx1 inside of tx2 is tx1's txid.
Here is tx2:
inputs: [
input {
input_output_point {
tx1_txid,
tx1_output_index
}
input_unlock_script [
push reduced tx2 // tx1 unlock "script" is part of tx2 and contains reduced version of tx2. tx1 lock script enforces constraints on this (tx2) transaction by examining the reduced tx2
]
}
]
outputs: [
output {
unlock script [
verify_sig_for_tx3 // tx2 lock script is part of tx2 and contains logic to verify validity of tx3 meta-evaluation
]
}
]
The only blowup I see is if you want to spend multiple outputs using this trick in one transaction, each unlock script could contain n-1 copies of the reduced tx. I think this can be mitigated with the correct choice of SIGHASH_NONE/ONE/ALL.