Skip to content

Repository files navigation

MEOW cat mascot

MEOW

Minimal Experimental Open Web

A compact blockchain playground written in Rust.

CI Rust 1.94+ License

What is MEOW?

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.

How it works

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.

RPCmeow-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.

Build & test

cargo build
cargo test

Workspace

crates/
├── 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

Documentation

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

License

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.

About

A compact blockchain written from scratch in Rust — Nakamoto PoW, smart contracts, libp2p gossip, and a typed object model.

Topics

Resources

Stars

2 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages