You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Sep 27, 2023. It is now read-only.
The original purpose behind it was to incentivize people to put a bid as high as they could afford. Also, there is a purpose for the bidding fee: to make sure that you’re not bidding just for the sake of it.
However, the highest bidder which eventually becomes the name owner does not incur such a penalty.
So, there's an asymmetry of outcomes between the participants. The winner gets the name, and no part of their bid is burned, whereas everybody else loses 0.5%.
(Granted, some asymmetry will be there anyway: winner gets the name, and everyone else doesn't. The intent of this proposal is to level the field in every other aspect.)
In a way, the current approach does little to disincentivise hodler-class entities from "parking" ether, by associating it with an ENS name. (Why they'd do this seems OT, so not discussed.)
Currently, the "participation fee" is being forced on calls to unsealBid().
At every such call, two bids are compared. The higher one becomes (or stays) the winning one, and the lower one gets reimbursed, sans the "participation fee", which is burned.
The auction is finalised on call to finalizeAuction(). No part of the winning deed is burned. The difference between the Deed amount and the auction-determined value of the hash is returned via a call to Deed.setBalance().
Possible implementations
Note that an edge case is introduced, where the winning Deed post-burn is lower then the name's value (i.e. the runner-up's Deed pre-burn). This is not touched on below, but is present for (1), (2), and (4).
Absolutely everyone, including the winner, gets the same percentage burned.
Can be done easily during call to finalizeAuction(). The winning Deed is already available there, as h.deed.
No special handling for "only one bid ever made".
Economic reasoning is simple for auction participants: "Whatever you do, X gets burned."
Variant 2: same as runner-up (mentioned by @Arachnid on gitter)
Winner gets same amount burned as the second-highest bidder.
Would require retrieving a reference to the previousWinner deed - most probably by storing it during unsealBid().
Needs handling the case of "only one bid ever made".
Economic reasoning is only slightly more complex: "Most probably, X gets burned - unless this bid wins: then less than X gets burned."
Variant 3: only runner-up (mentioned by @alexvandesande on gitter)
Only the second-highest bidder gets a part burned - everybody else gets away "for free".
Would require reworking revealBid() and finalizeAuction() in tandem, so that becoming the new highest bidder "locks" the relevant Deed, and "unlocks" the third-highest. "Unlocking" the second-highest, a.k.a. the runner-up, should only be possible after the reveal period has ended.
Needs handling:
"only one bid ever made" scenario;
allowing the runner-up to get their Deed back (sans the burned part) after auction end, in case the actual winner never finalises the auction themselves.
Economic reasoning becomes pretty convoluted: "Either nothing or X gets burned - the likelihood depends on the number of participating bids, their size distribution, and luck." Does disincentivise bidding just so the winner gets more of their deed locked up. Doesn't disincentivise ether parking.
Variant 4: runner-up and winner (combination of 1 and 3, or 2 and 3)
Either both the highest bidder and second-highest pay a percentage of their respective bids, or a percentage of the smaller one.
Complex implementation changes - same as those in (3), plus either (1) or (2).
Needs handling special cases, same as (3).
Economic reasoning stays pretty convoluted. Different from (3), ether parking is disincentivised, but that's about it.
A somewhat more draconian approach would be to burn a percentage of the difference between the highest and second-highest bidder.
So you're willing to bid 1000 ETH on superfancy.eth, but the next bid says 10 ETH? Okay, you've got it! The value is 10 ETH, and burn 4.95 ETH ((1000-10) * 0.5%).
EDIT: The highest bidder could place a secondary bid for 900. Then 4.5 ETH of that would be burned (900 * 0.5%), and an additional 0.5 ETH ((1000-900) * 0.5%). That is, 5.00 ETH.
This has the property of disincentiving to bid several times.
A somewhat more draconian approach would be to burn a percentage of the difference between the highest and second-highest bidder.
This would discourage people from bidding their true value for a name, and instead force them to try and game out how much they think others would bid.
What's proposed here maybe becomes irrelevant if the registrar transitions to a rent-based model, where the winner already incurs a "participation fee", continuously.
Summary
Currently, auction losers in the
.eth
simplified hash registrar pay a 0.5% "participation fee", which gets burned.@alexvandesande on gitter:
However, the highest bidder which eventually becomes the name owner does not incur such a penalty.
So, there's an asymmetry of outcomes between the participants. The winner gets the name, and no part of their bid is burned, whereas everybody else loses 0.5%.
(Granted, some asymmetry will be there anyway: winner gets the name, and everyone else doesn't. The intent of this proposal is to level the field in every other aspect.)
In a way, the current approach does little to disincentivise hodler-class entities from "parking" ether, by associating it with an ENS name. (Why they'd do this seems OT, so not discussed.)
Current implementation
(
git
tagmainnet
is currently commit 7e377df.)Currently, the "participation fee" is being forced on calls to
unsealBid()
.At every such call, two bids are compared. The higher one becomes (or stays) the winning one, and the lower one gets reimbursed, sans the "participation fee", which is burned.
The auction is finalised on call to
finalizeAuction()
. No part of the winning deed is burned. The difference between theDeed
amount and the auction-determinedvalue
of the hash is returned via a call toDeed.setBalance()
.Possible implementations
Note that an edge case is introduced, where the winning
Deed
post-burn is lower then the name'svalue
(i.e. the runner-up'sDeed
pre-burn). This is not touched on below, but is present for (1), (2), and (4).Variant 1: uniform (mentioned by @veox on gitter)
Absolutely everyone, including the winner, gets the same percentage burned.
Can be done easily during call to
finalizeAuction()
. The winningDeed
is already available there, ash.deed
.No special handling for "only one bid ever made".
Economic reasoning is simple for auction participants: "Whatever you do, X gets burned."
Variant 2: same as runner-up (mentioned by @Arachnid on gitter)
Winner gets same amount burned as the second-highest bidder.
Would require retrieving a reference to the
previousWinner
deed - most probably by storing it duringunsealBid()
.Needs handling the case of "only one bid ever made".
Economic reasoning is only slightly more complex: "Most probably, X gets burned - unless this bid wins: then less than X gets burned."
Variant 3: only runner-up (mentioned by @alexvandesande on gitter)
Only the second-highest bidder gets a part burned - everybody else gets away "for free".
Would require reworking
revealBid()
andfinalizeAuction()
in tandem, so that becoming the new highest bidder "locks" the relevantDeed
, and "unlocks" the third-highest. "Unlocking" the second-highest, a.k.a. the runner-up, should only be possible after the reveal period has ended.Needs handling:
Deed
back (sans the burned part) after auction end, in case the actual winner never finalises the auction themselves.Economic reasoning becomes pretty convoluted: "Either nothing or X gets burned - the likelihood depends on the number of participating bids, their size distribution, and luck." Does disincentivise bidding just so the winner gets more of their deed locked up. Doesn't disincentivise ether parking.
Variant 4: runner-up and winner (combination of 1 and 3, or 2 and 3)
Either both the highest bidder and second-highest pay a percentage of their respective bids, or a percentage of the smaller one.
Complex implementation changes - same as those in (3), plus either (1) or (2).
Needs handling special cases, same as (3).
Economic reasoning stays pretty convoluted. Different from (3), ether parking is disincentivised, but that's about it.
Notes
Possibly relevant - EIP 162: Initial ENS Registrar Specification (ATM an issue, not an in-repo file).
Variant (1) above seems "most fair" to me, but I'm obviously biased. :) It also seems simplest to implement and explain.
Meta
Issue could use tag: permanent registrar
The text was updated successfully, but these errors were encountered: