Skip to content
View ram0verflow's full-sized avatar
🏗️
Building something crazy today
🏗️
Building something crazy today

Organizations

@Elit-Dynamon

Block or report ram0verflow

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
ram0verflow/README.md

ROFL

A small Bitcoin-like chain whose canonical ledger is this README.
Proof of work is subset-sum, not hashing — so mining rewards a better solver, not better hardware

Block explorer · Consensus spec · Mine a block · Send coins · Node


ROFL ledger, height 2404

height 2404
tip ffa4fdb72ad6369f33410bac985178cdce20ecd8f3355cc7c4f0b19b3b4772cb
difficulty 3,000.0 (bits 0x1d015d86)
chainwork 3,862,535,174,013,960,724,158,737,811,002,957,870,367,189,973,438,338 expected hashes
supply 20992.06542840 ROFL in 2405 unspent outputs
next reward 0.02441406 ROFL
next retarget in 11 block(s)
next halving in 115 block(s)
transactions 2407

Recent blocks

# hash miner message txs reward mined
2404 ffa4fdb72ad6369f3341… @ywltby 流水的天才,铁打的ZmjjKK。 1 0.02441406 2026-09-14 22:20 UTC
2403 073be2057006e2fb163a… @ywltby T1我们明天就把你送回家。 1 0.02441406 2026-09-14 22:10 UTC
2402 3c237bf2864708c320eb… @ywltby 原神?启动! 1 0.02441406 2026-09-14 22:03 UTC
2401 09e17b94e2df5accabb4… @k11agent gm from peer-k11 1 0.02441406 2026-09-14 22:01 UTC
2400 06d34bc0f824f7b49b06… @hbzhong gm from Intel Arc 1 0.02441406 2026-09-14 21:52 UTC
2399 3e7e5e997bd9c4830f4b… @hbzhong gm from Intel Arc 1 0.02441406 2026-09-14 21:42 UTC
2398 c3279d376383288ecd38… @ywltby 康神开播了? 1 0.02441406 2026-09-14 21:24 UTC
2397 f1602d263cca6c893d5f… @ywltby 现在拿了世界冠军还在骂我,那拿了世界冠军有什么用呢? 1 0.02441406 2026-09-14 21:14 UTC
2396 09dc6fececffd4820d0b… @ywltby VCTCN,你们的王回来了! 1 0.02441406 2026-09-14 21:08 UTC
2395 f1e3d50d8bb63a6b7043… @ywltby 遇到我们的时候,你才是挑战者。 1 0.02441406 2026-09-14 21:00 UTC

Miners

miner blocks share
@ywltby 858 35.7%
@ksanjeev284 488 20.3%
@americanvain 315 13.1%
@sd5884703 146 6.1%
@uselessfree 110 4.6%
@bulanzade 96 4.0%
@ethahae 69 2.9%
@k11agent 69 2.9%
@ram0verflow 62 2.6%
@eltociear 50 2.1%
@nodgd 28 1.2%
@MingKeZhiNeng 25 1.0%

Balances

Find your own name here once you have run python3 wallet.py identity.

holder address balance
@ksanjeev284 rofl1qn2wv00sq9a875c7pmqf4hfu2ca2y7fa0le96wk 15112.50000000 ROFL
unclaimed rofl1qhkhmy848s09y2jyly8jexk4gd3gnrrclxj2exx 2062.50000000 ROFL
@ywltby rofl1qrrj2pn86jy9ylnatdwuqfazq0ur5pv7xq9lja3 730.77171776 ROFL
@eltociear rofl1qdsfz9v9r2hc798k26egt33zxj8ysg4cgwgcw2z 612.50000000 ROFL
@uselessfree rofl1qm3zqhkwlh85xsaktutuculxhcqnd8vwnj6rt3z 589.84375000 ROFL
@bulanzade rofl1qhu2r7ghewxnxgkruvrx94udl3nduj2a5u3w2my 468.75000000 ROFL
unclaimed rofl1qx5yhylqaa428e8yc3hqseh8z0pe79qe4cpsyxe 272.85156249 ROFL
unclaimed rofl1qyhsqc8t5ldhasar60yfq5u73ga69n94atrg6pt 218.75000000 ROFL
unclaimed rofl1qxu56n53xphqyvpxdqgdny8rvg5hvuw5n58s6ke 174.41506250 ROFL
unclaimed rofl1qhspne7a9fdpv9ne4x8jvklcf38mn3askher4xh 150.09765625 ROFL
unclaimed rofl1q3jwm3gz2s9xy7wa5hg0cgcn9k2s56uma79ynfl 150.00000000 ROFL
unclaimed rofl1qe02gy6ye34lygmska4j93ul03y2hher4rwc2vp 106.25000000 ROFL
@lovivi rofl1qgz45v82mfe8ksyyfezss7m2p8udlsdwp0984vv 93.75000000 ROFL
unclaimed rofl1qnxjnqn35kf6cqutjyfwz4xnldyextf904gxe24 77.34375000 ROFL
unclaimed rofl1q5yjjcsx8nmxxej5djurawqyxepzhqwcxumhret 50.00000000 ROFL
unclaimed rofl1qslgfl5lmx0czpcyq9g6qh29cdrq238mapaxcr5 37.50000000 ROFL
@KirkLee12345 rofl1qkf8jkr6xz5jaa7a33usnvl3x2njcvzlrgjpe62 37.50000000 ROFL
unclaimed rofl1q3yhuearvq4kktun6caezqwdnkaeqmx9gcjlajy 12.50000000 ROFL
unclaimed rofl1qgzsmx8axle22lgkj8gulm3rh9hzcd9jjjzmlq0 12.50000000 ROFL
unclaimed rofl1qrpnrtc6jnaku3lpaghdn6z6gxf4h88jrdpcmxw 6.25000000 ROFL
unclaimed rofl1qp86qhl5pats9c28n48zd9pjda8t4jjeqwk7p44 4.68750000 ROFL
@k11agent rofl1qewcjd6x7catlvufhqr9ml6ul3j2d3up367fzmx 4.54101538 ROFL
unclaimed rofl1qzmkk6cfxs3jd322twyv7luy9eqdpcn2znmusvq 3.12500000 ROFL
@iamgd67 rofl1qhqgh92s92snreh5w3afslt2cv3fv7ekuxuz264 2.33275000 ROFL
unclaimed rofl1qyk9qfjwgth2dfazpx9msskj3sswln76x0x9hqa 0.48828124 ROFL
@hbzhong rofl1q722t3c2emfk7utwz4y09xwxs0670kknthwuler 0.26855466 ROFL
@bg6qcn rofl1qvz2auqlgxzgrhhx4x5q6cwrw3723699y6f2a7z 0.04882812 ROFL

Recent transfers

block from to amount note
1729 @iamgd67 @ywltby 0.01000000 gm
11 rofl1qhkhmy848s0… rofl1q3jwm3gz2s9… 100.00000000 gm @notram0verflow

Rendered from chain/blocks.jsonl at height 2404. Verify it yourself: python3 verify.py


What this is

Everything here is real except the money. Coins move in UTXOs, spent by ECDSA signatures over secp256k1 — the same curve Bitcoin uses, with RFC 6979 deterministic nonces and low-s enforcement. Difficulty retargets every 16 blocks against how long the last window actually took, clamped to a factor of four. The subsidy starts at 50 ROFL and halves every 210 blocks. Coinbase outputs need 10 confirmations before they can be spent.

The one deliberate departure is the work function. Mining ROFL means solving subset-sum puzzles, not grinding hashes.

Given 40 numbers and a target, find the subset that adds up to it exactly. Verifying an answer is one loop of additions. Finding one is meet-in-the-middle at 2²⁰ time and memory — and memory is what binds, which is why difficulty comes from solving more puzzles rather than bigger ones. A block at the floor needs 1; the ceiling is 3,000, about as many solutions as fit in one GitHub comment. Difficulty stops there, because past that point a harder target buys no extra work.

Nobody has built an ASIC for subset-sum. The reference solver in miner.py is deliberately plain, and beating it is the entire sport. @ksanjeev284's CUDA solver is the fastest one anybody has published so far — it stays out of here because "no dependencies" is the pitch, not because it doesn't work.

The full rules, the measurements behind every constant, and each place this knowingly diverges from Bitcoin, are in SPEC.md.

Mine a block

No dependencies. Python 3.9 or newer, standard library only.

git clone https://github.com/ram0verflow/ram0verflow.git rofl && cd rofl
python3 wallet.py new                                  # make a key pair
python3 miner.py --miner YOUR_GITHUB_HANDLE --message "gm"

It solves puzzles until the block is complete, then prints a line starting with rofl-block-v1:. Paste that as a comment on the block issue. A workflow validates it and, if it holds up, appends it to the chain and updates this page.

About half a minute at the starting difficulty. If the chain gets busy, difficulty rises and you solve more puzzles — that is the point.

Your GitHub handle seeds your puzzles. Two things follow. Nobody can submit your solved block as their own, because a different handle means different puzzles and the work would have to be redone. And copying a solution out of the comment thread gets you nothing, because it answers a question only you were asked.

Send coins

python3 wallet.py balance
python3 wallet.py send --to rofl1... --amount 1.5 --memo "gg"

That prints a rofl-tx-v1: line. The memo rides inside the signature, so it cannot be altered or stripped on the way, and it shows up in the ledger above.

Two ways to submit it, and they do the same thing:

  • Comment on the mempool issue. Ten seconds.
  • Pull request adding one file under chain/pending/, if you want the contribution on your profile. The node reads the file, applies the transaction to main and closes the PR — it is never merged, so your submission can't conflict with anyone else's.

Either way it waits in the mempool until a miner includes it. Higher fees get picked first, and the fee goes to whoever mines the block.

Put your name on your balance

python3 wallet.py identity --handle YOUR_GITHUB_HANDLE

Post the rofl-id-v1: line it prints on the mempool issue from the account it names. The signature proves you hold the key; posting it from your account proves you hold the handle. Your name then appears beside your balance in the table above.

This is display only. It gives nobody any authority over your coins — those are spendable by signature and nothing else — and verify.py ignores the registry completely.

The explorer

A README is one file served identically to everyone — no scripts, no per-visitor anything. So the personal view lives one click away, at the block explorer.

It fetches chain/blocks.jsonl and replays the entire chain in your browser: every hash, every merkle root, every difficulty retarget, every signature, every subset-sum puzzle re-checked against its target. The consensus rules in docs/app.js are a direct port of the Python, and the two agree bit for bit.

Tell it your GitHub handle once and it remembers — your balance, the blocks you mined, your transfers, your rank. That is stored in your browser and sent nowhere. Search takes a block height, a block hash, a txid, a rofl1… address or an @handle.

Nothing on that page is served by a backend. There isn't one.

Verify everything yourself

python3 verify.py

Replays every block from genesis: recomputes each hash, re-derives every difficulty retarget, rebuilds every merkle root, checks every signature and every coinbase amount against the subsidy schedule, and asserts that emitted supply equals unspent supply.

It reads only chain/blocks.jsonl. It does not trust this README, the workflow, or any cached state. If I ever rewrite history, this is what catches me.

python3 tests/test_chain.py

Builds a chain in memory, spends real coins with real signatures, then tries to break it nine ways — tampered subsets, forged signatures, inflated coinbases, double spends, stolen blocks, padded solutions, wrong difficulty, deleted blocks, stale tips — and asserts every one is rejected. Runs at a shrunk puzzle size so the whole suite takes seconds.

Layout

rofl/crypto.py       secp256k1, RFC 6979 ECDSA, bech32
rofl/pow.py          subset-sum: instances, solver, verification
rofl/consensus.py    nBits, retargeting, merkle, UTXO set, validation
rofl/chain.py        load, replay, extend
rofl/render.py       this page
docs/                the block explorer — consensus ported to JavaScript
miner.py             the reference solver — beat it
wallet.py            keys, balances, signed transactions
verify.py            independent full-chain verification
submit.py            what the workflow runs
SPEC.md              the consensus rules

Limitations

One writer, so no reorgs. Two miners who solve the same height race on submission time; the loser is handed the new tip and mines again.

The reference solver is pure Python and wants about 200 MB while it runs. That is the memory wall meet-in-the-middle hits, and the reason difficulty scales by puzzle count instead of puzzle size.

Proof of work makes a rewritten history detectable to anyone holding an earlier copy. It does not make one impossible. This chain lives in a single repository and is exactly as durable as that. SPEC.md §13 and §16 say the same thing in more detail.

ROFL coins are worth nothing and always will be. rofl-wallet.json holds a private key in plain text — never reuse it anywhere that matters.

License

MIT.

Pinned Loading

  1. go-file-explorer go-file-explorer Public

    Go

  2. continuumd continuumd Public

    A local memory daemon for LLMs. Treats the context window like RAM: a kernel pages relevant history in and out on demand, the model asks for more when it's missing something, everything is versione…

    Rust

  3. portfolio portfolio Public

    Shell-first portfolio for ramoverflow.dev — content.json edited on GitHub, live without a redeploy

    JavaScript

  4. ram0verflow ram0verflow Public

    A small Bitcoin-like chain whose canonical ledger is my README. Proof of work is subset-sum, not hashing.

    Python 60 37

  5. rust-payjoin rust-payjoin Public

    Forked from payjoin/rust-payjoin

    Supercharged batching to save you fees and preserve your privacy

    Rust

  6. upi-402 upi-402 Public

    Open HTTP 402 payment standard for UPI — AI agents pay for API endpoints using UPI mandates. PA-agnostic. No intermediary.

    TypeScript