<oembed><type>rich</type><version>1.0</version><author_name>npub16dt55fpq3a8r6zpphd9xngxr46zzqs75gna9cj5vf8pknyv2d7equx4wrd</author_name><author_url>https://nostr.ae/npub16dt55fpq3a8r6zpphd9xngxr46zzqs75gna9cj5vf8pknyv2d7equx4wrd</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2019-10-04&#xA;📝 Original message:On Thu, Oct 03, 2019 at 05:38:36PM -0700, Braydon Fuller via bitcoin-dev wrote:&#xA;&gt; This paper describes a solution [to DoS attacks] that does not&#xA;&gt; require enabling or maintaining checkpoints and provides improved security.&#xA;&gt; [...] &#xA;&gt; The paper is available at:&#xA;&gt; https://bcoin.io/papers/bitcoin-chain-expansion.pdf&#xA;&#xA;Hi Braydon,&#xA;&#xA;Thank you for researching this important issue.  An alternative solution&#xA;proposed some time ago (I believe originally by Gregory Maxwell) was a&#xA;soft fork to raise the minimum difficulty.  You can find discussion of&#xA;it in various old IRC conversations[1,2] as well as in related changes&#xA;to Bitcoin Core such as PR #9053 addining minimum chain work[3] and the&#xA;assumed-valid change added in Bitcoin Core 0.14.0[4].&#xA;&#xA;[1] http://www.erisian.com.au/meetbot/bitcoin-core-dev/2016/bitcoin-core-dev.2016-10-27-19.01.log.html#l-121&#xA;[2] http://www.erisian.com.au/meetbot/bitcoin-core-dev/2017/bitcoin-core-dev.2017-03-02-19.01.log.html#l-57&#xA;[3] https://github.com/bitcoin/bitcoin/pull/9053/commits/fd46136dfaf68a7046cf7b8693824d73ac6b1caf&#xA;[4] https://bitcoincore.org/en/2017/03/08/release-0.14.0/#assumed-valid-blocks&#xA;&#xA;The solutions proposed in section 4.2 and 4.3 of your paper have the&#xA;advantage of not requiring any consensus changes.  However, I find it&#xA;hard to analyze the full consequences of the throttling solution in&#xA;4.3 and the pruning solution in 4.2.  If we assume a node is on the&#xA;most-PoW valid chain and that a huge fork is unlikely, it seems fine.&#xA;But I worry that the mechanisms could also be used to keep a node that&#xA;synced to a long-but-lower-PoW chain on that false chain (or other false&#xA;chain) indefinitely even if it had connections to honest peers that&#xA;tried to tell it about the most-PoW chain.&#xA;&#xA;For example, with your maximum throttle of 5 seconds between&#xA;`getheaders` requests and the `headers` P2P message maximum of 2,000&#xA;headers per instance, it would take about half an hour to get a full&#xA;chain worth of headers.  If a peer was disconnected before sending&#xA;enough headers to establish they were on the most-PoW chain, your&#xA;pruning solution would delete whatever progress was made, forcing the&#xA;next peer to start from genesis and taking them at least half an hour&#xA;too.  On frequently-suspended laptops or poor connections, it&#39;s possible&#xA;a node could be be operational for a long time before it kept the same&#xA;connection open for half an hour.  All that time, it would be on a&#xA;dishonest chain.&#xA;&#xA;By comparison, I find it easy to analyze the effect of raising the&#xA;minimum difficulty.  It is a change to the consensus rules, so it&#39;s&#xA;something we should be careful about, but it&#39;s the kind of&#xA;basically-one-line change that I expect should be easy for a large&#xA;number of people to review directly.  Assuming the choice of a new&#xA;minimum (and what point in the chain to use it) is sane, I think it&#xA;would be easy to get acceptance, and I think it would further be easy&#xA;increase it again every five years or so as overall hashrate increases.&#xA;&#xA;-Dave</html></oembed>