Note: IOTA with Industry 4.0 的一些想法

最近在看IOTA 的一些東西,今天早上突然有個想法是應用IOTA 的帳本紀錄在工業4.0上面,假設有個工廠想要導入IOTA相關技術到生產管理上面,實際上需要建立一個或多個Full Node 目前IOTA提供的參考實作 IRI 是透過JAVA EE 寫的,個人覺的他有一個缺點是JAVA EE 本身需要比較大的計算資源,可能的話我個人覺的是在工廠的生產場線場景,透過各種IoT Gateway 執行這個Full Node 功能,這時選擇比較輕量架構應該是一個降低整各應用場景成本的,例如用Python/Go/NodeJS/Rust 等等語言去實現這個FullNode

而考慮應用場景的後續管理維護問題Full Node 與IOTA Devices(Wallet)也需要應用上 Neighbour Discovery Protocol,這樣才有可能達到快速佈建與減低後續維護管理的成本。

再來IOTA Deivce需要自動產生 Seed 並且隔離在應用層,這個應該可以應用目前 Trust/App OS 分離的設計,透過MPU/Hypervisor/TrustZone … 等等技術去隔離

當然以上是考量用比較小的成本去執行,昨天還看到對岸某各機器人公司用ROS做的設備那些東西的成本可以忽略執行IRI成本,但是考量後續管理維護成本其他東西還是需要補齊,考量初始裝設成本跟後續維護成本的比例實際上這裡初始裝設只佔比較小的部份

 

廣告

Note: MQTT to IOTA Tangle

http://learn.iota.org/tutorial/storing-mqtt-messages-on-the-tangle
https://github.com/nicoschtein/iota-mqtt-poc
看了一下大概就是把MQTT收到的MESSAGE 重新編過變成Tribytes後轉成IOTA的交易送出,
這個是一個概念驗證示範, 不過說明了這種架構需要比較大的頻寬, 可以看成有一個比較大的資料塊存少量訊息會有比較大的浪費, 看應用可負擔的成本而定, PM2.5 LASS 好像有計畫導入有成功的機會因為基本上都是走WIFI, 不過之後應該會有人做LoRa版本那應該會改成有類似Data collection Hub 在轉上Tangle 比較合適才對

Note: IRI on Ubuntu 14.04.x

IRI 使用 Java 8, 的環境, 我測試Open JDK 8, 不過據某些網路上資訊是建議採用Orcale JDK 8
IRI 使用Maven 這個Build tool, 目前透過sudo apt-get install maven 可以直上 maven 3.0.5
按照Github 上面的指示可以做完後執行下面 shell script

#!/usr/bin/env bash
ver=1.4.2.1
port=14265
echo -e "run IOTA IRI version:${ver}, port:${port}"
java -jar target/iri-${ver}.jar -p $port

然後等它整各Service 跑起來, 會出現下面log, 在開另外一個terminal 透過curl 驗證是否正常

run IOTA IRI version:1.4.2.1, port:14265
02/23 12:19:04.742 [main] INFO  com.iota.iri.IRI - Welcome to IRI 1.4.2.1
02/23 12:19:20.124 [main] INFO  c.i.i.s.r.RocksDBPersistenceProvider - Initializing Database Backend... 
02/23 12:19:20.534 [main] INFO  c.i.i.s.r.RocksDBPersistenceProvider - RocksDB persistence provider initialized.
02/23 12:19:20.548 [main] INFO  com.iota.iri.network.UDPReceiver - UDP replicator is accepting connections on udp port 14600
02/23 12:19:20.550 [main] INFO  c.i.i.network.replicator.Replicator - Started ReplicatorSourcePool
02/23 12:19:20.550 [UDP receiving thread] INFO  com.iota.iri.network.UDPReceiver - Spawning Receiver Thread
02/23 12:19:20.551 [UDP receiving thread] INFO  com.iota.iri.network.UDPReceiver - Receiver thread processed/dropped ratio: 0/0
02/23 12:19:20.554 [Thread-2] INFO  c.i.i.n.r.ReplicatorSourcePool - TCP replicator is accepting connections on tcp port 15600
02/23 12:19:20.559 [pool-2-thread-1] INFO  com.iota.iri.network.Node - Spawning Broadcaster Thread
02/23 12:19:20.559 [pool-2-thread-2] INFO  com.iota.iri.network.Node - Spawning Tips Requester Thread
02/23 12:19:20.560 [pool-2-thread-3] INFO  com.iota.iri.network.Node - Spawning Neighbor DNS Refresher Thread
02/23 12:19:20.560 [pool-2-thread-3] INFO  com.iota.iri.network.Node - Checking Neighbors' Ip...
02/23 12:19:20.561 [pool-2-thread-4] INFO  com.iota.iri.network.Node - Spawning Process Received Data Thread
02/23 12:19:20.561 [pool-2-thread-5] INFO  com.iota.iri.network.Node - Spawning Reply To Request Thread
02/23 12:19:20.562 [pool-2-thread-2] INFO  com.iota.iri.network.Node - toProcess = 0 , toBroadcast = 0 , toRequest = 0 , toReply = 0 / totalTransactions = 0
02/23 12:19:30.563 [pool-2-thread-2] INFO  com.iota.iri.network.Node - toProcess = 0 , toBroadcast = 0 , toRequest = 0 , toReply = 0 / totalTransactions = 0
02/23 12:19:40.635 [main] INFO  com.iota.iri.IRI - IOTA Node initialised correctly.
02/23 12:19:45.563 [pool-2-thread-2] INFO  com.iota.iri.network.Node - toProcess = 0 , toBroadcast = 0 , toRequest = 0 , toReply = 0 / totalTransactions = 0

測試命令可以參考API 文件(v1.2.0), 底下我的測試命令用了 jq

curl -X POST -H "Content-Type: application/json" -H "X-IOTA-API-Version: 1" -d '{"command": "getNodeInfo"}' http://localhost:14265 | jq '.'

執行結果如下

{
  "duration": 0,
  "latestMilestone": "999999999999999999999999999999999999999999999999999999999999999999999999999999999",
  "jreTotalMemory": 1808269312,
  "jreMaxMemory": 3689414656,
  "jreVersion": "1.8.0_161",
  "jreFreeMemory": 817012944,
  "jreAvailableProcessors": 4,
  "appVersion": "1.4.2.1",
  "appName": "IRI",
  "latestMilestoneIndex": 338000,
  "latestSolidSubtangleMilestone": "999999999999999999999999999999999999999999999999999999999999999999999999999999999",
  "latestSolidSubtangleMilestoneIndex": 338000,
  "neighbors": 0,
  "packetsQueueSize": 0,
  "time": 1519361004170,
  "tips": 0,
  "transactionsToRequest": 0
}

ref.An almost complete guide to setting up a full IOTA node