Bootstrap ONE-T Nomination Pools
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
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)
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.
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.
Great idea, I support this.
Some questions:
Hi @@derekc
Thank you for the support.
Regarding your questions:
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
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.
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