12

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?

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.

  • 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 Feb 4 '13 at 23:33
  • 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 Feb 5 '13 at 9:45
  • 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 Feb 5 '13 at 12:49
  • 1
    I see, edited the answer. – David Feb 5 '13 at 13:08
  • 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 Feb 5 '13 at 18:10
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 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.

  • 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 Feb 6 '13 at 1:30
  • Whoops, missed that. Thought you were running stock bitcoind. Lemme have a look through armory's source code. – Nick ODell Feb 6 '13 at 1:49
  • @StevenRoose, please check out my edit. – Nick ODell Feb 6 '13 at 3:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.