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