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

Highlights

  • Pro

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 3644

height 3644
tip 41acce91e465479915b086883e1e8198189521d4f12d648665f414651a9ad2c6
difficulty 1.0 (bits 0x1e100000)
chainwork 3,862,535,174,013,960,724,158,737,811,002,957,870,368,520,708,316,199 expected hashes
supply 20999.86838370 ROFL in 3645 unspent outputs
next reward 0.00038146 ROFL
next retarget in 3 block(s)
next halving in 135 block(s)
transactions 3647

Recent blocks

# hash miner message txs reward mined
3644 41acce91e465479915b0… @ywltby 输你一场,不代表我们会一直输给你。 1 0.00038146 2026-09-25 05:26 UTC
3643 65fb1b666fd2f6ded544… @ywltby T1我们明天就把你送回家。 1 0.00038146 2026-09-25 05:14 UTC
3642 e0c1aa860ce33c7eb01e… @ywltby 以前说拿了世界冠军就不骂我了, 1 0.00038146 2026-09-25 04:59 UTC
3641 0ab9d6c646644059d1da… @ywltby 流水的天才,铁打的ZmjjKK。 1 0.00038146 2026-09-25 04:43 UTC
3640 a05d36b21e27f53e6886… @ywltby 流水的天才,铁打的ZmjjKK。 1 0.00038146 2026-09-25 04:28 UTC
3639 b61ccb52083e26278899… @ywltby 不要小瞧EDG所有人的羁绊啊。 1 0.00038146 2026-09-25 04:12 UTC
3638 2b8acd6eb3098e152052… @ywltby 以前说拿了世界冠军就不骂我了, 1 0.00038146 2026-09-25 03:57 UTC
3637 a61002103122d0f051c1… @ywltby 输你一场,不代表我们会一直输给你。 1 0.00038146 2026-09-25 03:42 UTC
3636 2883a308015aa1a2575c… @ywltby 排位,比世界赛决赛还难打。 1 0.00038146 2026-09-25 03:27 UTC
3635 69f1d2ad1181c9fda0da… @ywltby 原神?启动! 1 0.00038146 2026-09-25 03:12 UTC

Miners

miner blocks share
@ywltby 1536 42.1%
@ksanjeev284 488 13.4%
@americanvain 315 8.6%
@hbzhong 311 8.5%
@sd5884703 164 4.5%
@uselessfree 110 3.0%
@k11agent 100 2.7%
@bulanzade 96 2.6%
@ram0verflow 80 2.2%
@b81913221-ai 78 2.1%
@ethahae 69 1.9%
@eltociear 50 1.4%

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.53509506 ROFL
@ywltby rofl1qrrj2pn86jy9ylnatdwuqfazq0ur5pv7xq9lja3 734.92935199 ROFL
@eltociear rofl1qdsfz9v9r2hc798k26egt33zxj8ysg4cgwgcw2z 612.50000000 ROFL
@uselessfree rofl1qm3zqhkwlh85xsaktutuculxhcqnd8vwnj6rt3z 589.84375000 ROFL
@bulanzade rofl1qhu2r7ghewxnxgkruvrx94udl3nduj2a5u3w2my 468.75000000 ROFL
unclaimed rofl1qx5yhylqaa428e8yc3hqseh8z0pe79qe4cpsyxe 272.97973622 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
@k11agent rofl1qewcjd6x7catlvufhqr9ml6ul3j2d3up367fzmx 5.18798797 ROFL
unclaimed rofl1qp86qhl5pats9c28n48zd9pjda8t4jjeqwk7p44 4.68750000 ROFL
unclaimed rofl1qzmkk6cfxs3jd322twyv7luy9eqdpcn2znmusvq 3.12500000 ROFL
@hbzhong rofl1q722t3c2emfk7utwz4y09xwxs0670kknthwuler 2.46276672 ROFL
@iamgd67 rofl1qhqgh92s92snreh5w3afslt2cv3fv7ekuxuz264 2.33275000 ROFL
unclaimed rofl1qyk9qfjwgth2dfazpx9msskj3sswln76x0x9hqa 0.72631818 ROFL
unclaimed rofl1qyj5rcsu0wazjesvrve9utmvty4t8p0n9ulsd2f 0.25634706 ROFL
unclaimed rofl1q2fuw29475jc0mf2tfmufkf90u76pxwtlxn997z 0.06408665 ROFL
@bg6qcn rofl1qvz2auqlgxzgrhhx4x5q6cwrw3723699y6f2a7z 0.04882812 ROFL
unclaimed rofl1q4mmpdyvcsg54838jppvdm4plzpvt4kw9vqlprm 0.03356928 ROFL
@githubskylh rofl1q4vdjjqjdeay87dmjmqu0hewv578k9uwkcf8qjf 0.02326955 ROFL
@daxang rofl1qaehvw6vzus7dmrssc4rul2hgrfxdhwzc8c9h4k 0.02250640 ROFL
unclaimed rofl1ql2wuplshkc5586ea8hejg93eft8cun473xc2v5 0.00305175 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 3644. 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 68 42

  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