<oembed><type>rich</type><version>1.0</version><author_name>npub1ssutaataqhl7xxp4lw6jutuhfuq5x48cf0xsxpgsxdkxkf9rl9wqnk53fg</author_name><author_url>https://nostr.ae/npub1ssutaataqhl7xxp4lw6jutuhfuq5x48cf0xsxpgsxdkxkf9rl9wqnk53fg</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2014-02-12&#xA;📝 Original message:Instead of trying to remove the possibility of transaction&#xA;malleability, would it make sense to define a new, &#34;canonical&#xA;transaction hash/ID&#34; (cTxID), which would be a hash of the part of the&#xA;transaction data which we know is not malleable, and have clients use&#xA;this cTxID internally, thus making the traditional transaction hash&#xA;irrelevant for a client to function correctly?&#xA;&#xA;We already have a non-malleable transaction hash: the hash that is&#xA;signed, ie. the transaction with each scriptSig replaced by the&#xA;scriptPubKey it redeems. This could be the cTxID.&#xA;&#xA;Or is this simply a too fundamental change to the way bitcoin-qt (and&#xA;all other clients) work in order to be feasible?&#xA;&#xA;As far as I can see, it completely solves the issue of not having a&#xA;canonical ID for a transaction, but it also increases the&#xA;computational requirements for a node. For one, as far as I can see,&#xA;it requires the node to index all transactions, because in order to&#xA;calculate a cTxID, it would be necessary to fetch all transactions&#xA;referred to by the transaction in question, in order to pull in the&#xA;scriptPubKeys that are redeemed.&#xA;&#xA;&#xA;On Mon, Feb 10, 2014 at 4:00 AM, Peter Todd &lt;pete at petertodd.org&gt; wrote:&#xA;&gt; On Mon, Feb 10, 2014 at 12:33:02AM +0100, Pieter Wuille wrote:&#xA;&gt;&gt; Hello all,&#xA;&gt;&gt;&#xA;&gt;&gt; it was something I planned to do since a long time, but with the&#xA;&gt;&gt; recent related issues popping up, I finally got around to writing a&#xA;&gt;&gt; BIP about how we can get rid of transaction malleability over time.&#xA;&gt;&gt;&#xA;&gt;&gt; The proposed document is here: https://gist.github.com/sipa/8907691&#xA;&gt;&gt;&#xA;&gt;&gt; I expect most rules to not be controversial. Maybe rules 1 and 3, as&#xA;&gt;&gt; they require modifications to wallet software (Bitcoin Core 0.9 and&#xA;&gt;&gt; BitcoinJ already implement it, though) and potentially invalidate some&#xA;&gt;&gt; script functionality. However, these new rules remain optional and&#xA;&gt;&gt; controlled by an nVersion increase.&#xA;&gt;&gt;&#xA;&gt;&gt; Comments please!&#xA;&gt;&#xA;&gt; You should probably add making CHECKMULTISIG require the dummy value to&#xA;&gt; be exactly equal to OP_FALSE; verifying that in the transaction itself is&#xA;&gt; laborious. A more subtle example is we may want both CHECKSIG and&#xA;&gt; CHECKMULTISIG to fail the transaction if the signature is invalid but&#xA;&gt; not exactly equal to OP_FALSE; some transaction forms are significantly&#xA;&gt; more compact if you can have failed signatures, but that&#39;s a source of&#xA;&gt; malleability. (are there counter examples people can think of?)&#xA;&gt;&#xA;&gt;&#xA;&gt; But as I said on IRC, I&#39;m a bit hesitant to bake in assumptions about&#xA;&gt; malleability when we have no solid idea if ECC signatures are or are not&#xA;&gt; malleable on a fundemental level; if &#34;whack-a-mole&#34; anti-malleability is&#xA;&gt; all we&#39;ve got it could be ugly if a break is found. Similarly, we may&#xA;&gt; find we missed something, or some needed change makes the malleability&#xA;&gt; rules difficult to work with for some new script type that is required.&#xA;&gt;&#xA;&gt; I&#39;d rather see a new CHECKSIG mode for the case where malleability&#xA;&gt; absolutely must be eliminated - certain multi-party protocols - and fix&#xA;&gt; wallet software instead. (the malleability problems people see are&#xA;&gt; closely related to inability to handle double-spends and reorgs) But I&#xA;&gt; can easily see that being an impossible goal engineering wise...&#xA;&gt;&#xA;&gt; --&#xA;&gt; &#39;peter&#39;[:-1]@petertodd.org&#xA;&gt; 0000000000000001465bc2730ffed7493d166d18d288f6cf15e8cdb5d4a3c7b1&#xA;&gt;&#xA;&gt; ------------------------------------------------------------------------------&#xA;&gt; Managing the Performance of Cloud-Based Applications&#xA;&gt; Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.&#xA;&gt; Read the Whitepaper.&#xA;&gt; http://pubads.g.doubleclick.net/gampad/clk?id=121051231&amp;iu=/4140/ostg.clktrk&#xA;&gt; _______________________________________________&#xA;&gt; Bitcoin-development mailing list&#xA;&gt; Bitcoin-development at lists.sourceforge.net&#xA;&gt; https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#xA;&gt;</html></oembed>