Skip to main content

IGovernorUpgradeable

Interface of the {Governor} core. Available since v4.3.

Methods​

COUNTING_MODE​

function COUNTING_MODE() external pure returns (string)

module:voting

A description of the possible support values for {castVote} and the way these votes are counted, meant to be consumed by UIs to show correct vote options and interpret the results. The string is a URL-encoded sequence of key-value pairs that each describe one aspect, for example support=bravo&quorum=for,abstain. There are 2 standard keys: support and quorum. - support=bravo refers to the vote options 0 = Against, 1 = For, 2 = Abstain, as in GovernorBravo. - quorum=bravo means that only For votes are counted towards quorum. - quorum=for,abstain means that both For and Abstain votes are counted towards quorum. If a counting module makes use of encoded params, it should include this under a params key with a unique name that describes the behavior. For example: - params=fractional might refer to a scheme where votes are divided fractionally between for/against/abstain. - params=erc721 might refer to a scheme where specific NFTs are delegated to vote. NOTE: The string can be decoded by the standard https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams JavaScript class.

Returns​

NameTypeDescription
_0stringundefined

castVote​

function castVote(uint256 proposalId, uint8 support) external nonpayable returns (uint256 balance)

Cast a vote Emits a {VoteCast} event.

Parameters​

NameTypeDescription
proposalIduint256undefined
supportuint8undefined

Returns​

NameTypeDescription
balanceuint256undefined

castVoteBySig​

function castVoteBySig(uint256 proposalId, uint8 support, uint8 v, bytes32 r, bytes32 s) external nonpayable returns (uint256 balance)

Cast a vote using the user's cryptographic signature. Emits a {VoteCast} event.

Parameters​

NameTypeDescription
proposalIduint256undefined
supportuint8undefined
vuint8undefined
rbytes32undefined
sbytes32undefined

Returns​

NameTypeDescription
balanceuint256undefined

castVoteWithReason​

function castVoteWithReason(uint256 proposalId, uint8 support, string reason) external nonpayable returns (uint256 balance)

Cast a vote with a reason Emits a {VoteCast} event.

Parameters​

NameTypeDescription
proposalIduint256undefined
supportuint8undefined
reasonstringundefined

Returns​

NameTypeDescription
balanceuint256undefined

castVoteWithReasonAndParams​

function castVoteWithReasonAndParams(uint256 proposalId, uint8 support, string reason, bytes params) external nonpayable returns (uint256 balance)

Cast a vote with a reason and additional encoded parameters Emits a {VoteCast} or {VoteCastWithParams} event depending on the length of params.

Parameters​

NameTypeDescription
proposalIduint256undefined
supportuint8undefined
reasonstringundefined
paramsbytesundefined

Returns​

NameTypeDescription
balanceuint256undefined

castVoteWithReasonAndParamsBySig​

function castVoteWithReasonAndParamsBySig(uint256 proposalId, uint8 support, string reason, bytes params, uint8 v, bytes32 r, bytes32 s) external nonpayable returns (uint256 balance)

Cast a vote with a reason and additional encoded parameters using the user's cryptographic signature. Emits a {VoteCast} or {VoteCastWithParams} event depending on the length of params.

Parameters​

NameTypeDescription
proposalIduint256undefined
supportuint8undefined
reasonstringundefined
paramsbytesundefined
vuint8undefined
rbytes32undefined
sbytes32undefined

Returns​

NameTypeDescription
balanceuint256undefined

execute​

function execute(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) external payable returns (uint256 proposalId)

Execute a successful proposal. This requires the quorum to be reached, the vote to be successful, and the deadline to be reached. Emits a {ProposalExecuted} event. Note: some module can modify the requirements for execution, for example by adding an additional timelock.

Parameters​

NameTypeDescription
targetsaddress[]undefined
valuesuint256[]undefined
calldatasbytes[]undefined
descriptionHashbytes32undefined

Returns​

NameTypeDescription
proposalIduint256undefined

getVotes​

function getVotes(address account, uint256 blockNumber) external view returns (uint256)

module:reputation

Voting power of an account at a specific blockNumber. Note: this can be implemented in a number of ways, for example by reading the delegated balance from one (or multiple), {ERC20Votes} tokens.

Parameters​

NameTypeDescription
accountaddressundefined
blockNumberuint256undefined

Returns​

NameTypeDescription
_0uint256undefined

getVotesWithParams​

function getVotesWithParams(address account, uint256 blockNumber, bytes params) external view returns (uint256)

module:reputation

Voting power of an account at a specific blockNumber given additional encoded parameters.

Parameters​

NameTypeDescription
accountaddressundefined
blockNumberuint256undefined
paramsbytesundefined

Returns​

NameTypeDescription
_0uint256undefined

hasVoted​

function hasVoted(uint256 proposalId, address account) external view returns (bool)

module:voting

Returns whether account has cast a vote on proposalId.

Parameters​

NameTypeDescription
proposalIduint256undefined
accountaddressundefined

Returns​

NameTypeDescription
_0boolundefined

hashProposal​

function hashProposal(address[] targets, uint256[] values, bytes[] calldatas, bytes32 descriptionHash) external pure returns (uint256)

module:core

Hashing function used to (re)build the proposal id from the proposal details..

Parameters​

NameTypeDescription
targetsaddress[]undefined
valuesuint256[]undefined
calldatasbytes[]undefined
descriptionHashbytes32undefined

Returns​

NameTypeDescription
_0uint256undefined

name​

function name() external view returns (string)

module:core

Name of the governor instance (used in building the ERC712 domain separator).

Returns​

NameTypeDescription
_0stringundefined

proposalDeadline​

function proposalDeadline(uint256 proposalId) external view returns (uint256)

module:core

Block number at which votes close. Votes close at the end of this block, so it is possible to cast a vote during this block.

Parameters​

NameTypeDescription
proposalIduint256undefined

Returns​

NameTypeDescription
_0uint256undefined

proposalSnapshot​

function proposalSnapshot(uint256 proposalId) external view returns (uint256)

module:core

Block number used to retrieve user's votes and quorum. As per Compound's Comp and OpenZeppelin's ERC20Votes, the snapshot is performed at the end of this block. Hence, voting for this proposal starts at the beginning of the following block.

Parameters​

NameTypeDescription
proposalIduint256undefined

Returns​

NameTypeDescription
_0uint256undefined

propose​

function propose(address[] targets, uint256[] values, bytes[] calldatas, string description) external nonpayable returns (uint256 proposalId)

Create a new proposal. Vote start {IGovernor-votingDelay} blocks after the proposal is created and ends {IGovernor-votingPeriod} blocks after the voting starts. Emits a {ProposalCreated} event.

Parameters​

NameTypeDescription
targetsaddress[]undefined
valuesuint256[]undefined
calldatasbytes[]undefined
descriptionstringundefined

Returns​

NameTypeDescription
proposalIduint256undefined

quorum​

function quorum(uint256 blockNumber) external view returns (uint256)

module:user-config

Minimum number of cast voted required for a proposal to be successful. Note: The blockNumber parameter corresponds to the snapshot used for counting vote. This allows to scale the quorum depending on values such as the totalSupply of a token at this block (see {ERC20Votes}).

Parameters​

NameTypeDescription
blockNumberuint256undefined

Returns​

NameTypeDescription
_0uint256undefined

state​

function state(uint256 proposalId) external view returns (enum IGovernorUpgradeable.ProposalState)

module:core

Current state of a proposal, following Compound's convention

Parameters​

NameTypeDescription
proposalIduint256undefined

Returns​

NameTypeDescription
_0enum IGovernorUpgradeable.ProposalStateundefined

supportsInterface​

function supportsInterface(bytes4 interfaceId) external view returns (bool)

Returns true if this contract implements the interface defined by interfaceId. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.

Parameters​

NameTypeDescription
interfaceIdbytes4undefined

Returns​

NameTypeDescription
_0boolundefined

version​

function version() external view returns (string)

module:core

Version of the governor instance (used in building the ERC712 domain separator). Default: "1"

Returns​

NameTypeDescription
_0stringundefined

votingDelay​

function votingDelay() external view returns (uint256)

module:user-config

Delay, in number of block, between the proposal is created and the vote starts. This can be increased to leave time for users to buy voting power, or delegate it, before the voting of a proposal starts.

Returns​

NameTypeDescription
_0uint256undefined

votingPeriod​

function votingPeriod() external view returns (uint256)

module:user-config

Delay, in number of blocks, between the vote start and vote ends. NOTE: The {votingDelay} can delay the start of the vote. This must be considered when setting the voting duration compared to the voting delay.

Returns​

NameTypeDescription
_0uint256undefined

Events​

Initialized​

event Initialized(uint8 version)

Parameters​

NameTypeDescription
versionuint8undefined

ProposalCanceled​

event ProposalCanceled(uint256 proposalId)

Emitted when a proposal is canceled.

Parameters​

NameTypeDescription
proposalIduint256undefined

ProposalCreated​

event ProposalCreated(uint256 proposalId, address proposer, address[] targets, uint256[] values, string[] signatures, bytes[] calldatas, uint256 startBlock, uint256 endBlock, string description)

Emitted when a proposal is created.

Parameters​

NameTypeDescription
proposalIduint256undefined
proposeraddressundefined
targetsaddress[]undefined
valuesuint256[]undefined
signaturesstring[]undefined
calldatasbytes[]undefined
startBlockuint256undefined
endBlockuint256undefined
descriptionstringundefined

ProposalExecuted​

event ProposalExecuted(uint256 proposalId)

Emitted when a proposal is executed.

Parameters​

NameTypeDescription
proposalIduint256undefined

VoteCast​

event VoteCast(address indexed voter, uint256 proposalId, uint8 support, uint256 weight, string reason)

Emitted when a vote is cast without params. Note: support values should be seen as buckets. Their interpretation depends on the voting module used.

Parameters​

NameTypeDescription
voter indexedaddressundefined
proposalIduint256undefined
supportuint8undefined
weightuint256undefined
reasonstringundefined

VoteCastWithParams​

event VoteCastWithParams(address indexed voter, uint256 proposalId, uint8 support, uint256 weight, string reason, bytes params)

Emitted when a vote is cast with params. Note: support values should be seen as buckets. Their interpretation depends on the voting module used. params are additional encoded parameters. Their intepepretation also depends on the voting module used.

Parameters​

NameTypeDescription
voter indexedaddressundefined
proposalIduint256undefined
supportuint8undefined
weightuint256undefined
reasonstringundefined
paramsbytesundefined