On Fri, Jul 10, 2015 at 5:09 PM, Richard Moore <me@ricmoo.com> wrote:I was also wondering, with CPFP, should the transaction fee be based on total transactions size, or the sum of each transaction’s required fee? For example, a third transaction C whose unconfirmed utxo from transaction B has an unconfirmed utxo in transaction A (all of A’s inputs are confirmed), with each A, B and C being ~300bytes, should C’s transaction fee be 0.0001 btc for the ~1kb it is about to commit to the blockchain, or 0.0003 btc for the 3 transactions it is going to commit.It should be whatever gives the highest fee. In effect, child pays for parent creates compound transactions.A: 250 bytes, 0 feeB: 300 bytes: 0.0005 feeC: 400 bytes: 0.0001 feeThere are 3 combinations to considerA: 0 fee for 250 bytes = 0 per byteA&B: 0.0005 fee for 550 bytes = 0.91 uBTC per byteA&B&C: 0.0006 fee for 950 bytes = 0.63uBTC per byteThis means that the A&B combination has the best fee per byte value. A&B should be added to the memory pool (if 0.91 uBTC per byte is above the threshold).Once A&B are added, then C can be reconsidered on its own.C: 0.0001 for 400 bytes = 0.25 BTC per byteIf that is above the threshold, then C should be added.In practice, it isn't possible to check every combination. If there are N transactions, then checking all triple combinations costs around N cubed.A 2 pass system could get a reasonably efficient result.B is 0.0005 fee for 300 bytes = 1.67 uBTC per byte and is assumed to be a high value transaction.The algorithm would bePass 1:Process all transactions in order of BTC per byte, until block is full
If the transaction's parents are either already in the pool or a previous block, add the transaction.Pass 1:Process all non-included transactions in order of BTC per byte, until block is full
If the transaction's parents are either already in the pool or a previous block, add the transaction.Otherwise, consider the transaction plus all non-included ancestors as a single transactionIf this combined transaction has a higher BTC per byte than the lowest transaction(s),
add the combined transactiondrop the other transaction(s)
_______________________________________________
bitcoin-dev mailing list
bitcoin-dev@lists.linuxfoundation.org
https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev