Skip to content

Instantly share code, notes, and snippets.

@supertestnet
supertestnet / pruning-utxos.md
Last active October 9, 2025 22:31
Idea for pruning the UTXO set in bitcoin

Background

While recently considering the concept of “pruning” in bitcoin, a novel way to prune a large portion of the UTXO set occurred to me. Before I outline the idea, I want to say three things:

Assumptions

Number 1, one of bitcoin’s trust assumptions is: when your node requests block data, not all of your peers will withhold it from you. If they did, you could not sync the chain, or receive money.

Number 2, nodes with limited storage space sometimes use a technique called “pruning” to save space. While validating the blockchain, they periodically discard the oldest parts of it – all but the most recent blocks. Whenever a new block gets added to the chaintip, they discard whatever block is oldest. This means their local copy of the blockchain has a roughly constant size, usually a couple hundred megabytes, whereas “full archival” nodes (i.e. nodes that don’t prune) store the “full” blockchain – which grows constantly, and is currently hundreds of gigabytes large.

@supertestnet
supertestnet / aggeus-market-explained.md
Last active September 22, 2025 17:14
Aggeus Market Explained

Aggeus Market Explained

I originally wrote about how my Aggeus Market protocol works here, but I think I did a bad job and it's a bit confusing. In this document, I'd like to provide a (hopefully) more accessible description of how it works.

Fundamentally, Aggeus Market is based on the expectation that an oracle will reveal a secret Y if some possible future event happens (e.g. Atlanta wins an upcoming soccer game), and a secret N if that event does not happen (e.g. Atlanta does not win). Based on that expectation, suppose someone decides that they think the secret Y is 80% likely to be revealed, and they are willing to bet 10k sats on this outcome.

Aggeus Market allows them to do this in such a way that, if they are wrong, they lose 80% of their money (i.e. they lose 8k sats), but if they are right, they get their money back plus an extra 20% (i.e. plus 2k sats). These numbers are only an example, users can set them to whatever val

@supertestnet
supertestnet / aggeus_market.md
Last active September 26, 2025 17:08
Aggeus Market

Aggeus Market

Aggeus Market is a protocol for creating prediction markets on bitcoin. The protocol needs an oracle, a set of one or more market makers, a set of one or more buyers, and a coordinator. Notably, the coordinator never has custody of anyone’s money.

How market making works

Suppose a market maker named Mary wants to win money by correctly predicting the outcome of a political contest where Reginald the Republican is running against Dave the Democrat. The market is called "Will Reginald win the Reginald vs Dave election?" and its participants have Yes contracts and No contracts available for sale, each of which is denominated at 10k sats. (Throughout this document, I call such contracts Shares.) Mary thinks Reginald only has a 20% chance of winning, so she decides to create a 10k sat "Yes share" and offer it for sale for 2k sats, such that if someone pays her 2k sats and the Oracle later reveals a secret Y (meaning “Reginald won”), the buyer of her share will get 10k sats -- Mary gets to keep

@supertestnet
supertestnet / the-bag-system.md
Last active June 11, 2025 19:49
The Bag System: Bitcoin Adoption Gamified

The Bag System

Bitcoin Adoption Gamified

Summary

The Bag System is an idea for a new type of bitcoin merchant software that uses a pooled reward system to gamify bitcoin adoption. The essential idea is that merchants save money when users pay with bitcoin, and if a bunch of merchants pool a portion of those savings -- 1% -- you can pretty quickly get a really large pot of money which you can use to reward consumers who spend their bitcoin at those merchants. For consumers, it's great: they're not spending any extra money than if they paid with fiat, but they do get more bitcoin than they started with. For merchants, it's great too: only 1% of their money goes to the reward pool ("the bag"), which is like 1/3 of what "normal" payment processors charge, plus the money stays in their local community and just incentivizes more traffic to come to their store.

How it works

@supertestnet
supertestnet / zkp-coinpool-for-bitcoin.md
Last active May 22, 2025 00:08
ZKP Coinpool for Bitcoin

Today I was making a slideshow about coinpools and a thought occurred to me.

I think it’s possible to have four or more people contribute funds to a coinpool and then make withdrawals “from” the coinpool without revealing to one another which user they are. I think this protocol would require interaction from every other participant whenever anyone wants to transact, but in case of a liveness failure, I think each user would be able to withdraw their balance. I am tentatively calling this idea a “zkp coinpool.” I initially also thought the people funding the coinpool could contribute different amounts to it, but I’m less confident of this now – you’ll see why later, but the paragraph after this one starts by assuming they can contribute different amounts.

I think a zkp coinpool is possible because of zero knowledge proofs, in particular, the Zokrates software. This software lets you prove that a number X is (1) positive and greater than a number M but (2) less than a number Y (3) without disclosing the

@supertestnet
supertestnet / ptlcs_without_a_soft_fork.md
Last active May 16, 2025 01:10
How to do PTLCs without a soft fork

How to do PTLCs without a soft fork

Suppositions

Suppose Alice wants to route a lightning payment to Carol, who has 5 payment channels with Bob, Zeke, Yan, Xander, and Wilma. Alice may start by getting an invoice from Carol. Before giving it, Carol should make up a random 32 byte secret, derive its pubkey on bitcoin’s elliptic curve by treating it as a private key, and sign 5 messages, one for each of her channel counterparties, telling each counterparty she will give the secret to that counterparty using a scheme to be described shortly, if he holds up his end of the “bargain” encoded in that scheme (again, to be described shortly). Carol should encrypt each message so that only that counterparty can read it, then encode all of the encrypted messages in the invoice she shares with Alice, telling Alice, at the same time, which message is readable by which channel counterparty.

What Alice does

Now it is Alice’s turn. She should find a route to Carol by asking her own peers if they can forward a pay

@supertestnet
supertestnet / get-median-bitcoin-price.md
Last active March 27, 2025 20:08
Get Median Bitcoin Price

The following code block gets you bitcoin's price by sampling from 5 sources and taking the median.

Usage:

(async()=>{
    var btc_price = await getBitcoinPrice();
    console.log( 'btc price:', btc_price );
})();
@supertestnet
supertestnet / projects_and_winners.md
Last active October 8, 2025 22:44
Exceptional Projects and Winners of Bitcoin++ Hackathon at Floripa 2025

Name: Sloppy
Video: https://www.youtube.com/live/5Ty7eimij08?si=1yBNEe0tA7YFMSGM&t=5038
Desc: a nostr bot that runs an LLM that tries to earn money by being funny, and uses its earnings to pay for its own hosting – such that it dies if no one finds it funny enough
Other links: savesloppy.org

Name: SatsGuardian
Video: https://www.youtube.com/live/5Ty7eimij08?si=HA3325oxhU1DwWvA&t=5411
Desc: A base layer services that watches the mempool. If it detects an unauthorized transaction from your cold wallet, it tries to use RBF to recover your funds
Other links:

@supertestnet
supertestnet / moores_law.md
Last active February 7, 2025 23:18
Thoughts on Moore's law (edit: actually it's about House's observation)

The chart below is in logarithmic scale:

source of chart

It charts the growth of cpu speeds in comparison with the VAX 11/780. It suggests that Moore’s law stopped applying around 2003. I decided to continue the chart using gigaflops as a metric for cpu speed and allowing for multi-core cpus.

I don’t have data on how many floating point operations the VAX 11/780 could do but I suspect it is “none” because I think the first cpu advertised as being capable of floating point operations was the Intel 8087 in 1980.

@supertestnet
supertestnet / wallets.txt
Last active July 10, 2025 22:21
List of bitcoin wallets ranked by type (custody or non) and number of downloads on google play
name, custody, number, type
Alby Go, self custodial, 1_000, wallet
Aqua Wallet, custodial, 10_000, wallet
BTCPayServer, self custodial, N/A, wallet
Balance of Satoshis, self custodial, N/A, wallet
Bare Bitcoin, custodial, 1_000, exchange
Bipa, custodial, 100_000, exchange
BitBanana, self custodial, 1_000, wallet
Bitkit, self custodial, 1_000, wallet
Blixt, self custodial, 5_000, wallet