The importance of bitcoin nodes and how to start one

The main idea behind bitcoin and the reason that it took off is because of bitcoin’s decentralized nature and its peer-to-peer (P2P) network. In order to keep bitcoin running and validate transactions there need to be bitcoin nodes available on the network.

Bitcoin nodes are different from bitcoin miners or bitcoin clients. Bitcoin nodes provide security, one of which is security from double spending – when a user attempts to spend the same coin twice. The bitcoin network chooses random nodes and then has them verify the transaction and make sure the coins were not double spent.

Bitcoin not only needs nodes, it requires many functioning ones – nodes that have the bitcoin core client. Anybody can run a bitcoin node as long as you have access to a high quality server. You will need atleast 2GB of RAM and atleast 20GB of storage in order to be able to run the bitcoin client.

This following excerpt is taken from THIS article which is a tutorial on how to install coinpunk, an open source front-end bitcoin wallet on Centos 6.5.

The first thing you must do on CentOS 6.5 is install bitcoind.

wget https://github.com/sipa/bitcoin/archive/watchonly.tar.gz

now we will untar the tarball and start installing dependencies.

tar -zxf watchonly.tar.gz
 cd bitcoin-watchonly

You can find a tutorial on how to install the necessary dependencies HERE I will briefly walk through how to do that. If you don’t already have it you will need to install git.

yum install git-core

first we update yum and make sure your original deps are up to date:

yum update

We will need to install some dependencies from source so lets get to it, create a working directory and start compiling

Berkeley DB 4.8.30

wget http://download.oracle.com/berkeley-db/db-4.8.30.tar.gz
tar zxvf db-4.8.30.tar.gz
cd db-4.8.30/build_unix
../dist/configure --prefix=/home/bitcoind/bitcoind/deps --enable-cxx
make && make install

OpenSSL

wget https://www.openssl.org/source/openssl-1.0.1g.tar.gz
tar zxvf openssl-1.0.1g.tar.gz
cd openssl-1.0.1g
./config --prefix=/home/bitcoind/bitcoind/deps --openssldir=/home/bitcoind/bitcoind/deps/openssl -fPIC shared
make && make install

Boost

wget http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.bz2/download -O boost_1_55_0.tar.bz2
tar jxvf boost_1_55_0.tar.bz2
cd boost_1_55_0
./bootstrap.sh
./b2 --prefix=/home/bitcoind/bitcoind/deps link=static runtime-link=static install

Next we need to compile bitcoind. Navigate to the bitcoin-watch directory and run

./autogen.sh
./configure --without-qt
make
make install

If you get an error that looks something like this:

c:/deps/boost_1_52_0/boost/thread/detail/thread_group.hpp:74: undefined reference to `boost::thread::join()'
obj/bitcoinrpc.o: In function `thread<boost::_bi::bind_t<unsigned int, boost::_mfi::mf0<unsigned int, boost::asio::io_service>, boost::_bi::list1<boost::_bi::value<boost::asio::io_service*> > > >':

Then you will need to link the boost directory where the libraries are installed. Here is how you would run your compile commands:

./autogen.sh
./configure --with-boost-libdir=/usr/lib/ --without-qt
make
make install

If everything compiles then we will now configure the bitcoin.conf file

mkdir -p ~/.bitcoin
vim ~/.bitcoin/bitcoin.conf

Now in the bitcoin.conf file put

rpcuser=YOURUSERNAME
rpcpassword=YOURPASSWORDDONTUSETHISORYOUWILLGETROBBED
txindex=1
testnet=1

This will make sure that bitcoind starts up in the testnet so you can test functionality. I would let bitcoind run overnight not on the testnet and synchronize with the blockchain before continuing but it is up to you.

If you get an error or still having problems compiling check out this OTHER tutorial on how to install bitcoind on CentOS 5.5 just remember that you need a specific version of bitcoind for coinpunk so when following the instructions download the right version. Still all of the commands are the same. For the full article on how to install bitcoind on centos and coinpunk please refer HERE

One company (Dunvegan Space Systems) decided to partner up with Deep Space Industries Inc. for a campaign to put bitcoin nodes in space. At first it seems like a silly idea but in order to keep the bitcoin network functioning bitcoin needs nodes and there has been a decline in bitcoin nodes recently.

The two companies are planning to build bitcoin sattelites based on the CubeSet modular standard. The sattelites will measure 10cm on all sides and will be called BitSats, they will look something like this:

CubeSat_sattelite_bitcoin_node

From orbit, those BitSats will act as bitcoin nodes and will broadcast out, providing transaction information that will be gathered from solved blocks.

Looking at the following chart of bitcoin nodes shows the the number has been declining significantly. It went from  250k nodes in december to 100k nodes as of today. Less nodes means less security for the network and one factor that may be contributing to the decline of bitcoin nodes is the fact that there are so many alternative currencies battling for their recognition and share in the market. Even with only 100k nodes the bitcoin network is plenty secure so there is really no need to start deploying bitcoin into space. However, with the market cap if bitcoin sitting in the billions there is no saying what and how bitcoin can and cant expand.

bitcoin_nodes_chart

Another problem concerning bitcoin nodes is their geographical distribution. According to the following map we can see that the majority of bitcoin nodes or located in north america and the west, so people from africa have a hard time connecting to the bitcoin network because most of the nodes are so far away, launching bitcoin nodes in space will guarantee equal access to anybody from any point on earth.

bitcoinnodes_data