<p>You need to use <code>connect</code> in your configuration file, <code>rpc_connect</code> is something different, it means that your client delegates its commands to another bitcoind.</p>

<p>If one client connects normally and other clients connect to it using <code>connect = ip.of.main.client</code> it will work the way you want it to.</p>

<p>Conversely you can prevent a node from connecting to anything by using <code>connect = 0.0.0.0</code>.</p>

<p><strong>EDIT :</strong> I understand better now. You need to use <code>rpc_connect = ip.of.master.bitcoind</code> on the 'slave' node, and <code>connect = 0.0.0.0</code> to prevent it from loading the blockchain and you should be all set.</p>

CC BY-SA 3.0
2013-02-04T23:33:59.580Z
`connect=<ip> : Connect only to the specified node(s)` That option will just let the client bitcoin download the blockchain from the server bitcoin peer, which I don't want. I want it to use the server bitcoind to check the blockchain and to transmit transactions. I think that's what the `rpcconnect` parameter does...
Steven Roose
CC BY-SA 3.0
2013-02-05T09:45:11.183Z
No it is not. RPC stands for Remote Procedure Call, like I said, the `rpc_connect` option will simply mean that any JSON-RPC commands will be forward to the configured node. `connect` does exactly what I told you, it connects to one or a collection of nodes exclusively. These nodes will then be used to download the chain AND get transactions. This is exactly what you want. `connect` forces a connection to one or several nodes excluding all others, `add_node` will connect to the configured node without excluding any other one.
David
CC BY-SA 3.0
2013-02-05T12:49:20.423Z
I know what you told me. But I don't want to download the blockchain on the other machines, I want them to just use the server one using RPC.
I don't know for sure what functionality is available over RPC, but I think it should be possible that a rpc-connected client can receive `getinfo` commands and accept transactions and just forward them to the server bitcoind over RPC.
The main reason I want to use this for is Armory, which needs a bitcoin client to be running on the same machine, so I want that bitcoin client to forward all commands it gets to the server daemon.
Steven Roose
CC BY-SA 3.0
2013-02-05T13:08:07.473Z
I see, edited the answer.
David
CC BY-SA 3.0
2013-02-05T18:10:35.957Z
Thanks for the correction. What do you mean with a proxy-setup? Would a proxy not just let a client download the blockchain via a different node?
Steven Roose
CC BY-SA 3.0
2013-02-05T22:27:15.663Z
Thinking about it the proxy part doesn't actually make much sense, removed it. I believe your original question is now answered.
David
CC BY-SA 3.0
2013-02-04T21:07:47.333Z
2013-02-05T22:27:25.243Z
2013-02-05T22:27:25.243Z
David
<p><code>rpcconnect</code> only changes where RPC commands are sent. So, for example, <code>bitcoind getbalance</code> would be sent to the IP address you specified, but nothing in the GUI generates an RPC call.</p>

<p>Source: <a href="https://github.com/bitcoin/bitcoin/blob/master/src/bitcoinrpc.cpp#L1253" rel="nofollow">This</a> is the only place the <code>CallRPC</code> function is referenced.</p>

<p>I assume that you want to keep the private keys for spending the bitcoins on the personal computers. In that case, the best approach would probably be to install the electrum server on one computer, and the electrum client on another. </p>

<p><strong>EDIT:</strong></p>

