Try   HackMD

Nelson user-guide

Nelson

Automatic peer discovery for IOTA.

Environment

  • Nodejs (ubuntu 16.04)

Installation

https://github.com/SemkoDev/nelson.cli

  • Globally install Nelson
    $ sudo npm install -g nelson.cli
  • And run it
    $ nelson --gui --getNeighbors

Glossary

Nelson node info (GUI):

  • weight: 只要有 peer 推薦該節點,此質變從 0 開始增長。
  • epoch(時代): Personality 每 900 sec 變化的次數。
    • 以上圖為例:
      • epoch interval 為 15 分鐘
      • 15 分鐘後 epoch 可達到 100%
      • 之後,左邊的 Epoch 值累加 1
  • cycle(循環): It is used to periodically check upon the connected peers and disconnect those that are not alive

Nelson node info (GLI):

curl http://localhost:18600

{
    "ready": true,
    "isIRIHealthy": true,
    "totalPeers": 362,
    "connectedPeers": [
        {
            "hostname": "xxx.212.xxx.212",
            "ip": "xxx.212.xxx.212",
            "port": "16600",
            "TCPPort": "15600",
            "UDPPort": "14600",
            "seen": 1,
            "connected": 3,
            "tried": 0,
            "weight": 0.14707582184280174,
            "dateTried": "2017-12-19T17:53:29.384Z",
            "dateLastConnected": "2017-12-19T17:53:30.057Z",
            "dateCreated": "2017-12-19T11:36:45.094Z",
            "isTrusted": false,
            "_id": "mx5Wy2DpLF0wyNFQ",
            "nelsonID": "75b14dab"
        } (skip ...)
    ],
    "config": {
        "cycleInterval": 60,
        "epochInterval": 900,
        "beatInterval": 10,
        "dataPath": "/home/ubuntu/data/neighbors.db",
        "port": 16600,
        "apiPort": 18600,
        "IRIPort": 14265,
        "TCPPort": 15600,
        "UDPPort": 14600,
        "isMaster": false,
        "temporary": false
    },
    "heart": {
        "lastCycle": "2017-12-19T18:28:50.443Z",
        "lastEpoch": "2017-12-19T18:23:48.468Z",
        "personality": {
            "id": "f5a1de94c0b212807b8d89abb0225ca848ac86f1975819a4fa90701354beaf87230e2682981eac8bbe68cc1f666c1dc1",
            "publicId": "f5a1de94",
            "feature": "8"
        },
        "currentCycle": 65,
        "currentEpoch": 5,
        "startDate": "2017-12-19T17:23:25.206Z"
    }
}
  • ready
  • isIRIHealthy
  • totalPeers
  • connectedPeers
    • hostname
    • ip
    • port
    • TCPPort
    • UDPPort
    • seen
    • connected
    • tried
    • weight
    • dateTried
    • dateLastConnected
    • dateCreated
    • isTrusted
    • _id
    • nelsonID
  • config
    • cycleInterval
    • epochInterval
    • beatInterval
    • dataPath
    • port
    • apiPort
    • IRIPort
    • TCPPort
    • UDPPort
    • isMaster
    • temporary
  • heart
    • lastCycle
    • lastEpoch
    • personality
      • id
      • publicId
      • feature
    • currentCycle
    • currentEpoch
    • startDate

Example (A testing Nelson Node deploy on Node1)

  • Before

    • URL: Node1
    • latestSolidSubtangleMilestoneIndex:243000
  • Run with Nelson

    • 103 min
    • Neighbor: 5
    • latestSolidSubtangleMilestoneIndex: 287776

Monitor tool

Question

  • Tangled [14 hours ago]
    Is it possible to make Nelson only add TCP neighbors?
    • Roman Semko [14 hours ago]

No, there is an open bug in IRI. Running your iri in TCP and adding/removing neighbors will render it useless in a matter of half an hour.