Delegations Governance
Last updated
Last updated
A Delegation has its own internal governance system, in which its members can vote and make decisions at the Delegation level. The parameters of this system are defined when the organization links the DelegationsManager
to itself and initializes it as an active component.
These parameters are the collection
and objectId
ones, which are encoded as values in the supportedTokenArray
parameter. They define the organization's governance token that will be used to support all Delegations that are attached to the Organization via its DelegationsManager
. If attached to multiple Organizations, a Delegation can be supported by a governance token of each.
A DelegationTokensManager
is an active component linked to a specific Delegation. It allows holders of the Organization's governance token that supports Delegations to wrap their tokens into Delegation tokens.
Delegation tokens can be used to vote on the Delegation's internal proposals. The DelegationTokensManager
also allows for the unwrapping (i.e the burning) of Delegation tokens back into the Organization's supported governance token.
While wrapped, the governance tokens are held securely by the Delegation in its own TreasuryManager Component.
Example
The EthOS Organization sets OS as its token that will support attached Delegations. The DelegationTokensManager of each Delegation will allow for: the wrapping of OS as the Delegation's tokens, which can be used to govern the Delegation internally; and for the unwrapping (i.e the burning) of the Delegation's tokens for the original OS.
To vote on a Proposal in the Delegation, users must use Delegation tokens. Delegations can be attached to multiple Organizations, and therefore users must vote with the appropriate Delegation tokens.
Example
Delegation Dave is attached to Organization Alpha (OrgA) and Organization Beta (OrgB).
OrgA sets TokenA, its governance to in its DelegationsManager, as the supported token for its Delegations. OrgB sets TokenB, its own governance token, as the supported token for its own Delegations.
Delegation users can wrap TokenA and TokenB as DelegationTokenA and DelegationTokenB respectively.
If a Proposal regarding OrgA is created in the Delegation, users can vote on it using DelegationTokenA; likewise, If a Proposal regarding OrgB is created in the Delegation, users can vote in it using DelegationTokenB.
An organization can only set one supported token for Delegations at a time.
The token is defined by the collection
and objectId
parameters discussed here.
These parameters can be changed later by using the setSupportedToken
function:
As input, the function takes:
collection
-> the address of the new Collection
objectId
-> the uint256
that represents the objectId
of the new token.
ERC1155s and Items can be set as the supported token.
ERC20 and ETH will be supported in a future DelegationTokensManager version.
The newly set supported token replaces the old one; from this moment on, the DelegationTokensManager
will treat the new one as it did the old one.