| A blockchain is a distributed database managed by a peer-to-peer network.
The distributed database is also called a ledger which is a continuously growing chain of blocks.
Each block contains a number of records and each block is linked to a previous block. 
 It is extremely difficult to change a record in any given block without the alteration of all subsequent
blocks and the collusion of the network.
 
 The first implementation of a blockchain was Bitcoin in 2009 invented by an unknown programmer, or a group of programmers,
under the name Satoshi Nakamoto.
 
 After the Bitcoin success many blockchain implementations followed such as Litecoin and Peercoin.
 
 Other blockchain implementations introduces new kind of functionalities such as Ethereum and Dash.
 
 
 
	
 
 
 
 
 
 
	| How to setup the Rinkeby Testnet without building any code on macOS
 Information
 The Rinkeby Testnet uses Proof-of-Authority consensus engine to be used with EVM based chains.
 Proof-of-Authority is a replacement for Proof-of-Work.
 
 The Rinkeby Testnet does not depend on nodes solving arbitrarily difficult mathematical problems, but instead uses a hard-configured set of "authorities" nodes
  that are explicitly allowed to create new blocks and secure the blockchain. This makes it easier to maintain the chain and keep the block issuers accountable.
 
 Operating system used
 macOS 10.12 Sierra
 
 Software prerequisites
 none
 
 Procedure
 
  Download the latest geth version from https://geth.ethereum.org/downloads/For example: geth-alltools-darwin-amd64-1.6.6-10a45cb5.tar.gz
 
 
Verify the checksum, type: md5 geth-alltools-darwin-amd64-1.6.6-10a45cb5.tar.gz
      
 You will see:
 74bab8c702dfbf1dd206d46151b2cb54
 
 
Unpack this file in folder ~/tools and rename the folder to geth-alltools-1.6.6For example: ~/tools/geth-alltools-1.6.6
 
 
Update your ~/.bash_profile file and add the following line:# Geth all tools 1.6.6
 export PATH=$PATH:/Users/robertlie/tools/ geth-alltools-1.6.6
 
 
Create the following folders:Type: mkdir ~/tools/ethereum_rinkeby_network
 Type: mkdir ~/tools/ethereum_rinkeby_network/datadir
 
 
Download the https://www.rinkeby.io/rinkeby.json file into  ~/tools/ethereum_rinkeby_network.Type: cd ~/tools/ethereum_rinkeby_network
 Type: curl -O https://www.rinkeby.io/rinkeby.json
 
 
Create a ~/tools/ethereum_rinkeby_network/Makefile file.
      
 The geth parameters used in the Makefile can be found at
      https://www.rinkeby.io/ select link "Connect Yourself" and select option "Go Ethereum: Geth".
      I have chosen to setup a Full Node.
 
 A full node synchronizes the blockchain by downloading the full chain from the genesis block to the current head
      block, but does not execute the transactions. Instead, it downloads all the transactions receipts along with
      the entire recent state. As the node downloads the recent state directly, historical data can only be queried
      from that block onward.
 
 Initial processing required to synchronize is more bandwidth intensive, but is light on the CPU
      and has significantly reduced disk requirements. Mid range machines with HDD storage, decent CPUs and 4GB+
      RAM should be enough.
 
 
In the Makefile you will see the following lines:
      
 rm -f $(HOME_DIR)/Library/Ethereum/geth.ipc
 mkdir -p $(HOME_DIR)/Library/Ethereum
 ln -s $(DATA_DIR)/geth.ipc $(HOME_DIR)/Library/Ethereum
 
 These lines does the following:
 
      If the file $(HOME_DIR)/Library/Ethereum/geth.ipc exists, delete it.If the folder $(HOME_DIR)/Library/Ethereum does not exists, create it.Create a symbolic link in folder $(HOME_DIR)/Library/Ethereum pointing to $(DATA_DIR)/geth.ipc Tools such as Ethereum Mist communicates with geth using the geth.ipc file.
 This file is created when geth is running.
 By default, tools such as Ethereum Mist EXPECT that geth.ipc is located at $(HOME_DIR)/Library/Ethereum/geth.ipc (for macOS).
      However my $(DATA_DIR)/geth.ipc is located somewhere else.
 By creating a symbolic link i am fixing this problem.
 
 Why am i doing this? Because i have setup different geth nodes on my laptop: one for a private ethereum node,
      one for Rinkeby testnet and one for Ropsten testnet.
 
 
