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 was given the first custom short name and namespace on the EOS mainnet,
b1. When they had their year-long token distribution, Block.one sold 900 million tokens and sent themselves the remaining 100 million tokens. This token distribution was respected by the Appointed Block Producer who launched the chain, and later validated by the many Block Producers who validated the chain's contents during launch.
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.
Their account was created with 10 liquid EOS tokens, and 49,999,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 )
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:
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.