Hello all
I have been taking a deep look into Breadwallet app as a starting point for a Biblepay mobile wallet.
My conclusion is that it is possible to have it ported in a reasonable time, but it's not going to be trivial as changing some chainparams for others and get it rolling.
At first I wanted to "extend" the original app to support BTC, BCH (current Breadwallet version) and then add BBP at top.
But this is not possible now because the Breadwallet SPV client in C makes some hardwired assumptions to connect to a pure Bitcoin network.
The C library would require another abstraction layer that is not present and it's out of the scope at the moment.
The good news is that, even if only taylored for BBP, the library is used by both the Android and iOS version, so this makes things a bit easier once it's working.
SCOPE OF WORK
- Biblepay Mobile Wallet (Android and iOS) will be a fork of the respective BreadWallet apps.
Please bear in mind that it's a wallet based on a 12-word BIP39 Multibit HD, PIN protected brain wallet with a "safety-first" approach.
This means that it will not be possible to export its private keys, and it will not be able to import other wallets priv keys (although it will be able to sweep a priv key paper wallet balance)
Please read about BreadWallet app features to avoid confusions and misunderstandings.
https://www.cryptocompare.com/wallets/bread-wallet/For me this is the absolutely right approach for a secure mobile online wallet, and changing this behavior for a more insecure one is out of the discussion.
- Wallet will be able to do exactly the same you can do with the original BreadWallet BTC/BCH wallet, feature wise, except buying and selling currency for fiat (external services are required for that).
- Wallet will NOT implement InstantSend or other Masternode-related protocol features at this stage.
- We will start with Android version first, and later on with the iOS one.
TASK BREAKDOWN
Android
- Fork breadwallet android and core submodule and setup dev environment (2h).
- Create BiblepayWallet java and C layer (chain params and basic behavior) (4h)
- Remove BTC/BCH wallet, change hardwired stuff (address prefixes, max difficulty, pow retarget interval...) (16h)
- Implement BBP Pow verification, block validation (20h).
- Other integrations (price, fee-per-kb?...) (8h)
- Basic testing (send/receive/sweep) (8h).
- Test camera reading addresses (4h).
- Publish app in Google Play (4h)
iOS
- Fork breadwallet iOS and setup dev environment (2h).
- Create XCode developer account and prepare a Macincloud virtual machine. (2h)
- Create BiblepayWallet iOS layer (chain params and basic behavior) (8h)
- Basic testing (send/receive/sweep) (8h).
- Test camera reading addresses (2h).
- Apple Dev paperwork, submitting app for approval, publish in App Store... (6h)
Total Budget:
66h Android + Breadwallet-Core @40€/h = 2640€
28h iOS x 40€/h = 1120€
24€ Google Play license lic
44€ Macincloud VM (2 months)
99€ iOS developer license
= 3927€ = 0,704 BTC (@ 5575€) = 2348000 BBP (@30 sat)
I've been working hard for a week (I'm on holidays LoL) and here you are some teaser screenshots.
Home screen after creating the brain wallet:
Price showing is BTC a couple of days ago... we will have to create our own price API (perhaps taken from pool.biblepay.org)
Some activity log from the SPV client chatting with the peers...
Also, say "hello" to the first transaction received on our mobile wallet!
http://explorer.biblepay.org:3001/tx/a8af5365741aee8c7d8ed3d7b3c3c332c7eba5701e0c06a742780495e809f107Breadwallet address:
http://explorer.biblepay.org:3001/address/BQWEt4Fj4gbn3jAqU5zueNV9jH8EvZDGj6I will post more info as I make more progress. Please don't hesitate to ask whatever you may want.