I am new to to Bitcoin and was allocated a project to develop a (middle-man)service that can allow a person (using a mobile phone with no Internet connection) to use Bitcoin. Since Bitcoin Core is the software that enables a person to use the currency, does this mean my developed software should find a way to communicate with the Bitcoin core software installed on my desktop computer? Or are there any other applications that should be installed?
Here are some considerations and recommendations. I hope that someone can provide a more complete answer than this one, though.
First off, creating new wallet software and getting it right is deceptively difficult, even if you're starting off with a nice library such as Bitcoinj. Unless you feel extremely comfortable with Bitcoin in general, I'd recommend that you use (to the extent possible) an existing full wallet implementation with a good reputation.
On the server side, you'll probably want wallet software you can easily interface with, either by directly calling its library functions, or via an RPC interface. Here are three such options you may want to consider:
- Bitcoin Core (RPC access)
- Armory (RPC and Python library access)
- Electrum (RPC and Python library access)
Take a look at the bitcoin.org choose-your-wallet page for a rough comparison. Please also note that the latter two are deterministic wallets; unfortunately there's less (no?) API documentation available for these two.
You should also take note that Armory has a rather broad interpretation of its AGPLv3 license—if you have a company General Counsel, I'd definitely ask them to consider this before proceeding.
On the server side, you'll need to develop your own accounting database to track individual account balances (do not use the Bitcoin Core deprecated "accounts" feature). Read up on cold storage if you don't have enough insurance to cover the loss of all of your bitcoin, and split your bitcoin between hot (on-server) and cold (off-server) wallets.
I can't offer much other insight than the above, except perhaps to guess that client-server authentication issues are likely to be your biggest potential for bitcoin loss. If you're not an expert in client-server security, or for that matter in security issues related to your chosen mobile platform(s), you should consider consulting with someone who is.
There are 3 ways to achieve this:
- Text messaging: It requires a mobile with SIM, text messaging service and a remote server.
- Satellite Communication: Running bitcoin node with blockstream satellite is explained in an article. Raspberry Pi could be replaced with a mobile and you will need to build a fork of ABCore similar to Bitcoin Satellite.
- Mesh Networking: This will need a device along with the mobile and bitcoin node running that is reachable from one of the mesh nodes in your network.
mesh nets are networks of peer-connected nodes that offer “offline” connectivity by means of radio signals. Depending on the bandwidth of the network, you could do things like send a bitcoin transaction or download the Bitcoin blockchain.