<oembed><type>rich</type><version>1.0</version><author_name>npub1wtx5qvewc7pd6znlvwktq03mdld05mv3h5dkzfwd3dc30gdmsptsugtuyn</author_name><author_url>https://nostr.ae/npub1wtx5qvewc7pd6znlvwktq03mdld05mv3h5dkzfwd3dc30gdmsptsugtuyn</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2015-10-19&#xA;📝 Original message:After spending some more time on the normalized transaction ID proposal and&#xA;reworking it to be a soft-fork (thanks sipa for helping me figuring out&#xA;how), I&#39;d like to propose the BIP again.&#xA;&#xA;As with the previous version, which was using a hard-fork, the normalized&#xA;transaction ID is computed only considering the non-malleable parts of a&#xA;transaction, i.e., stripping the signatures before computing the hash of&#xA;the transaction. This ensures that if a transaction is modified, either by&#xA;a third party fishing transactions from the network and re-injecting&#xA;modified versions or by one of the signers re-signing it, any transaction&#xA;that builds on top of it still remains valid. Furthermore it allows the use&#xA;of template transactions, unsigned transactions upon which further&#xA;transaction can be built before signing the template transaction and&#xA;locking the contract.&#xA;&#xA;Unlike the previous proposal, this is a softfork proposal that redefines&#xA;OP_NOP4 with an extensible and parameterized version of the signature&#xA;checking opcodes, called OP_CHECKSIGEX. Among other things the parameters&#xA;allow to specify that an output with an OP_CHECKSIGEX is to be referenced&#xA;by the normalized transaction ID that created it, instead of the instance&#xA;transaction ID containing malleable signatures. This BIP uses the&#xA;normalized transaction IDs exclusively while signing or checking&#xA;signatures, they are not used in any network level message as the previous&#xA;version would have done, hence there is no change at network level and old&#xA;clients should be able to exchange transactions as before and blocks still&#xA;reference the transaction instances.&#xA;&#xA;The proposal is implemented (see below), by computing the normalized&#xA;transaction ID when adding them to the UTXO and storing them along with the&#xA;coin state. OP_CHECKSIGEX mostly duplicates OP_CHECKSIG and&#xA;OP_CHECKMULTISIG, but I&#39;m hoping somebody can give me some pointers into&#xA;how to best refactor the common functionality into reusable blocks. And the&#xA;annotating incoming transactions with their normalized inputs is a bit&#xA;cumbersome, maye somebody has some pointers here as well?&#xA;&#xA;BIP Pull request: https://github.com/bitcoin/bips/pull/224&#xA;Implementation: https://github.com/cdecker/bitcoin/commits/normtx&#xA;&#xA;I think in the discussion of my previous proposal, most of you welcomed the&#xA;introduction of normalized transaction IDs, were it not for the hardfork. I&#xA;hope this proposal adresses the previous concerns and that we can move&#xA;forward in adding the normalized transaction IDs to the bitcoin protocol.&#xA;That being said, I&#39;m always open to suggestions :-)&#xA;&#xA;Regards,&#xA;Christian&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20151019/2ed7395d/attachment-0001.html&gt;</html></oembed>