Space utilized by an Atlas node


#1

Hi! I read that each Atlas node stores full replicas of all data items. I understand that each data item is small, and that registration of a data item in BNS is not for free, so I expect an Atlas instance to not take that much space.

But still it would be good to get an intuition of the average disk space taken by typical Atlas instances today and the rate of growth over time. Depending on the space taken, that may limit the possible applications of Blockstack on various types of devices. My use case in mind is mobile and/or IoT.


#2

Hey @staltz,

My full node takes just under 1.3 GB on my laptop, at the time of this writing. This includes:

  • 446 MB for the set of zone files
  • 311 MB for the full name database
  • 22 MB for the Atlas peer network database
  • 498 MB for the virtualchain chain state
  • .704 MB for the subdomain database

Moreover, the node takes less than 200 MB of RAM to run, and spends almost all of its time in an idle state (it wakes up every 5 minutes to ping its Atlas peers and fetch new Bitcoin blocks).

Hope this helps!


#3

Hi, thanks for the reply! Would be good to know how it was e.g. 6 months ago. I suppose it’s possible to run a full node on a mobile device, but probably not in a few years (specially supposing an exponential growth of blockstack as it supposedly enters mainstream). But it’s still quite feasible for VPS deployments in the foreseeable future.


#4

Blockstack’s space growth is ultimately capped by the rate at which the blockchain can grow, but Blockstack uses some tricks like off-chain names to be able to take on many names per transaction.

If we assume that Blockstack onboarded users only by off-chain names, and if we assume that Bitcoin blocks only contain Blockstack transactions, then the maximum space growth rate would be:

((1e6 bytes per block) / (250 bytes per NAME_UPDATE)) * (40000 zone file bytes per NAME_UPDATE) 
+ (512 bytes of database state per off-name * 120 off-chain names per NAME_UPDATE)
+ (512 bytes of database state per on-chain name * (1e6 / 250) transactions)
= 162.10944 MB per block (or, 48,000 names per block)

Most of that space growth (160 MB) comes from the zone files.

That’s hilariously high-throughput though—48,000 users signing up every 10 minutes is 6.9 million users per day. Being unable to keep up with username subscriptions at this capacity would be a fantastic problem to have.