Subject: Re: [Bitcoin-development] questions about bitcoin-XT code fork & non-consensus hard-fork

From: Aaron Voisine <[email-masked]>
Date: Mon, 15 Jun 2015 21:00:19 -0700

Thanks Alex, the work you've pointed out is helpful. Limiting mempool size
should at least prevent nodes from crashing. When I looked a few days ago I
only found a few old PRs that seemed to have fallen by the wayside, so this
new one is encouraging.

I can respond in the PR comments if it's more appropriate there, but I
believe ejecting tx from mempools rather than preemptively refusing them
according to standard network wide propagation rules will result in spotty,
inconsistent tx propagation, and possibly a large increase in tx
re-broadcasts, so if those haven't been addressed they will need to be. It
would also be prudent to run some simulations to see what other issues are
going to pop-up.

We're currently using CPFP already in breadwallet when spending unconfirmed
non-change inputs. A small percentage of hashing power is using it, but
enough to get a transaction unstuck assuming breadwallet's fee calculation
is better than the sender's.

The problem with RBF is that there's currently no way to tell if your tx
has been picked up by miners or not in order to know if you need to replace
it. Miners broadcasting partial block solutions would be helpful in this
regard, but only for tx in the currently-being-worked-on block, not for tx
that won't be picked up until the block after. If miners were to eject tx
that were previously being worked on in favor of higher fee tx, then that
causes another set of problems for wallets that thought their tx was going
to get in but then it doesn't. The other problem with RBF is that users
don't know up front what fee they're actually going to pay which is a big
blow to real world usability. Also mobile wallets will have to sign lots of
tx up front and rely on a service to replace as necessary. And this is all
just on the send side. On the receive side it's much worse since you can't
rely on the sender to do the replacing. The real problem seems to be the
fact that RBF is an interactive iterative process rather than a
send-and-forget one.

What you really need is some way to tell up-front, is a transaction going
to get mined with a high probability? That problem seems really difficult
to solve with fixed-size blocks that are full. If the goal is simply to
reduce or limit the growth of the blockchain, then there are much simpler
solutions, which is why I've advocated for the blocksize increase, followed
by tx selection and propagation rule changes to create fee pressure.

Aaron Voisine
co-founder and CEO
breadwallet.com

On Mon, Jun 15, 2015 at 6:17 PM, Alex Morcos <[email-masked]> wrote:

> Aaron,
>
> My understanding is that Gavin and Mike are proceeding with the XT fork, I
> hope that understanding is wrong.
>
> As for improving the non-consensus code to handle full blocks more
> gracefully.  This is something I'm very interested in, block size increase
> or not. Perhaps I shouldn't hijack this thread, but maybe there are others
> who also believe this would ameliorate some of the time pressure for
> deciding on a block size increase.
>
> What is it that you would like to see improved?
> The fee estimation code that is included for 0.11 will give much more
> accurate fee estimates, which should allow adding the correct fee to a
> transaction to see it likely to be confirmed in a reasonable time.  For
> further improvements:
> - There has recently been attention to overhauling the block creation and
> mempool limiting code in such a way that actual outstanding queues to be
> included in a block could also be incorporated in fee estimation.  See
> https://github.com/bitcoin/bitcoin/pull/6281.
> - CPFP and RBF are candidates for inclusion in core soon, both of which
> could be integrated into transaction processing to handle the edge cases
> where a priori fee estimation fails. See
> https://github.com/bitcoin/bitcoin/pull/1647 and
> https://github.com/bitcoin/bitcoin/pull/6176
>
> I know there has been much discussion of fee estimation not working for
> SPV clients, but I believe several independent servers which were serving
> the estimates from full nodes would go a long way towards allowing that
> information to be used by SPV clients even if its not a completely
> decentralized solution.  See for example
> http://core2.bitcoincore.org/smartfee/latest.json
>
>
>
> On Mon, Jun 15, 2015 at 8:08 PM, Aaron Voisine <[email-masked]> wrote:
>
>> Wasn't the XT hard fork proposed as a last resort, should the
>> bitcoin-core maintainers simply refuse to lift the 1Mb limit? No one wants
>> to go that route. An alternate hard-fork proposal like BIP100 that gets
>> consensus, or a modified version of gavin's that ups the limit to 8Mb
>> instead of 20Mb, or hell even some major changes to the non-consunsus code
>> to make it adequately handle the situation when blocks fill up, and allow
>> wallet software to continue working with a send-and-forget use pattern, any
>> of these would be enough to avoid the need for an XT only hard-fork.
>>
>> So far BIP100 is the only one that seems to actually be getting any sort
>> of momentum toward consensus, and it was proposed... 2 days ago? When the
>> XT fork was proposed as a last resort, it was when the opponents were (to
>> my understanding) suggesting we just let blocks fill up, and hopefully
>> things would just work out on their own.
>>
>>
>>
>> Aaron Voisine
>> co-founder and CEO
>> breadwallet.com
>>
>> On Mon, Jun 15, 2015 at 3:56 PM, Brian Hoffman <[email-masked]>
>> wrote:
>>
>>> Who is actually planning to move to Bitcoin-XT if this happens?
>>>
>>> Just Gavin and Mike?
>>>
>>>
>>> On Jun 15, 2015, at 6:17 PM, Faiz Khan <[email-masked]> wrote:
>>>
>>> I'm quite puzzled by the response myself, it doesn't seem to address
>>> some of the (more serious) concerns that Adam put out, the most important
>>> question that was asked being the one regarding personal ownership of the
>>> proposed fork:
>>>
>>> "How do you plan to deal with security & incident response for the
>>> duration you describe where you will have control while you are deploying
>>> the unilateral hard-fork and being in sole maintainership control?"
>>>
>>> I do genuinely hope that whomever (now and future) wishes to fork the
>>> protocol reconsider first whether they are truly ready to test/flex their
>>> reputation/skills/resources in this way... Intuitively, to me it seems
>>> counterproductive, and I don't fully believe it is within a single
>>> developer's talents to manage the process start-to-finish (as it is
>>> non-trivial to hard-fork successfully, others have rehashed this in other
>>> threads)...
>>>
>>> That being said I think it appropriate if Adam's questions were
>>> responded in-line when Mike is feeling up to it. I think that the answers
>>> are important for the community to hear when such a drastic change is being
>>> espoused.
>>>
>>> Faiz
>>>
>>> On Mon, Jun 15, 2015 at 4:56 PM, Bryan Bishop <[email-masked]> wrote:
>>>
>>>> On Mon, Jun 15, 2015 at 3:55 PM, Mike Hearn <[email-masked]> wrote:
>>>>
>>>>> Re: anyone who agrees with noted non-programmers Mike&Gavin must be
>>>>> non-technical, stupid, uninformed, etc .... OK, go ahead and show them the
>>>>> error of their ways. Anyone can write blogs.
>>>>>
>>>>
>>>> I worry that if this is the level of care you take with reading and
>>>> (mis)interpreting Adam's messages, that you might not be taking extreme
>>>> care with evaluating consensus changes, even while tired or sleeping. I
>>>> encourage you to evaluate both messages and source code more carefully,
>>>> especially in the world of bitcoin. However, this goes for everyone and not
>>>> just you. Specifically, when Adam mentioned your conversations with
>>>> non-technical people, he did not mean "Mike has talked with people who have
>>>> possibly not made pull requests to Bitcoin Core, so therefore Mike is a
>>>> non-programmer". Communication is difficult and I can understand that, but
>>>> we really have to be more careful when evaluating each other's messages;
>>>> technical miscommunication can be catastrophic in this context. On the
>>>> topic of whether you are a programmer, I suspect that ever since you built
>>>> CIA.vc we have all known you're a programmer, Mike.
>>>>
>>>> - Bryan
>>>> http://heybryan.org/
>>>> 1 512 203 0507
>>>>
>>>>
>>>> ------------------------------------------------------------------------------
>>>>
>>>> _______________________________________________
>>>> Bitcoin-development mailing list
>>>> [email-masked]
>>>> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>>>>
>>>> --
>>>>
>>>> My regards,
>>>>
>>>> Faiz Khan
>>>>
>>>>  <https://lists.sourceforge.net/lists/listinfo/bitcoin-development>
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Bitcoin-development mailing list
>>> [email-masked]
>>> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Bitcoin-development mailing list
>>> [email-masked]
>>> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>>>
>>>
>>
>>
>> ------------------------------------------------------------------------------
>>
>> _______________________________________________
>> Bitcoin-development mailing list
>> [email-masked]
>> https://lists.sourceforge.net/lists/listinfo/bitcoin-development
>>
>>
>