==Abstract==BIP125 allows transactions to opt into replaceability with a primary use caseof allowing users to increase the fees of unconfirming transactions, helping createa more efficient fee market place.However this goal is hindered when the receiver of a transaction spends from theunconfirmed output, which exposes the sender to the awkward position of needingto pick between needing to pay an effectively unbounded amount of money as per the BIP125 rules, or not fee bump at all.This is especially problematic in the case of batched sends in which there aremultiple independent receivers. In practice this means wallets and services can not effectively low ball the fee of transactions, with the intention of fee bumping due to the risk of the receiver spending or sweeping it before it confirms.In order to support a healthy fee marketplace, this proposal aims to increasethe utility of bip125 by making transactions that spend an unconfirmed BIP125output non-standard.==Summary==This policy specifies a max chain depth of 1 for any BIP125 transactions.==Impact==Receivers of BIP125 transactions will need to wait until the transactionhas confirmed before spending from it. This will not be significantly differentthan it is currently as they receivers need to be monitoring for replacements.If senders want to make further transactions before the BIP125 transaction confirms,and need to utilize the change of the transaction: they will need to replace thetransaction with a one that makes the other send in "pass through" style or firstfinalize the BIP125 transaction and then chain from the spend normally.

Post by Rhavar via bitcoin-dev==Abstract==BIP125 allows transactions to opt into replaceability with a primary use caseof allowing users to increase the fees of unconfirming transactions, helping createa more efficient fee market place.

I don't really see how this is desirable: Just replace it-- thereceiver foolishly spent it at its own peril, spending a unconfirmedpayment from a third party is something that Core never does, it'sreckless unless you're doing something like CPFPing it to yourself,which is harmless (either it'll work, or it'll fail and you'll be finewith that).

Beyond being paternalistic the issue I see with your proposal is thatits contrary to miner income-- you're asking miners to ignore thesespends that otherwise they could accept. This seems unstable-- somepeople would ignore your rule even if it were otherwise widelyadopted, leading to the network behavior having higher volatility.

Instead, perhaps a BIP that very strongly advises parties to not spendunconfirmed outputs from third parties while making a payment to thirdparties would achieve your end?

That's not really realistic. In practice some receivers do big sweeps and include unconfirmed inputs. Replacing the transaction means you need to pay the cost of the sweep, which you probably don't want to do (can be in the order of $100s of dollars).

Beyond being paternalistic the issue I see with your proposal is thatits contrary to miner income

Post by Rhavar via bitcoin-dev==Abstract==BIP125 allows transactions to opt into replaceability with a primary use caseof allowing users to increase the fees of unconfirming transactions, helping createa more efficient fee market place.

I don"t really see how this is desirable: Just replace it-- thereceiver foolishly spent it at its own peril, spending a unconfirmedpayment from a third party is something that Core never does, it"sreckless unless you"re doing something like CPFPing it to yourself,which is harmless (either it"ll work, or it"ll fail and you"ll be finewith that).Beyond being paternalistic the issue I see with your proposal is thatits contrary to miner income-- you"re asking miners to ignore thesespends that otherwise they could accept. This seems unstable-- somepeople would ignore your rule even if it were otherwise widelyadopted, leading to the network behavior having higher volatility.Instead, perhaps a BIP that very strongly advises parties to not spendunconfirmed outputs from third parties while making a payment to thirdparties would achieve your end?

Post by Rhavar via bitcoin-devThat's not really realistic. In practice some receivers do big sweeps andinclude unconfirmed inputs. Replacing the transaction means you need to paythe cost of the sweep, which you probably don't want to do (can be in theorder of $100s of dollars).

Perhaps I am not following what you're saying here.

If the receiver is paying a higher feerate than your replacement,he'll get it confirmed as fast or faster than your replacement in anycase.

Perhaps I am not following what you"re saying here.If the receiver is paying a higher feerate than your replacement,he"ll get it confirmed as fast or faster than your replacement in anycase.

