Skip to content

TokenVotingSetupZkSync ​

Contract · src/TokenVotingSetupZkSync.sol

TokenVotingSetup

Author: Aragon X - 2022-2025

Inherits: PluginUpgradeableSetup

The setup contract of the TokenVoting plugin.

Dev: v1.4 (Release 1, Build 4)

security-contact: sirt@aragon.org

Constructor ​

constructor ​

solidity
constructor(TokenVoting _tokenVotingBase)

The contract constructor deploying the plugin implementation contract.

ParameterTypeDescription
_tokenVotingBaseTokenVotingThe base TokenVoting contract to create proxies for.

Functions ​

decodeInstallationParameters ​

solidity
function decodeInstallationParameters(
    bytes _data
) external pure returns (MajorityVotingBase.VotingSettings votingSettings, TokenVotingSetupZkSync.TokenSettings tokenSettings, GovernanceERC20.MintSettings mintSettings, IPlugin.TargetConfig targetConfig, uint256 minApprovals, bytes pluginMetadata, address[] excludedAccounts)

Selector: 0xf2ad76f9

Decodes the given byte array into the original installation parameters

ReturnsTypeDescription
votingSettingsMajorityVotingBase.VotingSettings
tokenSettingsTokenVotingSetupZkSync.TokenSettings
mintSettingsGovernanceERC20.MintSettings
targetConfigIPlugin.TargetConfig
minApprovalsuint256
pluginMetadatabytes
excludedAccountsaddress[]

encodeInstallationParameters ​

solidity
function encodeInstallationParameters(
    MajorityVotingBase.VotingSettings votingSettings,
    TokenVotingSetupZkSync.TokenSettings tokenSettings,
    GovernanceERC20.MintSettings mintSettings,
    IPlugin.TargetConfig targetConfig,
    uint256 minApprovals,
    bytes pluginMetadata,
    address[] excludedAccounts
) external pure returns (bytes)

Selector: 0xb37edb51

Encodes the given installation parameters into a byte array

ParameterTypeDescription
votingSettingsMajorityVotingBase.VotingSettings
tokenSettingsTokenVotingSetupZkSync.TokenSettings
mintSettingsGovernanceERC20.MintSettings
targetConfigIPlugin.TargetConfig
minApprovalsuint256
pluginMetadatabytes
excludedAccountsaddress[]

implementation ​

solidity
function implementation() external view returns (address)

Selector: 0x5c60da1b

Returns the plugin implementation address.

Dev: The implementation can be instantiated via the new keyword, cloned via the minimal proxy pattern (see ERC-1167), or proxied via the UUPS proxy pattern (see ERC-1822).

ReturnsTypeDescription
[0]addressThe address of the plugin implementation contract.

prepareInstallation ​

solidity
function prepareInstallation(
    address _dao,
    bytes _data
) external returns (address plugin, IPluginSetup.PreparedSetupData preparedSetupData)

Selector: 0xf10832f1

Prepares the installation of a plugin.

ParameterTypeDescription
_daoaddressThe address of the installing DAO.
_databytesThe bytes-encoded data containing the input parameters for the installation as specified in the plugin's build metadata JSON file.
ReturnsTypeDescription
pluginaddressThe address of the Plugin contract being prepared for installation.
preparedSetupDataIPluginSetup.PreparedSetupDataThe deployed plugin's relevant data which consists of helpers and permissions.

prepareUninstallation ​

solidity
function prepareUninstallation(
    address _dao,
    IPluginSetup.SetupPayload _payload
) external view returns (PermissionLib.MultiTargetPermission[] permissions)

Selector: 0x9cb0a124

Prepares the uninstallation of a plugin.

ParameterTypeDescription
_daoaddressThe address of the uninstalling DAO.
_payloadIPluginSetup.SetupPayloadThe relevant data necessary for the prepareUninstallation. See above.
ReturnsTypeDescription
permissionsPermissionLib.MultiTargetPermission[]The array of multi-targeted permission operations to be applied by the PluginSetupProcessor to the uninstalling DAO.

prepareUpdate ​

solidity
function prepareUpdate(
    address _dao,
    uint16 _fromBuild,
    IPluginSetup.SetupPayload _payload
) external returns (bytes initData, IPluginSetup.PreparedSetupData preparedSetupData)

