Last week one of our advisors asked what are differences between Aura Network and the popular Flow platform. While we haven't got any chance to actually trying to build applications on Flow, there are several fundamental differences in term of vision and technical choices. This article provides some insight from our discussion on those matters.
Flow is a layer-1 blockchain platform focusing on games, apps and digital assets. It is created by Dapper, the team behind the ever popular Crypto Kitties DAPP on Ethereum. Despite the success of the DAPP, the team found several problems with the Ethereum ecosystem, mainly about software performance and transaction cost.
That's why they created Flow, hoping to change the world of entertainment and culture like how Bitcoin and Ethereum did to the world of finance. Flow has several interesting architecture choices.
Flow blockchain provides a multi-node architecture where blockchain nodes are divided into different roles:
- Collection Nodes: collect transactions and serve DAPP
- Execution Nodes: execute transaction
- Verification Nodes: make sure execution nodes do their jobs
- Consensus Nodes: arrange order of transaction and create blocks
By separating the roles of nodes, Flow allows network participants to flexibly optimize their infrastructure and network capability based on roles they choose to be. It also easier to optimize the network to evenly distribute computing power or transaction bundling so that the system can have much better transaction throughput and finality.
Separating transaction workflow into different phases and delegated to specialized components to achieve better performance is fairly known from the engineering perspective. However, we feel that this approach from Flow is too complicated while the gained performance is not as impressive. The target transaction per second (TPS) of Flow is around 100 TPS and transaction finality is achieved after around 10 seconds. It is considerably better than the current state of Bitcoin or Ethereum, but still worse in comparison to other popular platforms like Solana, Cosmos, Polkadot, Avalanche, etc. In Cosmos for example, there is only one type of node who participate in the consensus and making blocks. Everyone in the network run the same software so that all the maintainance and upgrade can be handled with ease. Plus, the capability of Cosmos is around 1000 TPS and the bottleneck is mainly network bandwidth, not component resources like CPU, Ram.
Flow provides several quality-of-life improvement mechanism that enhance developer exerience such as introducing new programming language for smart contract, upgradable smart contracts or built-in logging support. The later 2 points are definetly welcome, yet we have a few concerns about the new smart contract programming language Cadence.
Cadence is a new resource-oriented programming language developed by the Flow team, used for writing smart contract in the Flow platform. The team has noted that the language is inspired by Move, Rust, Swift and a few others. The language focuses on security, auditabilty and expressiveness. The problem with the language is that currenly it is only supported by Flow and there is no sign to see the team is working on making the language to be adoptable in other platforms or purposes. For us, we prefer more familliar languages like Solidity, Rust or Golang. These programming languages are already very popular so that finding developers, libraries, tools or best practices are much easier.
Interoperability with the rest of the crypto ecosystem
Perhaps what turn us down the most from Flow is the lack of interoperability with other blockchains. Flow is self-sovereignty, which is absolutely amazing to build application directly on the platform. However, apart from some mention on relationship between Flow and Libra, there is no public announcement from the team to support cross-chain communication to other blockchain yet.
Learning from Flow
Despite there are major differences in technical vision, there are a lot of things we can learn from the Flow platform.
Easy to use wallet
Dapper Wallet is the default wallet supported by application on Flow platform. It is a custodial wallet with the ability to allow purchases with fiat currency via credit cards and cryptocurrency via your existing crypto wallets. This make Dapper Wallet to be friendly with both crypto native communities as well as mainstream consumers. We also had some discussions with our business partners not long ago, a lot of them agree that when converting their existing businesses to crypto, it is critical to have a coherent workflow for consumers to interact with applications, similar to what we used to see in ecommerce currently. So having a wallet that supports multiple payment methods from crypto, wire transfer and credit cards and a self-explanation user experience is one of the most important component of the platform.
Starting with a killer application
Flow doesn't only attract users by the innovative technical design or the reputation of the Dapper team. It has a killer application, the NBA Top Shot. The app allows users to transact short clips of NBA moments as NFTs on the Flow blockchain. The app has already more than a million users with more than $700M transaction value just in the first year. It is the biggest mainstream example of digital collectible cards but you can actually "own" the digital card on a blockchain. Guess who build the NBA Top Shot application ? It's Dapper themselves. That's why in our roadmap, we don't focus too much on building new things in the blockchain infrastructure layer. We found that the Cosmos ecosystem is already doing it very well. Instead, we focus on building applications and everything that help developers to deliver faster and better quality applications.