## 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](https://dev.algorand.co/arc-standards/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](https://docs.xgov.algorand.co/specs/xgov-committee#footnote-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](https://dev.algorand.co/arc-standards/arc-0086/#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](https://dev.algorand.co/arc-standards/arc-0086/#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](https://dev.algorand.co/arc-standards/arc-0086/#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](https://docs.xgov.algorand.co/specs/proposal-creation)).

1. 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. [↩](https://docs.xgov.algorand.co/specs/xgov-committee#fr-1-1)
