Skip to content

Latest commit

 

History

History
1253 lines (725 loc) · 24.9 KB

MetaStudioToken.md

File metadata and controls

1253 lines (725 loc) · 24.9 KB

MetaStudioToken

The Metastudio's ERC20 token

This is an ERC20 contract implementing many features: ERC165, ERC1363, ERC2771, ERC20Votes, ERC20Permit, ERC1967, ERC1822, Pausable and AccessControl.

Methods

DEFAULT_ADMIN_ROLE

function DEFAULT_ADMIN_ROLE() external view returns (bytes32)

Returns

Name Type Description
_0 bytes32 undefined

DOMAIN_SEPARATOR

function DOMAIN_SEPARATOR() external view returns (bytes32)

See {IERC20Permit-DOMAIN_SEPARATOR}.

Returns

Name Type Description
_0 bytes32 undefined

FORWARDER_ROLE

function FORWARDER_ROLE() external view returns (bytes32)

Role allowed to update the trusted forwarder (meta-tx)

Role allowed to update the trusted forwarder (meta-tx)

Returns

Name Type Description
_0 bytes32 compute the Keccak-256 hash of the FORWARDER_ROLE

PAUSER_ROLE

function PAUSER_ROLE() external view returns (bytes32)

Role allowed to switch contract between active/paused state

Role allowed to switch contract between active/paused state

Returns

Name Type Description
_0 bytes32 compute the Keccak-256 hash of the PAUSER_ROLE

PROXY_ROLE

function PROXY_ROLE() external view returns (bytes32)

Role allowed to update implementation behind Proxy

Role allowed to update implementation behind Proxy

Returns

Name Type Description
_0 bytes32 compute the Keccak-256 hash of the PROXY_ROLE

allowance

function allowance(address owner, address spender) external view returns (uint256)

See {IERC20-allowance}.

Parameters

Name Type Description
owner address undefined
spender address undefined

Returns

Name Type Description
_0 uint256 undefined

approve

function approve(address spender, uint256 amount) external nonpayable returns (bool)

See {IERC20-approve}. NOTE: If amount is the maximum uint256, the allowance is not updated on transferFrom. This is semantically equivalent to an infinite approval. Requirements: - spender cannot be the zero address.

Parameters

Name Type Description
spender address undefined
amount uint256 undefined

Returns

Name Type Description
_0 bool undefined

approveAndCall

function approveAndCall(address spender, uint256 amount) external nonpayable returns (bool)

Approve spender to transfer tokens and then execute a callback on spender.

Parameters

Name Type Description
spender address The address allowed to transfer to
amount uint256 The amount allowed to be transferred

Returns

Name Type Description
_0 bool A boolean that indicates if the operation was successful.

approveAndCall

function approveAndCall(address spender, uint256 amount, bytes data) external nonpayable returns (bool)

Approve spender to transfer tokens and then execute a callback on spender.

Parameters

Name Type Description
spender address The address allowed to transfer to.
amount uint256 The amount allowed to be transferred.
data bytes Additional data with no specified format.

Returns

Name Type Description
_0 bool A boolean that indicates if the operation was successful.

balanceOf

function balanceOf(address account) external view returns (uint256)

See {IERC20-balanceOf}.

Parameters

Name Type Description
account address undefined

Returns

Name Type Description
_0 uint256 undefined

checkpoints

function checkpoints(address account, uint32 pos) external view returns (struct ERC20VotesUpgradeable.Checkpoint)

Get the pos-th checkpoint for account.

Parameters

Name Type Description
account address undefined
pos uint32 undefined

Returns

Name Type Description
_0 ERC20VotesUpgradeable.Checkpoint undefined

decimals

function decimals() external view returns (uint8)

Returns the number of decimals used to get its user representation. For example, if decimals equals 2, a balance of 505 tokens should be displayed to a user as 5.05 (505 / 10 ** 2). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless this function is overridden; NOTE: This information is only used for display purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.

Returns

Name Type Description
_0 uint8 undefined

decreaseAllowance

function decreaseAllowance(address spender, uint256 subtractedValue) external nonpayable returns (bool)

Atomically decreases the allowance granted to spender by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - spender cannot be the zero address. - spender must have allowance for the caller of at least subtractedValue.

Parameters

Name Type Description
spender address undefined
subtractedValue uint256 undefined

Returns

Name Type Description
_0 bool undefined

delegate

function delegate(address delegatee) external nonpayable

Delegate votes from the sender to delegatee.

Parameters

Name Type Description
delegatee address undefined

delegateBySig

function delegateBySig(address delegatee, uint256 nonce, uint256 expiry, uint8 v, bytes32 r, bytes32 s) external nonpayable

Delegates votes from signer to delegatee

Parameters

Name Type Description
delegatee address undefined
nonce uint256 undefined
expiry uint256 undefined
v uint8 undefined
r bytes32 undefined
s bytes32 undefined

delegates

function delegates(address account) external view returns (address)

Get the address account is currently delegating to.

Parameters

Name Type Description
account address undefined

Returns

Name Type Description
_0 address undefined

getChainId

function getChainId() external view returns (uint256)

get current block chain identifier

Returns

Name Type Description
_0 uint256 number representing current block chain identifier

getPastTotalSupply

function getPastTotalSupply(uint256 blockNumber) external view returns (uint256)

Retrieve the totalSupply at the end of blockNumber. Note, this value is the sum of all balances. It is but NOT the sum of all the delegated votes! Requirements: - blockNumber must have been already mined

Parameters

Name Type Description
blockNumber uint256 undefined

Returns

Name Type Description
_0 uint256 undefined

getPastVotes

function getPastVotes(address account, uint256 blockNumber) external view returns (uint256)

Retrieve the number of votes for account at the end of blockNumber. Requirements: - blockNumber must have been already mined

Parameters

Name Type Description
account address undefined
blockNumber uint256 undefined

Returns

Name Type Description
_0 uint256 undefined

getRoleAdmin

function getRoleAdmin(bytes32 role) external view returns (bytes32)

Returns the admin role that controls role. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.

Parameters

Name Type Description
role bytes32 undefined

Returns

Name Type Description
_0 bytes32 undefined

getRoleMember

function getRoleMember(bytes32 role, uint256 index) external view returns (address)

Returns one of the accounts that have role. index must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.

Parameters

Name Type Description
role bytes32 undefined
index uint256 undefined

Returns

Name Type Description
_0 address undefined

getRoleMemberCount

function getRoleMemberCount(bytes32 role) external view returns (uint256)

Returns the number of accounts that have role. Can be used together with {getRoleMember} to enumerate all bearers of a role.

Parameters

Name Type Description
role bytes32 undefined

Returns

Name Type Description
_0 uint256 undefined

getVotes

function getVotes(address account) external view returns (uint256)

Gets the current votes balance for account

Parameters

Name Type Description
account address undefined

Returns

Name Type Description
_0 uint256 undefined

grantRole

function grantRole(bytes32 role, address account) external nonpayable

Grants role to account. If account had not been already granted role, emits a {RoleGranted} event. Requirements: - the caller must have role's admin role. May emit a {RoleGranted} event.

Parameters

Name Type Description
role bytes32 undefined
account address undefined

hasRole

function hasRole(bytes32 role, address account) external view returns (bool)

Returns true if account has been granted role.

Parameters

Name Type Description
role bytes32 undefined
account address undefined

Returns

Name Type Description
_0 bool undefined

increaseAllowance

function increaseAllowance(address spender, uint256 addedValue) external nonpayable returns (bool)

Atomically increases the allowance granted to spender by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - spender cannot be the zero address.

Parameters

Name Type Description
spender address undefined
addedValue uint256 undefined

Returns

Name Type Description
_0 bool undefined

initialize

function initialize(address tokensOwner) external nonpayable

Contract initialization. 5_000_000_000 tokens are minted

Initialization of the contract required by the proxy pattern replacing the constructor

Parameters

Name Type Description
tokensOwner address Admin of the contract & recipient address of the minted tokens

