Electing the stewards
Voting for the stewards
After the StewardProposal
has been submitted, the steward address can be voted on by governance participants. All voting must occur between votingStartEpoch
and votingEndEpoch
.
The vote for a steward-set change will be constructed as follows:
Each participant submits a vote through governance:
struct OnChainVote {
id: u64,
voter: Address,
yay: proposalVote,
}
Where the proposalVote is simply an enum dictating whether the voter voted Yay
or Nay
to the proposed candidate change.
The id
will correspond to the id
of the StewardProposal
that is being voted on.
Dealing with ties
In the rare occurence of a tie, the StewardProposal
is rejected, i.e. the current steward-set remains the same.
Electing stewards
Once the decision has been made on whether to elect (or remove) the intended steward/s, the established address/es corresponding to the multisig/s is/are added to (removed from) the PGF
internal address.
Example
The below example hopefully demonstrates the mechanism more clearly.
The governance set consists of Alice, Bob, Charlie, Dave, and Elsa. Each member has 20% voting power.
The current PGF stewards are Dave and Elsa.
- At epoch 42, Bob and Charlie decide to put themselves forward as a joint PGF Steward. They construct a multisig with address
0xBobCharlieMultisig
. - At epoch 42, Bob proposes his and Charlie's candidacy through a
StewardProposal
:
struct StewardProposal{
id: 2
content: Vec<32,54,01,24,13,37>, // (Just the byte representation of the content (description) of the proposal)
author: 0xBobCharlieMultisig,
r#type: StewardProposal,
votingStartEpoch: Epoch(45),
votingEndEpoch: Epoch(54),
graceEpoch: Epoch(57),
}
This proposal proposes the candidate 0xBobCharlieMultisig as a Steward.
- At epoch 49, Alice submits the vote:
struct OnChainVote {
id: 2,
voter: 0xalice,
yay: proposalVote,
}
Where the proposalVote is simply the enum Yay
with an empty memo field.
-
At epoch 49, Bob and Elsa submit an identical transaction.
-
At epoch 50, Dave votes
Nay
on the proposal. -
At epoch 54, the voting period ends and the votes are tallied. Since 80% > 66% of the voting power voted on this proposal (everyone except Charlie, who forgot to vote on her own proposal), the initial condition is passed and the Proposal is active. Further, because out of the total votes, most were
Yay
, (75% > 50% threshold), the new Steward consisting of Bob and Charlie will be added to the Steward set. -
At epoch 57, Bob and Charlie have the effective power to propose Public Goods Funding transactions (that may or may not be vetoed).