Auctioning off newly expired names - a softfork proposal

Post Reply
yanmaani
Posts: 9
Joined: Thu Feb 13, 2020 3:52 pm
os: linux

Auctioning off newly expired names - a softfork proposal

Post by yanmaani »

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).

domob
Posts: 1129
Joined: Mon Jun 24, 2013 11:27 am
Contact:

Re: Auctioning off newly expired names - a softfork proposal

Post by domob »

That is an interesting proposal. I think currently there is no rule that prevents people from taking back out excessive value (above 0.01 NMC) locked in a name, though, so we would have to add this as another part of the soft-fork restriction. Either require the value to never go down (rather than be >=0.01) when performing name updates, or e.g. implicitly burning all excess coins in a name_firstupdate. The latter would have the advantage that excess coins that can be extracted are useful for some atomic trading schemes.

From my point of view, the main drawback here would just be the added complexity. And one could argue that people just should not let their names expire, and if they do, it is their fault if "someone random" gets to pick them up; so we simply shouldn't bother.

@biolizard89: Could this create issues for Electrum-NMC, e.g. in that it is non-trivial to obtain the height when a name expired for the light client and thus it would not be easily possible to implement proper name registration for them?

If we decide that we want to get this done, I can certainly implement it on Namecoin Core's side, at least if Autonomous Worlds can get paid the usual rate from Handshake funds for my time.
BTC: 1domobKsPZ5cWk2kXssD8p8ES1qffGUCm | NMC: NCdomobcmcmVdxC5yxMitojQ4tvAtv99pY
BM-GtQnWM3vcdorfqpKXsmfHQ4rVYPG5pKS
Use your Namecoin identity as OpenID: https://nameid.org/

yanmaani
Posts: 9
Joined: Thu Feb 13, 2020 3:52 pm
os: linux

Re: Auctioning off newly expired names - a softfork proposal

Post by yanmaani »

domob wrote:
Fri Feb 19, 2021 5:56 am
That is an interesting proposal. I think currently there is no rule that prevents people from taking back out excessive value (above 0.01 NMC) locked in a name, though, so we would have to add this as another part of the soft-fork restriction. Either require the value to never go down (rather than be >=0.01) when performing name updates, or e.g. implicitly burning all excess coins in a name_firstupdate. The latter would have the advantage that excess coins that can be extracted are useful for some atomic trading schemes.
Yeah, I forgot to mention that part. My idea was to make it so you can never withdraw more than (X-(1-H))^T NMC. So if your bid was NMC 7.05, the rule that prohibits balances from going below NMC 0.01 would instead kick in at NMC 7.05. If you'd pay 7.05 but were only required to pay 6.08, you'd be able to withdraw the difference of 0.98.

It would be cleaner to burn it at the name_firstupdate though, or at least to forcibly deposit them into the name at that point. Then it's more like a normal auction and less like an all-pay auction, which is more legible and efficient.
domob wrote:
Fri Feb 19, 2021 5:56 am
From my point of view, the main drawback here would just be the added complexity. And one could argue that people just should not let their names expire, and if they do, it is their fault if "someone random" gets to pick them up; so we simply shouldn't bother.
That's true; vae victis. I'd be open to removing that part of the proposal. Putting expiring names to auction is primarily intended for the benefit of the entire system, however. If a name expires, it improves the human-readability of the system that it's allocated to the most economically useful use rather than ~randomly (by P2P execution quality etc)
domob wrote:
Fri Feb 19, 2021 5:56 am
@biolizard89: Could this create issues for Electrum-NMC, e.g. in that it is non-trivial to obtain the height when a name expired for the light client and thus it would not be easily possible to implement proper name registration for them?

If we decide that we want to get this done, I can certainly implement it on Namecoin Core's side, at least if Autonomous Worlds can get paid the usual rate from Handshake funds for my time.
For what it's worth, you could still register unused names like normal, this could only cause problems for names that are presently being auctioned.

domob
Posts: 1129
Joined: Mon Jun 24, 2013 11:27 am
Contact:

Re: Auctioning off newly expired names - a softfork proposal

Post by domob »

Actually, I think that putting the auction value into name_new causes two potential issues:

