Inspiration
Coinjoins dramatically increase Bitcoin privacy by disrupting the heuristics used in chainalysis. Wasabi and Samourai Whirlpool have received widespread adoption over the past year. We strive to follow in their footsteps and provide another option for increased Bitcoin UTXO privacy.
What it does
Snowball seamlessly drops into existing wallet payment workflows and enables recipients to add an input to payments they are receiving — called a “payjoin” — obscuring both the amount of the payment and the flow of funds.
Our implementation is partial as we never successfully integrated bluetooth connections with the wallet we chose to work on.
How we built it
We used Bridgefy’s bluetooth-based mesh networking React Native SDK to implement a protocol for turning regular payments into payjoins without requiring any wallet interface changes.
We then integrated this payjoin SDK into BlueWallet — a popular Bitcoin wallet for Android & iOS — by making one small change to BlueWallets createTransaction function.
Challenges we ran into
- Bluetooth was a challenge. It's not clear whether Bridgefy facilitated our efforts or complicated them.
- Justin had to run to walmart to buy another Android phone for testing
- Working on React Native wallets significantly increased the build / toolchain complexity of our efforts. May have been quicker to take on a Python or Kotlin wallet.
- We attempted to also support Edge wallet, but couldn’t get an API key from their automated system. They eventually sent one from support, but it didn’t work.
- Care and defensive design will be necessary to avoid privacy leaks in any final implementation
Accomplishments that we're proud of
- It’s something we both would use
- Extended existing infrastructure (BlueWallet)
- Used emerging standards (BIP174 Partially Signed Bitcoin Transactions)
- Wallets adopting Snowball don’t require any user interface changes
- Cross-platform (iOS & Android)
What we learned
- There’s no magic bullet for bitcoin privacy. Every approach has advantages and disadvantages. Combining many different approaches is best.
- Bluetooth is annoying
What's next for Snowball
Snowball will proceed with:
- Move from Bridgefy to a more direct use of the OS Bluetooth APIs
- Completing the initial implementation
- Implement support for popular merchant processing solutions like BTCPayServer
- Expanding from payjoins to an open join market, whereby third parties can join in the transaction to increase its anonymity set for a fee
- Enable peering over local wifi and between trusted remote peers
- Native mobile SDKs
- Proposing to formalize and standardize its interaction in the form of a new BIP, to ensure broad interoperability.
Built With
- bitcoin
- bridgefy
- react-native
Log in or sign up for Devpost to join the conversation.