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
- Monolythium Browser Wallet, 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 the Monolythium Browser Wallet for both, or MetaMask for EVM operations and Keplr for Cosmos operations. They all access the same account.
Can I stake using my EVM address?
No. Staking transactions require Cosmos format. Use the Monolythium Browser Wallet, 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