7

Ok, well I've been watching the Bitcoin trend with some interest for several years. And I've finally decided to get involved myself. So yesterday and today I've been reading for several hours from the many resources in this question and this great answer. I read this blog post in its entirety and think I understood it completely. I understand that in order to pay someone or be paid in BTC, I need a bitcoin ID and that this goes hand-in-hand with getting a BTC "wallet". I understand that there are essentially two distinct options for my BTC wallet:

  1. a locally-stored (on my computer) copy of the entire block chain
  2. a remotely-stored (on someone else's computer) copy of the entire block chain that is encrypted with credentials such that only I have access to it (although Mt. Gox failure and so many others seem to show that this is less secure than the former)

I think a synonym for option 1 above is "cold-storage" although I'm not certain of that.

I realize that mining for BTC is a different thing altogether that is really only worthwhile with an ASIC or similar hardware, so I'm not at all interested in mining at this point. I just want to get myself an ID and wallet and understand Bitcoin well enough to be able to keep my own copy of the block chain on my local machine and keep it up-to-date. Maybe eventually I'll look into mining, but I'm not interested right now.

From Erik Voorhees blog post, I think I understand that if I want option 1 above (which I do as it seems more secure to me, and convenience is not at all important to me), then I need to install either bitcoind or bitcoin-qt. (I suppose that both of these are considered to be part of "Bitcoin Core" below?) This is reinforced by my review of the software tools I see at bitcoin.org:

  1. Bitcoin Core:

    • Control over your money
    • Full validation
    • Complete transparency
    • Vulnerable environment
    • Improved privacy

whereas the best that any of the others for Linux there:

  1. Electrum
  2. mSIGNA
  3. MultiBit
  4. Armory
  5. Green Address

can offer regarding transparency is "Basic Transparency".

I understand from this answer that although it's possible to have them both installed on the same system, one cannot have both bitcoind and bitcoin-qt running on the same system at the same time. So my question is about how to configure and get started running bitcoind in Arch Linux; but there are several specific issues I feel like I need to understand better.

  1. Using bitcoind, at exactly what point will I be generating my ID? I guess it would have to be after I've completed downloading the entire block chain?

  2. bitcoind.conf wants me to insert an in-the-clear, plaintext, unencrypted username and password into it that I guess bitcoind will read on startup. Exactly what will those credentials be used for by bitcoind? I know the options are named pretty transparently (rpcuser and rpcpassword) and the man page explains that they are for JSON-RPC connections. But I have only one binary in my Arch bitcoin-daemon package (/usr/bin/bitcoind), so what client is connecting to my running instance of bitcoind using JSON-RPC connections?

  3. Using bitcoind, at exactly what point will the software begin downloading a copy of the entire block chain? I know that's a big file and may take hours or days to complete.

  4. If I want to interact with my locally-stored block chain after it is downloaded, then it seems that I must include at least one uncommented line in ~/.bitcoin/bitcoin.conf:

    server=1
    
  5. ...but what will the simplest bitcoin.conf file that I need look like? For example, will I need to uncomment settings for any of these:

    addnode=
    connect=
    maxconnections=
    rpctimeout=
    rpcssl=
    rpcsslciphers=
    rpcsslcertificatechainfile=
    rpcsslprivatekeyfile=
    keypool=
    paytxfee=
    min=
    minimizetotray=
    
  6. What are other people using for paytxfee, and aside from what bitcoin.conf says, ("Transactions with fees are more likely than free transactions to be included in generated blocks, so may be validated sooner."), why would I set this value to something other than 0.00 (and what is that number anyway? a percentage? so if I set it to 1.00 that is 1.00%)?

My main problem in understanding now is just connecting the specific settings in bitcoin.conf to my abstract understanding of how the Bitcoin network functions. I think I have a general understanding of the latter, but how to implement the specific concepts of the latter using the settings of the former is not at all obvious to me and after many hours of study, I don't see a clear explanation of it anywhere.

So I'm hoping someone here can shed some light on these issues. After all the questions I've seen on this site, I'm sure I can't be the only one wondering these things.

I considered breaking up this post into 5 or so separate posts and I hope the community will pardon my deciding not to do that. I see all of the several questions above as essentially pieces of the subject question: "How to configure bitcoind in Arch Linux". That's why I left it as one long post. Again, I beg the pardon of the community if that is regarded as a regrettable decision.

  • Still reading other questions after posting, I ran across this one. But when I do that, I see the following: "Error: There is no RPC client functionality in bitcoind anymore. Use the bitcoin-cli utility instead." But I have no bitcoin-cli binary from my having installed the bitcoin-daemon package in Arch. – Osteoboon Feb 20 '15 at 8:46
  • The maintainer of the Arch Bitcoin packages, Timothy Redaelli, appears to have split what you need across bitcoin-daemon and bitcoin-cli, and I can't figure out why. – Nick ODell Feb 20 '15 at 8:54
  • 2
    And, honestly, it would have been better to split this into multiple questions. As it is, I'm not really sure where to start. – Nick ODell Feb 20 '15 at 8:57
  • After reading this, it appears to be the case that this split is present upstream. – Osteoboon Feb 20 '15 at 9:32
  • 1
    @NickODell in addition to the official upstream page I referred to above, I just wanted to point out an answer on this SE site that also shows your comment above (about Timothy Redaelli having split Bitcoin Core into bitcoin-daemon and bitcoin-cli packages) to be misleading. I didn't realize before today that bitcoind could previously (before v0.9) be run as either server or client, but since v0.10, bitcoind is the RPC server only, and bitcoin-cli is the RPC client only. – Osteoboon Feb 21 '15 at 2:09
1

Although I think it's too early to tell for sure, it appears that I now have a good deal more informative reading that I've found here. I suspect that these documents will eventually help me understand the correct answers to all my questions above. I hadn't realized that my questions were essentially developer questions before now.

I'd still enjoy seeing more user-oriented documentation that would help me understand my questions, so if anyone has any thoughts to share, I'd still welcome them. I do not by any means consider this to be a definitive answer to my several questions above.

UPDATE:

These words (though currently not quite complete as they do not mention bitcoin-cli): "There are two variations of the original bitcoin program available; one with a graphical user interface (usually referred to as just “Bitcoin” [or bitcoin-qt]), and a 'headless' version (called bitcoind). They are completely compatible with each other, and take the same command-line arguments, read the same configuration file, and read and write the same data files. You can run one copy of either Bitcoin [aka bitcoin-qt] or bitcoind on your system at a time (if you accidently try to launch another, the copy will let you know that Bitcoin or bitcoind is already running and will exit)." from this page were also extremely helpful to me. They helped me see that to get started, I don't even need to worry about the settings in the bitcoin.conf config file. I can install both bitcoin-qt and bitcoind, start up with bitcoin-qt initially, and then shut it down later in favor of bitcoind.

So for Arch Linux at least, I now think it's best to install all three packages:

  1. bitcoind
  2. bitcoin-cli
  3. bitcoin-qt

And these are all part of the upstream software called Bitcoin Core used for complete transparency and a wallet stored locally (arguably the best security) on my computer rather than on someone else's computer.

But one really valuable tip I just discovered a few minutes ago is that there's a fairly recent copy of the (21 GB) entire block chain available as a torrent file. And in light of that discovery, it's clear to me that to get started as quickly as possible with a local wallet, I should completely download this torrent of the block chain first. And then and only THEN should I fire up bitcoind or bitcoin-qt to have that 21GB block chain validated or verified or whatever the correct term is for that. This saves me download time and it saves the Bitcoin network bandwidth from direct downloads via bitcoind or bitcoin-qt.

UPDATE2:

I wrote a detailed procedure for this in the Arch Linux Bitcoin wiki page that I've reproduced below to improve this answer.

  1. Verify at least 80GB (22GB * 3 copies + 14GB worth of additional blocks via bitcoind/bitcoin-qt) of free disk space is available

  2. Install gnupg, deluge, bitcoin-qt, bitcoin-daemon, and bitcoin-cli from the official repositories

  3. Using a browser, download README.txt, bootstrap.dat.torrent, bootstrap.dat.torrent.gpg, and bootstrap.txt

  4. Using gnupg, verify the downloaded files as having good signatures (you'll need to first import the signer's public key ID A2DB9CCA)

  5. Using deluge, download the 22GB bootstrap.dat (perhaps hours depending on your download data rate)

  6. When bootstrap.dat download is complete:

    • leave deluge running until seeding is complete (optional but it helps the community; may require hours or days depending on your upload data rate)

    • copy (don't move or you'll interrupt seeding) bootstrap.dat to ~/.bitcoin (don't use a symbolic link as this file will get renamed by bitcoin-qt after it is fully imported, and that too will interrupt seeding)

  7. start bitcoind for background import or bitcoin-qt for import with feedback on progress

  8. bitcoin-qt begins importing the block chain from bootstrap.dat, giving visual and text feedback as to import progress ("Importing from disk..." and eg. "4 years and 24 weeks behind", etc.; this import from disk may require more than one hour)

  9. the import process duplicates the 22GB bootstrap.dat file into ~/.bitcoin/blocks/, thus roughly doubling the size of ~/.bitcoin from 22GB before starting Bitcoin Core to 44GB after import is complete.

  10. After import from disk is complete

    • bitcoin-qt will show "Synchronizing with network..." and eg. "22 weeks behind..." (a wired network connection here will speed this part of the process but several hours to complete synchronization with network is typical)

    • the bootstrap.dat file gets renamed to bootstrap.dat.old

    • it should now be safe to remove bootstrap.dat.old from ~/.bitcoin, but a cautious approach would be to wait until your locally stored block chain is fully synchronized with the network

  11. quit bitcoin-qt

  12. then remove ~/.bitcoin/bootstrap.dat.old

  13. After bitcoin-qt indicates that the local copy of the block chain is fully synchronized with the network (~/.bitcoin/blocks filled 34GB in Feb 02015, then consider quitting bitcoin-qt and do either one of the following:

    • start bitcoind to keep the block chain synchronized; feedback as to block chain status can then be had using bitcoin-cli without the additional memory required of bitcoin-qt.

    • restart bitcoin-qt running as a minimized window ($ bitcoin-qt -min). Note however that some people have found this commandline argument does not work as advertised.

  14. Consider making a backup of your wallet.dat file using bitcoin-qt.

  15. See the official Bitcoin wiki for additional guidance.

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.