Balances belong to addresses
Each MIP20 balance belongs to an EVM address and is visible in public state. That address may be controlled by a signing key or by a smart contract. In either case,balanceOf(address) returns its spendable balance. Funds reserved in MIP20
holds move to escrow at the token contract and remain attributed to the owner
through heldTotalOf(address).
What makes a token MIP20
Metal recognizes a token as MIP20 when its address appears in theMIP20Factory.isMIP20 mapping. The MIP20 allowlist gives transaction admission
and execution a common way to identify tokens whose balance storage supports
protocol gas accounting.
Factory deployment is permissionless. Calling MIP20Factory.deployMIP20
creates a MetalToken and adds its address to the MIP20 allowlist in the same
transaction. There is no separate registration or approval step.
Metal also starts with fixed-supply MIP20 gas tokens included in genesis.
Their code and initial state are inserted directly, and their addresses are
already present in the MIP20 allowlist. Application-created MIP20 tokens use
factory deployment instead.
An application can deploy another ERC-20 contract, but Metal does not treat it
as MIP20. It cannot pay gas because the execution layer cannot rely on its
storage layout. The MIP20 allowlist establishes protocol compatibility. It
makes no claim about an asset’s issuer, reserves, redemption terms, or legal
status.
Supply authority
The MIP20 deployer becomes the token owner of a factory-deployedMetalToken.
The initial holder is a separate constructor choice and need not be the token
owner.
The token owner can mint additional units, burn tokens from its own balance
and transfer ownership. MIP20 imposes no supply cap or asset-governance process.
The owner and any system controlling it therefore form part of the asset’s trust
boundary.
Genesis gas tokens use the base fixed-supply MIP20 implementation without the
MetalToken ownership, public mint, or public burn functions.
Gas-token eligibility
Metal has no native gas asset. Standard Ethereum envelopes pay with the default gas token, while a Metal0x7f envelope selects a MIP20 token. In both
cases, the transaction signer pays from its spendable balance in that token.
The execution layer debits and refunds the balance by reading and writing the
mandated MIP20 balance slot directly. Gas accounting bypasses contract calls,
allowances, receive policy, and token transfer events. The final fee moves
from the signer to the block’s fee recipient without changing the token’s
total supply.
See Fees for admission, pricing,
refund, and validator-credit behavior. The exact factory, storage, and
contract surfaces are in the
MIP20 reference.