Auctioning off newly expired names - a softfork proposal
Posted: Thu Feb 18, 2021 10:33 pm
When a name expires, anyone can register it for 0.01 NMC, as long as they performed a name_new 12 blocks before it did. There's no preference to the owner, and there's no real system of deciding who gets it.
When there's no real system, that means it's up to the miners to decide. This has several issues:
1) This adds MEV, miner-extractable value, like a very juicy transaction fee. If one block contains MEV many times greater than the block reward, miners would sooner re-mine that block over and over again than try to mine new blocks. [1]
2) P2P fee auctions are economically inefficient, taking place over too short a time and having lax guarantees of correctness. In practice, the first bidder always wins; having paid 0.01 NMC, their incentives to put effort into liquidating the names are limited. [2]
3) Miners with nonpecuniary incentives can forego their MEV to steal any expiring name at zero cost (albeit some opportunity cost). [3]
For this reason, I'd like to propose that expiring names be sold by Dutch auction, as follows:
1) The block after a name has expired, only name_new inputs [4] with a value of at least NMC X [5] should be considered.
2) Each passing block, decrease X by H% [6], until the minimum fee reaches NMC 0.01, at which point the auction would have ended with no takers.
3) The previous owner should not be subject to the additional limit in (1) if he furthermore signs his registration transaction with the script of the UTXO that last controlled the name. He would do so by creating an intermediate NMC 0-output UTXO with the same scriptPubKey as the it, and then immediately using it as an additional input to a CPFP transaction that creates the name_firstupdate.
This change would ensure that the name is allocated to whoever values it the most, unless the previous owner still wants it. That should be in keeping with Namecoin's dual goals [7] of efficiency of namespace allocation and security of custody.
For old clients, auctions under this system would simply appear on the chain as names being registered with excessive coin lockups. A name owner invoking the "escape hatch" would appear on the chain as a circuitous transaction resulting in a normal name registration. The change would thus be a soft fork.
---
Footnotes:
1: For more discussion regarding the concept of MEV, see "On the Instability of Bitcoin Without the Block Reward" <https://www.cs.princeton.edu/~arvindn/p ... ng_CCS.pdf> and "Flash Boys 2.0" <https://arxiv.org/pdf/1904.05234.pdf>.
2: One name speculator I spoke to said he did not bother trying to seek out buyers at all. A bug currently prevents name registration transactions from being replaced by competing higher-fee transactions.
3: While most pools today are primarily incentivized by on-chain block rewards, exceptions do exist, such as Blockseer's unnamed planned mining pool <https://stockhouse.com/news/press-relea ... ed-on-good>. For more discussion of this concept, see "Bitcoin Miner Transaction Fee Gathering Capability" <https://blog.bitmex.com/bitcoin-miner-t ... apability/>.
4: These outputs would have to be registered at least 12 blocks before the name expired, and so on. Punters might be incentivized to use a static salt for the name_new commitment, lest the auction degenerate into a Tullock auction.
5: There's no good reason not to set X = NMC 21'000'000, the total supply cap. If prices are to reach NMC 0.01, it would only take less than twice as long to do so starting from NMC 21'000'000 than it would starting from NMC 500, a clearly inadequate number.
6: For an auction time of T blocks, H = (0.01/X)^(1/T) - 1. For an auction time of 24 hours (T = 144), H = (0.01/21000000)^(1/144) - 1 = -14% per block.
7: If names are too cheap to buy and keep in perpetuity, the system no longer human-readable (but eminently secure). If others' names can be bought without their consent <viewtopic.php?f=5&t=2755>, the system is no longer secure (but eminently human-readable).
When there's no real system, that means it's up to the miners to decide. This has several issues:
1) This adds MEV, miner-extractable value, like a very juicy transaction fee. If one block contains MEV many times greater than the block reward, miners would sooner re-mine that block over and over again than try to mine new blocks. [1]
2) P2P fee auctions are economically inefficient, taking place over too short a time and having lax guarantees of correctness. In practice, the first bidder always wins; having paid 0.01 NMC, their incentives to put effort into liquidating the names are limited. [2]
3) Miners with nonpecuniary incentives can forego their MEV to steal any expiring name at zero cost (albeit some opportunity cost). [3]
For this reason, I'd like to propose that expiring names be sold by Dutch auction, as follows:
1) The block after a name has expired, only name_new inputs [4] with a value of at least NMC X [5] should be considered.
2) Each passing block, decrease X by H% [6], until the minimum fee reaches NMC 0.01, at which point the auction would have ended with no takers.
3) The previous owner should not be subject to the additional limit in (1) if he furthermore signs his registration transaction with the script of the UTXO that last controlled the name. He would do so by creating an intermediate NMC 0-output UTXO with the same scriptPubKey as the it, and then immediately using it as an additional input to a CPFP transaction that creates the name_firstupdate.
This change would ensure that the name is allocated to whoever values it the most, unless the previous owner still wants it. That should be in keeping with Namecoin's dual goals [7] of efficiency of namespace allocation and security of custody.
For old clients, auctions under this system would simply appear on the chain as names being registered with excessive coin lockups. A name owner invoking the "escape hatch" would appear on the chain as a circuitous transaction resulting in a normal name registration. The change would thus be a soft fork.
---
Footnotes:
1: For more discussion regarding the concept of MEV, see "On the Instability of Bitcoin Without the Block Reward" <https://www.cs.princeton.edu/~arvindn/p ... ng_CCS.pdf> and "Flash Boys 2.0" <https://arxiv.org/pdf/1904.05234.pdf>.
2: One name speculator I spoke to said he did not bother trying to seek out buyers at all. A bug currently prevents name registration transactions from being replaced by competing higher-fee transactions.
3: While most pools today are primarily incentivized by on-chain block rewards, exceptions do exist, such as Blockseer's unnamed planned mining pool <https://stockhouse.com/news/press-relea ... ed-on-good>. For more discussion of this concept, see "Bitcoin Miner Transaction Fee Gathering Capability" <https://blog.bitmex.com/bitcoin-miner-t ... apability/>.
4: These outputs would have to be registered at least 12 blocks before the name expired, and so on. Punters might be incentivized to use a static salt for the name_new commitment, lest the auction degenerate into a Tullock auction.
5: There's no good reason not to set X = NMC 21'000'000, the total supply cap. If prices are to reach NMC 0.01, it would only take less than twice as long to do so starting from NMC 21'000'000 than it would starting from NMC 500, a clearly inadequate number.
6: For an auction time of T blocks, H = (0.01/X)^(1/T) - 1. For an auction time of 24 hours (T = 144), H = (0.01/21000000)^(1/144) - 1 = -14% per block.
7: If names are too cheap to buy and keep in perpetuity, the system no longer human-readable (but eminently secure). If others' names can be bought without their consent <viewtopic.php?f=5&t=2755>, the system is no longer secure (but eminently human-readable).