isTrustedForwarder

function isTrustedForwarder(address forwarder) external view returns (bool)

Checks if the address is the current trusted forwarder.

ERC2771 implementation

Parameters

Name Type Description
forwarder address address to check

Returns

Name Type Description
_0 bool true if it's the trusted forwarder

name

function name() external view returns (string)

Returns the name of the token.

Returns

Name Type Description
_0 string undefined

nonces

function nonces(address owner) external view returns (uint256)

See {IERC20Permit-nonces}.

Parameters

Name Type Description
owner address undefined

Returns

Name Type Description
_0 uint256 undefined

numCheckpoints

function numCheckpoints(address account) external view returns (uint32)

Get number of checkpoints for account.

Parameters

Name Type Description
account address undefined

Returns

Name Type Description
_0 uint32 undefined

pause

function pause() external nonpayable

Pause is an emergency stop mechanism that stops transfer-related actions

Only owner can pause

paused

function paused() external view returns (bool)

Returns true if the contract is paused, and false otherwise.

Returns

Name Type Description
_0 bool undefined

permit

function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external nonpayable

See {IERC20Permit-permit}.

Parameters

Name Type Description
owner address undefined
spender address undefined
value uint256 undefined
deadline uint256 undefined
v uint8 undefined
r bytes32 undefined
s bytes32 undefined

proxiableUUID

function proxiableUUID() external view returns (bytes32)

Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate that the this implementation remains valid after an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the notDelegated modifier.

Returns

Name Type Description
_0 bytes32 undefined

renounceRole

function renounceRole(bytes32 role, address account) external nonpayable

Revokes role from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked role, emits a {RoleRevoked} event. Requirements: - the caller must be account. May emit a {RoleRevoked} event.

Parameters

Name Type Description
role bytes32 undefined
account address undefined

revokeRole

function revokeRole(bytes32 role, address account) external nonpayable

Revokes role from account. If account had been granted role, emits a {RoleRevoked} event. Requirements: - the caller must have role's admin role. May emit a {RoleRevoked} event.

Parameters

Name Type Description
role bytes32 undefined
account address undefined

setTrustedForwarder

function setTrustedForwarder(address forwarder) external nonpayable

Allows FORWARDER_ROLE granted account to change the trusted forwarder

should be declared here because we need to protect calls with onlyRole(FORWARDER_ROLE)

Parameters

Name Type Description
forwarder address New trusted forwarder's address

supportsInterface

function supportsInterface(bytes4 interfaceId) external pure returns (bool)

Supported interface ask machine.

ERC165 implementation

Parameters

Name Type Description
interfaceId bytes4 interface's id

Returns

Name Type Description
_0 bool true if the specified interface is implemented by the contract

symbol

function symbol() external view returns (string)

Returns the symbol of the token, usually a shorter version of the name.

Returns

Name Type Description
_0 string undefined

totalSupply

function totalSupply() external view returns (uint256)

See {IERC20-totalSupply}.

Returns

Name Type Description
_0 uint256 undefined

transfer

function transfer(address to, uint256 amount) external nonpayable returns (bool)

See {IERC20-transfer}. Requirements: - to cannot be the zero address. - the caller must have a balance of at least amount.

Parameters

Name Type Description
to address undefined
amount uint256 undefined

Returns

Name Type Description
_0 bool undefined

transferAndCall

function transferAndCall(address to, uint256 amount) external nonpayable returns (bool)

Transfer tokens to a specified address and then execute a callback on to.

Parameters

Name Type Description
to address The address to transfer to.
amount uint256 The amount to be transferred.

Returns

Name Type Description
_0 bool A boolean that indicates if the operation was successful.

transferAndCall

function transferAndCall(address to, uint256 amount, bytes data) external nonpayable returns (bool)

Transfer tokens to a specified address and then execute a callback on to.

Parameters

Name Type Description
to address The address to transfer to
amount uint256 The amount to be transferred
data bytes Additional data with no specified format

Returns

Name Type Description
_0 bool A boolean that indicates if the operation was successful.

transferFrom

function transferFrom(address from, address to, uint256 amount) external nonpayable returns (bool)

See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. NOTE: Does not update the allowance if the current allowance is the maximum uint256. Requirements: - from and to cannot be the zero address. - from must have a balance of at least amount. - the caller must have allowance for from's tokens of at least amount.

Parameters

Name Type Description
from address undefined
to address undefined
amount uint256 undefined

Returns

Name Type Description
_0 bool undefined

transferFromAndCall

function transferFromAndCall(address from, address to, uint256 amount, bytes data) external nonpayable returns (bool)

Transfer tokens from one address to another and then execute a callback on to.

Parameters

Name Type Description
from address The address which you want to send tokens from
to address The address which you want to transfer to
amount uint256 The amount of tokens to be transferred
data bytes Additional data with no specified format

Returns

Name Type Description
_0 bool A boolean that indicates if the operation was successful.

transferFromAndCall

function transferFromAndCall(address from, address to, uint256 amount) external nonpayable returns (bool)

Transfer tokens from one address to another and then execute a callback on to.

Parameters

Name Type Description
from address The address which you want to send tokens from
to address The address which you want to transfer to
amount uint256 The amount of tokens to be transferred

Returns

Name Type Description
_0 bool A boolean that indicates if the operation was successful.

unpause

function unpause() external nonpayable

Unpause the contract.

Only owner can unpause

upgradeTo

function upgradeTo(address newImplementation) external nonpayable

Upgrade the implementation of the proxy to newImplementation. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.

Parameters

Name Type Description
newImplementation address undefined

upgradeToAndCall

function upgradeToAndCall(address newImplementation, bytes data) external payable

Upgrade the implementation of the proxy to newImplementation, and subsequently execute the function call encoded in data. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.

Parameters

Name Type Description
newImplementation address undefined
data bytes undefined

Events

AdminChanged

event AdminChanged(address previousAdmin, address newAdmin)

Parameters

Name Type Description
previousAdmin address undefined
newAdmin address undefined

Approval

event Approval(address indexed owner, address indexed spender, uint256 value)

Parameters

Name Type Description
owner indexed address undefined
spender indexed address undefined
value uint256 undefined

BeaconUpgraded

event BeaconUpgraded(address indexed beacon)

Parameters

Name Type Description
beacon indexed address undefined

DelegateChanged

event DelegateChanged(address indexed delegator, address indexed fromDelegate, address indexed toDelegate)

Parameters

Name Type Description
delegator indexed address undefined
fromDelegate indexed address undefined
toDelegate indexed address undefined

DelegateVotesChanged

event DelegateVotesChanged(address indexed delegate, uint256 previousBalance, uint256 newBalance)

Parameters

Name Type Description
delegate indexed address undefined
previousBalance uint256 undefined
newBalance uint256 undefined

Initialized

event Initialized(uint8 version)

Parameters

Name Type Description
version uint8 undefined

Paused

event Paused(address account)

Parameters

Name Type Description
account address undefined

RoleAdminChanged

event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)

Parameters

Name Type Description
role indexed bytes32 undefined
previousAdminRole indexed bytes32 undefined
newAdminRole indexed bytes32 undefined

RoleGranted

event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)

Parameters

Name Type Description
role indexed bytes32 undefined
account indexed address undefined
sender indexed address undefined

RoleRevoked

event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)

Parameters

Name Type Description
role indexed bytes32 undefined
account indexed address undefined
sender indexed address undefined

Transfer

event Transfer(address indexed from, address indexed to, uint256 value)

Parameters

Name Type Description
from indexed address undefined
to indexed address undefined
value uint256 undefined

TrustedForwarderChanged

event TrustedForwarderChanged(address indexed oldTF, address indexed newTF)

Emitted when the trusted forwarder has been successfully changed

Parameters

Name Type Description
oldTF indexed address undefined
newTF indexed address undefined

Unpaused

event Unpaused(address account)

Parameters

Name Type Description
account address undefined

Upgraded

event Upgraded(address indexed implementation)

Parameters

Name Type Description
implementation indexed address undefined