Increased Canister Smart Contract Memory

I asked about this in another question, but I’m wondering how this will work practically.

For example, what if I want to use a data structure (like HashMap), but because it’s not a stable type I store the data instead in a stable variable (like Trie). And in the pre-upgrade I convert from Trie to HashMap and in the post-upgrade I convert from HashMap back to Trie for persistent storage.

If stable memory goes up to 300 GB but non-stable memory stays capped at 4 GB, this wouldn’t really work.


As an aside, how is stable memory currently implemented? How can every canister have 300 GB available on a subnet? Where does this extra RAM come from? Do the subnet nodes have enough to begin with?

6 Likes