Types of Voting

Now, let's delve into the various types of voting that can be conducted within our ecosystem. These voting modules are not constrained to adhere strictly to predefined standards outlined earlier. Each voting module is designed with its own unique criteria for voting and execution method, which can be either immediate or delayed.

To facilitate dynamic voting, the first step involves deploying the contract for the respective voting module, followed by adding its address to the node for delegate call functionality.

Delegate call operates similarly to a proxy contract mechanism. Consider two contracts, A and B, where A acts as the proxy for B. This means that any function invoked on contract A will redirect to the corresponding function in contract B. If contract B modifies the state, such as writing information or emitting an event, these actions will be executed on contract A. Consequently, all storage operations and readings are performed on contract A.

Therefore, each voting module contract can remain separate, and as long as its header (function name) conforms to our standard format, namely vote(uint256, address), it will be invoked accordingly.

PrefixDescription

1, 0x01

Addition of game (Implemented): This voting process facilitates the onboarding of new games, allowing players to exchange in-game items for our token. Games must undergo this voting process or receive a top-up to connect to our platform.

2, 0x02

Removal of game (Implemented): If any game abuses our ecosystem or is deemed unsuitable, the community can vote to remove it. Once voted out, the game loses access to our platform.

3, 0x03

Bulk withdrawal (Implemented): This function enables the withdrawal of a large number of tokens without game intervention. It is commonly used to power other nodes, facilitate airdrop events, or serve as rewards for partner contracts.

4, 0x04

Voted for (event only)

5, 0x05

Voted against (event only)

6, 0x06

Voting successful (event only)

7, 0x07

Voting failed (event only)

8, 0x08

Addition of voting module (Future): Upon implementation, this function will enable the creation of new voting modules, allowing for additional voting criteria beyond the existing ones.

9, 0x09

Removal of voting module (Future): This function allows for the removal of any voting module found to contain malicious content, with caution advised due to the potential impact on the entire voting system.

10, 0x0a

Upgrade of contract (Future): This module facilitates the upgrade of all proxied contracts by altering the implementation contract, including the node contract and associated contracts.

11, 0x0b

Upgrade of owner (Future): The ownership can be transferred to the highest authority, typically voted to a blackhole address for most DAOs, signifying full control and ownership.

12, 0x0c

Suspension of user (Future): Users can be suspended, restricting their ability to mint, transfer, or burn ERC20 or ERC721 tokens from us.

13, 0x0d

Resumption of user (Future): In case of mistaken suspension, users can be unsuspended through a public vote or vouching from other users.

14, 0x0e

Suspension of contract (Future): Contract suspension halts all token movements, to be used only in extreme situations affecting the entire ecosystem.

15, 0x0f

Resumption of contract (Future): Token movements resume after suspension, typically for bug fixing or during upgrades requiring temporary suspension.

16, 0x10

Minting of ERC20 token (Future): This feature allows direct minting of tokens via our token contract, particularly relevant when initial minting proves insufficient.

17, 0x11

Force transfer of ERC20 token (Future): In cases of contract or user hoarding or unauthorised token holdings, tokens can be forcefully removed from an address and transferred to another.

18, 0x12

Minting of ERC721 token (Future): This function facilitates direct minting of NFTs via our NFT contract, useful for events or situations requiring mass minting with appropriate metadata.

19, 0x13

Force transfer of ERC721 token (Future): Similar to ERC20 token force transfer, this function deals with forcefully removing NFTs from an address and transferring them elsewhere in cases of hoarding or unauthorised holdings.

Up to 255, 0xff

All the other voting types that can be added

Last updated