The concept of open-pleb by @gandlaf21 is amazing (still WIP). It's a marketplace to match (1) a seller who has bitcoin but would like to pay a fiat QR code and (2) a buyer who has fiat and would like to stack non-KYC Bitcoin.(1) seller walks into a store, chooses goods and has the option to pay via QR code (could be alipay or a million other payment systems globally). They put up an equivalent amount of ecash with a coordinator who then starts looking for someone on the other side.(2) gets a notification and opens app to see there's a QR code waiting to paid. They pay the QR code and provide a proof to the coordinator.If both users agree that the payment has taken place, the coordinator sends (1) the sats that (2) has put up.
OpenPleb is a platform for matching users that want to pay a banking QR with bitcoin, and earners that want to earn bitcoin for paying the users offers.
UNDER CONSTRUCTION!
This project is under construction, and we are working on it actively. It is not considered ready for production use.
Architecture Overview
The architecture is built on the monorepo pattern. All code can be found in the packages directory. The backend is written in TypeScript and uses bun.js as the runtime and elysia.js as the API framework. The frontend is written in SvelteKit. For persistence, PostgreSQL is used with drizzle as the ORM. Shared logic is placed in the common package.
General Flow
The architecture contains 4 roles:
- Maker: A user who wants to pay a banking QR with bitcoin.
- Taker: An earner who wants to earn bitcoin for paying the users offers.
- Server: Platform facilitating the matching between makers and takers.
- Mint: Custodian while a match is in progress.
Disputes
Fiat banking usually doesn't offer open protocols that would allow us to make atomic swaps. Thus, we have to rely on participants to act in their best intrest, to preserve their bonds. Disputes are handled in the following way: