Author

Topic: Submitting CPFP transaction with zero-fee parent (Read 297 times)

legendary
Activity: 3010
Merit: 3724
Join the world-leading crypto sportsbook NOW!
February 08, 2019, 06:50:16 AM
#10
some mining pools will mine your transaction for you if you pay them. viabtc has this service. it takes tx id as input thought. you could try broadcasting via the tool on their site. it may accept zero fee transactions. if it does it'll return a tx id which you can use.

another one is btc.com: https://pushtx.btc.com/

AFAIK most free transaction accelerator can't/don't accept transaction with low fees or transaction which isn't exist on their pool

While it's possible to "bypass" default minrelayfees with paid transaction accelerator, it's ridiculous idea as you'd pay more than 192 satoshi (1 sat/byte for common transaction) and risking de-anonymization.

Viabtc itself has a min fee/byte range, which is pretty high actually as I recall.

But antpool's accelerator (still free) has in the past accepted 0 fee or even below 1 sat/byte fees. In fact, as long as it's in mempool somewhere, antpool will add it to queue.

Only problem is you've to submit a TX id so if nodes won't accept your transaction anymore, and you can't broadcast from Electrum anymore... then you're still stuck.
legendary
Activity: 2870
Merit: 7490
Crypto Swap Exchange
some mining pools will mine your transaction for you if you pay them. viabtc has this service. it takes tx id as input thought. you could try broadcasting via the tool on their site. it may accept zero fee transactions. if it does it'll return a tx id which you can use.

another one is btc.com: https://pushtx.btc.com/

AFAIK most free transaction accelerator can't/don't accept transaction with low fees or transaction which isn't exist on their pool

While it's possible to "bypass" default minrelayfees with paid transaction accelerator, it's ridiculous idea as you'd pay more than 192 satoshi (1 sat/byte for common transaction) and risking de-anonymization.
legendary
Activity: 3710
Merit: 1586
some mining pools will mine your transaction for you if you pay them. viabtc has this service. it takes tx id as input thought. you could try broadcasting via the tool on their site. it may accept zero fee transactions. if it does it'll return a tx id which you can use.

another one is btc.com: https://pushtx.btc.com/
legendary
Activity: 1135
Merit: 1166
But is it actually possible to submit them somehow to the network "as a package"?
Unfortunately there is not. However there was some discussion about this and I believe someone is working on it.

Thanks for confirming that I didn't simply miss a way to do that - and thanks for the very interesting reference (posted later)!
staff
Activity: 3458
Merit: 6793
Just writing some code
But is it actually possible to submit them somehow to the network "as a package"?
Unfortunately there is not. However there was some discussion about this and I believe someone is working on it.
Would you please do some digging and submit a link?
https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-November/016518.html

That message and thread talks about CPFP and Lightning. It brings up package relay since that is a prerequisite for that.
legendary
Activity: 1456
Merit: 1175
Always remember the cause!
But is it actually possible to submit them somehow to the network "as a package"?
Unfortunately there is not. However there was some discussion about this and I believe someone is working on it.
Would you please do some digging and submit a link?
staff
Activity: 3458
Merit: 6793
Just writing some code
But is it actually possible to submit them somehow to the network "as a package"?
Unfortunately there is not. However there was some discussion about this and I believe someone is working on it.
legendary
Activity: 1456
Merit: 1175
Always remember the cause!
Interesting idea Smiley

A bit off-topic, after a node receive new block (on compact-block format), a nodes would request other node all transaction which isn't exist on it's mempool but listed on the compact-blocks. Now i wonder if similar mechanism is exist for CPFP transaction?
As of now, there is no such thing as asking for a missing utxo embedded in a block and I don't see a reasonable logic behind such a behavior. All inputs of all txns included in a block, should be either already present in the UTXO and blockchain history or in the block body.

It is also worth mentioning that this specific problem is about transaction relay phase and how txns find their way into the mempool and not the blocks and how they are validated and added into the chain.

One simple solution for this problem would be  improving txn relay (no consensus, no fork) to allow txns with missing inputs remain like few minutes in quarantine and improve "minimum fee" logic to support more sophisticated scenarios (the same as how miners pick txns from the mempool) but I prefer a more radical approach (as usual  Tongue) which is supporting nested transactions to help with more general use cases and to guarantee a deterministic relationship between the parent  txn and its child.
legendary
Activity: 1456
Merit: 1175
Always remember the cause!
OP, I've come to this requirement for a kinda similar application and AFAIK bitcoin doesn't support a strong mechanism for such applications, because incentivising by fee system does not guarantee a smooth and predictable behavior and for my use case, miners would be able to censor the second txn and seize the funds as the parent is an ANYONE_CAN_SPEND txn.

As of my primary assessments the  solution appears to be a nested transaction mechanism (rather than packaging)  in which the child txn embeds the parent in a way that only the two of them can be relayed/verified at once and in a same block. I have thought about a soft-fork proposal for this.

I've discussed it a bit more in details (I mean a bit) here:
https://bitcointalksearch.org/topic/m.49545770
legendary
Activity: 1135
Merit: 1166
Suppose that I have two Bitcoin transactions:  Tx A pays no transaction fees at all.  Tx B spends an output from Tx A and pays fees covering both transactions.  Now in general CPFP should allow me to get both transactions mined together.

But is it actually possible to submit them somehow to the network "as a package"?  If I try to submit them using "submitrawtransaction", I cannot do so because Tx A is rejected (not meeting min relay fee) and Tx B obviously can't be submitted before Tx A is.

(The reason why I'm interested in this is the following:  For a particular decentralised asset exchange I would like to allow makers to create Tx A corresponding to an order and publish them off-chain to some communication platform - they should not need to pay a fee for that.  Only if someone wants to actually take the offer then they would build Tx B on top of it, pay transaction fees, and submit both together.)
Jump to: