It depends a lot on a few things:
- What the transactions are doing. If they are just conducting simple asset transfers or writing small pieces of data to a stream, they will be around 250 bytes in size. If they're doing something more complicated or embedding larger pieces of data, they can be much bigger.
- What proportion of transactions each particular node is paying special attention to, for example because those transactions involve one of its addresses, or because the node is subscribed to a stream to which that transaction is writing.
- How many transactions per block. There is an overhead of 1-2 KB per block, independent of the number of transactions it contains.
If we take the optimal case of small transactions, only a few of which are of particular interest to each node, and with many transactions per block, we might say 300 bytes per transaction, which comes to a little under 3 GB per month for 10 million transactions per month.
The number of transactions per block depends only on the average transaction size and block size. So for small transactions you can get over 30,000 in an 8 GB block. But in this case we would recommend fewer transactions per block, and more frequent blocks. For example 10 million transactions per month is 3.85 per second, so with 60 second blocks, that's around 230 per block.