[bitcoin-dev] Softfork proposal for minimum price of $50k USD/BTC

Certain parts of the community have been selling bitcoins for unreasonably low prices. This has halted Bitcoin's valuation at $20k and even driven the price down below $15k! However, clearly Bitcoin is worth much more than that, and there is widespread support for higher prices. In light of this, I have written and implemented two BIPs: one to add a signed price field to Bitcoin transactions, and the other to softfork a minimum price of $50k USD/BTC a year from today. The BIPs are here, as well as included at the bottom of this email for convenience: https://github.com/luke-jr/bips/blob/softfork_50k/bip-usdprice.mediawiki https://github.com/luke-jr/bips/blob/softfork_50k/bip-softfork-50k-price.mediawiki A reference implementation is here: https://github.com/bitcoin/bitcoin/compare/v0.17.1...luke-jr:softfork_50k Please review ASAP so we can get these deployed in Bitcoin Core v0.18. Luke <pre> BIP: ? Layer: Applications Title: Signed USD Price Indicator Author: Luke Dashjr <luke+bip at dashjr.org> Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-???? Status: Draft Type: Standards Track Created: 2019-04-01 License: BSD-2-Clause </pre> ==Abstract== This BIP proposes a method to explicitly specify and sign the USD/BTC price for transactions. ==Copyright== This BIP is licensed under the BSD 2-clause license. ==Motivation== Certain parts of the community have been selling bitcoins for unreasonably low prices. This has halted Bitcoin's valuation at $20k and even driven the price down below $15k! However, clearly Bitcoin is worth much more than that, and there is widespread support for higher prices. This problem can be fixed by setting a global minimum price for bitcoins. Unfortunately, today, the consensus protocol is completely oblivious to the price bitcoins are traded at. Therefore, we must first add a field to Bitcoin transactions to indicate their price. ==Specification== ===New field and legal implication=== A new field is added to Bitcoin transactions. This field, if present, must represent the honest and true USD/BTC rate used for the transaction. By signing the transaction, the sender legally affirms this is the valuation of bitcoins used for the transaction. For the avoidance of doubt: when the transaction is valued in a currency other than USD, any reasonable exchange rate may be used to come up with the USD valuation. ===Serialisation=== When serialising the transaction for any purpose, including signing, weight calculation, and so on, the output count must be incremented by one. Prior to the first real output, the following bytes must be inserted: * Constant: 00 00 00 00 00 00 00 00 * A single byte, the size in bytes of the remainder of the inserted data * Constant: 6a 04 55 53 44 24 * A single byte, the size in bytes of the remainder of the inserted data * The USD/BTC rate used for the transaction, in standard signed integer serialisation, with all leading zeros removed (except as necessary to preserve the sign bit). ==Backwards compatibility== ===Consensus=== The new price field is serialised as a dummy output, with a value of zero, and a scriptPubKey that begins with OP_RETURN (6a). Existing nodes will ignore this dummy output, and the leading OP_RETURN in the scriptPubKey ensures it is never considered spendable. Therefore, current nodes will ignore the new field entirely, and accept transactions using it. ===Wallets=== Existing wallets do not typically generate price indicators as specified. Under this BIP, this absence of the field is perfectly acceptable. ==Reference implementation== https://github.com/bitcoin/bitcoin/compare/v0.17.1...luke-jr:usd_price_tx_field <pre> BIP: ? Layer: Consensus (soft fork) Title: $50k USD/BTC Minimum Price Author: Luke Dashjr <luke+bip at dashjr.org> Comments-Summary: No comments yet. Comments-URI: https://github.com/bitcoin/bips/wiki/Comments:BIP-???? Status: Draft Type: Standards Track Created: 2019-04-01 License: BSD-2-Clause Requires: usdprice </pre> ==Abstract== This BIP defines a minimum price of $50k USD/BTC for Bitcoin transactions. ==Copyright== This BIP is licensed under the BSD 2-clause license. ==Motivation== Certain parts of the community have been selling bitcoins for unreasonably low prices. This has halted Bitcoin's valuation at $20k and even driven the price down below $15k! However, clearly Bitcoin is worth much more than that, and there is widespread support for higher prices. bip-usdprice defines a new field to indicate the price of transactions. Using this, we can softfork to require a minimum transaction price. ==Specification== Beginning with block height 622370 (expected approximately 2020 April 1), a block is reject as invalid unless all transactions it contains both declare a USD/BTC price (as defined in bip-usdprice) and specify a price that is at a minimum $50k USD/BTC. ==Backwards compatibility== As a soft fork, older nodes will continue to accept the blockchain without modification. Non-upgraded nodes, however, will not validate the minimum price requirement, and may accept invalid blocks if miners choose to make them. Since transactions not declaring a price are at this time still common-place, the softfork activation has been set a full year into the future to ensure time to upgrade both nodes and wallet software. ==Reference implementation== https://github.com/luke-jr/bitcoin/compare/usd_price_tx_field...softfork_50k