Thousand Ether Homepage: Sortition Instructions

ThousandEtherHomepage
3 min readNov 1, 2021

--

Welcome to the Age of the 👑Magistrate. Sortition is the electoral system that we use to select the Magistrate every 6 weeks. Any plot can be nominated, and the winner is chosen randomly weighted by the number of pixels that nominated them. More details here.

You can interact with the contracts via Etherscan.

Nominating your plots

In Sortition, you can choose to nominate either one or all of your plots for a chance to become the 👑 Magistrate. Plots are chosen randomly, with more pixels being more likely to win. You can also choose to nominate one or all of your plots on behalf of another token-holder. In that case if the plot wins, the other person becomes the 👑 Magistrate. You can change the nomination for your plots as many times as you’d like before each election.

Any plot being nominated must be wrapped as an NFT. Remember to wrap your plots before nominating!

There are three Nomination methods:

  • nominateSelf — nominate all of your plots for yourself to become 👑 Magistrate.
  • nominateAll — nominate all your plots delegated to another token. You will need to provide the id of a token, and if any of your plots win then the owner of that token becomes the 👑 Magistrate.
  • nominate — nominate a single plot.
Three ways to nominate

Getting a TokenID

If you’re nominating another person, you will need to know the tokenId of one of their plots. That’s the same tokenId that’s on OpenSea.

This is tokenID 191

Calling the election

An election cal be called every 6 weeks. You can see the current term number at termNumber and when the next election can be called at termExpires (this is a UNIX timestamp).

The election is a two step process. This is because we need to get a secure source of randomness from Chainlink VRF. The first step is to call startElection . This can only be called after termExpires , and requires the contract to have a 2 LINK balance for the Chainlink call.

After startElection , Chainlink will provide some entropy and then we can call completeElection . Which will set the next magistrate.

startElection — called when the term is up
completeElection — called to lock in the next 👑 Magistrate

NOTE: at the time of startElection , there’s no way to know who the next 👑 Magistrate will be, but after the entropy has been provided, you can see the next 👑 Magistrate token via getNextMagistrateToken.

getNextMagistrateToken shows the tokenID of the next magistrate before the election is completed

Being the 👑 Magistrate

The 👑 Magistrate role is tied to a given plot for each term. The holder of that plot becomes the 👑 Magistrate. If you sell or transfer that plot during your term, the new holder would be the 👑 Magistrate.

Becoming the 👑 Magistrate unlocks two new methods:

  • withdraw — This lets you transfer all the OpenSea royalties to an address of your choice.
  • stepDown — if you are the 👑 Magistrate, calling this will let you step down, and an election may be triggered in 72hours.

--

--