0x00), EIP-2930 (0x01), EIP-1559
(0x02), EIP-4844 blob (0x03), and MIP20 (0x7f) transaction envelopes.
Envelope matrix
Standard Ethereum envelopes pay gas in the chain’s default MIP20 token. Use
them with existing Ethereum tooling when the default token is suitable.
Use the
0x7f envelope when the signer must choose another allowlisted MIP20
gas token or include an EIP-7702 authorization.
A 0x7e transaction is one due entry of the Scheduler predeploy at
0x00000000000000000000000000000000000000fe, run by block execution at the
head of the block; RPC renders it as an EIP-1559-shaped transaction from that
address with a zero signature, to the entry’s call target, or to the
Scheduler itself with the ABI-encoded calls when the entry makes several.
See Scheduled Transactions.
Standard blob transactions require an EIP-7594 network sidecar and submission
through a validator RPC endpoint. They pay execution gas and a separate blob
fee in the default MIP20 token. See Blob Transactions and
Sidecars for the network form and retention rules.
Metal does not accept Ethereum’s native
0x04 SetCode transaction envelope.
It supports an EIP-7702 authorization only when that authorization is carried
inside a signed Metal 0x7f envelope.Asset standards inside a transaction
The envelope defines the signer, gas payment, authorization list, and outer EVM call. The called contract defines the asset state transition and policy checks.
MIP410 operations use the accepted outer envelopes. The signer pays gas with
the default MIP20 token or the token selected by a
0x7f envelope.
Admission rules
Before a transaction enters the pool, Metal checks:- the signature and recovered sender;
- an EIP-155 chain ID that matches the network;
- a supported envelope type;
tx.value == 0;- an allowlisted MIP20 gas token;
- the fee floor and maximum fee bound;
- a gas limit no greater than
100,000,000; - sufficient balance for maximum gas cost and recognized same-token debits; and
- transaction-pool nonce and replacement rules.
blobGasUsed × maxFeePerBlobGas in addition to maximum execution gas cost.
An admitted transaction can still revert during EVM execution. Admission proves
that the envelope and current affordability are valid, not that the contract
call will succeed.
MIP20 envelope fields
Fields appear below in their RLP encoding order.How gas payment works
Admission requires the signer to covermax_fee_per_gas × gas_limit from the identity-keyed MIP20 balance. Before
executing the transaction body, the Metal EVM debits
min(max_fee_per_gas, max_priority_fee_per_gas) × gas_limit. A 0x7f
transaction names that token in gas_token; a standard Ethereum transaction
uses the chain’s default gas token. After execution, Metal refunds the unused
portion and leaves block.coinbase with the fee for gas consumed.
The execution layer updates MIP20 storage directly without an approve or
transferFrom call. Contract reverts roll back application state while the
signer still pays for consumed gas. A blob transaction also pays its full
blob fee, which is not refunded.
max_fee_per_gas must be at most 1_000_000_000_000 base units. Because block.basefee == 0, the effective gas price is min(max_fee_per_gas, max_priority_fee_per_gas) and must be at least 1.
Optional authorization list
An ordinary EOA does not need anauthorization_list to send MIP20 tokens.
Include one only when the account is opting into or changing a smart-account
implementation. The MIP20 EIP-712
signature binds the authorization-list hash. Each authorization’s chainId must
equal Metal’s chain ID; chain-agnostic (chainId = 0) authorizations are
rejected.
The authorization and the selected MIP20 gas token therefore share one signed
Metal transaction. Clients should not translate the request into a standalone
0x04 envelope, because native 0x04 admission is rejected.
EIP-712 signing
The0x7f envelope is signed as EIP-712 typed data, not a raw RLP transaction. The typed data domain uses the MIP20Factory address as the verifying contract:
- Domain name:
"Metal" - Domain version:
"1" - Verifying contract:
0x0000000000000000000000000000000000000f4C(MIP20Factory) - Chain ID: matches
chain_idfield
Testnet defaults
Get your endpoint ID from the Metal console.
See RPC endpoint setup for the setup steps.
Fees
Follow the MIP20 debit, refund, and validator reward.
TypeScript SDK
Build and submit
0x7f transactions with the Metal SDK.