A binary instruction format for a stack-based virtual machine
We can imagine WASM modules as functions that execute some behaviour. If we content address it, we now have a consistent way of referring to the same computation. We can imagine a particular WASM module call with a set of parameters as a suspended closure that is deterministic1.
Then, if we know we’ve ran that module with a specific set of parameters and have a receipt that it produced a certain result, we can be sure that we can just use the result instead of doing the computation again. Memoization at global scale!
Once we have a way for compute to be orchestrated at a global scale (e.g. IPVM through Homestar), this means we pretty much have a global mapping from source code + arguments to result.
Nondeterministic execution can only occur in a small number of well-defined cases (described below) and, in those cases, the implementation may select from a limited set of possible behaviors.
See point on nondeterminism ↩