Skip to content

Repository files navigation

Morpheum CLI

Thin wrapper around morpheum-sdk providing a user-friendly command-line interface for interacting with the Morpheum blockchain and its cross-chain infrastructure.

Quick Start

# Build with cross-chain support
cargo build --features bank

# Add a key from BIP-39 mnemonic
morpheum keys add default --mnemonic "abandon abandon ..."

# Import a raw EVM private key
morpheum keys import-evm my-evm-wallet --private-key 0x...

# Bind every transaction to the target chain. Take both values from the chain's
# published parameters, never from the node you submit to; without a genesis
# hash, signing is refused.
morpheum config set chain_id <chain-id>
morpheum config set genesis_hash <hex>

Cross-Chain Transfers

Deposit tokens from external chains into Morpheum and withdraw back via Hyperlane Warp Routes.

Deposit (External Chain → Morpheum)

# EVM: Deposit 100 USDC from Sepolia
morpheum tx bank deposit --chain evm:sepolia --token USDC --amount 100

# EVM: Deposit 0.01 ETH from Sepolia with custom RPC
morpheum tx bank deposit --chain evm:sepolia --token ETH --amount 0.01 \
  --chain-rpc https://my-rpc.example.com

# SVM: Deposit 0.5 SOL from Solana Devnet
morpheum tx bank deposit --chain svm:devnet --token SOL --amount 0.5

Withdraw (Morpheum → External Chain)

# Withdraw USDC to EVM address
morpheum tx bank withdraw --chain evm:sepolia --token USDC \
  --recipient 0x000000000000000000000000<20-byte-address> --amount 1000000

# Withdraw SOL to Solana address
morpheum tx bank withdraw --chain svm:devnet --token SOL \
  --recipient 0x<32-byte-solana-pubkey> --amount 50000000

Query Delivery Status

morpheum query gmp delivery --message-id 0xabc123...

Transaction Finality

Every morpheum tx … command prints a txhash (and, when the node reports it, the routed shard) as soon as the node admits the transaction. Admission is not finality: the transaction may still fail, be skipped, or — during a shard outage — never land. Bound your own wait and reconcile the outcome via the node's tx.v1.Query/QueryTxStatus RPC (GET /tx/v1/tx/{txhash}/status — confirmed | failed | skipped | pending | not_found; pending is answered only by the node that admitted the tx).

Gas Limit

Every transaction the CLI signs declares a gas limit. Execution fails once a transaction uses more, and the whole limit is reserved in its block whether it is used or not. When --gas-limit is not given, the transaction declares the signing SDK's default (DEFAULT_GAS_LIMIT in morpheum-signing), which suits native-module messages, or the gas limit its message states for itself when that is larger (an SVM program call states its compute limit). Contract deployments and calls, including tx bank withdraw (a Warp Route contract call), can need more than either:

morpheum tx bank withdraw --chain evm:sepolia --token USDC \
  --recipient 0x000000000000000000000000<20-byte-address> --amount 1000000 \
  --gas-limit <gas>

The value must lie between 1 and the chain's per-transaction gas budget, and at least the gas limit the message states for itself; the CLI refuses anything else before it signs and names the bound. morpheum --help prints the range and the default.

Registry Queries

Discover supported chains, tokens, and actions without hard-coded tables. Data is read directly from the SDK chain registries at runtime, so it is always accurate and requires zero manual maintenance.

# List all supported external chains
morpheum query registry chains

# List tokens for a specific chain (with available actions)
morpheum query registry tokens --chain evm:sepolia

# Find all chains that support a given token
morpheum query registry routes --token USDC

Bank Asset Registry

Query the on-chain asset registry managed by the bank module.

# List all registered assets (index, symbol, type, metadata)
morpheum query bank assets

# Filter by asset type (e.g. 7 = CANONICAL_STABLECOIN)
morpheum query bank assets --type-filter 7

Architecture

The CLI follows a layered design:

  • morpheum-cli -- Thin command dispatcher; no business logic
  • morpheum-sdk -- All heavy logic (chain registries, signing, transaction building)
  • morpheum-signing -- BIP-39 key derivation for Native, EVM, and Solana

Cross-chain capabilities are a composable trait applied to modules, not a separate top-level concept. The xchain module provides CrossChainExecutor which any module can use. Currently the bank module uses it for deposit/withdraw.

Features

Feature Description
bank Enables cross-chain deposit/withdraw via Hyperlane

About

Official Morpheum CLI

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages