<oembed><type>rich</type><version>1.0</version><author_name>npub1xvnnyhz8e4eklaakjc9xgm5w8pzkuckt923uacz2cftqdqx23g7q3c5rqg</author_name><author_url>https://nostr.ae/npub1xvnnyhz8e4eklaakjc9xgm5w8pzkuckt923uacz2cftqdqx23g7q3c5rqg</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2014-02-12&#xA;📝 Original message:While that solution does work for many use cases, it does make it much&#xA;harder to do anything needing chained transactions.  Granted, this is the&#xA;short term solution for current implementations, but having a transaction&#xA;identifier that does not change does open up other use cases.&#xA;&#xA;For example, Alice wants to send coins to a multisignature address with&#xA;Bob, such that both parties are required to spend the coins.  Alice also&#xA;requires for Bob to send coins to this address as well before they will&#xA;proceed.  Alice cannot guarantee that Bob will cooperate (and vice versa),&#xA;so before she broadcasts the transaction to send to A+B, she sends Bob a&#xA;transaction that spends her incoming transaction back to herself, but has a&#xA;time lock of far into the future.  Bob signs this, returns it to Alice, and&#xA;she broadcasts her funding transaction.  At this point, Bob disappears,&#xA;loses his key, or just decides to spite Alice and her coins are locked.&#xA; Since she has a refund transaction, she can broadcast it in a month and&#xA;get her coins back.  Except her funding transaction has been modified such&#xA;that the txhash is different, so her refund is now invalid.  She would need&#xA;Bob to issue a new refund as soon as her funding transaction hits the&#xA;blockchain if it is modified, which defeats the point of the trustless&#xA;refund transaction.&#xA;&#xA;Longer term it would be more ideal have a canonical identifier for the&#xA;transaction before it even gets to the chain to support these use cases,&#xA;even if wallets are able to properly identify the status of it&#39;s&#xA;transactions.  Obviously this is a difficult problem to solve and cannot be&#xA;implemented without breaking changes, but it would be a nice goal to be&#xA;able to completely remove malleability.  There are other important use&#xA;cases where having a unique identifier just for internal accounting is&#xA;insufficient.&#xA;&#xA;-Allen&#xA;&#xA;&#xA;On Wed, Feb 12, 2014 at 10:22 AM, Alan Reiner &lt;etotheipi at gmail.com&gt; wrote:&#xA;&#xA;&gt; I think the solution is simply to encourage Bitcoin software developers to&#xA;&gt; design their software to use this static ID, instead of the full&#xA;&gt; transaction hash.    If MtGox had talked those IDs instead of the TX ID,&#xA;&gt; their software would&#39;ve correctly identified the mutated transactions and&#xA;&gt; there would be  no problem.&#xA;&gt;&#xA;&gt; Armory is slightly different, since it doesn&#39;t deal with the same stuff as&#xA;&gt; exchanges do.  But it didn&#39;t have any problems with malleability because it&#xA;&gt; doesn&#39;t track anything by ID, it only pays attention to whether inputs and&#xA;&gt; outputs are related to your wallets.  It&#39;s not necessarily hard to do it&#xA;&gt; this way, people just have to be aware of it.&#xA;&gt;&#xA;&gt; -Alan&#xA;&gt;&#xA;&gt; Sent from my overpriced smartphone&#xA;&gt; On Feb 12, 2014 10:15 AM, &#34;Rune Kjær Svendsen&#34; &lt;runesvend at gmail.com&gt;&#xA;&gt; wrote:&#xA;&gt;&#xA;&gt;&gt; Instead of trying to remove the possibility of transaction&#xA;&gt;&gt; malleability, would it make sense to define a new, &#34;canonical&#xA;&gt;&gt; transaction hash/ID&#34; (cTxID), which would be a hash of the part of the&#xA;&gt;&gt; transaction data which we know is not malleable, and have clients use&#xA;&gt;&gt; this cTxID internally, thus making the traditional transaction hash&#xA;&gt;&gt; irrelevant for a client to function correctly?&#xA;&gt;&gt;&#xA;&gt;&gt; We already have a non-malleable transaction hash: the hash that is&#xA;&gt;&gt; signed, ie. the transaction with each scriptSig replaced by the&#xA;&gt;&gt; scriptPubKey it redeems. This could be the cTxID.&#xA;&gt;&gt;&#xA;&gt;&gt; Or is this simply a too fundamental change to the way bitcoin-qt (and&#xA;&gt;&gt; all other clients) work in order to be feasible?&#xA;&gt;&gt;&#xA;&gt;&gt; As far as I can see, it completely solves the issue of not having a&#xA;&gt;&gt; canonical ID for a transaction, but it also increases the&#xA;&gt;&gt; computational requirements for a node. For one, as far as I can see,&#xA;&gt;&gt; it requires the node to index all transactions, because in order to&#xA;&gt;&gt; calculate a cTxID, it would be necessary to fetch all transactions&#xA;&gt;&gt; referred to by the transaction in question, in order to pull in the&#xA;&gt;&gt; scriptPubKeys that are redeemed.&#xA;&gt;&gt;&#xA;&gt;&gt;&#xA;&gt;&gt; On Mon, Feb 10, 2014 at 4:00 AM, Peter Todd &lt;pete at petertodd.org&gt; wrote:&#xA;&gt;&gt; &gt; On Mon, Feb 10, 2014 at 12:33:02AM +0100, Pieter Wuille wrote:&#xA;&gt;&gt; &gt;&gt; Hello all,&#xA;&gt;&gt; &gt;&gt;&#xA;&gt;&gt; &gt;&gt; it was something I planned to do since a long time, but with the&#xA;&gt;&gt; &gt;&gt; recent related issues popping up, I finally got around to writing a&#xA;&gt;&gt; &gt;&gt; BIP about how we can get rid of transaction malleability over time.&#xA;&gt;&gt; &gt;&gt;&#xA;&gt;&gt; &gt;&gt; The proposed document is here: https://gist.github.com/sipa/8907691&#xA;&gt;&gt; &gt;&gt;&#xA;&gt;&gt; &gt;&gt; I expect most rules to not be controversial. Maybe rules 1 and 3, as&#xA;&gt;&gt; &gt;&gt; they require modifications to wallet software (Bitcoin Core 0.9 and&#xA;&gt;&gt; &gt;&gt; BitcoinJ already implement it, though) and potentially invalidate some&#xA;&gt;&gt; &gt;&gt; script functionality. However, these new rules remain optional and&#xA;&gt;&gt; &gt;&gt; controlled by an nVersion increase.&#xA;&gt;&gt; &gt;&gt;&#xA;&gt;&gt; &gt;&gt; Comments please!&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; You should probably add making CHECKMULTISIG require the dummy value to&#xA;&gt;&gt; &gt; be exactly equal to OP_FALSE; verifying that in the transaction itself&#xA;&gt;&gt; is&#xA;&gt;&gt; &gt; laborious. A more subtle example is we may want both CHECKSIG and&#xA;&gt;&gt; &gt; CHECKMULTISIG to fail the transaction if the signature is invalid but&#xA;&gt;&gt; &gt; not exactly equal to OP_FALSE; some transaction forms are significantly&#xA;&gt;&gt; &gt; more compact if you can have failed signatures, but that&#39;s a source of&#xA;&gt;&gt; &gt; malleability. (are there counter examples people can think of?)&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; But as I said on IRC, I&#39;m a bit hesitant to bake in assumptions about&#xA;&gt;&gt; &gt; malleability when we have no solid idea if ECC signatures are or are not&#xA;&gt;&gt; &gt; malleable on a fundemental level; if &#34;whack-a-mole&#34; anti-malleability is&#xA;&gt;&gt; &gt; all we&#39;ve got it could be ugly if a break is found. Similarly, we may&#xA;&gt;&gt; &gt; find we missed something, or some needed change makes the malleability&#xA;&gt;&gt; &gt; rules difficult to work with for some new script type that is required.&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; I&#39;d rather see a new CHECKSIG mode for the case where malleability&#xA;&gt;&gt; &gt; absolutely must be eliminated - certain multi-party protocols - and fix&#xA;&gt;&gt; &gt; wallet software instead. (the malleability problems people see are&#xA;&gt;&gt; &gt; closely related to inability to handle double-spends and reorgs) But I&#xA;&gt;&gt; &gt; can easily see that being an impossible goal engineering wise...&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt; --&#xA;&gt;&gt; &gt; &#39;peter&#39;[:-1]@petertodd.org&#xA;&gt;&gt; &gt; 0000000000000001465bc2730ffed7493d166d18d288f6cf15e8cdb5d4a3c7b1&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; ------------------------------------------------------------------------------&#xA;&gt;&gt; &gt; Managing the Performance of Cloud-Based Applications&#xA;&gt;&gt; &gt; Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.&#xA;&gt;&gt; &gt; Read the Whitepaper.&#xA;&gt;&gt; &gt;&#xA;&gt;&gt; http://pubads.g.doubleclick.net/gampad/clk?id=121051231&amp;iu=/4140/ostg.clktrk&#xA;&gt;&gt; &gt; _______________________________________________&#xA;&gt;&gt; &gt; Bitcoin-development mailing list&#xA;&gt;&gt; &gt; Bitcoin-development at lists.sourceforge.net&#xA;&gt;&gt; &gt; https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#xA;&gt;&gt; &gt;&#xA;&gt;&gt;&#xA;&gt;&gt;&#xA;&gt;&gt; ------------------------------------------------------------------------------&#xA;&gt;&gt; Android apps run on BlackBerry 10&#xA;&gt;&gt; Introducing the new BlackBerry 10.2.1 Runtime for Android apps.&#xA;&gt;&gt; Now with support for Jelly Bean, Bluetooth, Mapview and more.&#xA;&gt;&gt; Get your Android app in front of a whole new audience.  Start now.&#xA;&gt;&gt;&#xA;&gt;&gt; http://pubads.g.doubleclick.net/gampad/clk?id=124407151&amp;iu=/4140/ostg.clktrk&#xA;&gt;&gt; _______________________________________________&#xA;&gt;&gt; Bitcoin-development mailing list&#xA;&gt;&gt; Bitcoin-development at lists.sourceforge.net&#xA;&gt;&gt; https://lists.sourceforge.net/lists/listinfo/bitcoin-development&#xA;&gt;&gt;&#xA;&gt;&#xA;&gt;&#xA;&gt; ------------------------------------------------------------------------------&#xA;&gt; Android apps run on BlackBerry 10&#xA;&gt; Introducing the new BlackBerry 10.2.1 Runtime for Android apps.&#xA;&gt; Now with support for Jelly Bean, Bluetooth, Mapview and more.&#xA;&gt; Get your Android app in front of a whole new audience.  Start now.&#xA;&gt;&#xA;&gt; http://pubads.g.doubleclick.net/gampad/clk?id=124407151&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;&#xA;&gt;&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20140212/af6a7c54/attachment.html&gt;</html></oembed>