24

Background

Full nodes allow to get an complete view on the state of the Tangle (after a snapshot) in order to verify transactions, and to append new transactions to the Tangle.

Therefore, full nodes have two major tasks:

  1. Receiving and propagating transactions to neighbours
  2. Filtering out incoming transactions that are invalid because they didn't provide enough Proof-of-Work (by checking the nonces of the transactions)

The first task is network-intensive, the second task is rather CPU-intensive.

Assumptions for estimating the network traffic

For calculating the network traffic accruing for a full node I assumed:

  • 1650 bytes for a single transaction
  • 1000 global Tangle transactions per second
  • 5 active neighbors for the full node under investigation
  • Each transaction will be either (a) received from, or (b) send to each neighbor
    (which is the optimized version of pure flooding)

Estimation of the accruing network traffic

Based on these assumptions, the (aggregated ingoing and outgoing) network traffic of a full node can be estimated as follows:

  • 663.85 GB per day (= 1650*1000*(60*60*24)*5 bytes)
  • = 27.66 GB per hour
  • = 472.07 MB per min
  • = 7.87 MB per sec
  • = 62.94 Mbit per sec

Questions

  • Is this a valid estimate for n=1000 transactions per second, are the assumptions legit, or am I getting something wrong?
  • Are there any sources available to read more on the scalability, any simulation results?
  • Seems legit, but I'm not sure about the transaction size, won't compression make those smaller? In any case, those numbers are manageable by current hardware on decent connections; remote locations could be in trouble. – w00t Dec 13 '17 at 13:32
  • Did you take into account that some transactions can contain up to 3.5K of payload? See this answer for details iota.stackexchange.com/a/171/607 – lex82 Dec 15 '17 at 13:53
  • 1
    You may want to have a look here. This site features and visualizes a lot of interesting data and load statistics. iota.lukaseder.de/load.html – Astro_Paul Dec 15 '17 at 16:43
  • I am still learning so hoping to be corrected or confirmed by someone more learned, but to your first question - if the global TPS=1000 AFAIK you and your neighbors would only be seeing a fraction of that. If you and your neighbors are globally dispersed, the transaction set seen by each should be different. There is a high chance of overlap if all are geographically close. The question then becomes what TPS figure to use. I believe one of the return values from the getNeighbors API - most probably numberOfAllTransactions. This value is cumulative so use the difference between API calls. – 80chew Dec 16 '17 at 23:05
  • @lanu-moe I have similar question to yours, but about estimation of max possible tx/second at the moment. Check this out iota.stackexchange.com/questions/1049/… – alexpods Jan 3 '18 at 22:14
4

My current network traffic (24h) with 3 neighbors: IN: 860MB OUT: 700MB

  • Thanks! In my question above I assumed 1000 transactions/sec and 5 neighbors. Currently we are experiencing 1 to 2 transactions per second. So scaling down the estimate to 1.5 transactions/sec and 3 neighbors, the calculated 663.85 GB per day (aggregated in and out traffic) result in 663.85 * 1024 * (1.5/1000) * (3/5) = 611.80 MB. This is about 40% of the measured 1560 MB. Given the uncertainty regarding the transactions, the calculation seems to roughly fit. But as the overhead of TCP/UPD is pretty low, I'm still wondering about further crucial factors? – Lanu Moe Jan 4 '18 at 14:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.