Flow is a fast, decentralized, and developer-friendly blockchain, designed as the foundation for a new generation of games, apps, and the digital assets that power them. It is based on a unique, multi-role architecture, and designed to scale without sharding, allowing for massive improvements in speed and throughput while preserving a developer-friendly, ACID-compliant environment.
Flow empowers developers to build thriving crypto- and crypto-enabled businesses. Applications on Flow can keep consumers in control of their own data; create new kinds of digital assets tradable on open markets accessible from anywhere in the world; and build open economies owned by the users that help make them valuable.
Smart contracts on Flow can be assembled modularly, like LEGO bricks, to power complex apps serving billions of people. This combination of flexibility and power makes Flow the ideal solution for implementations designed so serve a wide variety of audiences, from sports collectable fans to organizations with mission-critical requirements.
Flow has several unique characteristics as compared to existing blockchains:
- Multi-role architecture: Flow’s design is unique, allowing the network to scale to serve billions of users without sharding or reducing decentralization of consensus.
- Resource-oriented programming: smart contracts on Flow are written in Cadence, an easier and safer programming language for crypto assets and apps.
- Developer ergonomics: from upgradeable smart contracts and built-in logging support to the Flow Emulator, this network is designed for results.
- Consumer onboarding: Flow was designed for mainstream consumers, with payment onramps catalyzing a safe and low-friction path from fiat to crypto.
What is Cadence?
While Ethereum smart contracts are written on the programming language Solididy, Flow smart contracts use the programming language called Cadence. Cadence claims to be the first ergonomic, resource-oriented smart contract programming language.
Resource-oriented programming ushers in a new paradigm that is designed to not only be secure, but easy-to-use as well. Now developers are able to create uniquely durable digital artifacts where ownership is tracked by the language itself. This unlocks a powerful new category of applications.
As the first high-level resource-oriented programming language, Cadence has a comfortable, ergonomic syntax making it very easy to read. It uses a strong, static type system to minimize runtime errors, and allows all methods, interfaces, and transactions to include pre- and post-conditions to enforce expected Behavior. This has resulted in a language that is easier to learn, significantly easier to audit, and ultimately much more productive than any current alternatives.
Open Source Tools
The Flow team has open sourced a series of tools to help developers get started:
Flow Go SDK: the Go SDK is a great tool for developers looking for backend integration with scalability in mind. Go is one of the most popular backend programming languages when performance is a top priority, and has been the go-to choice for Dapper Labs.
Visual Studio Code Extension: interact with Flow and use the Cadence language natively in Visual Studio Code. Statically check your Cadence code for errors and test your smart contracts without leaving the comfort of this industry-leading IDE.
Flow Playground GUI: the hosted, in-browser development environment where users can learn and try out Cadence smart contract language without any setup needed. We make it easy for any new developer to get a taste of Cadence, the powerful new language for smart contract development.
Upgradable Smart Contracts
Software development is rife with changes. Often bugs are found months, and sometimes even years, after the initial code is released. Traditional smart contracts are immutable. Meaning that they can’t be changed, improved, or fixed after launch. While this inflexible process might itself seem like a bug, it is really a highly intentional part of the blockchain mindset that users should be able to know and trust what they are running instead of trusting the codes authors.
Anyone who has developed a smart contract understands the frustration of pushing a contract live only to immediately discover a small bug. At that point the transaction fees are wasted and now an unusable contract is sitting on the blockchain.
Flow fundamentally changes the game here by enabling smart contracts that can run in ‘beta’ mode where the smart contract can be modified until the author finally finalizes and locks the contract. While in beta users are informed of the changeable state of the smart contract. This transparency offers a best of both worlds scenario. Namely smart contracts that can be tested, modified, updated, and patched under live conditions and finally locked immutably for the security and peace of mind that blockchain users expect.