IGovValidators

Interface Description

License: MIT

interface IGovValidators

This is the voting contract that is queried on the proposal's second voting stage

Enums info

ProposalState

enum ProposalState {
	 Voting,
	 Defeated,
	 Succeeded,
	 Locked,
	 Executed,
	 Undefined
}

ProposalType

enum ProposalType {
	 ChangeSettings,
	 ChangeBalances,
	 MonthlyWithdraw,
	 OffchainProposal
}

Structs info

ProposalSettings

struct ProposalSettings {
	uint64 duration;
	uint64 executionDelay;
	uint128 quorum;
}

The struct holds information about settings for validators proposal

Parameters:

NameTypeDescription

duration

uint64

the duration of voting

executionDelay

uint64

the delay in seconds after voting end

quorum

uint128

the percentage of validators token supply to confirm the proposal

ProposalCore

struct ProposalCore {
	bool executed;
	uint56 snapshotId;
	uint64 voteEnd;
	uint64 executeAfter;
	uint128 quorum;
	uint256 votesFor;
	uint256 votesAgainst;
}

The struct holds core properties of a proposal

Parameters:

NameTypeDescription

executed

bool

the boolean flag that indicates whether the proposal is executed or not

snapshotId

uint56

the id of snapshot

voteEnd

uint64

the timestamp of voting end of the proposal

executeAfter

uint64

the timestamp of execution in seconds after voting end

quorum

uint128

the percentage of validators token supply to confirm the proposal

votesFor

uint256

the total number of votes in proposal from all voters

votesAgainst

uint256

the total number of votes against proposal from all voters

InternalProposal

struct InternalProposal {
	IGovValidators.ProposalType proposalType;
	IGovValidators.ProposalCore core;
	string descriptionURL;
	bytes data;
}

The struct holds information about the internal proposal

Parameters:

NameTypeDescription

proposalType

enum IGovValidators.ProposalType

the ProposalType enum

core

struct IGovValidators.ProposalCore

the struct that holds information about core properties of the proposal

descriptionURL

string

the string with link to IPFS doc with proposal description

data

bytes

the data to be executed

ExternalProposal

struct ExternalProposal {
	IGovValidators.ProposalCore core;
}

The struct holds information about the external proposal

Parameters:

NameTypeDescription

core

struct IGovValidators.ProposalCore

the struct that holds information about core properties of a proposal

InternalProposalView

struct InternalProposalView {
	IGovValidators.InternalProposal proposal;
	IGovValidators.ProposalState proposalState;
	uint256 requiredQuorum;
}

The struct that is used in view functions of contract as a return argument

Parameters:

NameTypeDescription

proposal

struct IGovValidators.InternalProposal

the InternalProposal struct

proposalState

enum IGovValidators.ProposalState

the ProposalState enum

requiredQuorum

uint256

the percentage of validators token supply to confirm the proposal

Functions info

validatorsCount (0xed612f8c)

function validatorsCount() external view returns (uint256)

The function for getting current number of validators

Return values:

NameTypeDescription

[0]

uint256

number of validators

createInternalProposal (0x9661803d)

function createInternalProposal(
    IGovValidators.ProposalType proposalType,
    string calldata descriptionURL,
    bytes calldata data
) external

Create internal proposal for changing validators balances, base quorum, base duration

Parameters:

NameTypeDescription

proposalType

enum IGovValidators.ProposalType

ProposalType 0 - ChangeInternalDurationAndQuorum, change base duration and quorum 1 - ChangeBalances, change address balance 2 - MonthlyWithdraw, monthly token withdraw 3 - OffchainProposal, offchain action

data

bytes

New packed data, depending on proposal type

createExternalProposal (0xdc2a7714)

function createExternalProposal(
    uint256 proposalId,
    IGovValidators.ProposalSettings calldata proposalSettings
) external

Create external proposal. This function can call only Gov contract

Parameters:

NameTypeDescription

proposalId

uint256

Proposal ID from Gov contract

proposalSettings

struct IGovValidators.ProposalSettings

ProposalSettings struct

voteInternalProposal (0x5a34c7e1)

function voteInternalProposal(
    uint256 proposalId,
    uint256 amount,
    bool isVoteFor
) external

voteExternalProposal (0xba877b80)

function voteExternalProposal(
    uint256 proposalId,
    uint256 amount,
    bool isVoteFor
) external

cancelVoteInternalProposal (0x5478197e)

function cancelVoteInternalProposal(uint256 proposalId) external

cancelVoteExternalProposal (0xea1941d0)

function cancelVoteExternalProposal(uint256 proposalId) external

executeInternalProposal (0x65f3f23f)

function executeInternalProposal(uint256 proposalId) external

Only for internal proposals. External proposals should be executed from governance.

Parameters:

NameTypeDescription

proposalId

uint256

Internal proposal ID

executeExternalProposal (0x430c885a)

function executeExternalProposal(uint256 proposalId) external

The function called by governance that marks the external proposal as executed

Parameters:

NameTypeDescription

proposalId

uint256

External proposal ID

changeSettings (0xb395fec0)

function changeSettings(
    uint64 duration,
    uint64 executionDelay,
    uint128 quorum
) external

changeBalances (0x62a4107d)

function changeBalances(
    uint256[] calldata newValues,
    address[] calldata userAddresses
) external

The function for changing validators balances

Parameters:

NameTypeDescription

newValues

uint256[]

the array of new balances

userAddresses

address[]

the array validators addresses

monthlyWithdraw (0x3271f009)

function monthlyWithdraw(
    address[] calldata tokens,
    uint256[] calldata amounts,
    address destination
) external

getExternalProposal (0xe14ea231)

function getExternalProposal(
    uint256 index
) external view returns (IGovValidators.ExternalProposal memory)

The function for getting information about the external proposals

Parameters:

NameTypeDescription

index

uint256

the index of proposal

Return values:

NameTypeDescription

[0]

struct IGovValidators.ExternalProposal

ExternalProposal struct

getInternalProposals (0x8a847ae4)

function getInternalProposals(
    uint256 offset,
    uint256 limit
) external view returns (IGovValidators.InternalProposalView[] memory)

The function for getting information about internal proposals

Parameters:

NameTypeDescription

offset

uint256

the starting proposal index

limit

uint256

the length of the observed proposals

Return values:

NameTypeDescription

[0]

struct IGovValidators.InternalProposalView[]

InternalProposalView struct array

getProposalState (0x7b839d93)

function getProposalState(
    uint256 proposalId,
    bool isInternal
) external view returns (IGovValidators.ProposalState)

Return proposal state

Options: Voting - proposal where addresses can vote. Defeated - proposal where voting time is over and proposal defeated. Succeeded - proposal with the required number of votes. Executed - executed proposal (only for internal proposal). Undefined - nonexistent proposal.

getProposalRequiredQuorum (0xbd7782fc)

function getProposalRequiredQuorum(
    uint256 proposalId,
    bool isInternal
) external view returns (uint256)

The function for getting proposal required quorum

Parameters:

NameTypeDescription

proposalId

uint256

the id of proposal

isInternal

bool

the boolean flag, if true then proposal is internal

Return values:

NameTypeDescription

[0]

uint256

the number of votes to reach the quorum

isValidator (0xfacd743b)

function isValidator(address user) external view returns (bool)

The function that checks if a user is a validator

Parameters:

NameTypeDescription

user

address

the address of a user

Return values:

NameTypeDescription

[0]

bool

flag, if true, than user is a validator