Free TON

Validator Contest Proposal: The Crystal Game (Magister Ludi) [Active]

You can run two validators that will not affect the contest outcome. The amount of nodes per validator is less important than the stake. The DoD is logic in reverse — there is a commitment not a privilege of initial validators.

1 Like

Maybe I didn’t fully appreciate the importance of stake vs. decentralization and avoiding concentrations. Will the DePools mitigate the risk of concentration?

Unless I misunderstand the contest structure, there is no incentive to run more than one high-performance validator. I want to contribute as much as possible to the project, but a reliable, high-performance validator will be expensive to maintain. There should be some level of incentive for deploying and maintaining additional validators (if they will help the project). It doesn’t necessarily have to be equivalent to the incentive for the first validator.

One thought I had was that we could see how the initial contests go, and if there is not a sufficient number of independent, graduated Magister Ludi, we could provide incentives to existing Magister Ludi to run a second node capable of meeting master chain requirements.

If the network is to become “a huge distributed supercomputer, or rather a huge ‘superserver’, intended to host and provide a variety of services,” as Durov envisioned, the quality of the mater chain nodes is a critical factor. Maybe not initially, but certainly in the future.

I do understand that the current mainnet validators have already made a very important contribution and commitment. I would personally feel privileged to make a similar contribution and commitment.


Totally agree with you on that. IMO we should take it step by step. Lets run this contest and see whats happening. The proposal allows for additional contests. Also remember that we are only talking about initial set of validators at mainnet launch. The particular role of this set is decentralization, so lets try to optimize for this before we optimize for other things such as performance or say, geo coverage, services etc etc


Contest proposal updated, folks!


Если мы новый валидатор, мы можем участвовать в конкурсе или нужно было проходить квалификацию в тест нете?

Конкурс - это и есть квалификация в тест-нете. Участвуйте! Пока не началось :wink:

If we are a new validator, can we participate in the competition or did we need to qualify in the test net?

Competition is qualification in a test net. Take part! Until it started :wink:

Everyone, because there was a delay, the time table has changed. Please see new table here.


Leaderboard Score

The contest participants are ranked on the Leaderboard by their Score in (almost) real-time - data is updated every 10 minutes:

Score = Metric_1 * Metric_2

Metric 1: Uptime → Share of signed blocks (reciprocal to share of missed blocks)

Metric_1 = av_number_block_signatures / total_number_masterblocks


av_number_block_signatures = number_signed_blocks / av_nodes_per_round

Here number_of_signed_blocks = number of masterblocks signed by the validator with his node_id(s) during the contest period.

If the validator runs more than one node, number_of_signed_blocks is adjusted by av_nodes_per_round , which is calculated as total_number_nodes / current_round.

Here total_number_nodes = the number of validator keys participating in the elections during the contest and current_round is the current validation cycle number since the contest start (there are 9 rounds in the weekly contest).

Playground query for number_of_signed_blocks signed by a particular node_id:

query {
    filter: {
      gen_utime: {gt: start_of_period le: end_of_period}
      signatures: { any: { 
        node_id: {eq:"1f763281013ab430d52fb0e8239733cdd155c517d45dfae4e0b948580562580d"}

Playground query for total_number_masterblocks = number of blocks issued in Masterchain during the contest period:

query {
    filter: {
      workchain_id: {eq: -1}
      gen_utime: {ge: start_of_period le: end_of_period}

Metric 2: Staking efficiency

Metric_2 = max {1, total_amount_recovered / total_amount_staked}

where total_amount_staked = sum of stakes sent by the validator to the Elector contract from a particular wallet in the contest period.

Playground query for total_amount_staked with an example wallet:

query {
    filter: {
      src: {eq:"-1:e118a08ddf394f29a1682e9a114764cb94c481647cb67efd52a573d897da149d"}
      dst: {eq:"-1:3333333333333333333333333333333333333333333333333333333333333333"}
      created_at: {ge: start_of_period - elections_start_before 
								   lt: end_of_period - elections_start_before}
      value: {ge: "100000000000"}
    fields: [{field:"value" fn:SUM}]

total_amount_recovered - sum of amounts received by the validator from the Elector contract in the contest period.

Playground query for total_amount_recovered with and example wallet:

query {
    filter: {
      src: {eq:"-1:3333333333333333333333333333333333333333333333333333333333333333"}
      dst: {eq:"-1:e118a08ddf394f29a1682e9a114764cb94c481647cb67efd52a573d897da149d"}
      created_at: {ge: start_of_period + validators_elected_for + stake_held_for
								   lt: end_of_period + validators_elected_for}
      value: {ge: "100000000000"}
    fields: [{field:"value" fn:SUM}]

Здравствуйте, -" не проиграть выборы, использовать всю отправленную ставку и т. Д. Все это максимизирует относительное вознаграждение." подскажите пожалуйста, где можно почитать про инструменты регулирования этих моментов??
и что может быть не так, если в валидаторы выбран, а подписанных блоков нет?

Про неподписанные блоки советую посмотреть запись сегодняшнего звонка:
Какие правила проведения выборов можно почитать здесь:
Все доступные материалы пока к сожалению не английском.


The Crystal Game timetable update






The Crystal Game Winners - How Ratings Points Work

For each participant in GameX:

- Week 1 → w1_points = divide score by w1_max_score and multiply by 10,
- Week 2 → w2_points = divide score by w2_max_score and multiply by 20,
- Week 3 → w3_points = divide score by w3_max_score and multiply by 30,
- Week 4 → w4_points = divide score by w4_max_score and multiply by 40,

where wN_max_score - is the top score in week N of GameX.

total_rating_points = w1_points + w2_points + w3_points + w4_points

For all participants in GameX:

average_rating_points = mean(total_rating_points > 1),
min_rating_threshold = average_rating_points * 0.35,

where average rating points are calculated over all GameX participants with total_rating_points > 1 to exclude starting nodes from the average results.

Magister Ludi Title in GameX:

if now < w4_end and total_rating_points < min_rating_threshold:
    print("Try harder")
if now < w4_end and total_rating_points >= min_rating_threshold:
    print("Waiting for you")
if now >= w4_end and total_rating_points >= min_rating_threshold:
    print("KYC required")
    print("Not granted")

where now is the current unix timestamp and w4_end is the unix timestamp in the rightmost column of the GameX timetable.
Up to 300 winners who achieve the minimal rating threshold (TBD) will be selected out of all those who participate in the KYC procedure.

1 Like


A player named Quirky Napier (-1:bc9) has been fined in week 2 of Game 2 by removing the last recovered message from the results. Consciously or accidentally, this player did not perform a separate return of stakes and rewards falling in different weeks, which led to an overstatement of metric 2 in the second week. This deprived the organizers of the opportunity to remove excess returns from week 2 without affecting the returns attributed to week 2 itself. For participants in the Crystal Games, please provide a separate return of stakes and rewards related to different weeks.


I have a proposal about “missed cycles” and its impact on final Rating Points.
Let’s assume validator has stable uptime about 0.97 of signed blocks and he/she missed one validation cycle. Now it will lead to a huge impact for final rating points. If validator node will continue to hold 0.97 uptime, week result can be no more than 0.862 which is a deep down of rating table.
Giving an example of missed cycle impact based on game1 and game2 week 3 rating table:
0.97 - top20
0.862 - top85
0.754 - top95
0.97 - top22
0.862 - top87
0.754 - top89

I took networks 1 and 2 because of their uptime stats similarity.

Most of us are beginners and we are learning how to work with TON technology during the game. Sometimes we are making mistakes and sometimes it leads to inability to continue validating on next cycle. I’m sure that penalty of kicking such validators to deep down of rating table is too severe.
For example some of us missed validating cycle because of misunderstanding how it works. Specifically some of validators faced an issue then they didn’t had enough tokens to return stake (value in contract + fees) and had to request additional tokens from devs, because there is no other way to receive them. The request was fulfilled but much later then elections closed, so the cycle was missed. Because of that such validator will become TOP-80 with no chance to go back up somehow, because restoration of 3-4 out of 100 Rating Points is nearly impossible.
Nevertheless some penalty should have a place.
In case if validator missed the whole cycle (has 0 signed blocks in one cycle) “virtual uptime” should be applied at the rate of minimum non-zero uptime between all validators in this cycle minus 0.00001.
In this case affected validators remains the worst in this cycle, which is quite fair. Penalty becomes huge but not fatal to give up competition.

1 Like

Yes, most of us are beginners and we’re learning how to work with TON so you could consider this as a lesson you paid for. I also missed a whole cycle and I don’t blame anyone but myself.
In the main blockchain if you don’t stake for the next circle for any reason you will miss it. The same is here. I think this is fair.

A draft version of the updated Crystal Game rules for discussion:

There is truth, my boy. But the doctrine you desire, absolute, perfect dogma that alone provides wisdom, does not exist. Nor should you long for a perfect doctrine, my friend. Rather, you should long for the perfection of yourself.
— Hermann Hesse

Short description :

The Crystal Game will ask validators to compete in validation cycles recurrently in order to win the title of Magister Ludi. The participants of the Crystal Game are allocated randomly to 4 games with maximum of 100 nodes per game. Winners for each of the GameX are determined based on the total score for 4 weeks with different weights for each week depending on the transaction load.

Prizes: Prizes will be sent from Givers on Free TON to a DePool contract to each winner in amounts ranging from 750,000 Tons to 1,500,000 Tons (Subsidy) depending on the winner’s rating, which will be returned over a period of 1 to 2 years. Additionally, winners will receive a direct reward of 60,000 to 120,000 Tons vested over a 12-month period, also depending on the winner’s rating.

Type: 4 week cyclical contest

Starting Date : June 22, 2020 as per tables





Motivation :

To choose the best validators for Free TON

To provide additional long-term incentives for validation

To subsidize capital required to run high performance validators

To provide continuous motivation for supporting DePools as the main tool for decentralization

To disconnect the “staking” layer from the “validation” layer as much as possible

General requirements: Run at least one validator node.

Proposed reward: The total subsidized amount will peak at 300,000,000 Tons (6% of total supply). This amount may be increased in the future.

The reward of each winner in GameX is determined by the following formulas:
individual_coeff = (rating - min_rating)/(max_rating - min_rating)
750,000 * (1 + individual_coeff) - for Subsidies,
60,000 * (1 + individual_coeff) - for Direct rewards with vesting,
where min_rating and max_rating are the minimum and maximum rating points of the winners in GameX.

The Crystal Game organizers manage an additional prize fund of 100,000 Tons for rewarding the test and quiz winners.

KYC: Any one team can earn a reward just once. No US residents can get a reward. Before reward distribution a moderate KYC procedure will be performed.


List of all validators on the network will be obtained automatically. Each validator will be assigned a random, quirky pseudonym, but can change that name via a transaction to a special smart contract.

List is updated when a new wallet address is used to send messages to the Elector contract.

Note that if you are going to participate with several nodes under the same validator name, the average metric across all your nodes will be counted.

Contest participants are ranked by their score in real-time, and the data is available on the Leaderboard at the site.

The Magister Ludi title will be issued after the contests end, beginning with top rated winners.

Game rules may change at any time. Game conditions can be amended to any cycle by virtue of community voting; respectively, so may reward amounts increase.

Week 1 (9 validation cycles)

Contest Network :

Contest Mode : normal validation

Contest Metrics :

  • Metric 1: Uptime -> Share of blocks signed by a validator (average if several nodes)
  • Metric 2: Staking efficiency -> max {1; Total amount recovered/ total amount staked)
  • Score: 1 x 2

Rating points : 1-10

Week 2 (9 validation cycles)

Contest Network :

Contest Mode : network load

Contest Metrics :

  • Metric 1: Uptime -> Share of blocks signed by a validator (average if several nodes)
  • Metric 2: Staking efficiency -> max {1; Total amount recovered/ total amount staked)
  • Score: 1 x 2

Rating points : 1-20

Week 3 (9 validation cycles)

Contest Network :

Contest Mode : network high load

Contest Metrics :

  • Metric 1: Uptime -> Share of blocks signed by a validator (average if several nodes)
  • Metric 2: Staking efficiency -> max {1; Total amount recovered/ total amount staked)
  • Score: 1 x 2

Rating points : 1-30

Week 4 (9 validation cycles)

Contest Network :

Contest Mode : network overload

Contest Metrics:

  • Metric 1: Uptime -> Share of blocks signed by a validator (average if several nodes)
  • Metric 2: Staking efficiency -> max {1; Total amount recovered/ total amount staked)
  • Score: 1 x 2

Rating points : 1-40

Winner selection:

Up to 300 highest rated winners who achieve the minimal rating threshold (MRT) will be selected out of all those who participate in the four Games. If less than 300 achieve this threshold, then only that number of winners will receive rewards.

MRT should be calculated as 35% of the average rating for all participants. MRT may be increased if the number of winners exceeds 300 validators.


Anyone can participate, but Free TON cannot distribute Tons to US citizens or US entities.

Subsidy stakes will not be eligible for voting.

1 Like

@szaitseff Thanks for the update.

I wonder how is possible to change the “Winner selection” without letting the community know and discuss first?

It actually means you can change anything…then why setting the rules in the first place? I know “rules may be changed” but why don’t you communicate with the validator’s community to discuss before updating it?

If the proposer can change anything at anytime, why setting those rules?

There are no “changes”. Just the clarification of exact reward rules (which was supposed to be clarified) and just compiling the changes that was stated previously (i.e. exact final contest weeks’ beginning and ending dates) :slight_smile:

The purpose of this update is exactly to let the community know and discuss the updated Crystal Game rules and approaches. As you know, we have de facto 4 games instead of one game as per original proposal, and some other statements need clarification. To enable organizers to distribute rewards and other prizes to the participants of 4 games, we need to vote for updated rules that are drafted here for discussion. Therefore, your feedback is appreciated.