DesignatedVotingFactory
Factory to deploy new instances of DesignatedVoting and look up previously deployed instances.
Allows off-chain infrastructure to look up a hot wallet’s deployed DesignatedVoting contract.
onlyRoleHolder(uint256 roleId) modifier
Reverts unless the caller is a member of the specified roleId.
onlyRoleManager(uint256 roleId) modifier
Reverts unless the caller is a member of the manager role for the specified roleId.
onlyExclusive(uint256 roleId) modifier
Reverts unless the roleId represents an initialized, exclusive roleId.
onlyShared(uint256 roleId) modifier
Reverts unless the roleId represents an initialized, shared roleId.
constructor(address finderAddress) public
Construct the DesignatedVotingFactory contract.
Parameters:
-
finderAddress: keeps track of all contracts within the system based on their interfaceName.
newDesignatedVoting(address ownerAddress) → contract DesignatedVoting external
Deploys a new DesignatedVoting contract.
Parameters:
-
ownerAddress: defines who will own the deployed instance of the designatedVoting contract.
setDesignatedVoting(address designatedVotingAddress) external
Associates a DesignatedVoting instance with msg.sender.
This is generally only used if the owner of a DesignatedVoting contract changes their voter
address and wants that reflected here.
Parameters:
-
designatedVotingAddress: address to designate voting to.
withdrawErc20(address erc20Address, uint256 amount) external
Withdraws ERC20 tokens from the contract.
Parameters:
-
erc20Address: ERC20 token to withdraw. -
amount: amount of tokens to withdraw.
_createWithdrawRole(uint256 newRoleId, uint256 managingRoleId, address withdrawerAddress) internal
Internal method that allows derived contracts to create a role for withdrawal.
Either this method or _setWithdrawRole must be called by the derived class for this contract to function
properly.
Parameters:
-
newRoleId: ID corresponding to role whose members can withdraw. -
managingRoleId: ID corresponding to managing role who can modify the withdrawable role’s membership. -
withdrawerAddress: new manager of withdrawable role.
_setWithdrawRole(uint256 setRoleId) internal
Internal method that allows derived contracts to choose the role for withdrawal.
The role setRoleId must exist. Either this method or _createWithdrawRole must be
called by the derived class for this contract to function properly.
Parameters:
-
setRoleId: ID corresponding to role whose members can withdraw.
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.