


Introduction
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 like Lego blocks to power apps serving billions of people, from basketball fans to businesses with mission-critical requirements. There are four pillars that make Flow unique among 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.

Multi-Node Architecture
In a traditional blockchain, every node stores the entire state (account balances, smart contract code, etc.) and performs all of the work associated with processing every transaction in the chain. This is analogous to having a single worker build an entire car. From manufacturing to CPU design, pipelining is a common technique for dramatically scaling up productivity. Flow applies pipelining to blockchains by separating the jobs of a validator node into four different roles: Collection, Consensus, Execution, and Verification. This separation of labor between nodes is vertical (across the different validation stages for each transaction) rather than horizontal (across different transactions, as with sharding). In other words, every validator node still participates in the validation of every transaction, but they do so only at one of the stages of validation. They can therefore specialize for — and greatly increase the efficiency of — their particular stage of focus. This allows Flow to scale to thousands of times higher throughput and lower cost while maintaining a shared execution environment for all operations on the network. In database terms, smart contracts and user accounts on Flow can always interact with each other in one atomic, consistent, isolated, and durable (ACID) transaction. This ensures good user experience and full composability, letting developers easily build on each other’s work.

What Is Sharding?
Sharding is one potential solution to the problem of scaling a blockchain network. Sharding involves splitting a blockchain into multiple pieces, or shards, and storing them in different places. By storing the data across different computers, the computational burden on each can be reduced. This allows the network to process a larger volume of transactions.
A typical peer-to-peer (P2P) network such as a blockchain involves multiple full nodes (computers) that each record copies of the entire chain’s history. Using sharding, it’s possible for nodes to function without having to maintain all of that data at once.
How Does Sharding Work?
Sharding involves splitting a large database of the same type into multiple databases. Because this makes for an algorithm that can be more easily generalized, it’s possible to implement sharding at either the application level or the database level.
Sharding has another name — horizontal partitioning. The term horizontal in this case refers to the traditional layout of a database. A database can be split horizontally, with rows of the same database being distributed across multiple nodes, or vertically, with different information in a separate database.
Vertical partitioning involves drawing a logical split within an application’s data. This is often done at the application level, with a piece of code routing commands to a designated database.
Problems with Sharding
Most proposals aim to improve the scalability of blockchains by fragmenting them into inter-connected networks: commonly shards, although sidechains have the same issues. These approaches remove serializability (“ACID”) guarantees common in database systems. Loss of ACID guarantees makes building an app that needs to access data across fragments far more difficult and error-prone. Interactions between smart contracts become very complicated, and even individual large-scale applications would have to resort to complex mechanics to scale across shards due to latency issues and higher transaction failure rates. The combination dramatically limits the kinds of applications possible on the network as well as their network effects. Sharding effectively saddles the hardest part of scaling the blockchain onto application developers rather than solving it at the protocol level. A simple user action (purchasing a hat for a CryptoKitty using a stablecoin like TUSD) can take twelve transactions and seven blocks on a sharded blockchain. In an unsharded, ACID-compliant environment like Flow, the same action, and many more complex than it, can be handled by one atomic transaction in a single block. Worse than the additional time and cost is the increased attack surface and complexity: it will be much harder to design, test, and harden the smart contract code on a sharded blockchain.

