This document describes the logic used by the Sky Governance Portal to calculate voting results of governance polls. Last updated Apr. 2025.

Summary:

The polling system uses Ethereum mainnet and Arbitrum events to log votes for polls. To efficiently fetch the data needed to calculate the poll results, the governance portal uses a subgraph that stores all relevant events.

Poll creation:

A poll is created when a PollCreated event is emitted by the arbitrum polling contract.  This event includes the poll number, start date and end date (unix timestamp), multihash of the poll document, and url hosting the poll document.  Only polls created by certain addresses show up in the voting portal frontend. This allow-list of addresses is stored in this github action.

Valid votes:

A vote in a poll is considered valid if:

In addition to the voter address, the poll id and option selected are also specified in the Voted event.

Voting power:

The voting power associated with each vote is equal to the amount of SKY the voter has locked in the chief contract.

If an address owns a delegate contract and uses the arbitrum polling contract, the voting power of the delegate is what is counted.

Mainnet Addresses:

Mainnet Polling Contract: 0xD3A9FE267852281a1e6307a1C37CDfD76d39b133

Chief Contract: TODO: add address

Arbitrum Addresses