上次談過一次我個人認為潛力很大的虛擬貨幣 IOTA,其中一個特點就是他沒辦法「挖礦」取得
因為 IOTA 在 ICO 的時候已經把所有幣全部發放完畢,交易時也沒有手續費
目前幾乎全靠社群的力量在搭建 IOTA 的節點(IRI),但是搭建節點很麻煩的一點就是要怎麼去找可靠的「鄰居」?
於是又有人開發可以自動發現鄰居的「Nelson」,會想要搭建 IOTA IRI 節點的人
通常不是極熱衷的信徒,要不然就是想要給自己或親友錢包加速使用 IOTA 轉帳匯款
每個節點通常都在小群體裡面使用,因為都是私人架設的,要找到一個可靠的節點還真是要靠點運氣
這也是官方錢包難用的原因之一,官方錢包內建的幾個節點有時候都會失效,就必須要手動來切換節點
然而又有個傢伙跳出來,打造了一個「CarrIOTA」的技術,他可以讓上面這些看似獨立的節點
通通加入到他的大家庭裡面,讓普通使用者只要使用「一個」入口節點,然後 CarrIOTA 會根據使用者的所在地
分配一個最佳的節點來使用,同時 CarrIOTA 還開放大家的自由捐助,收到的捐款將會自動分配到加入 CarrIOTA 節點搭建者
分數越高能分配到的 IOTA 捐助就會越多~(咦?這不就是「變種挖礦」?)
但是這種收入不穩,因為每季度收到的捐助會不同,而且節點在歐洲會比亞洲分數還高喔!
這應該是因為歐洲那邊使用 IOTA 的人比較多吧,亞洲這邊關注的還比較少一點~
擔任 IOTA 節點這種事情,NAS 本身就非常適合,因為 NAS 硬碟空間大而且基本不會關機
因為整個項目開源的幫助,上述這些東西都有人移植到各個設備上面,除了 VPS 以外還有像是樹莓派這種小型設備都很適合
於是我也利用家中的 Synology NAS 來搭建一個 CarrIOTA 完整節點~
準備工作
首先新建幾個新的目錄在 DSM 裡面, ssh 進去 DSM 裡面輸入以下指令
$ mkdir -p /volume1/docker/IOTA/IRI/mainnetdb/
$ mkdir -p /volume1/docker/IOTA/field.cli/
$ mkdir -p /volume1/docker/IOTA/nelson.cli/data/
$ cd /volume1/docker/IOTA/IRI
因為目前 IOTA 完整的資料量巨大,如果只是靠「鄰居」來同步,那會同步到天荒地老,所以我們先來個「預」下載
$ curl http://db.iota.partners/IOTA.partners-mainnetdb.tar.gz -o mainnetdb.tar.gz
$ tar xzfv mainnetdb.tar.gz -C /volume1/docker/IOTA/IRI/mainnetdb/
$ rm mainnetdb.tar.gz
第 1 行是在下載整個節點資料,會需要一點時間
第 2 行是在解壓縮,也要一點時間
第 3 行是在刪除下載下來已經用不到的壓縮檔
接著我們要創幾個會用到的設定檔,把我們的設定都寫進去,首先是 IRI 的
$ vi iota.ini
然後複製粘貼以下內容:
[IRI]
PORT = 14265
TCP_RECEIVER_PORT = 15777
UDP_RECEIVER_PORT = 14777
HEADLESS = true
DEBUG = false
TESTNET = false
DB_PATH = /iri/mainnetdb/
API_HOST = localhost
REMOTE = true
再來是 field 的設定檔
$ vi /volume1/docker/IOTA/field.cli/config.ini
複製並修改以下內容:
[field]
name = {name}
IRIPort = 14265
IRIHostname = localhost
seed = {seed}
port = 21310
pow = true
disableIRI = false
customFieldId = true
第 2 行的 {name} 請修改成自己喜歡的名字,這個名字會出現在 CarrIOTA 的節點上
第 5 行的 {seed} 請自己重新創立一個 IOTA 錢包的新 Seed,建議不要跟你主錢包使用同一個,這是用來接收捐助的錢包,系統會自動根據 seed 來生成接收錢包的地址
如果不知道怎麼新建 seed,請參考之前寫的這篇文章
最後一個 nelson 設定檔
$ vi /volume1/docker/IOTA/nelson.cli/config.ini
複製並修改以下內容:
[nelson]
name = My nelson node
cycleInterval = 60
epochInterval = 300
apiPort = 18600
apiHostname = 0.0.0.0
port = 16600
IRIHostname = localhost
IRIProtocol = tcp
IRIPort = 14265
TCPPort = 15777
UDPPort = 14777
dataPath = /data/neighbors.db
incomingMax = 5
outgoingMax = 4
isMaster = false
silent = false
gui = false
getNeighbors = https://raw.githubusercontent.com/SemkoDev/nelson.cli/master/ENTRYNODES
neighbors[] = mainnet.deviota.com/16600
neighbors[] = mainnet2.deviota.com/16600
neighbors[] = mainnet3.deviota.com/16600
neighbors[] = iotairi.tt-tec.net/16600
第 2 行可以根據自己愛好修改名字
最後的準備工作,就是打開路由器上的端口並指向 NAS
14777 UDP – IOTA/IRI UDP 連線端口
15777 TCP – IOTA/IRI TCP 連線端口
16600 TCP – Nelson.cli TCP 連線端口
21310 TCP – Field.cli TCP 連線端口
下載並設定 Docker
直接打開 DSM 的網頁管理頁面,打開 Docker 應用程式,找到「倉庫伺服器」,搜索「iri」,並下載「iotaledger/iri」最新的映像檔
稍等下載完畢後,直接開始部署 IRI 節點
進階設定:自動重啟,請打勾
儲存空間:見下圖,新增設定檔案與 IOTA 的資料庫資料夾
網路:與 Docker Host 使用相同網路,打勾
其他不用調整,然後直接點「套用」,一路按下一步,這樣就能跑一個 IOTA IRI 完整節點起來~
再來回到「倉庫伺服器」,搜索「nelson.cli」,找到「romansemko/nelson.cli」下載之後開始部署
進階設定:自動重啟,請打勾
儲存空間:見下圖,新增設定檔案與 nelson 的資料庫資料夾
網路:與 Docker Host 使用相同網路,打勾
環境設定:新增一個「NELSON_CONFIG」,見下圖
然後直接套用,一直下一步到部署完畢,如此 Nelson 的服務應該也能順利跟 IRI 連動了
此時如果去看 IRI 或者 Nelson 的 log,就能看到他們正在辛勤的找鄰居同步數據了~
再次回到「倉庫伺服器」,搜索「field.cli」,下載「romansemko/field.cli」映像檔,然後開始部署
進階設定:自動重啟,請打勾
儲存空間:見下圖,新增設定檔案
網路:與 Docker Host 使用相同網路,打勾
環境設定:新增一個「FIELD_CONFIG」,見下圖
同樣的按下套用一路到底,CarrIOTA 的客戶端服務也順利架起來了~
等個幾分鐘,等服務都確定努力在跑,此時打開 CarrIOTA 的網頁: http://field.carriota.com
搜索一下自己設定的名字( field.cli 的 config.ini 第 2 行),應該就能看見囉!
看著自己的節點在這個錯綜複雜蜘蛛網裡面漂浮,很療癒喔~~~ XD