
Company News
Jerod Santo Joins Socket as Head of Media
Allow myself to introduce... myself.
Private blockchain framework for Node.js — zero-config, embeddable, SQL-queryable. Enterprise-grade permissioned ledger with Raft consensus, smart contracts, and built-in block explorer. The easiest way to add a distributed ledger to any application.
Zero-config permissioned ledger with Raft consensus, smart contracts, SQL queries, and a built-in block explorer.
The simplest way to add a distributed ledger to any application.
npm install miniledger
MiniLedger is a private blockchain framework and permissioned distributed ledger that runs in a single Node.js process. Unlike Hyperledger Fabric or R3 Corda, there's no Docker, no Kubernetes, no certificate authorities, and no JVM — just npm install and you have a production-ready consortium blockchain with Raft consensus, JavaScript smart contracts, per-record encryption, on-chain governance, and full SQL queryability.
Built for enterprise use cases like supply chain tracking, audit trails, multi-party data sharing, tokenized assets, and any scenario where you need an immutable, tamper-proof ledger without the overhead of public blockchains or the complexity of legacy DLT platforms.
npm install miniledger && npx miniledger start. No infrastructure.SELECT * FROM world_state directly.# Initialize and start a node
npx miniledger init
npx miniledger start
# Submit a transaction
curl -X POST http://localhost:4441/tx \
-H "Content-Type: application/json" \
-d '{"key": "account:alice", "value": {"balance": 1000}}'
# Query state with SQL (!)
curl -X POST http://localhost:4441/state/query \
-H "Content-Type: application/json" \
-d '{"sql": "SELECT * FROM world_state"}'
# Open the block explorer dashboard
open http://localhost:4441/dashboard
npx miniledger demo
Spins up a 3-node Raft cluster, deploys a token smart contract, submits sample transactions, and opens the web dashboard — a full blockchain explorer with block/tx drill-down, state browser, contract viewer, governance page, and search.
The built-in explorer at http://localhost:4441/dashboard includes:
Submit data via curl or the CLI:
# Store a user record
curl -X POST http://localhost:4441/tx \
-H "Content-Type: application/json" \
-d '{"key": "user:alice", "value": {"name": "Alice", "balance": 500, "role": "admin"}}'
# Store a product (supply chain, inventory, etc.)
curl -X POST http://localhost:4441/tx \
-H "Content-Type: application/json" \
-d '{"key": "product:widget-a", "value": {"name": "Widget A", "price": 29.99, "stock": 142}}'
# Invoke a smart contract method
curl -X POST http://localhost:4441/tx \
-H "Content-Type: application/json" \
-d '{"type": "contract:invoke", "payload": {"kind": "contract:invoke", "contract": "token", "method": "mint", "args": [5000]}}'
# Delete a key
curl -X POST http://localhost:4441/tx \
-H "Content-Type: application/json" \
-d '{"key": "product:widget-a", "value": null}'
# Query state with SQL
curl -X POST http://localhost:4441/state/query \
-H "Content-Type: application/json" \
-d '{"sql": "SELECT key, value FROM world_state WHERE key LIKE '\''user:%'\''"}'
Or use the CLI:
miniledger tx submit '{"key":"sensor:temp-1","value":{"celsius":22.5,"location":"warehouse"}}'
miniledger query "SELECT * FROM world_state ORDER BY updated_at DESC LIMIT 10"
Use MiniLedger as a library — embed a private blockchain directly in your Node.js application:
import { MiniLedger } from 'miniledger';
const node = await MiniLedger.create({ dataDir: './my-ledger' });
await node.init();
await node.start();
// Submit a transaction
await node.submit({ key: 'account:alice', value: { balance: 1000 } });
// Query state with SQL
const results = await node.query(
'SELECT * FROM world_state WHERE key LIKE ?',
['account:%']
);
// Deploy a smart contract
await node.submit({
type: 'contract:deploy',
payload: {
kind: 'contract:deploy',
name: 'token',
version: '1.0',
code: `return {
mint(ctx, amount) {
const bal = ctx.get("balance:" + ctx.sender) || 0;
ctx.set("balance:" + ctx.sender, bal + amount);
}
}`
}
});
| Feature | Description |
|---|---|
| Zero config | No Docker, no K8s, no certificate authorities. Single Node.js process. |
| SQL-queryable state | World state stored in SQLite. Run SQL queries directly against the ledger. |
| Raft consensus | Production-grade leader election, log replication, and fault tolerance. |
| Smart contracts | Write and deploy contracts in JavaScript. No Solidity required. |
| Per-record privacy | AES-256-GCM field-level encryption with ACLs. No channels needed. |
| On-chain governance | Propose and vote on network changes. Quorum-based decision making. |
| Block explorer | Built-in web dashboard with search, pagination, and drill-down views. |
| P2P networking | WebSocket mesh with auto-reconnect and peer discovery. |
| Ed25519 identity | Audited cryptographic signatures. No PKI setup required. |
| TypeScript native | Full type safety. Dual CJS/ESM package. Embed in any Node.js app. |
MiniLedger is ideal for:
┌───────────┐
│ CLI │
└─────┬─────┘
│
┌─────▼─────┐
│ Node │ (orchestrator)
└─────┬─────┘
│
┌───────┬───────┬───┴───┬───────┬───────┐
│ │ │ │ │ │
┌──▼──┐ ┌─▼───┐ ┌─▼────┐ ┌▼─────┐ ┌▼────┐ ┌▼───────┐
│ API │ │Raft │ │ P2P │ │Contr.│ │Gov. │ │Privacy │
└──┬──┘ └──┬──┘ └──┬───┘ └──┬───┘ └──┬──┘ └───┬────┘
└───────┴───────┴────┬───┴────────┴────────┘
┌──────▼──────┐
│ Core │ (blocks, transactions, merkle)
└──────┬──────┘
┌────────────┼────────────┐
┌─────▼─────┐ ┌──────▼─────┐
│ SQLite │ │ Ed25519 │
└────────────┘ └─────────────┘
Set up a multi-organization private network:
# Node 1 (bootstrap)
miniledger init -d ./node1
miniledger start -d ./node1 --consensus raft --p2p-port 4440 --api-port 4441
# Node 2 (joins the network)
miniledger init -d ./node2
miniledger join ws://localhost:4440 -d ./node2 --p2p-port 4442 --api-port 4443
# Node 3 (joins the network)
miniledger init -d ./node3
miniledger join ws://localhost:4440 -d ./node3 --p2p-port 4444 --api-port 4445
Each node maintains a full copy of the ledger. Raft consensus ensures all nodes agree on the same block history, with automatic leader election and fault tolerance.
| Command | Description |
|---|---|
miniledger init | Initialize a new node (create keys, genesis block) |
miniledger start | Start the node |
miniledger join <addr> | Join an existing network |
miniledger demo | Run a 3-node demo cluster |
miniledger status | Show node status |
miniledger tx submit <json> | Submit a transaction |
miniledger query <sql> | Query state with SQL |
miniledger keys show | Show node's public key |
miniledger peers list | List connected peers |
| Endpoint | Method | Description |
|---|---|---|
/status | GET | Node status (height, peers, uptime) |
/blocks | GET | Block list (paginated: ?page=N&limit=M) |
/blocks/:height | GET | Block by height |
/blocks/latest | GET | Latest block |
/tx | POST | Submit transaction |
/tx/:hash | GET | Transaction by hash |
/tx/recent | GET | Confirmed transactions (paginated, filterable by ?type=) |
/tx/sender/:pubkey | GET | Transactions by sender address |
/state | GET | State entries (paginated: ?page=N&limit=M) |
/state/:key | GET | State entry by key |
/state/query | POST | SQL query ({sql: "SELECT ..."}) |
/search | GET | Unified search (?q=<block height, tx hash, key, address>) |
/peers | GET | Connected peers |
/consensus | GET | Consensus state |
/proposals | GET | Governance proposals |
/proposals/:id | GET | Proposal by ID |
/contracts | GET | Deployed contracts |
/identity | GET | Node identity |
/dashboard | GET | Web explorer dashboard |
| MiniLedger | Hyperledger Fabric | R3 Corda | Quorum | |
|---|---|---|---|---|
| Setup time | 10 seconds | Hours/days | Hours | Hours |
| Dependencies | npm install | Docker, K8s, CAs | JVM, Corda node | JVM, Go-Ethereum |
| Config files | 0 (auto) | Dozens of YAML | Multiple configs | Genesis + static nodes |
| Consensus | Raft (built-in) | Raft (separate orderer) | Notary service | IBFT / Raft |
| Smart contracts | JavaScript | Go/Java/Node | Kotlin/Java | Solidity |
| State queries | SQL | CouchDB queries | JPA/Vault | No native query |
| Privacy | Per-record ACLs | Channels (complex) | Point-to-point | Private transactions |
| Governance | On-chain voting | Off-chain manual | Off-chain | Off-chain |
| Dashboard | Built-in explorer | None (3rd party) | None | None |
| Embeddable | Yes (npm library) | No | No | No |
Apache-2.0
Built by Chainscore Labs — blockchain infrastructure and developer tooling.
Need custom blockchain solutions, integrations, or developer tooling?
hello@chainscore.finance · chainscorelabs.com
FAQs
Private blockchain framework for Node.js — zero-config, embeddable, SQL-queryable. Enterprise-grade permissioned ledger with Raft consensus, smart contracts, and built-in block explorer. The easiest way to add a distributed ledger to any application.
The npm package miniledger receives a total of 4 weekly downloads. As such, miniledger popularity was classified as not popular.
We found that miniledger demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Allow myself to introduce... myself.

Research
/Security News
A Twitch browser extension on Chrome and Firefox forwards users’ live OAuth session tokens through proxies controlled by a Russian bot service.

Security News
Anthropic found biased reasoning and recklessness drove Claude Mythos 5 to publish malware on PyPI and compromise a security vendor.