It actually doesn't really matter much.Let's say I want to pay Alice and Bob (unrelated entities), so I send it to them (together) with a low-fee transaction of paying 50 sat/byte. After an hour it's obvious that it's not confirmed (maybe there was a big backlog, or no blocks mined), so I want to replace my small transaction with one that pays 70 sat/byte.But in the mean time, Alice has swept her wallet (or used a service that has done so) and generated 50KB of descendant transactions paying 40 sat/byte (i.e. total fees of 0.02 BTC or $50).According to the BIP125 rules, I would need to pay for the cost of invalidating all the transactions (an absolute higher amount of fee) along with the replay cost of the descendant transactions.So in this case, for me to fee bump the transaction I'm looking at throwing away $50 because of descendant transactions that were totally out of my control. If I don't fee bump, I violate my promise to Bob to pay in a timely manner (and also probably Alice, as it wasn't in her control she was using an exchange that did this).If I guarantee to fee bump, the amount I risk is effectively unbounded. And even if the descendant transactions have a higher fee rate, and are assisting by CPFP boosting my transaction -- it very well might not be enough.--The idea of this proposal comes from the problems *in practice* of trying to low-ball fee estimation with scheduled continuous fee bumps until it confirms. At the moment it's not viable, but if this proposal was adopted then it would be.Personally I think it's of critical piece of having a stable fee market. Fee estimation is a fools game, even the new and improved fee estimation in master today was suggesting x30 fees to what was required (and I successfully made transactions with). People (and especially services) being able to be able to dynamically increase their fees sanely when dealing with withdrawals (and especially batched ones) will go a long way to helping the overall ecosystem.

That"s not really realistic. In practice some receivers do big sweeps andinclude unconfirmed inputs. Replacing the transaction means you need to paythe cost of the sweep, which you probably don"t want to do (can be in theorder of $100s of dollars).

Perhaps I am not following what you"re saying here.If the receiver is paying a higher feerate than your replacement,he"ll get it confirmed as fast or faster than your replacement in anycase.

This seems like something that might be better dealt with by modifyingthe RBF eviction policy to calculate feerate separation between thetransactions in the mempool and opportunistically evict the sweeptransaction+parent if it has a sufficiently different feerate from thebumped fee replacement. Basically you allow the fee bumped replacementto evict the sweep transaction+parent if there is more than 1MB oftransactions(or whatever the block size/weight limit is) oftransactions between the sweep transaction+parent feerate and bumpedfee replacement feerate. This way the sweep transaction parent onlygets replaced if it is unlikely that miners would ever produce a blocktemplate with transactions at the sweep transaction+parent feerate atthe same time as the replacement transaction feerate. From the minerspoint of view this give a higher fee block template overall since itwould be unlikely that one would see transactions with the feerate ofboth the CPFP sweep and the replacement parent in the same blocktemplate.

On Sun, Jul 2, 2017 at 10:02 PM, Rhavar via bitcoin-dev

Perhaps I am not following what you"re saying here.If the receiver is paying a higher feerate than your replacement,he"ll get it confirmed as fast or faster than your replacement in anycase.It actually doesn't really matter much.Let's say I want to pay Alice and Bob (unrelated entities), so I send it tothem (together) with a low-fee transaction of paying 50 sat/byte. After anhour it's obvious that it's not confirmed (maybe there was a big backlog, orno blocks mined), so I want to replace my small transaction with one thatpays 70 sat/byte.But in the mean time, Alice has swept her wallet (or used a service that hasdone so) and generated 50KB of descendant transactions paying 40 sat/byte(i.e. total fees of 0.02 BTC or $50).According to the BIP125 rules, I would need to pay for the cost ofinvalidating all the transactions (an absolute higher amount of fee) alongwith the replay cost of the descendant transactions.So in this case, for me to fee bump the transaction I'm looking at throwingaway $50 because of descendant transactions that were totally out of mycontrol. If I don't fee bump, I violate my promise to Bob to pay in atimely manner (and also probably Alice, as it wasn't in her control she wasusing an exchange that did this).If I guarantee to fee bump, the amount I risk is effectively unbounded. Andeven if the descendant transactions have a higher fee rate, and areassisting by CPFP boosting my transaction -- it very well might not beenough.--The idea of this proposal comes from the problems *in practice* of trying tolow-ball fee estimation with scheduled continuous fee bumps until itconfirms. At the moment it's not viable, but if this proposal was adoptedthen it would be.Personally I think it's of critical piece of having a stable fee market. Feeestimation is a fools game, even the new and improved fee estimation inmaster today was suggesting x30 fees to what was required (and Isuccessfully made transactions with). People (and especially services) beingable to be able to dynamically increase their fees sanely when dealing withwithdrawals (and especially batched ones) will go a long way to helping theoverall ecosystem.-Ryan-------- Original Message --------Subject: Re: [bitcoin-dev] BIP proposal: No chaining off replaceable transactionsLocal Time: July 2, 2017 9:28 PMUTC Time: July 3, 2017 2:28 AM

That"s not really realistic. In practice some receivers do big sweeps andinclude unconfirmed inputs. Replacing the transaction means you need to paythe cost of the sweep, which you probably don"t want to do (can be in theorder of $100s of dollars).

Perhaps I am not following what you"re saying here.If the receiver is paying a higher feerate than your replacement,he"ll get it confirmed as fast or faster than your replacement in anycase._______________________________________________bitcoin-dev mailing listhttps://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Post by Gregory Maxwell via bitcoin-devBeyond being paternalistic the issue I see with your proposal is thatits contrary to miner income-- you"re asking miners to ignore thesespends that otherwise they could accept.

It is no more paternalistic than non BIP125 transactions. First of all, I'd like to emphasis we're talking about very small amounts of money, either way it's not going to matter too much as no one is going to care.

Actually, I believe the opposite. The problematic unconfirmed BIP125 descendants tend to be low fee rate sweeps, that won't be mined any time soon anyway. Miners who ignored that, but instead took the replacement transaction would be able to put it in a block and make more money. The low fee rate sweep will eventually be recreated anyway, with a slightly different set of inputs.Thus I believe miners who used my policy would make more than miners who didn't.But the reality is that if my proposal was deployed, people would stop spending from bip125 outputs until they confirm, in the first place. There's no good reason to do so, so no incentive to try route around the network. The only reason people do so now is because they can, and there's no harm in doing so (for things like sweep transactions, where you don't care if you need to keep redoing it). My proposal would drastically simplify feebump logic, and make fee bumps actually predictable.As a concrete example: bitcoin core's feebump command completely breaks when there exists descendant transactions, and for it it would would not only require a fair bit of logic but a change in interface (so the user can control how much they're willing to lose)I believe this proposal offers a huge amount of benefits for users/services wanting to make use of bip125 for feebumping, which will result in a more stable fee market. While creating extremely little to no disadvantages.Unless someone can think of a legitimate use case that spending unconfirmed bip125 transactions is useful?

Post by Rhavar via bitcoin-dev==Abstract==BIP125 allows transactions to opt into replaceability with a primary use caseof allowing users to increase the fees of unconfirming transactions, helping createa more efficient fee market place.

I don"t really see how this is desirable: Just replace it-- thereceiver foolishly spent it at its own peril, spending a unconfirmedpayment from a third party is something that Core never does, it"sreckless unless you"re doing something like CPFPing it to yourself,which is harmless (either it"ll work, or it"ll fail and you"ll be finewith that).Beyond being paternalistic the issue I see with your proposal is thatits contrary to miner income-- you"re asking miners to ignore thesespends that otherwise they could accept. This seems unstable-- somepeople would ignore your rule even if it were otherwise widelyadopted, leading to the network behavior having higher volatility.Instead, perhaps a BIP that very strongly advises parties to not spendunconfirmed outputs from third parties while making a payment to thirdparties would achieve your end?

(BIP125 itself is also local policy, but one that involves standardisationsince it expresses how wallets interoperate with nodes with that policy.)

If you wish to suggest this policy change, you should just implement it andopen a merge/pull request on the applicable project.

Luke

Post by Rhavar via bitcoin-dev==Abstract==BIP125 allows transactions to opt into replaceability with a primary usecase of allowing users to increase the fees of unconfirming transactions,helping create a more efficient fee market place.However this goal is hindered when the receiver of a transaction spendsfrom the unconfirmed output, which exposes the sender to the awkwardposition of needing to pick between needing to pay an effectivelyunbounded amount of money as per the BIP125 rules, or not fee bump at all.This is especially problematic in the case of batched sends in which thereare multiple independent receivers. In practice this means wallets andservices can not effectively low ball the fee of transactions, with theintention of fee bumping due to the risk of the receiver spending orsweeping it before it confirms. In order to support a healthy feemarketplace, this proposal aims to increase the utility of bip125 bymaking transactions that spend an unconfirmed BIP125 output non-standard.==Summary==This policy specifies a max chain depth of 1 for any BIP125 transactions.==Impact==Receivers of BIP125 transactions will need to wait until the transactionhas confirmed before spending from it. This will not be significantlydifferent than it is currently as they receivers need to be monitoring forreplacements. If senders want to make further transactions before theBIP125 transaction confirms, and need to utilize the change of thetransaction: they will need to replace the transaction with a one thatmakes the other send in "pass through" style or first finalize the BIP125transaction and then chain from the spend normally.-Ryan

Your BIP would take away the only way the *receiver* has to raise thefee: CPFP. And the receiver is arguably the more important party in thisquestion. After all the sender has no real incentive for his payment tobe confirmed; it's receiver who has.

Post by Rhavar via bitcoin-dev==Abstract==BIP125 allows transactions to opt into replaceability with a primary use caseof allowing users to increase the fees of unconfirming transactions, helping createa more efficient fee market place.However this goal is hindered when the receiver of a transaction spends from theunconfirmed output, which exposes the sender to the awkward position of needingto pick between needing to pay an effectively unbounded amount of moneyas per the BIP125 rules, or not fee bump at all.This is especially problematic in the case of batched sends in which there aremultiple independent receivers. In practice this means wallets andservices can not effectively low ball the fee of transactions, with theintention of fee bumping due to the risk of the receiver spending orsweeping it before it confirms.In order to support a healthy fee marketplace, this proposal aims to increasethe utility of bip125 by making transactions that spend an unconfirmed BIP125output non-standard.==Summary==This policy specifies a max chain depth of 1 for any BIP125 transactions.==Impact==Receivers of BIP125 transactions will need to wait until the transactionhas confirmed before spending from it. This will not be significantly differentthan it is currently as they receivers need to be monitoring for replacements.If senders want to make further transactions before the BIP125transaction confirms,and need to utilize the change of the transaction: they will need to replace thetransaction with a one that makes the other send in "pass through" style or firstfinalize the BIP125 transaction and then chain from the spend normally.-Ryan_______________________________________________bitcoin-dev mailing listhttps://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev

Thanks Andreas, that's actually a pretty good use-case I didn't think of.Perhaps you could make the rule: "To spend from an unconfirmed BIP125 output, the transaction feerate needs to be higher than its unconfirmed parent's effective feerate."It doesn't totally solve the problem, but I think in practice would do a good job (most of the problematic descendants tends to be low feerate sweeps). It would also preserve the ability for receivers to use CPFP if they wish.

-Ryan

-------- Original Message --------Subject: Re: [bitcoin-dev] BIP proposal: No chaining off replaceable transactionsLocal Time: July 4, 2017 6:50 AMUTC Time: July 4, 2017 11:50 AMYour BIP would take away the only way the *receiver* has to raise thefee: CPFP. And the receiver is arguably the more important party in thisquestion. After all the sender has no real incentive for his payment tobe confirmed; it"s receiver who has.

Post by Rhavar via bitcoin-dev==Abstract==BIP125 allows transactions to opt into replaceability with a primary use caseof allowing users to increase the fees of unconfirming transactions, helping createa more efficient fee market place.However this goal is hindered when the receiver of a transaction spends from theunconfirmed output, which exposes the sender to the awkward position of needingto pick between needing to pay an effectively unbounded amount of moneyas per the BIP125 rules, or not fee bump at all.This is especially problematic in the case of batched sends in which there aremultiple independent receivers. In practice this means wallets andservices can not effectively low ball the fee of transactions, with theintention of fee bumping due to the risk of the receiver spending orsweeping it before it confirms.In order to support a healthy fee marketplace, this proposal aims to increasethe utility of bip125 by making transactions that spend an unconfirmed BIP125output non-standard.==Summary==This policy specifies a max chain depth of 1 for any BIP125 transactions.==Impact==Receivers of BIP125 transactions will need to wait until the transactionhas confirmed before spending from it. This will not be significantly differentthan it is currently as they receivers need to be monitoring for replacements.If senders want to make further transactions before the BIP125 transaction confirms,and need to utilize the change of the transaction: they will need to replace thetransaction with a one that makes the other send in "pass through" style or firstfinalize the BIP125 transaction and then chain from the spend normally.-Ryan_______________________________________________bitcoin-dev mailing listhttps://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev