-
Notifications
You must be signed in to change notification settings - Fork 31
Address Format
Mintlayer addresses use Bech32m encoding (BIP 350), the same standard used by Bitcoin for SegWit v1+ addresses. A Mintlayer address string has the form:
<prefix>1<bech32m-encoded-data>
- Prefix (Human-Readable Part / HRP): identifies the network and address type
-
1: separator character - Bech32m-encoded data: the serialized address payload with a built-in checksum
The checksum catches typos and transcription errors. Addresses are case-insensitive (conventionally lowercase).
Mintlayer has several address types, each with its own prefix. The most common one for sending and receiving coins is the public key hash address.
| Type | Description | Mainnet prefix | Testnet prefix |
|---|---|---|---|
PublicKeyHash |
Hash of a public key. The standard address type for sending and receiving. | mtc |
tmt |
PublicKey |
A full public key (used in specific contexts, e.g. staking keys). | mptc |
tpmt |
ScriptHash |
Hash of a spending script. | mstc |
tstc |
ClassicMultisig |
Hash of a multisig script. | mmtc |
tmtc |
These are encoded in the same Bech32m format and appear in wallet and staking contexts:
| Type | Description | Mainnet prefix | Testnet prefix |
|---|---|---|---|
| VRF Public Key | Verifiable Random Function key used for staking | mvrfpk |
tvrfpk |
| Pool ID | Identifier for a staking pool | mpool |
tpool |
| Delegation ID | Identifier for a delegation | mdelg |
tdelg |
| Token ID | Identifier for a fungible token | mmltk |
tmltk |
| Order ID | Identifier for a DEX order | mordr |
tordr |
All prefixes by network:
| Type | Mainnet | Testnet | Regtest | Signet |
|---|---|---|---|---|
| PublicKeyHash | mtc |
tmt |
rmt |
smt |
| PublicKey | mptc |
tpmt |
rpmt |
spmt |
| ScriptHash | mstc |
tstc |
rstc |
sstc |
| ClassicMultisig | mmtc |
tmtc |
rmtc |
smtc |
| VRF Public Key | mvrfpk |
tvrfpk |
rvrfpk |
svrfpk |
| Pool ID | mpool |
tpool |
rpool |
spool |
| Delegation ID | mdelg |
tdelg |
rdelg |
sdelg |
| Token ID | mmltk |
tmltk |
rmltk |
smltk |
| Order ID | mordr |
tordr |
rordr |
sordr |
You can always tell which network an address belongs to from its prefix. Mainnet addresses start with m, testnet addresses with t.
# Mainnet public key hash address
mtc1qyerxzjxfpz9zy2n7dfs73yvhglyfy5f8hkmmfu0
# Testnet public key hash address
tmt1q8lhgxhycm8e6yk9zpnetdwtn03h73z70c3ha4l7
# Mainnet token ID
mmltk1e7egscactagl7e3met67658hpl4vf9ux0ralaculjvnzhtc4qmsqv9y857
# Mainnet staking pool ID
mpool1zg7yccqqjlz38cyghxlxyp5lp36vwecu2g7gudrf58plzjm75tzq99fr6v
# Mainnet VRF public key
mvrfpk1qqyxcl4tc6y9amf2vmv6sgu8x5jwqlxawx73vhgemkduag9c8ku57m03mze
The wallet-address-generator tool can generate addresses offline without running a node:
wallet-address-generator --network mainnet
wallet-address-generator --network testnet -n 5Inside wallet-cli, use:
address-new # generate a new receiving address
address-show # list all existing receiving addresses
- Encoding: Bech32m (BIP 350). Unlike legacy Bech32 (BIP 173), Bech32m has a stronger checksum and is required for all Mintlayer addresses.
-
Payload: The data portion is a SCALE-encoded serialization of the underlying object (e.g. a 20-byte public key hash for
PublicKeyHashaddresses). - Public key hash: computed as BLAKE2b → RIPEMD-160, resulting in a 20-byte hash.
- Case: Addresses are always lowercase. Mixed-case inputs are rejected.
- Validation: An address is invalid if the Bech32m checksum fails, if the prefix does not match the expected network, or if the payload cannot be deserialized.
- Home
- Installing Mintlayer
- Upgrade Mintlayer
- Node
- Addresses
- Wallet CLI
- Wallet RPC
- API
- Advanced Tools
- Guides
- CHANGELOG