Check how EOS account name auction process works!

eosBLACK
eosBLACK
Sep 7, 2018 · 6 min read

Hello, this is eosBLACK team!

Following the last ‘How to do Airdrop’, the story we are going to tell you about is the EOSIO account name auction. Please take a look at how EOSIO’s auction system works and think about which part could be improved better.

Let’s check Daniel Larimer’s proposal first!

Dan’s suggestion

Prior to launching the mainnet, Dan proposed a “name auction house” to prevent the unchanging of names as follows:

https://github.com/EOSIO/eos/issues/3189

Simply put,

1.The name, xyz.com, can only be created by someone with an account called com

2. For the “premium name” that can affix “.”, the person who proposed the maximum value can have ownership once a day

The “Top Name Bids” on the bottom right of eosflare.io is the system that Dan has proposed. I know that bidding is done every 24 hours under this system, but when I saw there was no change even after a few days, my curiosity drove me to figure out what happened.

Name bid on the bottom right of Eosflare.io

First, let’s learn about EOS accounts

To talk about the name bidding, I think you should know about what is EOS account. EOS accounts are required to consist of 12 characters made of lower-case English letters, a through z, numbers 1 through 5, or a combination of the two. You naturally will come to grumble, “Do we have to make it 12 characters?” during this process of course. If the name that is familiar is less than 12 characters, I have to insert meaningless characters to make it 12 characters.

But then the question arises, “Do I have to make an account of 12 characters?”

For accounts under 12 characters, EOS provides a system where participants can suggest their desired prices by submitting them during an auction. The rule is that only one account name with the highest bidding price can be auctioned off every 24 hours among all submitted account names. In other words, the system requires a bidding to be successful only when the suggested bidding price is the highest among all other account bidding prices suggested by people.

It means that you can make a 12-character general account or if you do not want to fill in 12 characters, then you would have to buy it through an account name auction. We may then think, “Aha! we can create our own premium account name, like a domain, other than our regular account!”

The reason we participate in such an auction, even while paying exorbitant costs, is that we earn the right to create a subaccount, like a domain, with the account name as the suffix.

Examining the system further

However, commonsensically, premium names have different values, so we were assured that the person who submitted the maximum value for each name would be the winner. However, I began to grow a sense of doubt from the fact that the person who suggested the maximum value among the entire list becomes the winner of the day in the actual implementation. I do not understand how there is only one winner among numerous name bids. Moreover, even if you have ownership, the name auction coming to a halt is inevitable if you do not create an account.

How the actual process works:

  1. Users bidding a favorite name requires transferring the name and bidding amount by using the bid name action of the eosio contract
  2. Information is stored in the name bids table
  3. The onblock function in producer_pay.cpp is executed every minute
  4. After one day has passed since last ownership acknowledgement time
  5. Using the highbid index of this name bids table, select the top-level bidder and change the bid amount to a negative number
  6. For information with a negative bid amount, ownership is acknowledged to prevent further participation in the bid

Multi-index name bids are based on the name bid structure in eosio.system.hpp. However, the highbid index of this structure returns the negative value of the structure member high bid for sorting in reverse order. The onblock function selects and uses the first value of this index. This value is always returned if the highest value is already set to be negative.

https://github.com/EOSIO/eos/blob/v1.2.1/contracts/eosio.system/producer_pay.cpp#L52

In other words, as long as there is such bidding information, future ownership assignments will no longer work.

The severity of this problem is more apparent when you look at the name bids table in the current mainnet state (08.16.2018 T04:56:32 UTC).

At the very top, the bid value named app is negative. Ownership has been granted to the bidder, f2poolshenyu. It is difficult to figure out the date with a numeric value, so let’s take a look at bid name info.

Ownership has been likely granted from at least after August 4, 2018, and since the bidder has not created an account with the bidden name, the lower bidders have not been granted ownership for 12 days.

The final bid of the fifth bidder, dex, was made as long ago as last month.

Currently, this problem has been fixed by obtaining a positive value from the high bid index to the repository called, eosio.contract, and is awaiting distribution.

https://github.com/EOSIO/eosio.contracts/blob/v1.2.0/eosio.system/src/producer_pay.cpp#L57

Considering points of improvement

I was dissatisfied that the contributors managing the EOSIO repository simply closed the issue saying that it’s just a function, without any explanation and concern, despite my raising the problem as an issue.

https://github.com/EOSIO/eos/issues/5140

Anyway, if it is operated in the way that the maximum value in the entire name bidding is considered to be the winner, I am wondering if people, who plan to prepare an eos-based DApp and use a sub-account separated by a “.,” will be able to formulate a normal business plan. I do not understand why there is no confirmation about when the ownership of the name that I requested is granted.

For now, even if the prepared system contracts are distributed via the consultation of BPs, there is no choice but to wait for a day after a bid, with a value higher than “6050.0002 EOS,” in order to quickly ensure that I get the name I want.

As a suggestion, I think that many of the complaints from users preparing DApp related to the premium names in eos will only be resolved once annotating day-to-day checks above the aforementioned code.

https://github.com/EOSIO/eosio.contracts/blob/v1.2.0/eosio.system/src/producer_pay.cpp#L54

It is because the value of the individual premium name, rather than the integrated value, will be recognized, and above all, it will be possible to predict when the premium name is secured.

Conclusion

This was an opportunity to put EOSIO into perspective while learning about the account name bidding system, which I might just overlook. In the future, I will keep a journal of my experiences during development and would appreciate your feedback. Be sure to stay tuned!

Thank you.

Yours sincerely,

eosBLACK team.

eosBLACK Contact:

eosBLACK Homepage
eosBLACK Koreos
eosBLACK Medium
eosBLACK steemit
eosBLACK Facebook
eosBLACK twitter
eosBLACK Telegram(Korean)
eosBLACK Telegram(English)

White Paper (Chinese)
White Paper (Korean)
White Paper (English)

eosBLACK

eosBLACK is a blockchain ecosystem in which a fair compensation is given back to its members for their participation. It also makes block generators more responsible, while providing an attractive development environment for developers.

eosBLACK

Written by

eosBLACK

Building decentralized technologies to change the Blockchain ecosystem.

eosBLACK

eosBLACK

eosBLACK is a blockchain ecosystem in which a fair compensation is given back to its members for their participation. It also makes block generators more responsible, while providing an attractive development environment for developers.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade