xGov Committee - xGov Beta Architecture
Keyboard shortcuts
Press ← or → to navigate between chapters
Press S or / to search in the book
Press ? to show this help
Press Esc to hide this help
- Auto
- Light
- Dark
xGov Beta Architecture
xGov Committees are responsible for voting on Proposals.
The formalization of xGov Committees and their voting power, as defined by ARC-0086, is provided below.
Let
- AA be the (finite) set of Algorand addresses;
- NN be the set of non–negative integers;
- gg be the network Genesis Hash;
- R∈NR∈N be the Application ID of the xGov Registry;
- Bc∈NBc∈N be the block at which the xGov Registry was created.
A governance period is a pair (Bi,Bf)∈N2(Bi,Bf)∈N2 such that
BiBfBfBf≡0(mod106),≡0(mod106),>Bc,>Bi.Bi≡0(mod106),Bf≡0(mod106),Bf>Bc,Bf>Bi.
And is intended as a range of blocks [Bi;Bf)[Bi;Bf) (BiBi included, BfBf excluded).
Bi<BcBi<Bc is valid and denotes a period across the xGov Registry creation.
An xGov is an address a∈Aa∈A that has acknowledged the xGov Registry on block hh and is therefore eligible to acquire voting power.
The xGov acknowledgement is defined by the pair (a,h)(a,h) (represented on the xGov Registry as an xGov Box).
If xGovs unsubscribe, the xGov acknowledgement of their address aa is lost and the pair (a,h)(a,h) is removed from the xGov Registry state.
For a governance period (Bi,Bf)(Bi,Bf), an address aa is an eligible xGov in [Bc;Bf)[Bc;Bf) if and only if there exists a block height kk with Bc≤k<BfBc≤k<Bf such that the xGov Registry state at height kk contains (a,h)(a,h) for some h≤kh≤k.
Once the xGov Registry has recorded an acknowledgement (a,h)(a,h) with h≥Bch≥Bc, the address aa is considered an eligible xGov for every governance period (Bi,Bf)(Bi,Bf) such that h∈[Bc;Bf)h∈[Bc;Bf); in particular, it is not necessary to re-acknowledge the xGov Registry for subsequent governance periods.
For a fixed governance period (Bi,Bf)(Bi,Bf), the voting power of an eligible xGov (a,h)(a,h) in that governance period is the integer
w((a,h);Bi,Bf)∈N,w((a,h);Bi,Bf)∈N,
defined as the number of blocks proposed by an eligible address aa in the governance period [Bi;Bf)[Bi;Bf)1.
If an xGov a has acknowledged the xGov Registry at some h∈[Bc;Bf)h∈[Bc;Bf) and has proposed one or more blocks in [Bi;Bf)[Bi;Bf), then all such proposals in [Bi;Bf)[Bi;Bf) contributes to its voting power, including those that occurred before hh.
Fix an xGov Registry (g,R,Bc)(g,R,Bc) and a governance period (Bi,Bf)(Bi,Bf) as above.
An xGov Committee for (g,R,Bc,Bi,Bf)(g,R,Bc,Bi,Bf) is a finite set
C⊆A×N>0,C⊆A×N>0,
of address–weight pairs (a,v)(a,v) such that:
- eligibility: ∀(a,v)∈C, a is an eligible xGov in [Bc;Bf)
- voting power: ∀(a,v)∈C, v=w(a;Bi,Bf)
- uniqueness: (a1,v1),(a2,v2)∈C and a1=a2 ⇒ v1=v2.
The corresponding xGov Committee object is the tuple
Comm:=(g,R,Bc,Bi,Bf,C).
For convenience, we write
Addr(C):={a∈A∣∃v>0,(a,v)∈C}
for the set of xGov Committee members (addresses) induced by CC.
The number of xGov Committee members (or cardinality of the xGov Committee) is defined as
Members(Comm):=|Addr(C)|=|C|.
This value corresponds to the totalMembers field in the ARC-86 canonical JSON representation of the xGov Committee.
The voting power function of the xGov Committee is the map
vC:Addr(C)→N>0,vC(a):=v such that (a,v)∈C.
The total committee voting power is
Votes(Comm):=∑(a,v)∈Cv=∑a∈Addr(C)vC(a).
This value corresponds to the totalVotes field in the ARC-86 canonical JSON representation of the xGov Committee.
Optionally, the relative vote of a member a∈Addr(C) is
shareC(a):=vC(a)Votes(Comm),
whenever Votes(Comm)>0.
An xGov Committee is identified by the Committee ID, as defined in ARC-86 canonical JSON representation.
The xGov Committee selection procedure and the assignment of their voting power is performed by the Algorand Foundation.
Given the xGov Committee for the governance period [Bi;Bf)[Bi;Bf), the xGov Committee Manager SHALL declare on the xGov Registry:
- The Committee ID;
- The xGov Committee Members Members(Comm);
- The xGov Committee Voting Power Votes(Comm).
within the rounds interval [Bi;Bi+103)[Bi;Bi+103).
If the xGov Committee Manager fails to declare the xGov Committee within the rounds interval, the xGov Committee is considered stale and Proposals are suspended.
The xGov Daemon SHALL assign the current xGov Committee to Proposals upon creation (see Proposal Creation section).
- If aa is not eligible as an xGov in [Bc;Bf)[Bc;Bf), its voting power is implicitly taken to be zero, and it is not included in the xGov Committee. ↩