← back

röyksopp | Update
Jan 17, 2026

It started as an OTP-flavored actor runtime with a toy TCP mesh, and now it has a minimal blockchain node layered on top.

TL;DR

What changed

Persistence and recovery

Mempool rules

Consensus hardening

Block propagation

Tooling and scripts

CLI binaries

Scripts

Make targets

make demo      # nodes + interactive client
make play      # in-process playground
make nodes     # run nodes only
make test      # all tests
make clippy    # lint

API usage

In-process submission:

let tx = Tx { key: b"foo".to_vec(), value: b"bar".to_vec(), fee: 1 };
runtime.chain.submit_tx(tx).await?;

RPC submission:

let req = ChainRequest::SubmitTx { tx };
let bytes = bincode::serialize(&req)?;
let resp_bytes = net.request(peer_id, "chain", bytes, Duration::from_secs(2))
                    .await?;

Wire protocol (short version)

Documentation refresh

README.md now includes:

Tradeoffs / limitations

If you want to try it

The easiest path:

make demo

Then use the interactive prompt:

key=value [fee]
tip
exit

What I want to do next