Separating Consensus from Compute
The core insight that led to architecture of Flow is that we can separate non-deterministic processes from deterministic ones and assign each to different types of nodes based on their technical capabilities to dramatically increase the blockchain throughput and solve several user- and developer experience problems with existing networks at the same time. Flow's realization was that tasks within a blockchain can be divided into two types:
Non-deterministic (or “subjective”) tasks, such as determining the presence and order of transactions in the blockchain
Deterministic (or “objective”) tasks, such as computing the result of those ordered transactions once it has been determined
Non-deterministic tasks require a coordinated consensus process (like Proof of Work or Proof of Stake). Deterministic tasks, on the other hand, always have a single, objectively-correct outcome. The critical insight behind Flow’s architecture was that the single biggest bottleneck to blockchain performance is the deterministic task of executing transactions after they’ve already been included into a block, and not the subjective process that requires consensus, i.e. the formation of the block itself. This insight is outlined in Flow's first technical paper: Separating Consensus and Compute.
Flow Multi-Role Architecture
Flow pipelines the work of a blockchain miner or validator across four different roles that all require staking; a separation of concerns that significantly reduces redundant effort:
Consensus Nodes decide the presence and order of transactions on the blockchain
Verification Nodes are responsible for keeping the Execution Nodes in check
Execution Nodes perform the computation associated with each transaction
Collection Nodes enhance network connectivity and data availability for dapps
Flow is designed such that even a single honest node, of any role, can punish and trigger recovery from invalid data introduced by dishonest Collection or Execution Nodes. Consensus and Verification Nodes together are the foundation of security in the Flow network and leverage cryptoeconomic incentives to hold the rest of the network accountable. These validators can optimize for security and decentralization: the roles of Consensus and Verification are streamlined to allow high levels of participation, even by individuals with consumer-grade hardware running on home internet connections. Consensus nodes run a variant of HotStuff, one of the most proven proof of stake algorithms.

Execution and Collection Nodes, on the other hand, do work that is fully deterministic – making them less vulnerable to attack. The work of these nodes is also verified and held accountable by the other node types. These node roles can therefore safely optimize for security and scalability, allowing the network to scale. Operating these nodes requires dedicated server hardware in a professionally managed data center.

FLOW Token Economics
Flow is the blockchain for open worlds.
Developed by the team behind some of the most successful crypto applications on the Ethereum network, Flow is a blockchain re-designed from the ground up to be user- and developer-friendly as well as modular and future-proof.
Flow’s novel four-node architecture achieves massive improvements in speed and cost that scale with hardware capacity without compromising decentralization or breaking up the network into shards or “layer two” solutions.
The FLOW token (“FLOW” or “𝔽”) is the native currency for the Flow network and the keystone for a new, inclusive, and borderless digital economy. If blockchains are digital infrastructure, the Flow token is the fuel that powers the network.
FLOW has several important characteristics that make it the ideal currency for a new generation of games, consumer applications, and the digital assets that will power them:
Diverse use-cases
Broad distribution
Low monetary inflation
Diverse use-cases
FLOW is the native currency for apps, games, and smart contracts built on top of the Flow blockchain, and thus is the currency guaranteed to be available for developers and users to transact with on the network. Developers can easily build FLOW directly into their apps for peer-to-peer payments, charging for services, or enabling consumers to earn rewards for the value they create. FLOW can also be held, transferred, or transacted by users peer-to-peer. Token holders can earn rewards by staking their FLOW as a security deposit and working to secure the network through running validator nodes – or delegating their stake to professional operators to run validator nodes on their behalf. Validator nodes receive staking rewards and transaction fees in exchange for providing the security, computation, and storage services the network needs. Small amounts of FLOW token are also required for every activity on the network – from new user accounts to storage for assets and smart contracts. As the network matures, FLOW token holders will be able to use their FLOW in an evolving number of ways:
Payment for computation and validation services (i.e., transaction fees)
Medium of exchange
Deposit for data storage
Collateral for secondary tokens
Participation in governance
The perfect payment experience is seamless for all parties: buyers pay in any currency they have; sellers price and receive in any currency they want. Applications on Flow can tap into this reality. Flow has high throughput, low fees, and full ACID guarantees, allowing developers to implement decentralized exchanges (DEXs) that act as a clearing house between tokens. Flow has the ability to use frequent batch auctions to defeat front-running attacks on these DEXs. FLOW token’s ubiquity on the network makes it the obvious “bridge asset” for currency exchanges between thinly traded token pairs. As the number of secondary tokens on Flow becomes large, the number of possible trading pairs increases exponentially, meaning that some swaps will require an intermediary asset like FLOW. Importantly, FLOW is required for the creation and usage of all other tokens on the network – to pay for storage and/or serve as collateral. These details are outlined in the technical details section below, and will be fully specified in future whitepapers. The economic impact is that as more value is created on top of the Flow blockchain, more demand is generated for FLOW token.

Broad distribution
The distribution of the native token is critical to the network’s decentralization and long-term success. Centralized control over the token supply prevents easy access by developers, who require the native token to deploy new smart contracts and pay for transaction fees (“gas”) as well as cover storage and account deposits on the network.
Flow want to achieve its full potential, a safe and sustainable distribution strategy is critical: the development team must get FLOW token into the right people’s hands. Alongside technical capability and crypto-economic security, we recognize that a healthy and sustainable distribution strategy is essential for making the Flow blockchain successful in the long term.
FLOW will be the catalyst for diverse new communities to access blockchain and decentralized applications, building and benefiting from real use-cases rather than speculation. Good user experience design will make owning and using FLOW seamless. Ultimately, FLOW will bring all of the communities building on the network together to create and share value.
Flow is pioneering several large scale engagement programs:
Cloudburst Partners: organizations or individuals elected by FLOW holders to operate one or more Flow validator nodes and distribute the rewards to developers, designers, artists, community organizers, and entrepreneurs building content for the Flow network.
Floodplain Validators: developers, infrastructure partners, and other ecosystem participants interested in supporting Flow early and helping bootstrap the critical mass of content and decentralized resources necessary for a sustainable network.
Decentralized Reputation and Incentive Protocol (DRIP): designed for accessibility and helping apps on the Flow find an engaged userbase, DRIP distributes FLOW token to end users for purposes of, staking, delegation and active participation in the Flow economy.
Thanks to robust technology, an amazing community, and strong incentive design, FLOW will enable today’s early adopters to build tomorrow’s open worlds.
Low Monetary Inflation
Blockchains like Flow are powered by decentralized communities running the computer hardware (“validator nodes”) that support the activity and secure the value of assets on the network. Other blockchains rely heavily on creating and distributing new tokens (“monetary inflation”) in order to attract validator node operators to their networks. Unfortunately, as in all economies, monetary inflation has a cost: the newly-created supply of tokens acts as a tax on holding or day-to-day usage by diluting all token holders. This is why Flow has a cap on monetary inflation. In fact, inflation on Flow will go down as network fees increase. In its steady state, Flow guarantees a set payout to node operators and only issues new tokens as necessary to make up the difference between transaction fees and that guaranteed payment. As transaction fees approach this payout amount, new issuance approaches 0%. If transaction fees exceed the payout amount, they are held in an escrow account and used to offset future inflation indefinitely. In the first year of operation, monetary inflation will be higher to incentivize greater levels of staking while the collateral, payments, and other complementary parts of the Flow economy mature.

Technical Details -
Transaction Processing and Computation
As a decentralized network, Flow charges users – or the apps they’re using – for services on a per-action basis, similar to the way Amazon Lambda charges for processing power today. There are two types of fees on the Flow network:
Processing fees cover the fees for a transaction to be submitted and included in a block.
Computation fees are added for more complex operations that require computation beyond updating balances.
Especially in the early days of the network, transaction fees will be low, starting at 0.001 FLOW, or 1 mF (milli FLOW).
Staking Rewards and Inflation
As a proof of stake network, the Flow blockchain requires validator nodes to lock a security deposit denominated in FLOW tokens in order to participate as part of the infrastructure that runs the blockchain. This is known as staking. Staking prevents low cost “sybil” attacks (where one actor masquerades as many individuals to gain undue influence over the network) and acts as a bonded deposit that can be seized if the validator attempts an attack on the network. Flow distributes a fixed portion of the total FLOW token supply each year as rewards to validator node operators through a combination of new issuance (inflation) and transaction fees (when combined with inflation, the “total reward”). The total reward will be chosen carefully to be as small as possible while preserving the security of the network (currently contemplated to be set at 3.75% of the total token supply per annum). Excessive inflation can create a range of unintended consequences and makes the token less attractive for non-staking uses. To ensure that stakers are incentivized to move into the node roles that are most needed at any given time, the total revenue assigned to each role is adjusted through a set of multipliers known as the reward coefficients. These values are adjusted by the protocol automatically: if a particular role is consistently under-staked relative to the others, the protocol will increase the payouts to that node type until the actual staking balance converges on the target ratio.

