Skip to content

Instantly share code, notes, and snippets.

@supertestnet
Last active June 6, 2025 06:36
Show Gist options
  • Save supertestnet/edc6b8798cd988fe4e4853ab82096a72 to your computer and use it in GitHub Desktop.
Save supertestnet/edc6b8798cd988fe4e4853ab82096a72 to your computer and use it in GitHub Desktop.
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

I want to create a new type of merchant software based on bitcoin. Each instance of this software should include a lightning node. Whenever a merchant processes a bitcoin sale, 1% of the proceeds should be earmarked toward a pooled reward system – but the earmarked money should stay on the merchant’s device for now. The software should have two important features in addition to the above:

First, the software should let the merchant designate one person – the organizer of a local bitcoin meetup – who is expected to pay out the rewards from their own wallet at the local meetup to folks who earn “reward points” to be described shortly. Each merchant’s copy of the software must tell the designated organizer how much money the merchant earmarked for the reward system so that he knows how much to pay out. After each meetup, the organizer is expected to request a reimbursement from each merchant for the amount he paid out, and each merchant is expected to manually approve this reimbursement on a monthly basis, that way the organizer never has custody of merchant funds and does not qualify as a money transmitter -- he simply gives people bitcoin out of his own wallet, and if local merchants think he is doing a good job driving traffic to their stores, they voluntarily reimburse him for this expense. He never transmits money from the merchants to participants in his meetups; he only ever sends his own money.

Second, the software should let the merchant send their bitcoin wherever they want, and should particularly emphasize two things to do with it: fund a “strategic bitcoin reserve” – i.e. a cold storage wallet – or convert to fiat. For the latter, the software can default to letting the merchant buy a Visa gift card from bitrefill, which they can then run through their regular merchant software to effectively collect their bitcoin-proceeds. But I don’t like that this option reinstates the “regular” merchant fees charged by Visa; therefore, the software can also advise the merchant of several bitcoin exchanges where they can sell their bitcoin for a better deal. A good list of bitcoin-only exchanges is available here: https://bitcoinmagazine.com/guides/best-bitcoin-only-exchanges – I particularly want to recommend Cash App, River, and Strike, because they are so easy to set up.

At the bitcoin meetups run by the organizer, he should disperse rewards in sats to the top 10 people who earned “reward points,” which attendees earn in the following ways:

The point system

(A) Spend bitcoin at a merchant connected to the Bag System - 1 point per 1k sats spent
(B) Onboard a new merchant to the Bag System - 50 points
(C) Bring new people to the meetup - 20 points
(D) Sync a node and connect a wallet to it - 50 points
(E) Fulfill an offer on a no-KYC exchange or get one of your own offers fulfilled - 20 points
(F) Attend a meetup - 5 points

Option B should be particularly highlighted – you not only get 50 points immediately, you also get an additional point whenever anyone spends bitcoin at a merchant you onboarded.

Point verification

Option A requires an important consideration: how does the organizer know if a user really spent their money at a Bag System merchant? You can’t rely on simple self-reporting because users are incentivized to always claim they made many purchases, even if they didn't.

I thought of a solution that I think should work. It’s a modern version of the old stamp cards that some merchants used to give out, where they stamp it whenever you buy something and after you get 10 stamps, you get a free item. To modernize this, have the user present a scannable qr code after every purchase; the merchant scans it and signs a message, which they send to the organizer, saying how much money that user spent at that merchant. Voila, now the organizer knows.

Verifying that someone onboarded a merchant is easier: the organizer has to set up the merchant with the Bag System software, so the user must reach out to him to do that, and the organizer can thus log who onboarded that merchant. Now, whenever someone makes a purchase there, a point can be awarded to whoever onboarded that merchant by looking up the log.

Verifying that someone brought a new person to the meetup is done like this: at every meetup, each new person scans a qr code that links to a webpage which they simply bookmark – they can also download a private key there. The page is effectively a social media profile. They can add their picture and a short self-description, as well as talk to other bitcoiners, but crucially, that page logs that user’s reward points. New users also get an option to scan a sharable qr code presented by whoever brought them to the meetup. The organizer can stand by while all of this is happening not only to help each new user get an account but also to make sure no one quietly scans the qr code a bunch of times.

Verifying that someone sync’d a bitcoin node and connected their wallet is done by the organizer on a case-by-case basis. He just asks the user to tell him about their node or show it to him, asks how they connected their wallet, ensures that it all seems plausible, and logs the points.

Verifying that someone used a no-KYC exchange is also done by the organizer on a case-by-case basis. He just asks the user to tell him about the experience, asks them to show any records provided by the exchange, ensures that it all seems plausible, and logs the points. If someone keeps on saying that the exchange doesn’t provide records, he can ask them for screenshots, and if it seems like the user isn’t really doing it, just tell them he thinks they are lying and therefore won’t award them any points.

Verifying that a user attended a meetup is simple: have each user scan the “onboarding” qr code from their profile; if they already have a profile, it doesn’t make a new one, it just logs their attendance at that meetup and awards them their points.

Final thoughts

At each meetup, only 80% of the reward pool should be awarded to point earners; 10% should go to the organizer to compensate him for his efforts, and the other 10% should be dispersed “lottery style” to a random person who attended the meetup. This incentivizes people to attend even if they haven’t earned many points; you can still earn sats via the lottery.

The organizer should keep a record of how people earned points and how he awarded the bitcoin. That report should be available to each merchant so that they know what the organizer is doing and can deny his reimbursement requests if they disagree with his choices. It’s also a way of allowing accountability: if any merchant won’t grant the reimbursement, the organizer can notice that, ask them about it, and do better.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment