Problem
I postulate that the fee market concept has become a detriment to Bitcoin. Proof-of-Work has been invaluable to determine the validity of blocks and the same concept can be used to determine the suitability and priority of transactions.
History
Transaction suitability used to be determined through a formula that took into account the age of the coins, the size of the amount being transferred, the size of the transaction, and the transaction fee. As of Bitcoin Core 12.0, this was grossly over-simplified so now the only way to determine transaction priority and suitability is by increasing transaction fees.
Solution Summary
The goal is to allow wallets and services to craft transactions and use CPU cycles coupled with a small standard miners fee to prove that the transaction is not spam. This will allow miners to prioritize TxPoW enabled transactions for inclusion in blocks before prioritizing transaction fees. The result will be the crippling of the fee market concept.
Solution Details
There are a few ways to accomplish PoW within transactions but I think the simplest soft-fork method is to use OP_RETURN. This allows TxPow to be used to prioritize transactions in the mempool and the TxPoW can be pruned in the future.
OP_RETURN format
TxPoW:ripemd160:a45bc201:1
Full nodes and mining nodes can verify the TxPoW by concatting all the txid’s and SHA256’ing them and adding the OP_RETURN published nonce and running it through RIPEMD-160 to determine the number of prepending 0’s. If the TxPoW hash is prepended by at least one 0 and has a fee of at least 0.000001 BTC/byte (for example), then the transaction will be accepted and placed in the mempool.
The mempool will be sorted first by PoW score (number of prepending 0’s) and then by tx fee, so transaction A paying 0.000001 BTC/byte with a TxPoW starting with 00[...] will have higher priority than transaction B paying 0.00001 BTC/byte with a TxPoW starting with 0[...] even though transaction B is paying 10 times the transaction fee.
Only after all transactions with TxPoW functions are processed will transactions with fees but no TxPoW be included, in the regular order of "highest fee first".
Repercussions
Overtime, a “difficulty market” will develop where developers pay attention to the PoW used in mempools to determine how much work they should do in order to prioritize transactions.
If PoW transactions have priority by a significant percentage of miners, end users will want to use compatible wallets to keep their transaction fees low. If Core refuses to implement TxPoW and if node implementations that support it have enough hash power, it’ll encourage users and businesses to support TxPoW node implementations. This will prevent the success of any USAF attempts.
This will bring back viability of small value transactions if the sender is willing to do work to prove that it’s not spam.
Future Work
If such a proposal is accepted, new features will be desired in wallets such as the ability to track what TxPoW is necessary to have a transaction likely to be included in the next block, ability to set TxPoW calculation timeouts (i.e. give me the best TxPoW possible in 1 second of CPU time), ability to set TxPoW calculation goals (i.e. work until TxPow starts with 000[...]), etc.
Conclusion
BU and other full node implementations that consider BUIPs have enough hash power to stop the growth of the destructive fee market. If implemented, using TxPoW coupled with reasonable but small transaction fees instead of transaction fees alone will cause companies with large economic stakes to want to implement BU.
Your thoughts? Suggestions?
I postulate that the fee market concept has become a detriment to Bitcoin. Proof-of-Work has been invaluable to determine the validity of blocks and the same concept can be used to determine the suitability and priority of transactions.
History
Transaction suitability used to be determined through a formula that took into account the age of the coins, the size of the amount being transferred, the size of the transaction, and the transaction fee. As of Bitcoin Core 12.0, this was grossly over-simplified so now the only way to determine transaction priority and suitability is by increasing transaction fees.
Solution Summary
The goal is to allow wallets and services to craft transactions and use CPU cycles coupled with a small standard miners fee to prove that the transaction is not spam. This will allow miners to prioritize TxPoW enabled transactions for inclusion in blocks before prioritizing transaction fees. The result will be the crippling of the fee market concept.
Solution Details
There are a few ways to accomplish PoW within transactions but I think the simplest soft-fork method is to use OP_RETURN. This allows TxPow to be used to prioritize transactions in the mempool and the TxPoW can be pruned in the future.
- Concat all the vin txid's into one string
- Create the txin-hash by SHA256'ing the string
- Add a random 8 character hex nonce to the txin-hash, hash again with RIPEMD-160, and count the number of prepending 0's.
- Adjust the nonce and repeat until there are a significant number of prepending 0's in the resulting TxPow
- When the client is satisfied that the TxPoW is significant enough to ensure priority processing, publish the nonce in OP_RETURN in a specific format for easy analysis and verification
OP_RETURN format
TxPoW:ripemd160:a45bc201:1
Where 'TxPoW' indicates what data the OP_RETURN is holding
Where 'ripemd160' indicates what hashing algorithm is used. This allows for future changes to the hash method. An integer indicating the method is also acceptable (0 could be RIPEMD160)
Where 'a45bc201' is an example 8 character hex nonce to add to the txin-hash
Where '1' is the number of prepending 0’s the resulting hash will have (which will be verified, but included for ease of processing and analysis)
Where 'ripemd160' indicates what hashing algorithm is used. This allows for future changes to the hash method. An integer indicating the method is also acceptable (0 could be RIPEMD160)
Where 'a45bc201' is an example 8 character hex nonce to add to the txin-hash
Where '1' is the number of prepending 0’s the resulting hash will have (which will be verified, but included for ease of processing and analysis)
Full nodes and mining nodes can verify the TxPoW by concatting all the txid’s and SHA256’ing them and adding the OP_RETURN published nonce and running it through RIPEMD-160 to determine the number of prepending 0’s. If the TxPoW hash is prepended by at least one 0 and has a fee of at least 0.000001 BTC/byte (for example), then the transaction will be accepted and placed in the mempool.
The mempool will be sorted first by PoW score (number of prepending 0’s) and then by tx fee, so transaction A paying 0.000001 BTC/byte with a TxPoW starting with 00[...] will have higher priority than transaction B paying 0.00001 BTC/byte with a TxPoW starting with 0[...] even though transaction B is paying 10 times the transaction fee.
Only after all transactions with TxPoW functions are processed will transactions with fees but no TxPoW be included, in the regular order of "highest fee first".
Repercussions
Overtime, a “difficulty market” will develop where developers pay attention to the PoW used in mempools to determine how much work they should do in order to prioritize transactions.
If PoW transactions have priority by a significant percentage of miners, end users will want to use compatible wallets to keep their transaction fees low. If Core refuses to implement TxPoW and if node implementations that support it have enough hash power, it’ll encourage users and businesses to support TxPoW node implementations. This will prevent the success of any USAF attempts.
This will bring back viability of small value transactions if the sender is willing to do work to prove that it’s not spam.
Future Work
If such a proposal is accepted, new features will be desired in wallets such as the ability to track what TxPoW is necessary to have a transaction likely to be included in the next block, ability to set TxPoW calculation timeouts (i.e. give me the best TxPoW possible in 1 second of CPU time), ability to set TxPoW calculation goals (i.e. work until TxPow starts with 000[...]), etc.
Conclusion
BU and other full node implementations that consider BUIPs have enough hash power to stop the growth of the destructive fee market. If implemented, using TxPoW coupled with reasonable but small transaction fees instead of transaction fees alone will cause companies with large economic stakes to want to implement BU.
Your thoughts? Suggestions?
Last edited: