Bitcoin Forum

Bitcoin => Bitcoin Discussion => Topic started by: d4n13 on July 15, 2015, 07:46:21 AM



Title: CPFP Enabled Wallet Community Bounty Campain
Post by: d4n13 on July 15, 2015, 07:46:21 AM
CPFP (Child Pays for Parent) Bounty donation address
3FEUByMeaxrNmBCVYjvsnhyAjiUdat5i7M

Note, this is a multisig address, I can't spend the funds.

I'm starting a bounty campaign to try to raise funds to get wallets that can retrieve unconfirmed transactions from the mempool.  The current spam attach is still causing a number of users to have transactions drown in the mempool.  Setting proper transaction fees will unquestionably fix any future transactions that they make, but general users lack the ability to do anything about the transactions they have already sent.

How CPFP (Child Pays For Parent's fee) works
I tried to explain it here (https://github.com/d4n13/bips/blob/master/bip-00nn.mediawiki) before I knew what it was.

Transactions in bitcoin are actually chained together.  Each transaction has an input and output.  New input links to old output.  So lets call the transaction you want to rescue the "parent".  To employ a CPFP rescue attempt, we create a new transaction ("child") that spends (links to) the parents outputs.  This new child transaction will be coded with generous fees.  When a CPFP miner like Eligius sees the pair of transactions, they are scooped up and included in the block.  So adding the high fee "child" transaction pulls the "parent" out of the mempool.

What do Wallets Need to Do?
Most wallet software is in a perfect position to see what unconfirmed transactions in the mempool are related to the user.  It would be technically straight forward for the wallet to alert users that their unconfirmed transactions are being passed over.  More over, it they could provide a "Rescue Transaction" or "Deploy Lifegarud" button.  In either case, the wallet would examine the drowning transaction (incoming or outgoing) and chain a new high-fee transaction to it.

Does it really work?
Yes, I pulled a transaction out of the mempool after 188 hours (8 days).  The whole history is viewable on TradeBlock (https://tradeblock.com/blockchain/) since they are less agressive about purging their mempool.

Here is my original parent transaction that I sent:
Parent: 358762a9f2fcbd141eae29a8df82a822930428605f4a033e53baaaa377d3df4a (https://tradeblock.com/blockchain/tx/358762a9f2fcbd141eae29a8df82a822930428605f4a033e53baaaa377d3df4a)
Here is the "Lifegaurd" I sent in directly to Eligius:
Child: 8ef3eec72db231feedc1d5e1e5b24f36e290c94344f86822202378320f8380d9 (https://tradeblock.com/blockchain/tx/8ef3eec72db231feedc1d5e1e5b24f36e290c94344f86822202378320f8380d9)

What miners process CPFP?
Currently only Eligius processes these transactions.  They make up about 5% of the current miners pool.  They usually win about 5-6 blocks a day, so it won't be immediate, but if someone has been waiting 12 hours, it will sure be a relief.

Is CPFP the only option?
No, there is RBF (Replace by Fee) that does the same thing, but as a kind of sanctioned double-spend.  There is already a $1000 bounty (https://bitcointalk.org/index.php?topic=179612.0) out for the first developer to get that one to stick.

Volunteer Lifeguard Service
If you just need your transaction out of hock and don't care about the long view... I have set up a non-profit transaction rescue service (https://bitcointalk.org/index.php?topic=1123063.0) that will also serve to fund the campain.

https://i.imgur.com/J5Dq5OS.png


Title: Re: CPFP Enabled Wallet Community Bounty Campain
Post by: d4n13 on July 15, 2015, 03:26:36 PM
Donations....
  • d4n13 (https://blockchain.info/tx/d812a778c501e9bfc500b0a6e0bc415d8513a0b5935e8bd14270f26cc038b662)
  • Anonymous (https://blockchain.info/tx/7e3c1395498244a2b59e1eec3c567fa87fedad4ae638f7185e83a3f70db3166a) Thank you!
  • Anonymous (https://blockchain.info/tx/c7367e9440c7e5fc8b6beb07066158be29a3b8f6d0ca5d4102a754eeef04d558) Thank you!