On Wednesday, December 27th, Stratis released the first Turing-complete smart contracts to execute .NET code on-chain. Alongside smart contracts, they also announced the release of Stratis Sidechains, including the first sidechain, Cirrus, to the Stratis mainchain. Smart contracts will be deployed to this and future sidechains. Together, the Stratis Smart Contracts, Sidechains and C# Full Node represent the core services of the Stratis Platform.

Turing-Complete Smart Contracts: beyond Smart Assets

Smart contracts allow for the development of sophisticated applications that use blockchain technology. They exist on top of a blockchain and are fuelled by the coin of the underlying blockchain in a form known as “gas”.

Stratis is offering smart contracts built using C#, a Turing-complete language. By comparison, Script, which Bitcoin uses to construct transactions, is not Turing complete. This severely limits the functionality of smart contracts built using the language. Turing completeness is necessary for the development of most non-trivial programs, as opposed to smart contracts built with non-Turing-complete languages which encounter strict limitations in functionality. Stratis’ Smart Contracts allow for all of the utility of other smart contract offerings such as the creation of smart assets, but without limiting the breadth of application.

To achieve their goal of providing Turing-complete smart contracts, Stratis constrained the C# code at the virtual machine level rather than at the coding level. This was not the easiest option in terms of the development of the service, but necessary in order to provide users of the Stratis Platform the full extent of functionality that they wanted.

Stratis decided to include smart contracts in the Stratis Platform in response to significant interest in the technology from businesses and blockchain developers.

First Native C# Smart Contracts

The Stratis Platform is built using the C# language, part of the broader Microsoft software environment, the .NET framework. This places Stratis firmly within the Microsoft tech stack. Their C# Full Node allows Stratis to be the first cryptocurrency to support smart contracts which execute .NET code on the Common Language Runtime, .NET’s virtual machine. By comparison, other cryptocurrencies which offer coding-level support for C# smart contracts have to compile C# syntax to a custom virtual machine.

By executing .NET code on-chain, Stratis enables developers to leverage the full C# / .NET ecosystem. The smart contract code that executes on the virtual machine is the same as is executed by any other web or mobile C# application. Thus, the C# code will behave in the same way that it would for any other C# application. This gives confidence in leveraging the many tools built for the C# / .NET ecosystem, as well as established best practices and organisations built around the security auditing of C# code.

Sidechains: Bespoke Blockchains

Alongside the smart contracts release, Stratis has hit another milestone on their roadmap with the release of their sidechains. A sidechain is a blockchain which is connected to a parent blockchain, known as the mainchain. Sidechains are a core component in Stratis’ Blockchain as a Service platform.

Stratis Sidechains are highly customisable, allowing companies and individuals to create bespoke blockchains tailored to specific applications. With a variety of consensus algorithms (Proof of Work, Proof of Stake and Proof of Authority) and customisable characteristics such as block time and block size, Stratis Sidechains allow a sidechain creator to build a blockchain designed specifically for their needs. For example, a sidechain could be created which has a high block size and short block interval, resulting in a high maximum throughput. This sidechain would have independence from the Stratis mainchain but still benefits from innovations brought to Stratis without fragmenting the codebase.

Scalability, Security and Performance

Stratis Smart Contracts will be deployed to a sidechain network, rather than to the Stratis mainchain. This offers a significant advantage over traditional smart contract solutions. Smart contracts bloat a blockchain by growing the database, potentially making it impractical for smaller devices to store the state database. This in turn makes it difficult to maintain the network of the cryptocurrency, since the database is too large to simply store. However, by deploying smart contracts to a sidechain network, the mainchain is relieved of the smart contract bloat and left free to function as a currency.

Sidechains also quarantine other adverse effects that can occur when smart contracts are running. For example, smart contracts can contribute significantly to network congestion. For example, this was seen with Ethereum in 2017. Deploying smart contracts to a sidechain network will free Stratis of network congestion associated with smart contracts. In addition, sidechains can be tuned to optimise performance for the kinds of transactions it has been designed for, ensuring that the Stratis mainchain is free to carry out transactions efficiently.

Federated Solution

In their current iteration, Stratis’ Sidechains use a federated solution for the transfer of coins cross-chain. A federation of nodes is responsible for carrying out the release of sidechain coins according to a predetermined rate of exchange in return for Strat, which is held in escrow until redeemed by returning the sidechain coins to the federation. You can read more on the federated solution here. The predetermined rate of exchange ensures that the sidechain coins remain pegged to Strat.

The C# Full Node, Sidechains and Smart Contracts constitute the core services of the Stratis Platform. Together, they represent a powerful and versatile Blockchain as a Service platform.

Company site: stratisplatform.com