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 loopback auto eth0

allow-hotplug eth0

iface eth0 inet dhcp allow-hotplug wlan0

iface wlan0 inet manual

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf allow-hotplug wlan1

iface wlan1 inet manual

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Install Oracle Java™ SE Runtime Environment



# echo “deb

# echo “deb-src

# apt-key adv — keyserver hkp://keyserver.ubuntu.com:80 — recv-keys EEA14886

# apt-get update

# apt-get install oracle-java8-installer

# exit 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



$ cp iota-deploy/scripts/rocksdb/* .

$ ./BUILD-rocksdb.sh $ 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: