We have noticed many users in the EOS community talking about Block.one’s tokens, but there seems to always be some confusion around their vesting schedule. We at EOS Canada wanted to clear this up and present the code that handles this -- providing you with the definitive answer!
Looking at Block.one’s Account
Block.one gave themselves the first custom short name and namespace on the EOS mainnet, b1
. When they had their year-long token distribution, they sold 900 million tokens. The remaining 100 million tokens were put into their account b1
.
If we want to take a look at the b1
account to see what has happened on it since launch, we can easily cut through all of the random notifications it has received by using eosq’s search language.
You will find here that the only two actions this account has authorized was to update their owner
and active
permissions, and replace them each with a 2-of-3 multisig.
Their account was created with 10 liquid EOS tokens, and 499,995.005 staked for each CPU and Network bandwidth. The extra 0.01 EOS was because someone sent the b1
account 0.01 EOS pre-launch as a joke.
So When Do Block.one’s Tokens Become Available?
Block.one’s tokens are currently all held in their account, although they are only able to unstake a certain amount of those tokens based on a time-delay. If we review the system contract that deals with delegation for an EOSIO blockchain, and scroll down to the function validate_b1_vesting
we find a few things to note.
The first line defines the base time (as a UNIX timestamp) as being 1527811200, which corresponds to 12:00am UTC on June 1, 2018.
The second line defines the max_claimable
tokens, which is equal to the 100 million tokens they were distributed. This number is displayed as 100’000’000’0000
, this is because there are 4 decimal places for the EOS token. Within the source code it is always written as an integer to guarantee no loss in precision due to the size of the number.
The next line is the actual calculation that controls the amount of EOS tokens that the account b1
is allowed to unstake at any given point in time.
int64_t claimable = int64_t(max_claimable * double(now()-base_time) / (10*seconds_per_year) )
If we were to rewrite this equation in plain English, it would read as:Integer of ( ( 100 million * (current timestamp - timestamp at June 1, 2018) ) / amount of seconds in 10 years )
An Example
Let’s take January 1st, 2019 at 00:00 UTC and see how many tokens Block.one could have made available to themselves at that point.
If we look up the timestamp for that date we get 1546300800. So the calculation would then become:(100000000*(1546300800-1527811200))/(10*52*7*24*3600)
It’s worth noting that the definition for seconds_per_year
is actually slightly off, as they use 52 weeks multiplied by 7 days, which equals 364 days in a year. Of course this is one day off from 365 days, plus in 2020, 2024, and 2028 it will be 2 days off due to those being a leap year.
So as of January 1st, 2019, based on the above calculation, Block.one would have been able to unstake a total of 5,879,120 tokens.
How Come Block.one Doesn’t Split Up Their Tokens to Vote?
Many users have asked into the abyss of Telegram about the idea of Block.one splitting up their tokens into multiple accounts. This was reasoned to be so that they could vote for many Block Producers without giving each the full weight of their vote. The above restrictions on the amount which they are able to undelegate is the reason that this is not possible.
Currently, if Block.one wanted to vote with an amount smaller than their full weight, they would have to undelegate the maximum amount of tokens that is currently claimable. Then they would have to transfer those tokens to a separate account, delegate them, and then vote. As of the time of writing this article (mid-March of 2019), this amount would be approximately 7.85 million tokens.
So while no one outside of Block.one truly knows their intentions around voting or what they want to do with their tokens, we can now all understand the actual limitations that exist. If you have any further questions, feel free to join EOS Canada in our Telegram channel.
I just resteemed your post!
Why? @eosbpnews aggregates updates of active EOS BPs and conveniently serves them in one place!
This service is provided by @eosoceania. If you think we are doing useful work, consider supporting us with a vote :)
For any inquiries/issues please reach out on Telegram or Discord.
Great info! Thank you for putting together the post
Posted using Partiko Android
Congratulations @eos-canada! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!