Upgrade Proposal #14: Isthmus L1 Contracts + MT-Cannon

How close was the current op-program to hitting the 4GiB RAM limit? aka how many blocks/txs/frames could it manage?

Base published some analysis on actual memory usage here. The most important thing is the theoretical maximum amount of memory that can be used within the gas limit, if an attacker were to craft a block that’s especially hard to prove.

Why do larger gas limits require multi-threading support? Is the idea to prove block ranges in goroutines? Couldn’t this just be done by increasing frequency of root posting?

It’s not that op-program will make explicit use of goroutines, it’s single-threaded, but Go’s garbage collector needs a multi-threaded environment to work. So all the memory that’s temporarily allocated on the heap is never freed by the garbage collector (since gc never runs). This is fine when there’s a lot of extra memory available, but it’s inefficient and is a bottleneck to scaling to larger blocks.

1 Like