WASM has been viewed as the next generation execution engine for blockchain systems because of its cross platform compatibility and improved performance. Most leading blockchain systems today have moved to a WASM backend. As a result, there will be a proliferation of WASM Smart Contracts in the next few years.
As it stands today, there are still some unspecified behaviors when a complier compiles to a WASM binary, especially so for a language not well supported by WASM. Most smart contract execution engine checks for contract validity at run time when the contract is evaluated. This can lead to bug with unspecified behavior or waste of transaction cost.
Hence, we are thinking of contributing to an open source Rust library that transforms WASM binaries. Specically, we are looking into semantic validation of a WASM binary described in an issue here.
We will first review and document semantic validation steps needed as per WASM specification. Next, we will review Parity Technologies's Rust-WASM (de)serializer, parity-wasm, to see how much of the validation is implemented. Lastly, we will implement the missing steps in our module. We should approximately spend a week on each step. There is a fair bit of learning curve for WASM itself and parity-wasm.
There is indeed a learning curve here for WASM and so does the other project with Substrate. As part of an open source library, this project will be used by future blockchain systems and WASM has many potential use cases for machine learning. Rust is perfect for building such WASM modules given its easy support for WASM.