Initialize the blockchain from the rinkeby.json file.Type: cd ~/tools/ethereum_rinkeby_network
 Type: make init
 
 You will see:
 
 geth --datadir /Users/robertlie/tools/ethereum_rinkeby_network/datadir init /Users/robertlie/tools/ethereum_rinkeby_network/rinkeby.json
 WARN [06-28|10:24:29] No etherbase set and no accounts found as default
 INFO [06-28|10:24:29] Allocated cache and file handles  database=/Users/robertlie/tools/ethereum_rinkeby_network/ datadir/geth/chaindata cache=16 handles=16
 INFO [06-28|10:24:29] Writing custom genesis block
 INFO [06-28|10:24:29] Successfully wrote genesis state  database=chaindata  hash=6341fd…67e177
 INFO [06-28|10:24:29] Allocated cache and file handles  database=/Users/robertlie/tools/ethereum_rinkeby_network/ datadir/geth/lightchaindata cache=16 handles=16
 INFO [06-28|10:24:29] Writing custom genesis block
 INFO [06-28|10:24:29] Successfully wrote genesis state  database=lightchaindata  hash=6341fd…67e177
 
 
Create 5 accounts, type:geth --datadir /Users/robertlie/tools/ ethereum_rinkeby_network/datadir account new
 
 You will see:
 
 WARN [06-19|12:06:31] No etherbase set and no accounts found as default
 Your new account is locked with a password. Please give a password. Do not forget this password.
 Passphrase: mysecret1
 Repeat passphrase: mysecret1
 Address: {2b417fe5d262443918358a92868c60922285eda1}
 
 The folder ~/tools/ethereum_rinkeby_network/datadir/keystore now contains a file.
 Each file contains the public and private key, the password is not stored!
 
 An example of such a file:
 UTC--2017-06-28T08-39-45.318002615Z--2b417fe5d262443918358a92868c60922285eda1
 
 If you do not specify the "--datadir" parameter a default keystore is created in:
 <homedir>/Library/Ethereum/keystore
 
 Repeat this command 4 more times:
 
 27382f42a8847873ab202dfdd59a194e6cee03a4  - password: mysecret2
 7ddf569f0b030f8d86d03862785c8ac05c55971c  - password: mysecret3
 4ce84cb3e4fc00b28c81fc45b8be6eb96c1cae11  - password: mysecret4
 a7941a2f8db64088631c06a45ef5c65447c2014a  - password: mysecret5
 
 Note:
 To change account "2b417fe5d262443918358a92868c60922285eda1" password, type:
 geth --datadir /Users/robertlie/ tools/ethereum_rinkeby_network/datadir account update 2b417fe5d262443918358a92868c60922285eda1
 
 The first account created (2b417fe5d262443918358a92868c60922285eda1) will by default be the coinbase account.
 
 
Start the node, type:Type: cd ~/tools/ethereum_rinkeby_network
 Type: make start
 
 You will see:
 
 geth --datadir=/Users/robertlie/tools/ ethereum_rinkeby_network/datadir  --networkid=4  --cache=512 --verbosity 3 --ethstats='yournode:Respect my [email protected]'
  --bootnodes=enode:// a24ac7c5484ef4ed0c5eb2d36620ba4e4aa13b8c84684e1b4a ab0cebea2ae45cb4d375b77eab56516d34bfbd3c1 a833fc51296ff084b770b94fb [email protected]:30303 --rpc --rpcapi="personal,eth,network" console 2>>/Users/robertlie/tools/ ethereum_rinkeby_network/ethereum.log
  Welcome to the Geth JavaScript console!
 
 instance: Geth/v1.6.6-stable-10a45cb5/darwin-amd64/go1.8.3
 coinbase: 0x2b417fe5d262443918358a92868c60922285eda1
 at block: 0 (Wed, 12 Apr 2017 16:59:06 CEST)
 datadir: /Users/robertlie/tools/ ethereum_rinkeby_network/datadir
 modules: admin:1.0 clique:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
 :
 INFO [06-28|13:04:08] Imported new block headers               count=192 elapsed=64.078ms  number=274176 hash=d09f4d…f00789 ignored=0
 INFO [06-28|13:04:10] Imported new block receipts              count=2   elapsed=11.854ms  number=271267 hash=fdcc12…a3cdfa ignored=0
 INFO [06-28|13:04:10] Imported new state entries               count=384 flushed=415 elapsed=3.193ms   processed=556561 pending=7043  retry=0 duplicate=0 unexpected=0
 :
 INFO [06-28|13:33:57] Imported new state entries               count=19   flushed=44  elapsed=3.374ms   processed=769550 pending=78    retry=0   duplicate=0 unexpected=0
 INFO [06-28|13:33:57] Imported new state entries               count=18   flushed=20  elapsed=4.503ms   processed=769568 pending=79    retry=0   duplicate=0 unexpected=0
 INFO [06-28|13:33:58] Imported new state entries               count=21   flushed=50  elapsed=2.636ms   processed=769589 pending=35    retry=0   duplicate=0 unexpected=0
 INFO [06-28|13:33:58] Imported new state entries               count=6    flushed=35  elapsed=344.854µs processed=769595 pending=0     retry=0   duplicate=0 unexpected=0
 INFO [06-28|13:33:58] Imported new block receipts              count=1    elapsed=303.91µs  number=442278 hash=0a4da2…edd9ef ignored=0
 INFO [06-28|13:33:58] Committed new head block                 number=442278 hash=0a4da2…edd9ef
 INFO [06-28|13:33:58] Imported new chain segment               blocks=216 txs=101 mgas=13.574 elapsed=179.610ms mgasps=75.576 number=442494 hash=cb9c0d…de847a
 INFO [06-28|13:33:58] Imported new chain segment               blocks=58  txs=15  mgas=0.731  elapsed=22.650ms  mgasps=32.269 number=442552 hash=bfc5f1…c124b9
 INFO [06-28|13:33:58] Fast sync complete, auto disabling
 INFO [06-28|13:34:28] Imported new chain segment               blocks=4   txs=0   mgas=0.000  elapsed=2.265ms   mgasps=0.000  number=442556 hash=d23a04…b136c1
 INFO [06-28|13:34:43] Imported new chain segment               blocks=1   txs=0   mgas=0.000  elapsed=553.646µs mgasps=0.000  number=442557 hash=c303d2…d2be13
 :
 
 Note:
 It has taken me approx 30 minutes for 442552 blocks.
 
 
You need a Github account (its free)Login to your Github account and press the Gist link or just
      enter http://gist.github.com .
 
 Create a gist, for example:
 
 Gist description: mobilefish_rinkeby_test_account_1
 Filename including extension: mobilefish_rinkeby_test_account_1.txt
 Enter in the text box: 0x2b417fe5d262443918358a92868c60922285eda1
 
 Enter in the textbox an account number. I have selected the first one.
 DO NOT FORGET TO PREFIX YOUR ACCOUNT WITH: 0x
 
 
   
 Press button: Create public gist
 
 
   
 Copy the gist link https://gist.github.com/robertlie/e1015a0e9b016a1c0de9b08ce507d3af
 
 
Go to https://www.rinkeby.io/
      and select link Crypto Faucet.
      
 
   
 Paste the gist link https://gist.github.com/robertlie/e1015a0e9b016a1c0de9b08ce507d3af
      in the textbox
 
 
   
 Press button "Give Me Ether". You can select the following funding: 3eth/8h, 7.5eth/1d or 18.75eth/3d.
 After you have pressed the button, you will see a response. I have selected 3eth/8h.
 
 
   
 
To check if you have ethers received from the Crypto Faucet, goto https://rinkeby.etherscan.io/ and
      enter the address 2b417fe5d262443918358a92868c60922285eda1
      
 Before request is submitted:
 
 
   
 After request is submitted:
 
 
   
	
 
	
 
 |  |