Flow nodes follow the procedures defined in the protocol (based on their role) in order to receive rewards. Any deviation from the protocol can result in decreased reward payments or punishments. This reward and punishment structure is designed to guarantee the security of the protocol and optimize performance over time.
Severe infractions, which undermine the safety of the network, can lead to some or all of the staked tokens being confiscated from the offending node(s) and destroyed. This is known as “slashing”. This document outlines the most severe infractions against the protocol which result in slashing (“slashing conditions”). Enforcing these conditions is critical to the cryptoeconomic security of the protocol. Flow considers only severe threats to safety and liveness to be slashable conditions and as such, there are no performance-related slashing penalties.
Paying for Storage: Minimum FLOW Balance
Storage on Flow can be associated with individual user accounts, rather than to smart contracts: this is a subtle capability with significant positive impact on the user experience of Flow applications. On blockchains without this capability, any non-payment of “state rent” on behalf of the smart contract developer could cause all users’ assets to get wiped. On Flow, a user’s assets can never disappear or be purged without their consent. Flow covers the cost of on-chain storage on a per-account level simply by requiring a minimum balance as a locked deposit (in FLOW): this deposit is never spent, but is held out of circulation, increasing staking rewards to the validator nodes providing the storage. The minimum balance of a Flow account at launch will be a fraction of one FLOW, enough to cover most initial activities. To make onboarding easier, this minimum balance can be provided by developers on behalf of users in cases where the developer has a defined business model (e.g. charging users subscription fees or selling in-game items). Developers that don’t have access to FLOW can borrow from token-holders directly or through setting up their own secondary token and exchanging it for FLOW from the community: a form of decentralized, trustless, crowdfunding. A higher FLOW balance means the user or developer has access to more storage capacity. It is expected that storage capacity per unit of FLOW locked will increase dramatically over time as validators achieve economies of scale and cost of storage falls. The Flow Ecosystem Reserve has the mandate to distribute over 10 million accounts in the first few years of the network, working with a broad alliance of community organizations. This ensures accessibility onto Flow for anyone that wants to use or build on it. While storage requirements for fungible tokens are very small, the on-chain storage – and associated minimum balance of FLOW – required for NFTs can be significant since every one is unique. Power users can maintain their own balance to access higher storage capacities. In the long term, user agents (wallets) and dapps can in turn help their users “recycle” storage on the network by deleting resources or, just as easily, backing them up to off chain or archival chain solutions (e.g. Filecoin, arweave, or equivalent solutions built on Flow directly).

Infusion: a New Model for Secondary Tokens
On blockchains today, most service protocols use secondary tokens that do not accrue value back to the ecosystem they’re built on. As a result, they have different incentives compared to the blockchains whose security they depend on. On Flow, we incentivize key service protocols to “infuse” their tokens through a bonding curve mechanism with the native FLOW token. Bonding curves were originally developed as a mechanism for providing robust price discovery and liquidity to tokens, even when they are thinly traded. For example, an infused token INF would be controlled by a smart contract that allows anyone to mint a new INF token if they provide the appropriate amount of FLOW at the current exchange rate, while also very slightly increasing the exchange rate for the next trader (resulting in a price that increases with demand). Conversely, that same smart contract would allow an INF holder to redeem their holdings for FLOW at the current price (minus a small spread), pushing the exchange rate slightly lower. (these two posts provide a great introduction to bonding curves.) Infused Tokens take this idea one step further and note that, if the Reserve Token has a security and governance function, the tokens locked under the bonding curve can be used to allow the service protocol to support the security of the underlying chain while directly and actively participating in protocol governance. As such, an infused token combines four key benefits to its holders:
Guaranteed liquidity: a bonding curve means that holders of the service token always know there’s a liquid market back to FLOW. This will let service protocols quickly bootstrap awareness and interest because backers know they have liquidity from day one.
Reduced volatility: in times of changing demand for the token, the bonding curve allows both the price and supply to adjust in response. This decreases the size and probability of boom and bust cycles that frequently plague fixed-supply tokens.
Contributing to security: by using FLOW as collateral, the service protocol is backing the security it demands from the network. More FLOW locked as collateral means fewer available for staking, allowing market forces to allocate resources accordingly.
Participation in protocol governance: secondary tokens collateralized by FLOW will be able to participate in Flow protocol governance by voting with their secondary tokens. This is optimal, as owners and operators of service protocols are arguably some of the most important stakeholders in a smart contract blockchain.
Flow may contribute a large portion of its ecosystem fund to bootstrap early service protocols that benefit the entire network, including at least one decentralized stablecoin. These funds would never be released directly into circulation: instead they would be used to backstop and subsidize protocols that themselves generate activity across the network.
Stablecoins on Flow
Stablecoins are cryptographic tokens whose value is stabilized relative to a given fiat currency – or basket of currencies. The value of stablecoins in consumer applications and games is that, especially initially, mainstream consumers (and the businesses that serve them) may prefer to transact in their local currency. Similarly, businesses that need to make forward commitments will value predictability and the ability to book revenue in the same currency as their costs. Stablecoins are simple to implement on Flow – and several are already on the way. There are generally two kinds of stablecoins; both require FLOW tokens to pay for their network resources:
Fiat-backed stablecoins are fungible tokens whose supply is based on an equivalent amount of fiat currency available for redemption, typically in an audited bank account. Like all Flow users, holders of fiat-backed stablecoins still require a minimum balance of FLOW – this can be provided on their behalf by the application.
Algorithmic stablecoins use FLOW token itself as collateral to create a secondary token whose supply is adjusted automatically to stabilize its value relative to given fiat currencies. Flow has reserved a significant allocation of FLOW tokens to bootstrap the collateral for at least two implementations of algorithmic stablecoins on the network whose security is rooted in the native FLOW token itself.
Over time, as users learn to value FLOW for its functionality on the network, the native token may start being preferable as a medium of exchange based on its inherent liquidity and direct usage.

Governance
At launch, the Flow protocol will have informal off-chain governance: the development team will operate independently, with the mandate to build for the decentralized community. Similar to Bitcoin or Ethereum today, anyone will be able to submit improvement proposals on the Flow GitHub repo, which are then reviewed by a core development team led by Flow’s Chief Architects, Dieter Shirley & Alex Hentschel. Protocol upgrades will be proposed to node operators who then make independent decisions on adoption. Additionally, over the first year, various ecosystem development efforts will be dispersed across decentralized autonomous organizations (DAOs) which will require FLOW or ‘FLOW-infused’ tokens for voting. Service protocols built on top of the Flow network (e.g. stablecoins) will be the first major components of the protocol to be transferred to fully on-chain governance. Over time, the Flow community will be asked to help define and provide feedback on network upgrades implementing on-chain governance. Initially, FLOW stakeholders will vote for a representative council that can make day-to-day decisions. The council’s vote acts as a “default” that every token-holder can accept by doing nothing – or actively override. Proposals can be brought on a public forum with full transparency to anyone with access to the blockchain. In practice, we expect the majority of decisions to be made by the council, without the need for token stakeholders to vote.
That said, all decisions will be made publicly, and any stakeholder will have the opportunity to organize grassroots action by token stakeholders to veto specific decisions or to vote to replace council members.
There will be three kinds of decisions made via the governance process:
Ecosystem decisions: Issues relating to the functioning of the network that can not be expressed within the protocol definition: This includes things like choosing the council members and finalizing any grants or prizes set by the foundation.
Protocol parameters: Some aspects of the protocol (such as the number of seats available for each node type) are set as parameters and don’t require a protocol upgrade (and therefore a new version of the node software). These parameters can be modified by the governance process.
Protocol upgrades: A protocol upgrade (also called a “hard fork”) can theoretically change anything about the protocol; the consensus algorithm, the low-level network communication structure, modifying or adding a new execution environment. In practice, these kinds of upgrades will be exceedingly rare and require large participation and buy-in from every FLOW stakeholder.
As the founding team, we wish to record in this document a philosophical commitment to several key principles that we intend to vigorously defend, even when the network has transitioned to community governance.
Flow encourages future community members to proceed with great caution if they consider acting against any of these principles:
Maintaining the balance of power between node types
Keeping the inflation rate as low as possible (currently a maximum of 3.75%)
Ensuring FLOW is used as the primary reserve asset for collateralized secondary tokens
Ensuring that transaction and storage fees are responsive to market demand over longer time frames (days and weeks), while being highly predictable over short time frames (minutes and hours)
Tracking Flow
Flow is a powerful tool for developers to create empowering experiences for users. Every aspect of the platform was designed from the ground up to support exceptional experiences at mainstream scale.






