Deploy IOTA full node to cheap ARM boards
IOTA is an open-source distributed ledger protocol launched in 2015 that goes ‘beyond blockchain’ through its core invention of the ‘Tangle’, which is a quantum-resistant Directed Acyclic Graph (DAG), whose digital currency IOTA has a fixed money supply with zero inflationary cost. The tutorial illustrates how we can build IOTA full nodes from scratch on cheap ARM-based single board computers (SBC).
The most famous ARM-based SBC would be Raspberry Pi, and Raspberry Pi 3 (RPi3) is powered by 1.2GHz 64-bit quad-core ARMv8 CPU. Asus Tinker Board is another RPi3-like SBC with several advantages over RPi3. Tinker board is selected for building IOTA full nodes because of its superior features such as 2GB onboard RAM, gigabit Ethernet, and faster ARM cores, comparing to RPi3.
The simplified performance comparison is shown as following:
System Requirement
Hardware:
- ASUS Tinker board
- 5V3A AC Adapter
Software:
Installation
Install ASUS Tinker Debian image:
- Some unknown power management problem maybe occur on version 1.8, my suggestion is version 1.9
- Flash the OS image (change if and of parameter value by yourself)
$ dd if=output.img of=/dev/sdc seek=0 bs=16M conv=notrunc
- Boot and connect Tinker board with SSH protocol (default user/password: linaro/linaro)
Config Network (DHCP)
$ sudo vi /etc/network/interfaces# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopbackauto eth0
allow-hotplug eth0
iface eth0 inet dhcpallow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.confallow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Install Oracle Java™ SE Runtime Environment
su -
# echo “deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main” | tee /etc/apt/sources.list.d/webupd8team-java.list
# echo “deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main” | tee -a /etc/apt/sources.list.d/webupd8team-java.list
# apt-key adv — keyserver hkp://keyserver.ubuntu.com:80 — recv-keys EEA14886
# apt-get update
# apt-get install oracle-java8-installer
# exit$ sudo apt-get install oracle-java8-set-default
Install NodeJS and NPM
Reference: How to install Node.js LTS on Debian 9 stretch
Build RocksDB
- Clone IOTA-Deploy script
$ git clone https://github.com/deviceproof/iota-deploy.git
$ cp iota-deploy/scripts/rocksdb/* .
$ ./BUILD-rocksdb.sh
Install IRI
$ cp iota-deploy/scripts/iri/* .
$ BUILD-iri.sh [IRI_version_to_build]
iri-1.4.1.4 is known to work out of the box.
Deploy IRI
Create a configuration file for IRI.
[IRI]
PORT = 14265
UDP_RECEIVER_PORT = 14265
NEIGHBORS =
IXI_DIR = ixi
HEADLESS = true
DEBUG = false
ZMQ_ENABLED = true
Launch IRI service.
$ ./run.sh <IRI_version> <path_of_config_file>
You can download a IOTA ledger (RocksDB database) compressed from this link (milestone:310872).
Install CarrIOTA Nelson
Upgrade Nodejs to v8.9.3 at least.
- Nodejs (ubuntu or Debian): refer to: Upgrade to Nodejs 8
$ sudo npm install -g nelson.cli
Run CarrIOTA Nelson:
$ nelson — gui — getNeighbors
Check syncing milestoneIndex by IRI restful API:
$ curl -s http://localhost:14265 \
-X POST \
-H ‘Content-Type: application/json’ \
-H ‘X-IOTA-API-VERSION: 1.4.1’ \
-d ‘{“command”: “getNodeInfo”}’ | python -m json.tool
Donate(IOTA):BXEOYAONFPBGKEUQZDUZZZODHWJDWHEOYY9AENYF9VNLXZHXBOODCOTYXW9MGGINTEJPLK9AGOPTPODVXDZJIP9IE9