GovernorV2
GovernorV2
#
#
Functionsconstructor(address _finderAddress, uint256 _startingId, address _timerAddress) (public)
Construct the Governor contract.
#
Parameters:- _finderAddress: keeps track of all contracts within the system based on their interfaceName.
- _startingId: the initial proposal id that the contract will begin incrementing from.
- _timerAddress: Contract that stores the current time in a testing environment. Must be set to 0x0 for production environments that use live time.
propose(struct GovernorV2.Transaction[] transactions) (public)
Proposes a new governance action. Can only be called by the holder of the Proposer role.
You can create the data portion of each transaction by doing the following:
const truffleContractInstance = await TruffleContract.deployed()const data = truffleContractInstance.methods.methodToCall(arg1, arg2).encodeABI()
Note: this method must be public because of a solidity limitation that disallows structs arrays to be passed to external functions.
#
Parameters:- transactions: list of transactions that are being proposed.
executeProposal(uint256 id, uint256 transactionIndex) (external)
Executes a proposed governance action that has been approved by voters.
This can be called by any address. Caller is expected to send enough ETH to execute payable transactions.
#
Parameters:- id: unique id for the executed proposal.
- transactionIndex: unique transaction index for the executed proposal.
numProposals() โ uint256 (external)
Gets the total number of proposals (includes executed and non-executed).
getProposal(uint256 id) โ struct GovernorV2.Proposal (external)
Gets the proposal data for a particular id.
after a proposal is executed, its data will be zeroed out, except for the request time.
#
Parameters:- id: uniquely identify the identity of the proposal.
setCurrentTime(uint256 time) (external)
Sets the current time.
Will revert if not running in test mode.
#
Parameters:- time: timestamp to set current Testable time to.
getCurrentTime() โ uint256 (public)
Gets the current time. Will return the last time set in setCurrentTime
if running in test mode.
Otherwise, it will return the block timestamp.
holdsRole(uint256 roleId, address memberToCheck) โ bool (public)
Whether memberToCheck
is a member of roleId.
Reverts if roleId does not correspond to an initialized role.
#
Parameters:- roleId: the Role to check.
- memberToCheck: the address to check.
resetMember(uint256 roleId, address newMember) (public)
Changes the exclusive role holder of roleId
to newMember
.
Reverts if the caller is not a member of the managing role for roleId
or if roleId
is not an
initialized, ExclusiveRole.
#
Parameters:- roleId: the ExclusiveRole membership to modify.
- newMember: the new ExclusiveRole member.
getMember(uint256 roleId) โ address (public)
Gets the current holder of the exclusive role, roleId
.
Reverts if roleId
does not represent an initialized, exclusive role.
#
Parameters:- roleId: the ExclusiveRole membership to check.
addMember(uint256 roleId, address newMember) (public)
Adds newMember
to the shared role, roleId
.
Reverts if roleId
does not represent an initialized, SharedRole or if the caller is not a member of the
managing role for roleId
.
#
Parameters:- roleId: the SharedRole membership to modify.
- newMember: the new SharedRole member.
removeMember(uint256 roleId, address memberToRemove) (public)
Removes memberToRemove
from the shared role, roleId
.
Reverts if roleId
does not represent an initialized, SharedRole or if the caller is not a member of the
managing role for roleId
.
#
Parameters:- roleId: the SharedRole membership to modify.
- memberToRemove: the current SharedRole member to remove.
renounceMembership(uint256 roleId) (public)
Removes caller from the role, roleId
.
Reverts if the caller is not a member of the role for roleId
or if roleId
is not an
initialized, SharedRole.
#
Parameters:- roleId: the SharedRole membership to modify.
_createSharedRole(uint256 roleId, uint256 managingRoleId, address[] initialMembers) (internal)
Internal method to initialize a shared role, roleId
, which will be managed by managingRoleId
.
initialMembers
will be immediately added to the role.
Should be called by derived contracts, usually at construction time. Will revert if the role is already initialized.
_createExclusiveRole(uint256 roleId, uint256 managingRoleId, address initialMember) (internal)
Internal method to initialize an exclusive role, roleId
, which will be managed by managingRoleId
.
initialMember
will be immediately added to the role.
Should be called by derived contracts, usually at construction time. Will revert if the role is already initialized.
#
EventsNewProposal(uint256 id, struct GovernorV2.Transaction[] transactions)
ProposalExecuted(uint256 id, uint256 transactionIndex)
ResetExclusiveMember(uint256 roleId, address newMember, address manager)
AddedSharedMember(uint256 roleId, address newMember, address manager)
RemovedSharedMember(uint256 roleId, address oldMember, address manager)
#
ModifiersonlyIfTest()
Reverts if not running in test mode.
onlyRoleHolder(uint256 roleId)
Reverts unless the caller is a member of the specified roleId.
onlyRoleManager(uint256 roleId)
Reverts unless the caller is a member of the manager role for the specified roleId.
onlyExclusive(uint256 roleId)
Reverts unless the roleId represents an initialized, exclusive roleId.
onlyShared(uint256 roleId)
Reverts unless the roleId represents an initialized, shared roleId.
onlyValidRole(uint256 roleId)
Reverts if roleId
is not initialized.
onlyInvalidRole(uint256 roleId)
Reverts if roleId
is initialized.