Hold Solana value that cannot move with internet alone — it needs the mesh.
MeshChain is the disconnected last mile and the extra lock on a Solana vault: deposit USDC/SOL while you have LTE, sign a bounded IOU on Meshtastic, settle when a gateway plus mesh witnesses appear. A laptop on hotel Wi-Fi cannot drain the vault by itself.
tMESH is a test counter. Product settlement is vault USDC/SOL. Not a messenger. Not “Solana tx over LoRa.” See PRODUCT.md.
Built for the Meshtastic ecosystem. Not an official Meshtastic Foundation product — community software that runs on Meshtastic radios and channels.
Live site: meshchain-sigma.vercel.app · Wallet · Docs · Testnet · Scanner · Faucet · Discord · Launch post on X
Meshtastic · GitHub · Discord · Day-1 posts · Security · Hybrid vault · Donate
TESTNET ONLY — tMESH has no cash value. State may be wiped.
| Parameter | Value |
|---|---|
| chain_id | meshchain-testnet-1 |
| Token | tMESH |
| Channel | MeshChain-Testnet-1 |
| Solana | devnet for bridge experiments |
| Seed peer | 34.172.103.125:9100 |
| Scanner | https://34.172.103.125.sslip.io/ |
| Faucet | https://faucet.34.172.103.125.sslip.io/info |
| Params | testnet/network.json · seeds.json |
git clone https://github.com/krewdev/meshchain.git && cd meshchain
cargo build -p mesh -p meshchain-node
./target/debug/mesh join-public
./target/debug/mesh new-wallet --name me.json --publish
./target/debug/mesh faucet-drip --wallet me.json
./target/debug/mesh balance --wallet me.json
# optional: offline balance over radio relay
./scripts/start_radio_relay.sh &
./target/debug/mesh balance --air --wallet me.json./target/debug/mesh testnet-setup
./target/debug/mesh demo
./scripts/start_testnet_host.sh # optional local validators + faucet| Feature | Docs / how |
|---|---|
| Browser wallet (create / faucet / send / radio) | WALLET · https://meshchain-sigma.vercel.app/wallet/ |
| Public seed + faucet + scanner | TESTNET · STATUS |
| Air balance / air submit | MESHTASTIC · mesh balance --air |
| Compact AirBlockAck (LoRa finality frames) | AIR_FINALITY · ./scripts/e2e_air_finality.sh |
| Solana vault deposit → tMESH mint | SOLANA_BRIDGE · systemd meshchain-relayer |
| Hybrid dual-control unlock | HYBRID_LOCK |
Guide: Getting started · TESTNET · Run a node · Status
Live multi-host: seed 34.172.103.125:9100 · remote observer 35.192.20.103:9100
Optional support for development:
| Network | Address |
|---|---|
| Solana | 7EwBb1yboTkT3eZmUWw4zbWMMJC2a5e9rMeGV9EgkPJp |
| Ethereum | 0xCB2d3d03FC47aec6a6DBA7C91010c16a1b9A5ca2 |
| Bitcoin | bc1qzyfy2eqrxx0n2vugjhp4zkzkqcmhth7h5zhgle |
| Goal | How |
|---|---|
| Use a simple wallet (no UI app required) | mesh CLI · Getting started |
| Run a local test network | mesh testnet-setup + mesh demo |
| Check balance offline (radio) | mesh balance --air + radio relay |
| Send over LoRa path | mesh send … --air |
| Cold storage off Wi‑Fi / 5G | mesh new-cold-key + hybrid vault |
| Bridge SOL (devnet) → tMESH | SOLANA_BRIDGE · deposit + relayer |
| Talk over real radios | tools/mesh_radio_relay.py + Meshtastic nodes |
- Rust (stable)
- Optional: Meshtastic hardware +
pip install meshtastic - Optional: Solana / Anchor for the vault program
git clone https://github.com/krewdev/meshchain.git
cd meshchain
cargo build -p mesh -p meshchain-node
# Plain-English commands
./target/debug/mesh setup # create a local test network
./target/debug/mesh demo # practice transfers + vault hooks
./target/debug/mesh new-wallet # create a spending wallet
./target/debug/mesh balance --wallet alice.json
./target/debug/mesh new-cold-key # quantum-safe cold key (keep offline)
./target/debug/mesh how-cold-works
./target/debug/mesh security # honest security posturemesh new-wallet Create a wallet file
mesh address Show your short mesh address
mesh balance Show balance
mesh send <address> <amount> Sign a payment
mesh status Network height & supply
Keys are stored under ./data/keys/ by default. Never commit key files. Keep cold keys off phones with cellular when possible.
[ Wallet / cold key ] ──Meshtastic LoRa──► [ Mesh validators ]
│
Mint / Burn / finality
│
[ Solana vault ] ◄── hybrid unlock (mesh id + burn + attestors)
- Mesh = truth for MESH balances when offline
- Solana vault (optional) locks real assets; unlock needs mesh proof
- Not a replacement for Bitcoin/Solana L1 security models
| Path | Purpose |
|---|---|
crates/mesh |
Simple user CLI (mesh) |
crates/wallet |
Advanced wallet CLI |
crates/node |
Validator / simulator |
crates/proto |
Transactions, PQ crypto, privacy helpers |
crates/ledger |
Balances, nonces, PQ policy |
crates/transport |
Meshtastic framing + FRAG for large PQ sigs |
programs-mesh-bridge |
Solana hybrid vault (Anchor) |
tools/ |
meshtastic_bridge.py, relayer.py |
docs/ |
Protocol, security, hybrid lock, BTC vault design |
Guide: docs/MESHTASTIC.md (air-first submit, tip gossip, relay)
- Flash devices with Meshtastic firmware.
- Private channel MeshChain-Testnet-1 (not public LongFast for funds).
- Run local validator + relay, then air-submit:
./scripts/start_radio_relay.sh & # mock unless MESH_RADIO_PORT set mesh send <NAME> 1 --wallet me.json --air --relay 127.0.0.1:9199
- Everyday spends use compact MC Tx frames; multi-tx blocks stay on TCP.
- Faucet / scanner / Solana vault still need the internet.
See also docs/HARDWARE.md · docs/PROTOCOL.md.
We aim for maximum practical rigor (hybrid dual-control, PQ cold auth, fail-secure defaults).
We do not claim perfect anonymity or unbreakable security.
Do not put significant real value on this software without an independent audit.
Issues and PRs welcome. Please:
- Do not commit secrets or
data/keys - Keep the
meshCLI language plain and beginner-friendly - Document residual risks when changing consensus or vault rules
MIT — see LICENSE.