Polkassembly Logo

Create Pencil IconCreate
OpenGov

Notice: Polkadot has migrated to AssetHub. Balances, data, referenda, and other on-chain activity has moved to AssetHub.Learn more

View All Discussion

Bootstrap ONE-T Nomination Pools

userturboflakes
4 years ago

Bootstrap ONE-T Nomination Pools with bonded stake from Kusama Treasury funds

ONE-T is a validator-performance bot for Polkadot and Kusama networks with special focus on the One Thousand Validator Programme (TVP). ONE-T is generating reports daily since April 2022. These reports are currently only available on matrix and at the time of writing, for Kusama and Polkadot combined, ONE-T gathered over the past two months more than 150 members on both public rooms. There are more than 200 validator report subscriptions active and is sending on average more than 500 reports a day to subscribers.

ONE-T Nomination Pools are automated, precisely and unbiased with ONE-T bot at its core.

From this proposal we aim to use 20 000 KSM from Kusama Treasury funds to bootstrap with bonded stake two distinct nomination pools for the duration of 6 months.

How do we plan to use Treasury funds into ONE-T Nomination Pools?

The idea is to allocate 10 000 KSM to each pool totalizing the amount of 20 000 KSM requested from the Kusama Treasury.

Since these funds belong to the Kusama Treasury they should be always controlled by governance and should not be managed directly by us. To achieve the goal of less trust, more truth we pretend to use addresses without private keys generated on-chain via the Anonymous proxy function and without the control from the account that originally create the newly spawned anonymous proxies. With such implementation the ONLY way to access and execute calls on behalf of the new on-chain generated accounts is via Governance.

We are proposing the following two tasks to achieve our goal:

Task 1

First let’s create a batch call to generate new addresses on-chain via the proxy.anonymous function. The reference of the successful on-chain extrinsic can be found here.

The successful output of the previous call gives us two new addresses:

  • FWkxCoVGajKfcBqd6SreVSm4DJZLMRAWSqT26whPrkjqX3m

  • FWKXyqL8YhH7fyazuFiGswDcQEvJNSnbSVjc6mFDGL5i342

Next, let's use proxy.killAnonymous to effective remove our control from these accounts. The reference of the successful on-chain extrinsics can be found here and here respectively removing control from account FWkxCoVGajKfcBqd6SreVSm4DJZLMRAWSqT26whPrkjqX3m and account FWKXyqL8YhH7fyazuFiGswDcQEvJNSnbSVjc6mFDGL5i342.

From this point onwards the only way to access these accounts is via Governance, so let’s give it a try and make some remarks on behalf of these accounts.

We propose the following preimage for the proposal to be executed via Governance so we could test governance control over the accounts previously mentioned. The on-chain reference of the preimage can be found here.

Preimage proposal hash:

0x1802081803000181fd5707c1e314bdccbe80a311121ce074cebdc0dead2bbcb1cb0c127aca5f8e0001544c657373205472757374204d6f72652054727574681803000181a7c6cac2bac3e3fae246e998f1d05eb36aa59c3345fedb09a3828eee7ec762000130457870656374204368616f73

Image

Task 2

Creation of a single proposal to be submitted by council so that could become later referenda with the goal described by the points below:

  • Transfer 10,000 KSM from treasury to the anonym proxy account A;
  • Transfer 10,000 KSM from treasury to the anonym proxy account B;
  • Make the anonym proxy account A a member of pool 12 by joining with the amount of 9,999 KSM (1 KSM left for transaction fees);
  • Make the anonym proxy account B a member of pool 13 by joining with the amount of 9,999 KSM (1 KSM left for transaction fees);
  • Schedule a call after 2,592,000 blocks (6 months) with a batch call:
    • Claim Payout for the anonym proxy account A from pool 12;
    • Unbond all funds (9,999 KSM) of the member (anonym proxy account A) from pool 12;
    • Claim Payout for the anonym proxy account B from pool 13;
    • Unbond all funds (9,999 KSM) of the member (anonym proxy account B) from pool 13;

Note 1: 6 months is around 2,592,000 blocks (6 30 24 60 10)

Note 2: If this proposal passes council and referenda vote, add a reference here - in this document of the successfull block number and respective extrinsic. It might be useful for future reference.

Proposed draft extrinsic available here


The full proposal with a detailed description be found here: https://hackmd.io/@turboflakes/SyqlsRtYc.

Further details about ONE-T Nomination Pools can be found here → one-t.turboflakes.io

Any feedback is welcome.

Please review our full proposal.

Comments (10)

4 years ago

thanks for sharing this, Paulo! I would be happy to help out in confirming the steps in point 3.1.2 are indeed technically possible to do as a batchAll call: then whats left is to submit the preimage and submit the proposal as an external motion so both Council and community can vote on this.

Do you plan to submit Milestone 1 (maintenance and implementation of new features) as a separate proposal?

Make sure to review this proposal (up for vote now), as this submission might lower the amount of members of a pool to a specific value, to be sure there is some process regarding who can participate in the pools.

4 years ago

Hi Raul, Yes, I think it makes sense to submit different proposals. Milestone 1 as a normal Treasury proposal and Milestone 0 to submit one or two different proposals - i'm not sure here if the anonymous proxy accounts (steps described in point 3.1.2) created from the treasury account could be used in the same proposal under the single batch call. Your help and advice here will be much appreciated. Thank you.

4 years ago

Great idea, I support this.

Some questions:

  1. What happens to the bond (20k KSM) between Milestone 0 & Milestone 1?
  2. Do we need the full proposal text here or will that go in the formal proposal?
  3. Please can you elaborate on the performance criteria for selecting the top 24/12 validators, perhaps link to the code where this is calculated?

4 years ago

Hi @@derekc

Thank you for the support.

Regarding your questions:

What happens to the bond (20k KSM) between Milestone 0 & Milestone 1?

M0 and M1 will be done in different proposals.

M1 will be a normal Treasury proposal and for M0 the plan Is to create two anonymous proxy accounts from the treasury account, transfer 10K to each of these accounts and then make these accounts members of the pools. We still need to confirm the technicality involved here and if more proposals need to be created to achieve this, as described in point 3.1.2

Do we need the full proposal text here or will that go in the formal proposal?


I don’t think we need to copy the full proposal into Polkassembly. I’ve seen other proposals that use an external document for the full proposal description.

Please can you elaborate on the performance criteria for selecting the top 24/12 validators, perhaps link to the code where this is calculated?

Yes, point 3.1.1 describes it in more detail.



The performance score is calculated by the formula: 



performance_score = (1 - mvr) * 0.75 + ((avg_pts - min_avg_pts) / (max_avg_pts - min_avg_pts)) * 0.18 + (pv_sessions / total_sessions) * 0.07

The commission score is calculated by the formula:

commission_score = performance_score * 0.25 + (1 - commission) * 0.75

ONE-T bot counts all backing candidate votes for all the validators that are selected to participate in the parachain consensus every session, at every new block emitted by the Kusama network.

In suma, the performance criteria is based on the amount of missed candidate backing votes, the validators that miss less votes are performing better. There is also the average of para-validator points and how many times a validator was para-validator over a certain amount sessions that counts towards the overall performance score, but with a much less weight.

Please feel free to join the Kusama ONE-T Bot (Public room) to get a sense of how the ranking changes every era and when the call with the nomination is being triggered.

The GitHub repo for ONE-T is this one here https://github.com/turboflakes/one-t, the index and counting vote part is in different places from the scoring calculation and the nomination. Let me know if you would like any clarification on this.

Thanks

Load more comments
PleaseLogin to comment

Help Center

Report an Issue
Feedback
Terms and Conditions
Github

Our Services

Docs
Terms of Website
Privacy Policy

A House of Commons Initiative.

Polka Labs Private Limited 2025

All rights reserved.

Terms and ConditionsTerms of Website
Privacy Policy