You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
By default WebAssembly has access to nothing (look into what it actually has access to)
Maps well to underlying ISAs
MVP release in all browsers, with at least 6 other implementations as of March, probably more now
Good support for C, C++, Rust (systems languages)
Other features coming, like garbage collection and threads
Go 1.11 has experimental support for WebAssembly
Blockchain projects using WebAssembly
Ethereum
DFINITY
EOS
Polkadot
Hyperledger
Truebit
Why WebAssembly for blockchain?
Consolidation around a common ISA, network effects for tooling, standardization, etc
Easy to make deterministic (get rid of a few op codes as far as I understand)
Efficient (more efficient than the EVM because of EVM only supported 256 bit number types)
Secure (VM sandbox)
Easy to support a variety of languages
Problems with the EVM
Cost of certain common operations that smart contracts might want to do are too expensive on the EVM, get around that with precompiles, which creates a fixed cost that is less than the true cost for certain operations/contracts)
Small number of languages target the EVM
Not modeled after any actual machine??? I'm not sure why that's important
There are high level instructions in the EVM instruction set...you don't really want high level instructions in your ISA (why?)
Only supports 256 bit stack items (WASM 64 or 32 bit), doesn't map well to underlying microarchitectures, and so metering is difficult to determine. The actual cost of the computation is difficult to determine
Runtime metering is slow
eWASM
WebAssembly is the same
Apparently no instructions are removed, but contracts must be approved before they are executed
Does not allow non-determinism
Static/compile time analysis will determine non-deterministic features like floating points, and that contract will not be allowed to run
Define an interface for interacting with Ethereum (EEI, Ethereum Environment Interface)
Interactions with the Ethereum environment are performed by calls to imported functions
Metering is calculated before runtime
Contract bytecode is transformed to include gas usage calls
The text was updated successfully, but these errors were encountered:
The text was updated successfully, but these errors were encountered: