Address Formats
Monolythium supports two address formats that represent the same underlying account.
Address Types
| Format | Prefix | Example | Used For |
|---|---|---|---|
| Cosmos (Bech32) | mono1 | mono1abc123def456... | Staking, governance, Cosmos SDK |
| EVM (Hex) | 0x | 0x1234567890abcdef... | Smart contracts, MetaMask |
Same Account, Two Representations
Both formats derive from the same private key:
Private Key
│
├── Cosmos Address (mono1...)
│
└── EVM Address (0x...)
The same account can be accessed via either format. Sending LYTH to either address credits the same balance.
Bech32 (Cosmos) Addresses
Format
mono1 + 38 characters
Example: mono1qypqxpq9qcrsszg2pvxq6rs0zqg3yyc5lzv7xu
Uses
- Cosmos CLI commands
- Keplr and Leap wallets
- Staking transactions
- Governance voting
- Bank transfers (native)
Validator Addresses
| Type | Prefix | Use |
|---|---|---|
| Account | mono1 | User addresses |
| Validator operator | monovaloper1 | Validator management |
| Validator consensus | monovalcons1 | Consensus key |
| Public key | monopub1 | Account public key |
EVM (Hex) Addresses
Format
0x + 40 hexadecimal characters
Example: 0x1234567890123456789012345678901234567890
Uses
- MetaMask and EVM wallets
- Smart contract interactions
- EVM RPC calls
- Solidity development
Converting Between Formats
CLI
# Bech32 to Hex
monod debug addr mono1abc123...
# Hex to Bech32
monod debug addr 0x1234...
Programmatically
// Using ethers.js and cosmjs
import { ethers } from 'ethers';
import { fromBech32, toBech32 } from '@cosmjs/encoding';
// Bech32 to Hex
function bech32ToHex(bech32Address) {
const { data } = fromBech32(bech32Address);
return '0x' + Buffer.from(data).toString('hex');
}
// Hex to Bech32
function hexToBech32(hexAddress) {
const data = Buffer.from(hexAddress.slice(2), 'hex');
return toBech32('mono', data);
}
Which Format Should I Use?
| Action | Recommended Format |
|---|---|
| Send from MetaMask | EVM (0x...) |
| Send from Keplr | Either works |
| Stake tokens | Cosmos (mono1...) |
| Vote on proposals | Cosmos (mono1...) |
| Deploy contracts | EVM (0x...) |
| Interact with dApps | EVM (0x...) |
| CLI operations | Cosmos (mono1...) |
Receiving LYTH
You can share either address format to receive LYTH:
- Share
mono1...for Cosmos wallet users - Share
0x...for MetaMask/EVM users
Both credit the same account.
Important Notes
Checksum (EVM)
EVM addresses have an optional checksum format using mixed case:
0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed (checksummed)
0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed (lowercase)
Both are valid; checksummed format helps detect typos.
Case Sensitivity
- Cosmos addresses: Case-insensitive (all lowercase)
- EVM addresses: Case-sensitive for checksum, but accepted either way
Cross-Chain Addresses
!!! warning "Network-Specific" Addresses are specific to Monolythium. Do not send to/from addresses on other chains (Ethereum, Cosmos Hub, etc.) without proper bridging.
FAQ
Do I need separate wallets for each format?
No. Use MetaMask for EVM operations and Keplr for Cosmos operations. Both access the same account.
Can I stake using my EVM address?
No. Staking transactions require Cosmos format. Use Keplr or CLI.
What if I send to the wrong format?
Within Monolythium, both formats work - the tokens arrive. Issues only occur if you try to send to another chain.
How do I verify both addresses are the same account?
Use monod debug addr <address> to convert and verify.
Related
- Wallets - Wallet setup
- Sending LYTH - Transfer tokens