PoM (Proof of Meme)
Last updated
Last updated
Epochs are the concept are introduced in addition to Ethereum's PoS.
The Epoch is a parameter written in the configure file in the Geth code, and can be modified when necessary. The initial setting of Epoch could be one day.
During the Epoch, the selected validators produce blocks with a PoA consensus algorithm, which is similar to Clique. After the end of each epoch, a new set of validators will be selected from the governance delegation contract.
The new designed consensus can decrease block time and therefore increase their transaction throughput. The current network's block time is 7 seconds.
The $M token, which is native to our ecosystem, is minted with each block by the core Geth code and allocated to the reward contract. The number of tokens vested as rewards is subject to future modification through a hard fork, contingent upon community consensus.
We've implemented a slashing mechanism tasked with overseeing network performance metrics, including block generation counts, node downtime, and various other critical parameters. The designated Monitor Role is responsible for relaying this performance data to the slashing contract. Should the performance fall short of the established criteria, the slashing contract is programmed to execute the Slash
function within the Validator Candidate Contract.
This punitive process unfolds in two distinct phases: Firstly, a deduction is imposed on the $M tokens staked during registration, serving as a direct financial penalty. Secondly, the penalized validator node is excluded from participation in the ensuing validation round. This exclusion inherently leads to a reduction in the $M rewards that the validator would have accrued.
Any EOA address can register as a validator candidate by calling the register()
function and staking a fixed amount of $M.
Only EOAs (not contract addresses) that haven't previously registered can use the registration function. A registrationFee baseAmount
must be included in the transaction, and this fee can later be adjusted by the governance contract.
The validator list has a maximum limit, initially set to 100 validators.
Validators can delist themselves by calling the quit
function, receiving a refund. Currently, the staked $M is refunded immediately, but a lock period of 1 month may be added to the refund process.
Both EOA and contract addresses can stake $M on the Validator Delegating Contract by calling the stakeMIM
method and specifying the staked amount in the transaction.
EOA and contract addresses can stake Meme tokens by invoking the stakeMeme
method, but they must first approve the transaction. The Meme tokens eligible for delegation are listed in the MemeWhiteList, which can be extended via the Governance contract.
The Validator Delegating Contract provides the getFirstFewValidators
method to query the validator set. In Phase I, the ranking is determined by a fixed formula. In Phase II, this formula will integrate native oracle prices to adjust rankings.
The reward distribution contract manages how rewards are divided among validators and delegators. Each M block reward is split: one part goes to the producer and is shared equally among active validators, while the other part is distributed to delegators based on a weighted formula. In Phase I, the formula is static, but in Phase II, it will use oracle-based price feeds for dynamic reward distribution. The last portion is given to validators and delegators if their supported validator produces the block.
To claim $M rewards, users must send a stake(0)
or withdraw(0)
transaction to the Reward Distribution Contract. The same process applies for MRC-20 tokens. Additional utility functions for claiming rewards can be added to improve front-end interaction.
The MRC-20 Vault will store 5% of the total supply from each MRC-20 token on MemeCore. Before minting, the MRC-20 token deployer must call the waitlist
function in the vault, ensuring the token contract is open source and secure through multisig approval. The vault operates with a vesting algorithm, distributing tokens to users based on their staking in the Validator Delegating Contract, initially over a period of 1,000 days, which can later be changed by governance.