Smart Contracts
Stratis Smart Contracts
Create performant, secure, and auditable smart contracts in a development environment which is comfortable and familiar for C# .NET developers.
Stratis’ Smart Contracts in C# are for companies and individuals interested in the development of a secure, immutable, (legally-binding) agreement represented transparently in code. This agreement can relate to the payment of STRAT but can also be about one or more other assets.
You can invoke a smart contract when a transaction is added to a blockchain and, according to how the smart contract is programmed, it will act on assets it is in control of including STRAT. For example, if certain criteria are met, a smart contract might redistribute the STRAT which it holds. So, smart contracts enable digitally-enforced commitments between blockchain participants, which breaks the reliance on third parties.
Web-based front-ends (DApps) can be created to sit on top of a smart contract. A DApp is decentralized because of the properties of the smart contract; a copy of the DApp’s smart contract is stored on each node in the blockchain.
The Stratis Academy offers an in-depth exploration of what a smart contract is and how smart contracts are used.
Especially suitable for the development of enterprise blockchains: Smart Contracts in C# are the first .NET framework compatible smart contracts that can be coded and compiled natively.
Run on sidechains to maximize scalability and security: Smart
Contracts in C# avoid the “bloat” that occurs when running any significant number of smart contracts on a single blockchain. The main blockchain is also shielded from the impact of any adverse effects caused by a smart contract.
Fully deterministic: Smart Contracts in C# are fully verified during deployment before they run on the blockchain. For example, usage of .NET libraries containing non-deterministic function calls is prevented.
Powered by STRAT: A smart contract uses gas when it is running, and on the Stratis platform, gas is supplied by sidechain tokens, which are pegged to the STRAT.
Lifecycle of Smart Contracts
- Developer writes C# source code in Visual Studio
- Contract is validated locally and .NET bytecode (DLL) output
- Bytecode is wrapped inside a transaction e.g. Transaction {Bytecode: A6F4CB467…}
- Transaction is included in new block
- When executing a new block, contract code is unpacked from transaction, validated and stored permanently on all nodes at certain address
- Now anyone can send transactions to this address and call methods on this contract e.g. Transaction {To: 1nTKH…}

Step 1
Smart contracts

Step 2
Valid

Step 3
Bytecode

Step 4
Transaction

Step 5
Unpacked
