MEOW is a self-contained blockchain written from scratch in Rust. It is designed to be small enough to read and understand in full, while still covering the core ideas of a production system: consensus, a typed object model, a smart contract VM, and a peer-to-peer gossip network.
The goal is not to ship a coin — it is to show how the pieces fit together.
Consensus — Nakamoto proof-of-work. The miner continuously attempts blocks over the pending mempool transactions. On reorg, only transactions that are no longer valid against the new chain head are evicted; the rest stay in the mempool and are re-mined automatically.
Object model — State is a flat map of typed objects, each identified by a 32-byte address and owned by a key pair. Transactions consume and produce objects. The gas coin is itself an object, so fees are enforced the same way as any other balance movement.
Smart contracts — Programs are written in the Meow Language, compiled to bytecode by meow-vm-compiler. The VM executes bytecode against the object store inside a transaction. Contracts can be run locally through the CLI without touching a node.
Networking — Nodes communicate over libp2p gossipsub. Peers are discovered automatically on the local network via mDNS; cross-machine peering uses explicit bootstrap addresses. When a node falls behind, it catches up by pulling missing blocks or fetching a full state snapshot from a peer.
RPC — meow-node exposes a JSON-over-HTTP API on 127.0.0.1:8600 by default. The meow client CLI sub-commands and the meow-node-client library crate both talk to this API.
cargo build
cargo testcrates/
├── meow CLI binary (keys, genesis, transactions, contracts, client)
├── meow-node Full node binary — HTTP RPC + gossip integration
├── meow-node-client Typed HTTP client library for the node RPC
├── meow-nakamoto Chain, block validation, miner, mempool, object store
├── meow-nakamoto-types Block and block-header type definitions
├── meow-types Shared types — addresses, digests, objects, transactions, keys
├── meow-vm Smart contract runtime
├── meow-vm-compiler .meow source → bytecode compiler
├── meow-vm-bytecode-verifier bytecode verifier — runs at publish time
├── meow-vm-adapter VM ↔ chain glue layer
├── meow-vm-types VM type definitions
├── meow-gossip-network libp2p gossipsub + mDNS networking
├── meow-gossip-types Network-level shared types and config
├── meow-genesis Genesis file loading and validation
├── meow-framework System framework modules
├── meow-vm-examples Runnable smart contract examples
└── meow-e2e-tests End-to-end, network, and security tests
| Doc | What it covers |
|---|---|
| Quick Start | Key generation, genesis, running a node, sending transactions |
| Object Model | Objects, ownership, versioning, gas coins, and lifecycle |
| Consensus | PoW, block validation rules, fork choice, reorgs, mempool, timestamps, and randomness |
| Networking | Peer discovery, gossip topics, catch-up sync, and node configuration |
| RPC API | HTTP endpoints — submit transactions, query objects and blocks |
| Contracts | Practical guide: types, native functions, access control, bytecode verification |
| Language Reference | Complete Meow Language syntax and type-system reference |
| Adapter & Natives | Native functions, on-chain object lifecycle, bytecode verifier, gas metering |
| Tokenomics | Supply, gas model, and block rewards |
| Meow Coin | Built-in system coin reference |
| Example: hero game | Full contract lifecycle walkthrough |
| Example: timelock coin | Time-locked coin using meow_vm_timestamp() |
| Architecture | Crate map, subsystems overview, data flow, and testing strategy |
MEOW is free and open source. All code in this repository is dual-licensed under your choice of:
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project shall be dual-licensed as above, without any additional terms or conditions.