Flow (FLOW) is a blockchain project and token focused on offering high operating speed and advanced smart contract capabilities specially designed for the world of DApps, games and the DeFi world.
Uno of the new projects of cryptocurrencies, which is gaining momentum right now is known as Flow. The reason? Flow is a blockchain designed from start to finish with the aim of being integrated into games and applications, making it a high-speed blockchain network and an extremely flexible modular architecture for development.
Origin and History of Flow
The story of Flow is a story related to the boom of the DeFi and DAppsOn Ethereum (ETH). In early 2018, when the market was still on the rise, Ethereum began to experience the limits of its capacity. This told the world how limited its infrastructure is for the massification of blockchain technology, Web 3.0 and the world of DApps. Although the development of Ethereum 2.0 was already in the works, this was a promise for the future. A situation that caused a serious problem and many headaches for developers of blockchain projects.
But, as in any crisis, there are always new opportunities. In that sense, the community did not remain idle, and one of those actors is Dapper labs, a company known for creating the famous DApp of CryptoKitties. Founded in 2018, in the Canadian city of Vancouver, Dapper Labs began an interesting project that sought to leave behind once and for all the weaknesses of blockchain such as Ethereum and, at the same time, surpass its capabilities, even those of the novelties that would come with Ethereum 2.0.
The start-up of Flow development began on 15th August 2019. It was at that time, when the first private sale of FLOW tokens took place. A sale in which a total of 112 million FLOW tokens were placed, at a price of $ 0,1 per token, for a cumulative total of $ 11,2 million. These funds would be the beginning of the development of FLOW and all its great history.
The presentation of the white papers and the beginning of the development
After the success of this first token sale, in September 2019, Dapper Labs took its first step forward with this project presented the first white paper by Flow. Under the name of Flow: Separating Consensus and Compute, this first white paper laid the foundations for a new way of making blockchain technology work, thus revolutionizing said technology. However, this would not be the only white paper released, but would be joined by two additional documents demonstrating how this project works. These documents known as Flow: Execution Verification y Flow: Block Formation and Execution, would also be vital to demonstrate the operation of the future network.
With the publication of his white papers, he began the creation of his software to make what is embodied there a reality. This includes implementing the protocol, creating the nodes' software, integrating their consensus algorithm, cryptographic primitives, and more. The work paid off in May 2020 when Dapper Labs finally announced the release of its beta version.
Work continued and on August 6, 2020, another private token sale was held for a total of 134 million FLOW tokens, at a price of $ 0,1 per token and a total cumulative $ 13,4 million. This second round of funding has been used to accelerate the development of the system, which at that time is still in beta. One month later, exactly on September 22, 2020, a community token sale was held for a total of 60 million FLOW tokens, with a value of $ 0,1 per token and a cumulative of $ 8,5 million, which shows the confidence of the community in this project.
At the moment, Flow is still a project in development. Its Layer 1, or main layer, is still unfinished, but this has not limited the project to launching powerful decentralized applications on its network. In fact, today it is possible to send and receive cryptocurrencies, create DApps, fungible tokens and non-fungible tokens (NFT), as well as marketplaces. This has catapulted the price of the FLOW token from an impressive $ 0,1 (at its initial sale time) to over $ 30 in the first months of 2021.
Understanding how Flow works
However What makes the Flow blockchain really unique? Well, first of all, we must say that Flow uses a completely different vision than what we have seen so far in other blockchains.
The general operation of a current blockchain
Eg Bitcoin (BTC) and Ethereum, transaction computing and achieving consensus within the network, is work that goes hand in hand. Each transaction in the network is added to a block, a hash is generated for said block, the work is validated, it will be computed at the node level (the scripts and smart contracts are executed) and finally it reaches the blockchain showing the results of said effort. Repeat the process with each block and you have, in short, the operation of a current blockchain. All this effort is linear and homogeneous, which limits the scalability of the network in many ways.
This system works very well, has been extensively tested and is safe. The attempts of the current community, however, seek to parallel this system. That is, maintaining the same linearity, but dividing the work into several instances, so that in the end everything is reassembled and the end result is the same. With this, a safe scheme (linear and homogeneous) is maintained, but by dividing the work among several, the work is done much faster, gaining scalability and speed. However, this makes systems more complex (if you are a programmer you know the headache that a “thread" or "execution thread”Can cause under certain conditions) and scalability still has limits.
A drastic change in the rules
But Flow, radically change this. To do this, the Flow developers have created a system in which various roles can coexist, roles that are carried out by its nodes, each of them with a very specific objective. This allows you to divide your incoming tasks (the transactions you send) into unique ways, making them easier to service.
So, for example, if a transaction interacts with a Smart contract advanced (eg: an interaction with a DApp), said transaction is divided into two parts: the first, where the metadata of the transaction is (who sends it, addresses, and others). And, the second, the interaction with the smart contact as such, which must be invoked (from its address), executed and offer a response to our user (which is visible on the blockchain). In addition to this, this entire process must be verified, comply with the consensus rules and finally be included in the blockchain. If we were on Ethereum, these tasks are performed in a linear fashion (slow and expensive).
But in Flow, the first and second parts go to a type of node (called the Execution Node), while the consensus, verification and storage tasks are assigned to specific node types for each task. As each of these points requires specific computational work (some require more power than others), dividing the work makes serving large volumes of information easier and faster to do in the end. Result? Flow has created a blockchain network of heterogeneous operation (with nodes assigned for different roles), with parallelism and a scalability that grows with the number of nodes within the network.
Do you want a simpler explanation than this? Look at it this way, it is not the same to have a restaurant in which you occupy all positions (from chef, to waiter, to cashier), than to have a team that supports you in each task, and especially, if your restaurant it has a great demand and influx of diners. The first would be the current system of many blockchains, while the second would be Flow.
Exploring how Flow works in depth
Now that we know how Flow works in general, it is good to know how it makes it happen. First of all, Flow is a project with a multifunctional architecture thought about the divisibility of assignments and tasks. This is essential, because the Flow network architecture, while complex, is much less problematic than other options such as Lightning Network, Plasma or the sharding of Ethereum 2.0. With that said, let's first explore how your nodes are divided and what their roles are.
Nodes within Flow
In Flow, as we already mentioned, there are different roles and types of nodes, each one specialized or dedicated to a specific task within the network. Among these types of nodes we have:
Collection Nodes
Collection nodes are high-bandwidth nodes that are clustered and cooperate with each other. The task of these nodes is to manage the group of transactions and collect well-formed transactions to propose to the consensus nodes. That is, they have a functionality very similar to what would be the mempool of nodes like those of Bitcoin or Ethereum.
Transactions within Flow are pseudo-randomly assigned to a given cluster using transaction hash. Thus, a well-formed transaction must include credentials from the collection node that stores that transaction.
To achieve this, these nodes take each well-formed transaction and apply a hash to the text of that transaction, also adding a signature to the transaction to indicate two things: first, that it is well-formed; and second, that it will commit to store the transaction text until the execution nodes have finished processing it. Each group collects transactions, assembles them into collections, and sends a collection guarantee signed by a large majority of the group to the consensus nodes.
Thus we already have a first space where transactions are classified in such a way that parallelism in execution is possible with practically no risk. In addition to this, to become a collection node operator you must do a minimum staking of 250 thousand FLOW, earning commissions for your good work at all times. Yes, Flow is a network that uses a derivative of the protocol Proof of Stake (PoS).
Consensus Nodes
This second type of node is in charge of forming and proposing blocks respecting the rules of Flow's HotStuff consensus protocol. The work of the consensus nodes begins with the validation of the hashes of the collections of transactions sent by the collection nodes. At this point, they verify that those collections have been accepted by the majority of the collection cluster to which the transaction was assigned.
Once this verification is carried out, the consensus nodes begin with the creation of the blocks and end the process by means of a vote. At this point, the more nodes participate, the higher the level of decentralization of the network and its security. At this point, the HotStuff protocol has limited participation to 100 voters, but these voters are chosen randomly within the group of available consensus nodes, the idea behind this is to maintain the largest possible participation within the system without reducing speed. Flow developers are still working on the possibility of increasing this number, but for the moment the scheme used is safe.
To avoid attacks on the system (the so-called "Byzantine flaws"), consensus nodes have fairly small execution requirements, so powerful equipment is not required to have a consensus node. Additionally, bandwidth usage is small as well, which avoids the need for ultra-fast internet connections. However, perhaps a point against it is that, to execute a consensus node, 500 thousand FLOWs are needed in staking, which at the current price is roughly $ 15 million, which makes it quite an expensive node compared to other networks.
Execution Nodes
The role of the execution nodes is quite clear: executing transactions, maintaining the execution state, a cryptographically verifiable data store for all user accounts and smart contract states, as well as answering the queries related to it. They are in simpler words, the neurons of what would come to be Flow's brain.
The work of the execution nodes begins when they receive the transaction data that comes from the collection nodes. In these transactions, there are simple transaction operations, such as the smarts contracts to be executed, and all this is computed by the execution nodes. The output produced by the execution nodes is then verified by the validation nodes.
Because they are the epicenter of Flow's data processing, the execution nodes require equipment with a certain level of computational power. In fact, the higher the power, the faster the execution of all this necessary computational work. At this point, Flow makes something very clear: you can scale using numbers (more nodes within the network) or using more powerful hardware (which runs everything faster). The union of both advantages is what allows Flow to have enviable scalability compared to other blockchains.
To avoid cheating, the execution nodes must generate a hash for each output of a generated job. Thus, when the execution nodes finish with the collection of transactions received from the collection nodes, they reveal the hash, include it in the data that is sent to the consensus nodes, and from there to the verification nodes.
Finally, any cheating at this point can be detected (using the hash related to the data output) and if it does, the node in question is punished. A punishment in this type of node has an important economic weight, especially when we think about the cost of installing an execution node, for which a staking of 1.250.000 FLOW token (38,75 million dollars) must be carried out.
Verification Nodes
These nodes are tasked with confirming the correctness of the work done by the execution nodes. The individual verification nodes only verify a small amount of the total calculation, but collectively they verify each calculation many times in parallel. Thus they manage to verify the execution receipts provided by the execution nodes and issue approvals of results. A classification algorithm determines which parts of the execution receipt from the execution nodes the verification node should query to verify that they were calculated correctly.
Ultimately, these nodes keep the execution nodes honest; This balance of power maintains the access, security and verifiability criteria of decentralization. It is highly tolerant of Byzantine faults because even if there is a substantial number of Byzantine errors in the group of verification nodes, the consensus nodes must still approve that the transactions they signed were reviewed by a critical amount from the network.
To run a verification node it is necessary to perform a minimum staking of 135.000 FLOW tokens (approximately 4,185 million dollars)
Access Nodes
The access nodes are those that allow to send and receive transactions within the Flow network and its different nodes. They are, in a way, the highways that interconnect the nodes of Flow. The idea is that this network is large enough so that anyone, anywhere in the world can access and use Flow resources. However, they do not perform any other tasks. These nodes are also easy to install, and do not require any stake for their operation.
Cadence, a powerful and very simple programming language
The Cadence programming language is a native programming language for smart contracts within Flow. It is intended to be simple, readable, resource-oriented, and secure language.
A fun fact about Cadence is that it is one of the first resource-oriented programming languages, and the idea came from a project that many in the community may loathe a bit: Facebook Pound (Now Diem, and in the future who knows what name it will have).
Cadence zeroed out using an approximation to the Move programming language, used in Libra. Move was a welcome development, the community praised its capabilities and opportunities, and building on that, Dapper Labs took what they learned and applied it to Cadence.
Thus, Cadence is a language capable of representing asset ownership and digital asset properties directly in the programming language. This is especially useful, because it eliminates the need to reflect such properties in a smart contract, and instead, when defined, the programming language does this automatically and natively. With this, a lot of intermediate programming work is eliminated, errors are avoided, and safer smart contracts are created.
Smart Upgradeable Contracts, another breakthrough in Flow
Another of Flow's advances is its ability to update smart contracts. This may seem strange to you, but updating a smart contract on networks like Ethereum is really a headache. "Upgrading" in these networks is actually creating a new smart contract, and changing the entire structure of the DApp so that it points the new smart contract in its new direction. This generates problems of all kinds, and is very annoying for both users and developers.
To solve this, Flow allows the deployment of smart contracts in such a way that they can be updated incrementally. Thus, developers can send improvements to smart contracts that automatically generate a new version of it that will be visible to users. Users for their part have the ability to choose whether or not to trust a specific version of the smart contract. And, in fact, once a user trusts a version of that smart contract, changing it requires a specific action on the part of the user.
This system balances the needs of users to be informed about the type of code they are dealing with. And at the same time, it allows developers the flexibility to tweak their code for a limited time after publication.
HotStuff, a fast consensus protocol
Another of Flow's improvements is its HotStuff consensus protocol. Here at Bit2Me, we've talked about fast consensus protocols, like POET (perhaps the fastest protocol in the blockchain world), POA, PoW, DPoS o PoS. However, HotStuff is perhaps the only consensus protocol capable of being measured against the PoET protocol.
HotStuff is a protocol that began its development in 2018, and that was finally presented in July 2019, by its developers Maofan Yin, Dahlia Malkhi, Michael K. Reiter, Guy Golan Gueta and Ittai Abraha, all students at Cornell University. The idea behind HotStuff is to create a fast, secure and scalable BFT protocol.
To achieve this, HotStuff functions as an SMR (State Machine Replication) problem resolution system. This problem indicates that a set of machines should be able to solve the "commands" sent to their systems, in such a way that that set of machines take a small part of the work, compute it, replicate it, and the end result Let the job be completed without errors in the overall system verification process.
To achieve this, HotStuff implements a distributed computing solution (like the consensus protocol of any blockchain) that is resistant to Byzantine failures. The new? HotStuff is extremely efficient at accomplishing that job, to the point where consensus using this system can be reached in 0,1 seconds, and validation on replicas can begin in as little as 5 ms.
We can see this in practice in Flow, in fact, you will be surprised that Flow's block production time is 1 second. That is, every second, Flow is generating a block, which responds to a well-defined set of network transactions, in this way, transaction validation is almost instantaneous, and the system can easily serve thousands of users without problems.
Project features
- Native multi-node architecture. Flow's design is unique, allowing the network to scale to serve billions of users without altering or reducing the decentralization of the consensus.
- Resource-oriented programming. Smart contracts in Flow are written in Cadence, an easier and more secure programming language for crypto assets and applications. In fact, Cadence's readability against Solidity, JavaScript or Python is one of the main points in its favor, receiving praise for it.
- Developer ergonomics. Flow has unique features designed for programmers. Starting with the fact that its smart contracts are upgradeable, up to the registration support incorporated into the Flow Emulator, in order to make development work easier.
- Consumer integration. Flow was designed for mainstream consumers, with payment gateways that provide a safe and low-friction path from fiat money to cryptocurrency.
- No need for sharding to scale. One of the great advantages of Flow is that, for its scalability, it is not necessary to apply sharding in the network. This makes blockchain development much easier, avoiding problems in generating a consistent final transaction record.
However, what is perhaps the most striking feature of Flow, is aimed at the public and the easy use of blockchain technology. This feature is the ability to create smart user accounts. This is a native Flow capability that allows you to create an account linked to a smart contract within the network. With this, a more automated and secure access control to the account is sought, especially under certain criteria of online use of said accounts.
But, perhaps the biggest benefit of this is that, with this system, it is possible to get rid of seed phrases or keys to regain control of an account. In fact, if you lose access to an account, you will only have to start the recovery process for it, as scheduled.
Token distribution
The token distribution in Flow is divided into three stages. The first began with the start of the beta of the mainnet network, on May 15, 2020. At this point, the era operated without the need for tokens or staking, which allowed the early adopters of the network, to execute any type node with a simple payment in fiat (using credit / debit card) or other cryptocurrencies.
The second stage began on October 1, 2020, with the creation of 1,25 billion FLOW tokens. At that time, all the FLOW tokens that were sold in the three previous sales (two private, one community) were put into circulation. To avoid price manipulations, the issuance was carried out with a lock of funds, preventing the generation of a market avalanche that will negatively affect the project and its first buyers of the token. The funds lock is for two years.
In the graph you can see how the 1,25 billion generated tokens were distributed.
Finally, the third phase is where the staking reward system begins. This system started on December 15, 2020. The idea is that within two years (starting from October 1, 2022) a total of more than 800 million tokens will have been distributed in addition to the 1,25 billion already created. Certainly this is a high level of inflation in such a short period of time. But, the idea of this is to encourage the use of the system, and then sustain it based on the capabilities of the same.
In addition, it is worth noting that of those 1,25 billion tokens created initially, they will be unlocked in different time frames. The purpose of this process is to avoid bringing down the value of the token with a market saturation.
Future of the project
Flow is a project with a lot to do to declare itself out of its beta. And yet it stands out as one of the most powerful blockchain projects today. Dapper Labs continues to actively develop this project and, in fact, it has built an enormous force to achieve it, not only financially, but also from business users who are strongly committed to its technology. In that sense, there is surely much that we still have to see from Flow and many of those things will be good news.