A bitcoin node have two main types of interactions with other nodes:
- sending confirmed blocks, stored on blocks folder: to do it, specially in nodes syncing from scratch, the bitcoin must have all blocks stored on disk, pruned nodes does not have all blocks, so they may not be used for syncing from scratch. It can be controlled using
-prune
setting.
- sending transactions, that can be retrieved using data in chainstate folder: the chainstate are the global state of blockchain that now have around 13GB, it can not be pruned and need to be loaded in the RAM to verify transactions, retrieve and propagate them. Can be partially controlled using
-blocksonly
setting.
These settings depend on the way you want to help the bitcoin network:
If you want to serve nodes that do Initial block download or syncing from some days, you should not prune your node and you can use -blocksonly
setting, that will reduce load and bandwidth, by not propagating transactions, only blocks. We can call this node a "archive node".
If you want to propagate transactions, latest 288 blocks, or use your node for mining, you should not use -blocksonly
but you can set -prune
to reduce the space of storing some historical blocks.
In my tests i used a non-pruned full node. The node transferred around 400GB/Month, but it was connected to 3 ISPs, Tor and I2P. I used bitcoin-cli getnettotals
to check.
It does not have to be on port 8333, and it will not matter if the port are closed for inbound connections, the node will get less connections and will not be shown in bitnodes.io
I also have no public port in IPv4, but i do have in IPv6, you can check if your IPv6 are firewalled or not.
You can use Tor and I2P to have a public address too.
Its possible to have a public address using a VPS (or another machine) that does have a public address, in this case you need a reverse tunnel to that machine, it can be made using SSH -R option. In this case you add -externalip=IP
option to the public IP of the server, it will be used only for inbound connections, since its not routable for outbound (npr).