+ Installing bitcoind on raspberry pi +
+ +Installing bitcoind on linux
+Running a full bitcoin node helps the bitcoin network to accept, validate and relay transactions. If you want to volunteer some spare computing and bandwidth resources to run a full node and allow Bitcoin to continue to grow you can grab an inexpensive and power efficient raspberry pi and turn it into a full node.
+There are plenty of tutorials on the Internet explaining how to install a bitcoin full node; this tutorial won't go over setting up a raspberry pi and using ssh.
+In order to store the full blockchain we will mount a network drive and tell bitcoind to use this mapped drive as the data directory.
+Download the bitcoin client
+Go to https://bitcoin.org/en/download
+
Copy the URL for the ARM 32 bit version and download it onto your raspberry pi.
+wget https://bitcoin.org/bin/bitcoin-core-0.15.1/bitcoin-0.15.1-arm-linux-gnueabihf.tar.gz
+Locate the downloaded file and extract it using the arguement xzf
+tar xzf bitcoin-0.15.1-arm-linux-gnueabihf.tar.gz
+a new directory bitcoin-0.15.1 will be created, it contrains the files we need to install the software
+Install the bitcoin client
+We will install the content by copying the binaries located in the bin folder into /usr/local/bin by using the install command. +You must use sudo because it will write data to a system directory
+sudo install -m 0755 -o root -g root -t /usr/local/bin bitcoin-0.15.1/bin/*
+Launch the bitcoin core client by running
+bitcoind -daemon
+Configuration of the node
+Start your node at boot
+Starting you node automatically at boot time is a good idea because it doesn't require a manual action from the user. The simplest way to achive this is to create a cronjob.
+Run the following command
+crontab -e
+Select the text editor of your choice, then add the following line at the end of the file
+@reboot bitcoind -daemon
+Save the file and exit; the updated crontab file will be installed for you.
+Full Node
+If you can afford to download and store all the blockchain, you can run a full node. At the time of writing, the blockchain is 150Go (https://blockchain.info/fr/charts/blocks-size). Tree ways to store this are : + use a microSD with 256Go or more + add a thumbdrive or an external drive to your raspberry pi +* mount a network drive from a NAS
+If you have purchased a big SD card then you can leave the default location for the blockchain data (~/.bitcoin/). +Otherwise, you will have to change the datadir location to where your drive is mounted (in my case I have mounted it to /mnt)
+In order to configure your bitcoin client, edit/create the file bitcoin.conf located in ~/.bitcoin/
+nano ~/.bitcoin/bitcoin.conf
+copy the following text
+# From redoules.github.io
+
+# This config should be placed in following path:
+# ~/.bitcoin/bitcoin.conf
+
+# [core]
+# Specify a non-default location to store blockchain and other data.
+datadir=/mnt
+# Set database cache size in megabytes; machines sync faster with a larger cache. Recommend setting as high as possible based upon mach$
+dbcache=100
+# Keep at most <n> unconnectable transactions in memory.
+maxorphantx=10
+# Keep the transaction memory pool below <n> megabytess.
+maxmempool=50
+
+# [network]
+# Maintain at most N connections to peers.
+maxconnections=40
+# Tries to keep outbound traffic under the given target (in MiB per 24h), 0 = no limit.
+maxuploadtarget=5000
+Check https://jlopp.github.io/bitcoin-core-config-generator it is a handy site to edit the bitcoin.conf file
+Pruning node
+If you don't want to store the entire blockchain you can run a pruning node which reduces storage requirements by enabling pruning (deleting) of old blocks.
+Let's say you want to allocated at most 5Go to the blockchain, then specify prune=5000 into your bitcoin.conf file. Edit/create the file bitcoin.conf located in ~/.bitcoin/
+nano ~/.bitcoin/bitcoin.conf
+copy the following text
+# From redoules.github.io
+
+# This config should be placed in following path:
+# ~/.bitcoin/bitcoin.conf
+
+# [core]
+# Set database cache size in megabytes; machines sync faster with a larger cache. Recommend setting as high as possible based upon mach$
+dbcache=100
+# Keep at most <n> unconnectable transactions in memory.
+maxorphantx=10
+# Keep the transaction memory pool below <n> megabytess.
+maxmempool=50
+# Reduce storage requirements by only storing most recent N MiB of block. This mode is incompatible with -txindex and -rescan. WARNING: Reverting this setting requires re-downloading the entire blockchain. (default: 0 = disable pruning blocks, 1 = allow manual pruning via RPC, greater than 550 = automatically prune blocks to stay under target size in MiB).
+prune=5000
+
+# [network]
+# Maintain at most N connections to peers.
+maxconnections=40
+# Tries to keep outbound traffic under the given target (in MiB per 24h), 0 = no limit.
+maxuploadtarget=5000
+Checking if your node is public
+one of the best way to help the bitcoin network is to allow your node to be visible and to propagate block to other nodes.
+The bitcoin protocole uses port 8333, other clients should be able to share information with your client.
+Run
+ifconfig
+and check if you have an ipv6 adresse (look for adr inet6:)
+IPV6
+Get the global ipv6 adresse of your raspberry pi
+ Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
+ inet adr:192.168.1.x Bcast:192.168.1.255 Masque:255.255.255.0
+ adr inet6: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Lien
+ adr inet6: xxxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 Scope:Global
+ UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
+ RX packets:42681744 errors:0 dropped:0 overruns:0 frame:0
+ TX packets:38447218 errors:0 dropped:0 overruns:0 carrier:0
+ collisions:0 lg file transmission:1000
+ RX bytes:3044414780 (2.8 GiB) TX bytes:2599878680 (2.4 GiB)
+it is located between adr inet4 and Scope:Global
+adr inet6: xxxx:xxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/64 Scope:Global
+Copy this adresse and past it into the search field on https://bitnodes.earn.com/
+
If your node is visible, it will appear on the website
+
IPV4
+If you don't have an ipv6 adresse, you will have to open port 8333 on your router and redirect it to the internal IP of your raspberry pi.
+It is not detailed here because the configuration depends on your router.
+