What would you do better than bitcoind?
Discussion
Bitcoind is not designed for a mobile user:
1. Setup a wallet before starting to sync so that the system can prune the important thing.
2. No need for any of the RPC stuff.
3. No need for the desktop GUI
4. No need for any of the configurations they offer today.
5. All the gossip stuff can be reduced to simply receiving a transaction for 0-conf notifications and not doing anything with it.
6. The node just observes new blocks. It doesn't send anything to anyone else. It doesn't "participate" in the network outside of simple transaction broadcasting.
7. No advanced wallets. No scripts. No multisigs, nothing crazy coming from the phone.
Etc, etc, etc.
All we want is a simple wallet that you can receive and send. It's not a wallet for large funds, just small services. A checking account that is on-chain.
I think you'll find that you have no option but to use bitcoind and configure it correctly (it doesn't have a UI) 🤷
Idk what you mean by gossip stuff but bitcoind has a mempool and all it does is to propagate transactions and blocks.
Doesn't it do much more than that? Like it doesn't even make sense to cache or organize the mempool on mobile.
Bitcoin doesn't work without mempools, esp if you want "no other server" (other Bitcoin peers are servers too but I think I get your point).
It's practically impossible to build your own implementation anyway so you will find that you have to use bitcoind.
You understood what I meant. The infrastructure is overblown for mobile. It needs to be 100x leaner.
Nobody would do what you want to do. SPV wallets are a thing and they've been around for 15 years for Android.
FWIW I’m pretty confident that if you stripped out anything extraneous here you’d end up with something that is 99.99% as CPU-/network-/memory-/etc-intensive as bitcoind with -maxmempool=0. It’s basically that or you jump to asking a server for SNARK proofs of the full chain.
It could be. As long as the remaining processes run as a mobile app, not as deamon. The app show start, sync and be removed from memory every 15 mins or so. Than a separate Android Service simply listens to 0-conf transactions for simple notifications. The important part is a complete redesign of the interface to do the simplest thing Bitcoin does and nothing else.
I like it. We need more experimentation with bitcoin nodes. The biggest problem is recreating bitcoin consensus logic. You basically can't guarantee it will stay in consensus, so that's a bit of an issue...
You could probably get very far with blocks only mode. It has a mempool so you can simply drop every transaction you aren't interested in and keep the ones you are watching for via sendrawtransaction.
Not sure how you would learn about the transaction if your node isn't listening when it floods across the network. Perhaps a mempool nostr relay that just replays transactions as nostr events.
Yea, I mean you could just run bitcoind and provide that interface on top 🤷‍♂️.
How would I start? Where do I get more info to set it up properly? Like syncing in the background while the user can create wallet and receive funds, etc.
Yes vitor .. how to do so ?
There’s been a few things to package and run core on mobile before, so that seems like a good start. I imagine they mostly work about as good as it’s gonna get from a backend perspective, then you’d just have to build the frontend? I believe on Android you can run a second process so you can just RPC it. On iOS You might have to embed, but I think that’s doable? If not you could try to go the libbitcoinkernel route though that won’t get you a wallet or P2P or (I think) a mempool.
So basically you want a light client but insisted on pushing full node software into that? Why not neutrino or building your own with BDK?
Agreed. Bitcoind was never designed to be a server. And RPC over HTTP is insecure.
That’s why we have things like the Electrum protocol, which was designed to be a proper backend server for syncing. (You can design a different protocol, but that’s another story).
