SVET Reports
Substrate: Cross-Platform Development
Those of us, who were, even sporadically, monitoring the Polkadot consensus protocol evolution might have heard about Substrate - basically, a web application framework (think Express) for decentralized systems, which was announced by Parity in October 2018. Later, in December, a Beta version of this product, which is aimed at the cross-chains developers community, was realized.
One of distinguishing features of Substrate is that it uses WebAssembly for building and running smart-contracts. Although, most of us - developers working in the EVM environment - have been already accustomed to using Solidity and might have expected that Gavin Wood would obliged us by choosing it as a main language for his new product, it didn't happen for a reason.
Substrate - the natural expansion of ideas expressed in "Polkadot: Vision for a heterogeneous multi-chain framework" whitepaper published in 2014 - is to be used for cross-platform development. Committing it to Solidity would make it very difficult to use other growing in popularity smart contract languages, which are not compiled to it, such, for example, as Rust, C/C++, C#, Typescript, Kotlin or Haxe.
At the same time, Wasm combines a high-level functionality, which is one of the main JavaScript's (Solidity's "parent" language) characteristics, with the low-level reach, when we can, for example, manually define primitives such as a range of types, their literal forms, control-flows, calls etc.
Additionally, comparing to Solidity, Wasm provides extended flexibility with floating point operations; it is compatible with LLVM compiler, which, again, aims to strengthen new platform's interoperability capacities; it organically supports sand-boxed environments, which might, of course, came very handy when you try to run several nodes of different chains simultaneously; and, last but not least, it is embraced by corporate giants like Apple, Google, Facebook and Microsoft.
Two other Substrate's significant attributes are: it can be used outside of blockchain, for example to get byzantine fault tolerance for a centralized multi-node system, to prevent attacks of malicious actors or to simply avoid its faulty behavior and it uses so-called "extrinsics" - featureless binary blocks - for cross-platform database/file storage, which can hold all data and not only transactions.
Overall, I believe that Substrate is a good step in the right direction, which might bring new developers into our still close-tight blockchain community.