A full Litecoin node running inside an Internet Computer canister -- pure Motoko, no Rust, no FFI.
This is part of the Hive Mind Project by Menese Protocol and Mercatura Forum, supported by ICP Hub Egypt and 11 private and public universities across Egypt. The project investigates whether decentralised compute substrates can run full blockchain consensus validation -- not header-only light clients, but the actual validation pipeline that litecoin core performs when it receives a block.
A Litecoin full node that validates blocks, verifies transactions, maintains a UTXO set, and exposes a JSON-RPC API -- all inside a single IC canister. Every cryptographic primitive is implemented from scratch in Motoko: Scrypt PoW, ECDSA secp256k1, BLAKE3, SHA-256, RIPEMD-160, Bulletproofs, Schnorr.
The binary compiles to 1.3MB. Litecoin Core is 15MB+.
| This Node | Litecoin Core | |
|---|---|---|
| Language | Motoko | C++ |
| Binary | 1.3 MB | 15+ MB |
| Script opcodes | 50+ | 50+ |
| Taproot (BIP341/342) | Yes | Yes |
| MWEB (Bulletproofs) | Yes | Yes |
| SegWit v0/v1 | Yes | Yes |
The IC gives you 13-node replication, tamper-proof BLS consensus, certified queries, zero maintenance, built-in DDoS protection, and 99.99% SLA. What it doesn't give you is native access to other chains. This node solves that for Litecoin -- you can query Litecoin block headers, verify transactions, and check UTXO state from any canister on the IC without trusting an external oracle.
Prior work on ICRC-ME (our ICRC ledger implementation) demonstrated Motoko outperforming Rust on the IC at 7.0M cycles/transfer vs Rust's 8.17M -- a 14% advantage. This node extends that finding to full consensus-grade cryptographic workloads.
┌─────────────────────────────────────────────┐
│ main.mo │
│ persistent actor, timer-driven sync, │
│ JSON-RPC, query endpoints, snapshot upload │
├──────────┬──────────┬───────────┬───────────┤
│ block/ │ script/ │ crypto/ │ mweb/ │
│ │ │ │ │
│ Header │ Script │ Scrypt │ Parser │
│ Chain │ Sighash │ ECDSA │ Validator │
│ Process │ Verify │ BLAKE3 │ Bulletproof│
│ StableLog│ Opcode │ SHA-1 │ Generators│
│ MMR │ │ RIPEMD160 │ │
├──────────┴──────────┴───────────┴───────────┤
│ utxo/ │
│ Region B-tree, balance index, P2PK store │
└─────────────────────────────────────────────┘
57 source files. 12,000+ lines. Zero stubs.
- Scrypt Proof-of-Work (RFC 7914, N=1024, r=1, p=1)
- Difficulty retarget (2016-block intervals, 2.5min target)
- BIP113 Median Time Past
- BIP34 height-in-coinbase (activation: block 710,000)
- BIP141 block weight (4M WU limit)
- Witness commitment verification (coinbase OP_RETURN)
- Block subsidy + exact fee validation (50 LTC halving per 840K blocks)
- Sigops counting with witness discount
- Duplicate TXID detection (BIP30)
- Transaction size limits
- BIP113 locktime enforcement against MTP
Full Bitcoin Script interpreter with 50+ opcodes:
Stack: DUP, DROP, SWAP, OVER, ROT, NIP, TUCK, PICK, ROLL, 2DUP, 2DROP, 3DUP, 2OVER, 2ROT, 2SWAP, DEPTH, IFDUP, SIZE, TOALTSTACK, FROMALTSTACK
Flow: IF, NOTIF, ELSE, ENDIF, VERIFY, RETURN, NOP1-10
Arithmetic: ADD, SUB, 1ADD, 1SUB, NEGATE, ABS, NOT, 0NOTEQUAL, BOOLAND, BOOLOR, NUMEQUAL, NUMEQUALVERIFY, NUMNOTEQUAL, LESSTHAN, GREATERTHAN, LESSTHANOREQUAL, GREATERTHANOREQUAL, MIN, MAX, WITHIN
Crypto: SHA256, SHA1, HASH160, HASH256, RIPEMD160, CHECKSIG, CHECKSIGVERIFY, CHECKMULTISIG, CHECKMULTISIGVERIFY, CHECKSIGADD, CODESEPARATOR
Locktime: CHECKLOCKTIMEVERIFY (BIP65), CHECKSEQUENCEVERIFY (BIP112) -- both with real TX-level enforcement
Soft-fork rules: NULLDUMMY (BIP147), NULLFAIL (BIP146), low-S (BIP62), MINIMALDATA, MINIMALIF (BIP342), OP_SUCCESS (BIP342), disabled opcodes (VERIF/VERNOTIF)
| Type | Sighash | Status |
|---|---|---|
| P2PKH | Legacy | Full |
| P2WPKH | BIP143 | Full |
| P2SH | Legacy | Full |
| P2SH-P2WPKH | BIP143 | Full |
| P2PK | Legacy | Full |
| P2WSH | BIP143 + clean stack + MINIMALDATA | Full |
| P2TR key path | BIP341 + BIP340 Schnorr | Full |
| P2TR script path | BIP341 + BIP342 tapscript | Full |
- BLAKE3 kernel message hashing (580-line pure Motoko, 16 official test vectors)
- Schnorr kernel signature verification (ecmult-based)
- Pedersen commitment balance:
sum(O) - sum(I) - coins_added*H = sum(E) + offset*G - Bulletproof range proof verification (Fiat-Shamir challenges, inner product folding, multi-scalar exponentiation)
- 128 generator vectors derived via RFC 6979 DRBG + Shallue-van de Woestijne hash-to-curve
- HogEx detection and full MWEB block parsing in sync pipeline
- Fork detection and rollback (
rollbackToHeight) - UTXO rollback (restore spent, remove created)
- Block hash→height index (O(1) Map lookup)
| Endpoint | Latency |
|---|---|
| getHeight | <2ms |
| getBalance | <2ms |
| getUTXOStats | <2ms |
| getSyncStatus | <2ms |
Upload a pre-validated UTXO set directly to stable memory instead of syncing from genesis -- reduces initial sync cost by 2,750,000x.
BLAKE3 (16 official vectors) 6ms PASS
Scrypt + PBKDF2 + Salsa20 7ms PASS
ECDSA secp256k1 verification 3374ms PASS
Sighash (legacy + BIP143) 379ms PASS
Script interpreter (50+ opcodes) 14ms PASS
Litecoin header validation 405ms PASS
Header chain (PoW + retarget) 833ms PASS
Difficulty retarget 190ms PASS
Transaction parsing 6ms PASS
UTXO B-tree operations 6ms PASS
16/16 passed, 0 failed, 5.2s total
[dependencies]
core = "2.3.1"
sha2 = "0.1.9"
test = "2.1.1"
libsecp256k1 = "0.1.0"No external C libraries. No FFI bindings. No WASI.
Built under the Hive Mind Project by Menese Protocol and Mercatura Forum, supported by ICP Hub Egypt and 11 universities across Egypt.
MIT