<oembed><type>rich</type><version>1.0</version><author_name>npub1m230cem2yh3mtdzkg32qhj73uytgkyg5ylxsu083n3tpjnajxx4qqa2np2</author_name><author_url>https://nostr.ae/npub1m230cem2yh3mtdzkg32qhj73uytgkyg5ylxsu083n3tpjnajxx4qqa2np2</author_url><provider_name>njump</provider_name><provider_url>https://nostr.ae</provider_url><html>📅 Original date posted:2015-06-19&#xA;📝 Original message:On Fri, Jun 19, 2015 at 09:33:05AM -0400, Stephen Morse wrote:&#xA;&gt; It is disappointing that F2Pool would enable full RBF when the safe&#xA;&gt; alternative, first-seen-safe RBF, is also available, especially since the&#xA;&gt; fees they would gain by supporting full RBF over FSS RBF would likely be&#xA;&gt; negligible. Did they consider using FSS RBF instead?&#xA;&#xA;Specifically the following is what I told them:&#xA;&#xA;&gt; We are&#xA;&gt; interested in the replace-by-fee patch, but I am not following the&#xA;&gt; development closely, more background info is needed, like what the&#xA;&gt; difference between standard and zeroconf versions? Thanks.&#xA;&#xA;Great!&#xA;&#xA;Basically both let you replace one transaction with another that pays a&#xA;higher fee. First-seen-safe replace-by-fee adds the additional criteria&#xA;that all outputs of the old transaction still need to be paid by the new&#xA;transaction, with &gt;= as many Bitcoins. Basically, it makes sure that if&#xA;someone was paid by tx1, then tx2 will still pay them.&#xA;&#xA;I&#39;ve written about how wallets can use RBF and FSS-RBF to more&#xA;efficiently use the blockchain on the bitcoin-development mailing list:&#xA;&#xA;http://www.mail-archive.com/bitcoin-development@lists.sourceforge.net/msg07813.html&#xA;http://www.mail-archive.com/bitcoin-development@lists.sourceforge.net/msg07829.html&#xA;&#xA;Basically, for the purpose of increasing fees, RBF is something like %50&#xA;cheaper than CPFP, and FSS-RBF is something like %25 cheaper.&#xA;&#xA;In addition, for ease of implementation, my new FSS-RBF has a number of&#xA;other restrictions. For instance, you can&#39;t replace multiple&#xA;transactions with one, you can&#39;t replace a transaction whose outputs&#xA;have already been spent, you can&#39;t replace a transaction with one that&#xA;spends additional unconfirmed inputs, etc. These restrictions aren&#39;t&#xA;&#34;set in stone&#34;, but they do make the code simpler and less likely to&#xA;have bugs.&#xA;&#xA;In comparison my previous standard RBF patch can replace multiple&#xA;transactions with one, can replace long chains of transactions, etc.&#xA;It&#39;s willing to do more computation before deciding if a transaction&#xA;should be replaced, with more complex logic; it probably has a higher&#xA;chance of having a bug or DoS attack.&#xA;&#xA;You&#39;ve probably seen the huge controversy around zeroconf with regard to&#xA;standard replace-by-fee. While FSS RBF doesn&#39;t make zeroconf any safer,&#xA;it also doesn&#39;t make it any more dangerous, so politically with regard&#xA;to zeroconf it makes no difference. You *can* still use it doublespend&#xA;by taking advantage of how different transactions are accepted&#xA;differently, but that&#39;s true of *every* change we&#39;ve ever made to&#xA;Bitcoin Core - by upgrading to v0.10 from v0.9 you&#39;ve also &#34;broken&#34;&#xA;zeroconf in the same way.&#xA;&#xA;&#xA;Having said that... honestly, zeroconf is pretty broken already. Only&#xA;with pretty heroic measures like connecting to a significant fraction of&#xA;the Bitcoin network at once, as well as connecting to getblocktemplate&#xA;supporting miners to figure out what transactions are being mined, are&#xA;services having any hope of avoiding getting ripped off. For the average&#xA;user their wallets do a terrible job of showing whether or not an&#xA;unconfirmed transaction will go through. For example, Schildbach&#39;s&#xA;Bitcoin wallet for Android has no code at all to detect double-spends&#xA;until they get mined, and I&#39;ve been able to trick it into showing&#xA;completely invalid transactions. In fact, currently Bitcoin XT will&#xA;relay invalid transactions that are doublepsends, and Schildbach&#39;s&#xA;wallet displays them as valid, unconfirmed, payments. It&#39;s really no&#xA;surprise to me that nearly no-one in the Bitcoin ecosystem accepts&#xA;unconfirmed transactions without some kind of protection that doesn&#39;t&#xA;rely on first-seen-safe mempool behavior. For instance, many ATM&#39;s these&#xA;days know who their customers are due to AML requirements, so while you&#xA;can deposit Bitcoins and get your funds instantly, the protection for&#xA;the ATM operator is that they can go to the police if you rip them off;&#xA;I&#39;ve spoken to ATM operators who didn&#39;t do this who&#39;ve lost hundreds or&#xA;even thousands of dollars before giving up on zeroconf.&#xA;&#xA;My big worry with zeroconf is a service like Coinbase or Shapeshift&#xA;coming to rely on it, and then attempting to secure it by gaining&#xA;control of a majority of hashing power. For instance, if Coinbase had&#xA;contracts with 80% of the Bitcoin hashing power to guarantee their&#xA;transactions would get mined, but 20% of the hashing power didn&#39;t sign&#xA;up, then the only way to guarantee their transactions could be for the&#xA;80% to not build on blocks containing doublespends by the 20%. There&#39;s&#xA;no way in a decentralized network to come to consensus about what&#xA;transactions are or are not valid without mining itself, so you could&#xA;end up in a situation where unless you&#39;re part of one of the big pools&#xA;you can&#39;t reliably mine at all because your blocks may get rejected for&#xA;containing doublespends.&#xA;&#xA;One of my goal with standard replace-by-fee is to prevent this scenario&#xA;by forcing merchants and others to implement ways of accepting zeroconf&#xA;transactions safely that work in a decentralized environment regardless&#xA;of what miners do; we have a stronger and safer Bitcoin ecosystem if&#xA;we&#39;re relying on math rather than trust to secure our zeroconf&#xA;transactions. We&#39;re also being more honest to users, who right now often&#xA;have the very wrong impression that unconfirmed transactions are safe to&#xA;accept - this does get people ripped off all too often!&#xA;&#xA;&#xA;Anyway, sorry for the rant! FWIW I updated my FSS-RBF patch and am&#xA;waiting to get some feedback:&#xA;&#xA;    https://github.com/bitcoin/bitcoin/pull/6176&#xA;&#xA;Suhas Daftuar did find a pretty serious bug in it, now fixed. I&#39;m&#xA;working on porting it to v0.10.2, and once that&#39;s done I&#39;m going to put&#xA;up a bounty for anyone who can find a DoS attack in the patch. If no-one&#xA;claims the bounty after a week or two I think I&#39;ll start feeling&#xA;confident about using it in production.&#xA;&#xA;&#xA;-- &#xA;&#39;peter&#39;[:-1]@petertodd.org&#xA;000000000000000003188926be14e5fbe2f8f9c63c9fb8e2ba4b14ab04f1c9ab&#xA;-------------- next part --------------&#xA;A non-text attachment was scrubbed...&#xA;Name: signature.asc&#xA;Type: application/pgp-signature&#xA;Size: 650 bytes&#xA;Desc: Digital signature&#xA;URL: &lt;http://lists.linuxfoundation.org/pipermail/bitcoin-dev/attachments/20150619/0ea5bf90/attachment.sig&gt;</html></oembed>