1) It somewhat goes against the hash commitment behind name_new, as the value locked will likely give people watching the network a clue about what name someone is trying to register. This may not be a big deal, though, as it is expected anyway that expired names are re-registered. It could still incentivise "weird games" between people on the network.

2) If two people try to register a name in the Dutch auction at the same time, we need a way for the losing bidder to get their money back (unless we want that risk to be part of the process as well, which I don't think is a good idea).

Wouldn't it be easier and simpler to instead just require that the name_firstupdate of an expired name burns a certain number of coins (i.e. pays more in inputs than outputs, but the miner is not allowed to get them as part of the block reward)? That would still be a soft fork, and it would solve the two issues above (as well as potentially be even simpler to implement in general).
BTC: 1domobKsPZ5cWk2kXssD8p8ES1qffGUCm | NMC: NCdomobcmcmVdxC5yxMitojQ4tvAtv99pY
BM-GtQnWM3vcdorfqpKXsmfHQ4rVYPG5pKS
Use your Namecoin identity as OpenID: https://nameid.org/

yanmaani
Posts: 9
Joined: Thu Feb 13, 2020 3:52 pm
os: linux

Re: Auctioning off newly expired names - a softfork proposal

Post by yanmaani »

domob wrote:
Mon Feb 22, 2021 8:15 am
Wouldn't it be easier and simpler to instead just require that the name_firstupdate of an expired name burns a certain number of coins (i.e. pays more in inputs than outputs, but the miner is not allowed to get them as part of the block reward)? That would still be a soft fork, and it would solve the two issues above (as well as potentially be even simpler to implement in general).
Yeah, I agree. "It would be cleaner to burn it at the name_firstupdate though[]."

There's a bunch of ways I can see you'd accomplish the nuts and bolts of the auction, and I don't know which is the best:
1) Burn the coins in the name_firstupdate by having them go up in smoke
2) Burn the coins in the name_firstupdate by sending them as OP_RETURN to an hardcoded address
3) Lock the coins in the name_firstupdate by sending them into the name, never allowing their withdrawal, and having them burn when the name expires

End result would be the same, only difference is how it's implemented.

EDIT: There's a pretty rude attack a miner could pull in case 1. If I control 100% of the hashrate, I can avoid mining a bid that wins at block B and above. I'll then submit it in block B+1 and pocket the difference as a tx fee. Let's call this difference N. (With the value of H in the proposal, it's about 14% of the bid). If I control 50% of the hashrate, my reward from doing this attack is 0.5*N, and so on. As long as (hashrate share)*N > marginal tx fee, I stand to gain more from withholding the tx.

If that happens, bidders will have to pay obscene tx fees, which I think is not what we want.

In case 2, there's the risk of an unfortunate race condition. Say I sign and broadcast my transaction at 12:00:00 UTC, and a pool located in a faraway country also finds a block at that very moment. Now my transaction is going to inevitably (let's say) make it into the next block, but it'll be overpaying. I'll have to RBF it or something, and it'll be a mess, through not the end of the world.

So I think that might be an advantage of case 3. I can just let the excess coins go into the name and sort that out later.

Pencroff357
Posts: 3
Joined: Tue Oct 30, 2018 7:29 am
os: linux

Re: Auctioning off newly expired names - a softfork proposal

Post by Pencroff357 »

Well, I don't see anything wrong with that strategy, and isn't it a standard practice on the Internet to sell off expired addresses anyways? Sure, it's not going to earn you millions and millions of dollars or going towards getting you personal safari park or something like the yacht Anna I, but it'll keep funding your venture and will make it easier to keep going.

yanmaani
Posts: 9
Joined: Thu Feb 13, 2020 3:52 pm
os: linux

Re: Auctioning off newly expired names - a softfork proposal

Post by yanmaani »

Pencroff357 wrote:
Sun Feb 28, 2021 8:53 pm
Well, I don't see anything wrong with that strategy, and isn't it a standard practice on the Internet to sell off expired addresses anyways? Sure, it's not going to earn you millions and millions of dollars or going towards getting you personal safari park or something like the yacht Anna I, but it'll keep funding your venture and will make it easier to keep going.
No, the money goes up in smoke, nobody gets it. If the owner wants to make money, the onus is on him to sell the name before it expires.

Post Reply