Geo-locationing Zilliqa Nodes


Dear Zilliqa Team and Community,

lately, I have worked a little bit on the geo-locationing of Zilliqa nodes. Geo-locationing is one crucial step in order to monitor network health. You can find out more regarding measuring network health here.

I have parsed the Zilliqa node’s log file, extracted the IP addresses of newly nominated DS committee members and located them on the map. Colors indicate the DS PoW round. The map shows nodes joining the DS committee from all over the world, indicating a healthy network.

I am eager to take the project a little bit further: Instead of only displaying DS committee members, I would like to display all types of Zilliqa nodes on the map with colors indicating the node’s type. As described in the Zilliqa Network Topology, there are five different types of nodes in the Zilliqa network, namely:

  • The shard nodes handle the Type I and Type II intra-shard transactions, and submit the co-signed micro TX-blocks to the Directory Service (DS) committee.

  • The Directory Service (DS) nodes handle the assembling of micro TX-blocks submitted by the shards. They also process Type II and Type III transactions that are cross-shard transactions to create another microblock. Once the assembling is done, they will form a co-signed final TX-block and broadcast it to all nodes in the Zilliqa network.

  • The lookup nodes handle the dispatching of transactions to the correct shard and assist seed nodes in fetching states and transaction history.

  • The seed nodes help to forward transactions to lookup nodes, assist new validating nodes in joining the network by providing the DS-blocks history, and expose transactional APIs to allow explorer/wallets to send transactions and fetch historical transaction data.

  • The archival storage fetches historical data including transactions and blocks from seed nodes every DS epoch and store them in LevelDB. They also provide historical data for newly joined seed nodes.

Therefore, I would like to talk a little bit about fetching IP addresses of these nodes:

  • Shard nodes: IPs known by …

    • … lookup nodes
    • … DS committee members
    • … shard nodes of the same shard
  • DS nodes: IPs known by …

    • … lookup nodes
    • … DS committee members
    • … shard nodes (shard node needs to track joining DS members each DS epoch?)
  • Seed nodes: IPs publicly available (where exactly?)

  • Lookup nodes: IPs known by Seed nodes

  • Archival Nodes: IPs known by Seed nodes

Please correct me if I’m wrong or if I missed something!

In order to gain access to all IP addresses, I’d be needed to operate at least a lookup node and a seed node.

Currently, seed nodes, lookup nodes, and archival nodes are operated by Zilliqa Team, meaning that critical points in the network are still centralized. I would appreciate being involved in any progress on making the outstanding nodes operatable by the community.

Do you see any other possibilities to fetch all IP addresses without operating a Seed/Lookup node? I guess the transactional API exposed by seed nodes won’t help me.

Best Regards,