This is a light guide on executing proposals that have been voted and accepted, through the Kleros Governor.
First, we visit the proposal that we plan to submit to the governor. In this example, it’s the KIP-59.
Technical Process
The proposal suggests new values for Humanity Court. Humanity Court is a subcourt that resides in Kleros Court, with id: 23. Let’s see the current parameters for Humanity Court:
[ courts(uint256) method Response ]
parent uint96 : 0
hiddenVotes bool : false
minStake uint256 : 14000000000000000000000
alpha uint256 : 5000
feeForJuror uint256 : 11000000000000000
jurorsForCourtJump uint256 : 31
The proposed values were 0.025 ETH feeForJuror
, 0.5 alpha
, 16000 PNK minStake
. In code terms, those are the same as:
minStake uint256 : 16000000000000000000000
alpha uint256 : 5000
feeForJuror uint256 : 25000000000000000
This is because alpha
is in basis points, and minStake and feeForJuror refer to PNK and ETH amounts, which have 18 decimals. There’s no need to change alpha
, since we can arrive to the desired execution state by just changing minStake
and feeForJuror
.
By looking into the Kleros Court contract, “Kleros Liquid”, we observe a variety of write functions. In this case, we can change the minStake
and feeForJuror
by using changeSubcourtMinStake
and changeSubcourtJurorFee
.
We can go to the Kleros Governor frontend, and open Kleros. First, check if there’s a session in place. When there’s a session, only proposals that were added before the stated date are allowed. The session might be outdated and hold no proposals, in which case you can just click on Execute Submissions, and a new session will be created.
Now, you can submit a list. To do so, click on “Submit Tx”. Paste the address of the contract you wish to interact with, and the frontend will fetch the ABI so that you can choose the proper function. Take care in choosing the correct parameters.
Do this for every transaction you want to add.
In this case, I paste the address of Kleros Liquid, 0x988b3A538b618C7A603e1c11Ab82Cd16dbE28069
, and the frontend helps me autofill the parameters for the functions that need execution.
changeSubcourtMinStake(_subcourtID : 23,_minStake : 16000000000000000000000)
changeSubcourtJurorFee(_subcourtID : 23,_feeForJuror : 25000000000000000)
Finally, you’ll be asked to submit a deposit. If this is the first list submitted on the governor, the clock will start ticking.