<p>Sorry, only saw the part about bitcoin-qt, and I thought that was what you were running. So, the armory client <em>does</em> talk to the bitcoin client, but the address it uses is hard-coded. (Fortunately, it's only hardcoded in the python files.) Also, the protocol it's speaking is not RPC, but the bitcoin protocol itself.</p>

CC BY-SA 3.0
2013-02-06T01:30:59.987Z
The point is that I want to use the Armory client. It needs a bitcoin client to be running. But I assumed that the commands it sends to the local client would be routed over RPC...
Steven Roose
CC BY-SA 3.0
2013-02-06T01:49:23.900Z
Whoops, missed that. Thought you were running stock bitcoind. Lemme have a look through armory's source code.
Nick ODell
CC BY-SA 3.0
2013-02-06T03:29:06.353Z
@StevenRoose, please check out my edit.
Nick ODell
CC BY-SA 3.0
2013-02-05T23:25:44.340Z
2013-02-06T03:28:38.773Z
2013-02-06T03:28:38.773Z
Nick ODell
<p>I want to do the following:</p>

<p>I have one small server PC at home. I want to install bitcoind on that machine to download the blockchain information. Then I want this machine to accept RPC calls from my LAN network and setup all other bitcoin clients on my LAN network to use that server machine for blockchain info and transaction broadcasting.</p>

<p>I already setup a bitcoind client on the server with the following bitcoin.conf values:</p>

<pre><code>server=1
rpcuser=MyRPCUser
rpcpassword=MyRPCPassword
rpcallowip=192.168.0.*
rpcssl=1
rpcsslciphers=TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH
rpcsslcertificatechainfile=server.cert
rpcsslprivatekeyfile=server.pem
</code></pre>

<p>Note that I did follow the instruction for creating a SSL certificate.</p>

<p>What should I do on the client machines? I tried <code>bitcoin-qt -rpcconnect=[server-ip]</code> but it seemed to just start regularly continuing to download the blockchain from where it stopped last time.</p>

<p>Besides, is it possible to let Bitcoin Armory also use a bitcoin client via RPC instead of the one of the same machine? Or does it really require a <code>remote bitcoind &lt;-&gt; local bitcoin client &lt;-&gt; armory</code> setup?</p>

<bitcoind><json-rpc><armory>
How to setup a LAN network with only one bitcoind client downloading the blockchain?
Steven Roose
# How to setup a LAN network with only one bitcoind client downloading the blockchain?

(Asked by: username_0 on 2013-02-04)

I want to do the following:

I have one small server PC at home. I want to install bitcoind on that machine to download the blockchain information. Then I want this machine to accept RPC calls from my LAN network and setup all other bitcoin clients on my LAN network to use that server machine for blockchain info and transaction broadcasting.

I already setup a bitcoind client on the server with the following bitcoin.conf values:

```
server=1
rpcuser=MyRPCUser
rpcpassword=MyRPCPassword
rpcallowip=192.168.0.*
rpcssl=1
rpcsslciphers=TLSv1+HIGH:!SSLv2:!aNULL:!eNULL:!AH:!3DES:@STRENGTH
rpcsslcertificatechainfile=server.cert
rpcsslprivatekeyfile=server.pem

```

Note that I did follow the instruction for creating a SSL certificate.

What should I do on the client machines? I tried `bitcoin-qt -rpcconnect=[server-ip]` but it seemed to just start regularly continuing to download the blockchain from where it stopped last time.

Besides, is it possible to let Bitcoin Armory also use a bitcoin client via RPC instead of the one of the same machine? Or does it really require a `remote bitcoind <-> local bitcoin client <-> armory` setup?

**Tags:** bitcoind, json-rpc, armory


---

## 2 answers

### Answer by username_1 on 2013-02-04. Score: 5

You need to use `connect` in your configuration file, `rpc_connect` is something different, it means that your client delegates its commands to another bitcoind.

If one client connects normally and other clients connect to it using `connect = ip.of.main.client` it will work the way you want it to.

Conversely you can prevent a node from connecting to anything by using `connect = 0.0.0.0`.

**EDIT :** I understand better now. You need to use `rpc_connect = ip.of.master.bitcoind` on the 'slave' node, and `connect = 0.0.0.0` to prevent it from loading the blockchain and you should be all set.

> **Comments:**
> **username_0**: `connect=<ip> : Connect only to the specified node(s)` That option will just let the client bitcoin download the blockchain from the server bitcoin peer, which I don't want. I want it to use the server bitcoind to check the blockchain and to transmit transactions. I think that's what the `rpcconnect` parameter does...  
> **username_1**: No it is not. RPC stands for Remote Procedure Call, like I said, the `rpc_connect` option will simply mean that any JSON-RPC commands will be forward to the configured node. `connect` does exactly what I told you, it connects to one or a collection of nodes exclusively. These nodes will then be used to download the chain AND get transactions. This is exactly what you want. `connect` forces a connection to one or several nodes excluding all others, `add_node` will connect to the configured node without excluding any other one.  
> **username_0**: I know what you told me. But I don't want to download the blockchain on the other machines, I want them to just use the server one using RPC. I don't know for sure what functionality is available over RPC, but I think it should be possible that a rpc-connected client can receive `getinfo` commands and accept transactions and just forward them to the server bitcoind over RPC. The main reason I want to use this for is Armory, which needs a bitcoin client to be running on the same machine, so I want that bitcoin client to forward all commands it gets to the server daemon.  
> **username_1**: I see, edited the answer.  
> **username_0**: Thanks for the correction. What do you mean with a proxy-setup? Would a proxy not just let a client download the blockchain via a different node?  
> **username_1**: Thinking about it the proxy part doesn't actually make much sense, removed it. I believe your original question is now answered.  

---

### Answer by username_2 on 2013-02-05. Score: 1

`rpcconnect` only changes where RPC commands are sent. So, for example, `bitcoind getbalance` would be sent to the IP address you specified, but nothing in the GUI generates an RPC call.

Source: [This](https://github.com/bitcoin/bitcoin/blob/master/src/bitcoinrpc.cpp#L1253) is the only place the `CallRPC` function is referenced.

I assume that you want to keep the private keys for spending the bitcoins on the personal computers. In that case, the best approach would probably be to install the electrum server on one computer, and the electrum client on another.

**EDIT:**

Sorry, only saw the part about bitcoin-qt, and I thought that was what you were running. So, the armory client *does* talk to the bitcoin client, but the address it uses is hard-coded. (Fortunately, it's only hardcoded in the python files.) Also, the protocol it's speaking is not RPC, but the bitcoin protocol itself.

> **Comments:**
> **username_0**: The point is that I want to use the Armory client. It needs a bitcoin client to be running. But I assumed that the commands it sends to the local client would be routed over RPC...  
> **username_2**: Whoops, missed that. Thought you were running stock bitcoind. Lemme have a look through armory's source code.  
> **username_2**: @username_0, please check out my edit.  

---

