$METAS Token

Introduction

$METAS is an ERC20 token that will power MetaStudio and the Metaverse we build for our users. The tokens supply is minted at the deployment time, owned by the multi-signature safe and tokens cannot be minted anymore (see Tokenomics for more information).

Token usage

Token & Wallets architecture

Deployment

The deployment of the token follows this steps:

  • Meta Studio development team creates a private key for the deployer wallet

  • Meta Studio owners creates the multi-signature Admin wallet with a Gnosis safe for the Polygon network

  • Admin wallet sends MATIC to the Deployer wallet

  • Admin wallet shares his public address to the Deployer wallet

  • Deployer wallet deploys the METAS Token on Polygon and configure the Admin wallet address with the ADMIN role at deployment time

  • Deployer wallet verifies the contract on polygonscan

Presale process

The presale of the METAS token is handled with the protocol Sablier. Sablier offers a payment protocol on Ethereum managing vesting period, instant access to your earnings.

the token distribution to investors during the presale follows this process:

  • an investor decides to invest an amount of fiat money through a wire transfer

  • the investor shares his wallet address to the token issuer

  • the token issuer goes to the Sablier safe app on Gnosis. Sablier is integrated to Gnosis safe app and payments can be triggered directly through Gnosis with the Admin wallet

  • the token issuer creates a payment stream to the investor wallet address with a vesting period on the Sablier safe app

  • Once the vesting period over, the investor claims his tokens through the Sablier dApp

Features

The METAS token is a standard ERC20 token that is the core of the Meta Studio ecosystem. In order to propose more interactions & better UX to the metaverse, the contract implements other IEPs.

Standard Interfaces

The Meta Studio Token implements several standards on top of ERC20. Those standards are:

Proxy

In case of a bug on the contract, the proxy is able to change the logic of the contract and apply a hot-fix.

METAS Token is built behind a Universal Upgradeable Proxy Standard (UUPS) provided by OpenZeppelin which implements the standard ERC1822 & ERC1967. UUPS proxies are both lightweight and versatile and the upgrade is handled by the implementation, and can eventually be removed. The proxy brings a way to fix the contract in case of bugs by changing the implementation without deploying it to a new address.

Roles

Every power given to an account on the contract (changing the implementation behind the proxy, the trusted forwarder, pausing the contract, etc) is maintened through a system of roles.

The contract implements the Role-Based Access Control of OpenZeppelin which permits to distinguish several roles in the contract and manage the roles.

Before the DAO

At deployment time, the Meta Studio gnosis safe is granted all the roles while the deployer wallet is only used to deploy the contract but has no role.

Once the DAO is running

A DAO will be setup in the near future. The DAO will be given the administration roles in order to decentralize all the decisions. Meta Studio gnosis safe will keep the power of pausing the contract as a DAO would be too slow to react to an emergency.

ERC20

The contract follows the ERC20 standard which is required to enable interoperability with the Ethereum ecosystem, others fungible tokens, exchanges, etc.

Payable Token

There is no way to execute code after a ERC-20 transfer or approval (i.e. making a payment), so to make an action it is required to send another transaction and pay GAS twice. The ERC1363 wants to make token payments easier and working without the use of any other listener.

Meta-transactions

There is a growing interest in making it possible for Ethereum contracts to accept calls from externally owned accounts that do not have ETH to pay for gas. ERC2771 enables sending transactions on behalf of a user and therefore paying gas instead of the user.

The contract implements the ERC2771 in order to unlock meta-transactions. The trusted forwarded can be changed with the role FORWARDER_ROLE.

No trusted forwarded is setup at deployment time. But Meta-transactions might be used in the future.

Permit

The standard ERC2612 brings a way to delegate an approval offchain through the signature of a message (permit). This standard is required for the voting feature.

Votes

In order to setup a DAO based on the balances of the wallets, the contract has to save the history of balances after each transfer.

Therefore, the token is using the extension ERC20Votes from OpenZeppelin that keeps a history (checkpoints) of each account's vote power based on the balances. DAO platform (like Snapshot) can take advantage of this extension to manage votes and execute proposals.

Tests

All the standards implemented by the contract are tested with dedicated tests based on OpenZeppelin tests. On top of that, the custom methods of the contract are also tested.

Moreover, the contract has been analyzed with Slither.

API Reference

Audit

The contract has been audited by QuantStamp

Contract

Last updated