Smart Contract Stack

Blockchains

Blockchains are the underlying technology of the decentralized web. If you aren't familiar with the decentralized web, it's a good idea to get some familiarity with how it works before you start. There are numerous public and private blockchains (we will support many of them soon).

Ethereum

Overview

While Bitcoin can be described as the father of cryptocurrencies, Ethereum is surely the mother of smart contracts. It was the first blockchain to expand on the functionalities of Bitcoin and allow for the development of decentralized applications (dapps). With the longest operational history of a Proof of Work consensus other than Bitcoin, Ethereum is widely considered as the safest smart contract platform. However, the way transactions are verified also brings significant downside for any developer in form of the high transaction fees’ volatility. This problem is on its way to being solved through a future network upgrade, changing the consensus algorithm to Proof of Stake. For now, dapps with high volumes of processed data will often decide to only store the most important data on-chain (such as token ownership), and keep the rest off-chain.

Language

Ethereum uses Solidity:

  • Similar to Python, C++, Javascript

  • Object-oriented

  • Statically typed

  • Inheritance and libraries supported

For more on Solidity, see documentation.

For who?

For developers looking for safest and most proven environment to develop in.

For developers who are either willing to deal with transaction fees’ volatility, or to store non-essential data off-chain.

To learn more about developing on Ethereum, see Developer Resources.

Flow

Overview

Flow is a new smart contract-oriented blockchain currently in development by Dapper Labs. It seeks to solve the scalability problem by introducing node specialization, without sacrificing decentralization and security. A developer-friendly approach is one of Flow’s guiding principles. Built-in smart contract upgradability looks to make programmer’s life easier while still preserving the trust-free nature of decentralized blockchains. Secondly, Flow boasts a comparatively low time between submitting a transaction and it being recorded with certainty on the blockchain (finality). Lastly, built-in logging support makes smart contract auditing easier, without storing too much relevant data on the blockchain itself.

Language

Flow uses Cadence:

  • Inspired by Rust, Swift, Kotlin, TypeScript, and Solidity

  • Resource-oriented (learn more)

  • Statically typed

For more on Cadence, see documentation.

For who?

For developers willing to experiment in a relatively new environment in return for many innovative and useful features.

To learn more about developing on Flow, see documentation.

Languages

Different blockchains use different languages. Some blockchains use one language while others use several languages.

Frameworks

The UI of your dapp is composed using Material Design for Bootstrap. Choose which flavor of MDBootstrap you’d like to use (or choose vanilla JS).