<oembed><type>rich</type><version>1.0</version><author_name>npub17ty4mumkv43w8wtt0xsz2jypck0gvw0j8xrcg6tpea25z2nh7meqf4qgyd</author_name><author_url>https://nostr.ae/npub17ty4mumkv43w8wtt0xsz2jypck0gvw0j8xrcg6tpea25z2nh7meqf4qgyd</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2014-04-23&#xA;📝 Original message:Lately someone launched Finney attacks as a service (BitUndo). As a&#xA;reminder for newcomers, Finney attacks are where a miner secretly works on&#xA;a block containing a double spend. When they eventually find a block, they&#xA;run to the merchant and pay, then broadcast the block. In a simpler variant&#xA;of this attack you make purchases as normal with a modified wallet that&#xA;always submits a double spend to the service, and then N% of the time where&#xA;N is the percentage of overall hash power the dishonest miners have, you&#xA;get your money back minus their fee.&#xA;&#xA;N does not need to be very high to render Bitcoin much less useful. Real&#xA;time transactions are very important. Although I never expected it when I&#xA;first started using Bitcoin, nowadays most of my purchases with it are for&#xA;food and drink. If Bitcoin could not support such purchases, I would use it&#xA;much less.&#xA;Even with their woeful security many merchants see &lt;1-2% credit card&#xA;chargeback rates, and chargebacks can be disputed. In fact merchants win&#xA;about 40% of chargeback disputes. So if N was only, say, 5%, and there was&#xA;a large enough population of users who were systematically trying to&#xA;defraud merchants, we&#39;d already be having worse security than magstripe&#xA;credit cards. EMV transactions have loss rates in the noise, so for&#xA;merchants who take those Bitcoin would be dramatically less secure.&#xA;&#xA;The idea of discouraging blocks that perform Finney attacks by having&#xA;honest miners refuse to build on them has been proposed. But it has a&#xA;couple of problems:&#xA;&#xA;   1. It&#39;s hard to automatically detect Finney attacks. Looking for blocks&#xA;   that contain unseen transactions that override the mempool doesn&#39;t work -&#xA;   the dishonest users could broadcast all their double spends once a Finney&#xA;   block was found and then broadcast the block immediately afterwards, thus&#xA;   making the block look like any other would in the presence of double spends.&#xA;&#xA;   2. If they could be automatically identified, it possibly could be&#xA;   converted into a DoS on the network by broadcasting double spends in such a&#xA;   way that the system races, and every miner produces a block that looks like&#xA;   a Finney attack to some of the others. The chain would stop advancing.&#xA;&#xA;   3. Miners who want to vote &#34;no&#34; on a block take a big risk, they could&#xA;   be on the losing side of the fork and end up wasting their work.&#xA;&#xA;We can resolve these problems with a couple of tweaks:&#xA;&#xA;   1. Dishonest blocks can be identified out of band, by having honest&#xA;   miners submit double spends against themselves to the service anonymously&#xA;   using a separate tool. When their own double spend appears they know the&#xA;   block is bad.&#xA;&#xA;   2. Miners can vote to reallocate the coinbase value of bad blocks before&#xA;   they mature. If a majority of blocks leading up to maturity vote for&#xA;   reallocation, the value goes into a pot that subsequent blocks are allowed&#xA;   to claim for themselves. Thus there is no risk to voting &#34;no&#34; on a block,&#xA;   the work done by the Finney attacker is not wasted, and users do not have&#xA;   to suffer through huge reorgs.&#xA;&#xA;This may seem a radical suggestion, but I think it&#39;s much less radical than&#xA;some of the others being thrown around.&#xA;&#xA;The above approach works as long as the majority of hashpower is honest,&#xA;defined to mean, working to stop double spending. This is the same security&#xA;property as described in the white paper, thus this introduces no new&#xA;security assumptions. Note that assuming *all* miners are dishonest and are&#xA;willing to double spend automatically resolves the Bitcoin experiment as a&#xA;failure, because that would invalidate the entire theory upon which the&#xA;system is built. That doesn&#39;t mean the assumption is wrong! It may be that&#xA;an entirely unregulated market for double spending prevention cannot work&#xA;and the participants eventually all end up trashing the commons - but the&#xA;hope is that smart incentives can replace the traditional reliance on law&#xA;and regulation to avoid this.&#xA;&#xA;The voting mechanism would only apply to coinbases, not arbitrary&#xA;transactions, thus it cannot be used to steal arbitrary users bitcoins. A&#xA;majority of miners can already reallocate coinbases by forking them out,&#xA;but this wastes energy and work presenting a significant discouragement to&#xA;vote unless you already know via some out of band mechanism that you have a&#xA;solid majority. Placing votes into the coinbase scriptSig as is done with&#xA;other things avoids that problem.&#xA;&#xA;The identification of Finney blocks relies on miners to take explicit&#xA;action, like downloading and running a tool that submits votes via RPC. It&#xA;can be expected that double spending services would try to identify and&#xA;block the sentinel transactions, which is why it&#39;s better to have the code&#xA;that fights this arms race be out of process and developed externally to&#xA;Bitcoin Core itself, which should ultimately just enforce the new (forking)&#xA;rule change.&#xA;-------------- next part --------------&#xA;An HTML attachment was scrubbed...&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20140423/82270925/attachment.html&gt;</html></oembed>