<p>Here are some considerations and recommendations. I hope that someone can provide a more complete answer than this one, though.</p>

<p>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.</p>

<p>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:</p>

<ul>
<li><a href="https://bitcoin.org/en/download" rel="nofollow">Bitcoin Core</a> (<a href="https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)" rel="nofollow">RPC access</a>)</li>
<li><a href="https://bitcoinarmory.com/" rel="nofollow">Armory</a> (RPC and Python library access)</li>
<li><a href="https://electrum.org/" rel="nofollow">Electrum</a> (RPC and Python library access)</li>
</ul>

<p>Take a look at the bitcoin.org <a href="https://bitcoin.org/en/choose-your-wallet" rel="nofollow">choose-your-wallet page</a> for a rough comparison. Please also note that the latter two are <a href="https://en.bitcoin.it/wiki/Deterministic_wallet" rel="nofollow">deterministic wallets</a>; unfortunately there's less (no?) API documentation available for these two.</p>

<p>You should also take note that Armory has a rather <a href="https://bitcointalk.org/index.php?topic=1036738.msg11184178#msg11184178" rel="nofollow">broad interpretation</a> of its AGPLv3 license—if you have a company General Counsel, I'd definitely ask them to consider this before proceeding.</p>

<p>On the server side, you'll need to develop your own accounting database to track individual account balances (do <em>not</em> use the Bitcoin Core deprecated "accounts" feature). Read up on <a href="https://en.bitcoin.it/wiki/Cold_storage" rel="nofollow">cold storage</a> 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.</p>

<p>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.</p>

CC BY-SA 3.0
2015-06-12T16:03:10.810Z
Okay Christopher,sounds like quite a task and it helps a lot. Thank you so much, I hope I will be getting more answers from others who contribute.
Nelly
CC BY-SA 3.0
2015-06-12T15:30:03.693Z
2015-06-12T15:42:05.867Z
2015-06-12T15:42:05.867Z
Christopher Gurnee
<p>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?</p>

CC BY-SA 3.0
2015-06-12T13:35:54.283Z
I'm not entirely clear what you're trying to develop. To initiate transactions and to check wallet balances, a device must either be capable of connecting to the Bitcoin P2P network (typically via the Internet), or must communicate with a server which is then connected to the P2P network. Are you trying to develop the latter in some form?
Christopher Gurnee
CC BY-SA 3.0
2015-06-12T13:48:00.563Z
Hi Christopher, yes I am developing the latter. So you saying a server should connect to the P2P network and by P2P network that means the Bitcoin Core software right?
Nelly
CC BY-SA 3.0
2015-06-12T13:56:53.280Z
Bitcoin Core is a piece of software which connects to the P2P network, however it's not the only one. In your scenario, are you saying that you intend to maintain an Internet-connected server, and that you have a network where mobile phones can connect to this same server, however they cannot connect directly to the Internet?
Christopher Gurnee
CC BY-SA 3.0
2015-06-12T14:05:57.310Z
Yes, that's what I mean Christopher
Nelly
CC BY-SA 3.0
2015-06-12T14:13:07.747Z
Which other softwares do I require? Would that require libraries such as bitcoinj?
Nelly
CC BY-SA 3.0
2015-06-12T14:13:25.267Z
What network protocol would be running between the mobiles and the server? IP? Would it be possible to permit (at minimum) limited access to the Internet for the mobiles via running [NAT](https://en.wikipedia.org/wiki/Network_address_translation) on the server? Are you looking to develop your own solution from scratch, or would you be interested in an existing product/solution?
Christopher Gurnee
CC BY-SA 3.0
2015-06-12T14:32:13.203Z
OK, one last relevant question: you also must decide *who* should be storing the bitcoins (or rather the private keys). The server could store them, essentially turning it into a "bitcoin bank", and the mobiles must then put 100% trust in the server/bank. Alternatively the individual mobiles could store them, in which case they would each be responsible for their own actions (e.g. they would each individually need to do their own backups to prevent potential loss).
Christopher Gurnee
CC BY-SA 3.0
2015-06-12T14:42:33.120Z
The user should use SMS only to communicate so from the mobile phone it would be a protocol used by the GSM network, e.g. one of the protocols that falls under the SS7 set. Then the server will make use of the IP. The mobile phone should be low end, only enable the user to send an SMS. Starting from scratch might take time hence I am interested in using an existing solution that is open source,
Nelly
CC BY-SA 3.0
2015-06-12T14:45:57.687Z
I will store the private keys, (server), to avoid inconveniences or losses.
Nelly
CC BY-SA 3.0
2015-06-12T18:06:35.690Z
@nelly one of the guys behind http://kryptoradio.koodilehto.fi/ was working on something with sms a few months ago. You might want to join their irc channel and ask how it's doing.
Jannes
<bitcoin-core-development>
Accessing Bitcoin core software through a mobile phone with no internet connection
Nelly
# Accessing Bitcoin core software through a mobile phone with no internet connection

(Asked by: username_0 on 2015-06-12)

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?

**Tags:** bitcoin-core-development

> **Comments:**
> **username_1**: I'm not entirely clear what you're trying to develop. To initiate transactions and to check wallet balances, a device must either be capable of connecting to the Bitcoin P2P network (typically via the Internet), or must communicate with a server which is then connected to the P2P network. Are you trying to develop the latter in some form?  
> **username_0**: Hi username_1, yes I am developing the latter. So you saying a server should connect to the P2P network and by P2P network that means the Bitcoin Core software right?  
> **username_1**: Bitcoin Core is a piece of software which connects to the P2P network, however it's not the only one. In your scenario, are you saying that you intend to maintain an Internet-connected server, and that you have a network where mobile phones can connect to this same server, however they cannot connect directly to the Internet?  
> **username_0**: Yes, that's what I mean username_1  
> **username_0**: Which other softwares do I require? Would that require libraries such as bitcoinj?  
> **username_1**: What network protocol would be running between the mobiles and the server? IP? Would it be possible to permit (at minimum) limited access to the Internet for the mobiles via running [NAT](https://en.wikipedia.org/wiki/Network_address_translation) on the server? Are you looking to develop your own solution from scratch, or would you be interested in an existing product/solution?  
> **username_1**: OK, one last relevant question: you also must decide *who* should be storing the bitcoins (or rather the private keys). The server could store them, essentially turning it into a "bitcoin bank", and the mobiles must then put 100% trust in the server/bank. Alternatively the individual mobiles could store them, in which case they would each be responsible for their own actions (e.g. they would each individually need to do their own backups to prevent potential loss).  
> **username_0**: The user should use SMS only to communicate so from the mobile phone it would be a protocol used by the GSM network, e.g. one of the protocols that falls under the SS7 set. Then the server will make use of the IP. The mobile phone should be low end, only enable the user to send an SMS. Starting from scratch might take time hence I am interested in using an existing solution that is open source,  
> **username_0**: I will store the private keys, (server), to avoid inconveniences or losses.  
> **username_2**: @username_0 one of the guys behind http://kryptoradio.koodilehto.fi/ was working on something with sms a few months ago. You might want to join their irc channel and ask how it's doing.  

---

## 1 answers

### Answer by username_1 on 2015-06-12. Score: 1

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](https://bitcoin.org/en/download) ([RPC access](https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)))
* [Armory](https://bitcoinarmory.com/) (RPC and Python library access)
* [Electrum](https://electrum.org/) (RPC and Python library access)

Take a look at the bitcoin.org [choose-your-wallet page](https://bitcoin.org/en/choose-your-wallet) for a rough comparison. Please also note that the latter two are [deterministic wallets](https://en.bitcoin.it/wiki/Deterministic_wallet); unfortunately there's less (no?) API documentation available for these two.

You should also take note that Armory has a rather [broad interpretation](https://bitcointalk.org/index.php?topic=1036738.msg11184178#msg11184178) 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](https://en.bitcoin.it/wiki/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.

> **Comments:**
> **username_0**: Okay username_1,sounds like quite a task and it helps a lot. Thank you so much, I hope I will be getting more answers from others who contribute.  

---