Selector: 0xa8a9c29e

Prepares the update of a plugin.

Dev: Revoke the upgrade plugin permission to the DAO for all builds prior the current one (3).

ParameterTypeDescription
_daoaddressThe address of the updating DAO.
_fromBuilduint16The build number of the plugin to update from.
_payloadIPluginSetup.SetupPayloadThe relevant data necessary for the prepareUpdate. See above.
ReturnsTypeDescription
initDatabytesThe initialization data to be passed to upgradeable contracts when the update is applied in the PluginSetupProcessor.
preparedSetupDataIPluginSetup.PreparedSetupDataThe deployed plugin's relevant data which consists of helpers and permissions.

protocolVersion ​

solidity
function protocolVersion() external pure returns (uint8[3])

Selector: 0x2ae9c600

Returns the semantic Aragon OSx protocol version number that the implementing contract is associated with.

Dev: This version number is not to be confused with the release and build numbers found in the Version.Tag struct inside the PluginRepo contract being used to version plugin setup and associated plugin implementation contracts.

ReturnsTypeDescription
[0]uint8[3]Returns the semantic Aragon OSx protocol version number.

supportsInterface ​

solidity
function supportsInterface(bytes4 _interfaceId) external view returns (bool)

Selector: 0x01ffc9a7

Checks if this or the parent contract supports an interface by its ID.

ParameterTypeDescription
_interfaceIdbytes4The ID of the interface.

supportsIVotesInterface ​

solidity
function supportsIVotesInterface(address token) external view returns (bool)

Selector: 0x1c5d4013

Unsatisfiably determines if the token is an IVotes interface.

Dev: Many tokens don't use ERC165 even though they still support IVotes.

Errors ​

InvalidImplementation ​

solidity
error InvalidImplementation()

Thrown if the implementation address is empty.

InvalidUpdatePath ​

solidity
error InvalidUpdatePath(uint16 fromBuild, uint16 thisBuild)

Thrown when an update path is not available, for example, if this is the initial build.

ParameterTypeDescription
fromBuilduint16The build number to update from.
thisBuilduint16The build number of this setup to update to.

TokenNotContract ​

solidity
error TokenNotContract(address token)

Thrown if the passed token address is not a token contract.

ParameterTypeDescription
tokenaddressThe token address

TokenNotERC20 ​

solidity
error TokenNotERC20(address token)

Thrown if token address is not ERC20.

ParameterTypeDescription
tokenaddressThe token address

Structs ​

PreparedSetupData ​

Inherited from IPluginSetup.

solidity
struct PreparedSetupData {
    address[] helpers;
    PermissionLib.MultiTargetPermission[] permissions;
}

The data associated with a prepared setup.

FieldTypeDescription
helpersaddress[]The address array of helpers (contracts or EOAs) associated with this plugin version after the installation or update.
permissionsPermissionLib.MultiTargetPermission[]The array of multi-targeted permission operations to be applied by the PluginSetupProcessor to the installing or updating DAO.

SetupPayload ​

Inherited from IPluginSetup.

solidity
struct SetupPayload {
    address plugin;
    address[] currentHelpers;
    bytes data;
}

The payload for plugin updates and uninstallations containing the existing contracts as well as optional data to be consumed by the plugin setup.

FieldTypeDescription
pluginaddressThe address of the Plugin.
currentHelpersaddress[]The address array of all current helpers (contracts or EOAs) associated with the plugin to update from.
databytesThe bytes-encoded data containing the input parameters for the preparation of update/uninstall as specified in the corresponding ABI on the version's metadata.

TokenSettings ​

solidity
struct TokenSettings {
    address addr;
    string name;
    string symbol;
}

Configuration settings for a token used within the governance system.

FieldTypeDescription
addraddressThe token address. If set to address(0), a new GovernanceERC20 token is deployed. If the address implements IVotes, it will be used directly; otherwise, it is wrapped as GovernanceWrappedERC20.
namestringThe name of the token, relevant only if a new token is deployed (i.e., addr is address(0)).
symbolstringThe symbol of the token, relevant only if a new token is deployed (i.e., addr is address(0)).