The strongest competitor to Solidity: The rise of the MOVE language and new public chains

Buidler DAO
2022-08-06 13:28:37
Collection
Move learns valuable lessons from real security vulnerabilities in Solidity, making significant innovations in underlying security design, ensuring language expressiveness and flexibility while also making open-source systems more secure and reliable.

Author: BuidlerDAO

Jason |@Jason_chen998|Researcher

Frank |@MonolithMatrix |BuidlerDAO Researcher

Move Little Prince |Zhihu: Step-by-step Writing Move Smart Contracts

image In the new round of public chain narratives, there are two bright trends: one is the high-performance new public chains centered around the Move programming language, and the other is the modular blockchain represented by Celestia. With the help of this article, we will briefly discuss the three giants of the newly emerging Move language-based public chains, and from a technical perspective, what makes the Move language so special.

Article Overview:

01/ The Rise of the Three Giants of Move Language-based Public Chains
02/ Current Track Dominator: Aptos
03/ Resource Feature: Move Truly Achieves Digital Assetization
04/ Summary of Technical Differences: Solidity vs. Move
05/ Future Prospects and Course Learning for Move

1. The Rise of the Three Giants of Move Language-based Public Chains

  • In 2019, Meta (formerly Facebook) launched the globally circulating super-sovereign digital currency project Libra, which unexpectedly peaked upon debut, only to be forced to transform into Diem due to regulatory restrictions, ultimately ending without success. At the end of January this year, Diem was sold to Meta for about $182 million. During this process, the Libra and Diem teams left behind a valuable legacy—the Move language that compensates for the shortcomings of Solidity and EVM, along with the derivative public chain teams, such as the most representative Aptos, Sui, and Linera.

  • In December 2021, the earliest-starting Sui announced a $36 million Series A funding round, with investors including a16z, NFX, Scribble Ventures, Redpoint, Lightspeed, Electric Capital, Samsung NEXT, Slow Ventures, Standard Crypto, and Coinbase Ventures.

  • In March 2022, Aptos completed a $200 million funding round, also led by a16z.

  • In June 2022, Linera announced the completion of a $6 million seed round, with a16z as the lead investor, and participating institutions including Cygni Capital, Kima Ventures, and Tribe Capital.

  • In July 2022, Aptos completed a $150 million funding round, led by FTX Ventures and Jump Crypto, with participation from a16z, Multicoin Capital, and Circle Ventures; at the same time, Sui was reported to be seeking $200 million in Series B funding, with a valuation reaching $2 billion.

  • In August 2022, Aptos announced the launch of Incentivized Testnet 3 (AIT3) on August 30, stating that AIT2 was very successful, with over 225 community nodes participating in the test, distributed across 44 countries and 110 cities worldwide. According to the project roadmap, the mainnet will go live after the conclusion of this testnet.

It is not difficult to see that a16z is deliberately betting on the "Move language-based public chain track," hoping that the three public chains will emerge as the leaders of the next cycle. The three-legged stance of the Move language is also taking shape.

Among the three public chains, the one with the fastest development and ecosystem progress is undoubtedly Aptos. As of now, it has a relatively stronger community, more active developers, and a more robust dApp ecosystem, which we will detail in the third part of this article.

Ranking second, Sui has released its Tokenomics ($SUI) white paper. Its economic model has a unique feature: computation fees and storage fees are paid separately. When users submit on-chain data, they will simultaneously pay both storage and computation fees (commonly referred to as GAS).

Computation fees will enter Stake rewards for distribution, with some transferred to the Storage Fund; storage fees go directly into the Storage Fund, which is used to subsidize future increases in storage costs as the network grows and matures. This design returns the storage rights of on-chain data to users, allowing them to choose to delete on-chain data to cancel storage fees. Additionally, Sui's SDK attempts to connect with other ecosystems and non-crypto applications, including Gaming APIs, SuiEcho, Handshake, and other distinctive SDKs. However, its ecological application layout is quite sparse compared to Aptos, with only a few wallet-related ecological projects reported publicly.

image Compared to Aptos and Sui, Linera appears to have started later and is more low-key, only showcasing its official website link and mission in an official tweet released on June 18 this year. According to research from Hive Tech's "New Generation Public Chains Reattacking the Impossible Triangle": Linera aims to bring the speed of these two payment systems into application-based blockchain networks, allowing on-chain user operations to be confirmed in fractions of a second.

In terms of network performance, Linera has proposed the concept of "linear scalability"—doubling system capacity by increasing the number of machines. Currently, the blockchain prioritizes a "sequential" execution model that allows accounts and smart contracts to interact within a series of transactions (such as flash loans), but this hinders linear scalability. In Linera's linear scalability model, operations from different user accounts can run simultaneously in different execution threads.

2. Current Track Dominator: Aptos

According to reports from Hive Tech, Aptos launched its developer testnet in March this year, and in May, it began registration for the incentivized testnet, dividing it into four phases: "Decentralized Launch," "Staking," "Governance and Upgrades," and "Dynamic Validator Topology." Currently, its test network has reached over 20,000 nodes, making it the largest known proof-of-stake node community today. Aptos openly stated that the community's development far exceeded their previous wildest expectations. According to the plan, the remaining two phases of the Aptos incentivized testnet are expected to be completed in the next two months, and by the end of September, Aptos will launch its mainnet.

Although the long-term winner of the new public chain is still unclear, in the short term, Aptos undoubtedly occupies the king's position in the "Move language-based public chain track," established by its development speed and ecosystem construction.

Aptos's star team has attracted numerous star capital investments since its inception. According to ForesightNews, its co-founder and CTO Avery Ching served as a chief software engineer at Facebook for over 10 years and was the technical lead of the Novi team under Meta; most of the development team, including Alden Hu and David Wolinsky, participated in the development of Diem and Novi.

Its design focuses on absolute security, scalability, and trusted neutrality, with the ultimate goal of processing 100,000 to even 160,000 transactions per second. With such a strong technical team, Aptos has also fully demonstrated its R&D capabilities, creating the following outstanding marginal advantages:

  1. The Aptos team has iterated its consensus mechanism—Byzantine Fault Tolerance (BFT)—four times to achieve high transaction throughput, low latency, and high stability, ensuring stable operation even with one-third of the validating nodes failing.

  2. It is expected to have faster transaction processing speeds than established public chains. According to Aptos testnet data, the network currently processes over 10,000 transactions per second, and ideally, the Aptos mainnet could handle 160,000 transactions per second. Public information indicates that recent tests of various public chains' speeds have shown Aptos's Max TPS far exceeds that of established public chains, including Solana.

    image

  3. Aptos officially announced over 30 ecological projects in July. Although many are in the testnet and development stages, only wallets and DEXs are currently interactive, but it is far ahead compared to other Move language ecological public chains. The announced ecological project types include wallets (Hive), DEX (Pontem Network), liquidity protocols (NjordFinance), NFTs (Topaz.so), browsers (Aptosscan), and data analysis tools (Dapptos View), among other mainstream dApp tracks.

    image

  4. Fully leveraging the differences between the Move development language and the current mainstream Solidity language for competitive advantage. We will next analyze the key advantages of the Move language from a technical perspective.

3. Resource Feature: Move Truly Achieves Digital Assetization

The Move language is hailed as one of the most suitable languages for writing blockchain smart contracts and has often been compared to the currently mainstream Solidity, often outperforming it. The main reason is that Move handles the core Token assets of blockchain more appropriately, compensating for Solidity's shortcomings in intuitiveness and security. Here, we will focus on its most distinctive feature: the Resource type.

The on-chain assetization has made security issues a core problem that blockchain must solve. In Web2, if a product has a bug or data leak, it is unlikely to lead to user asset loss; at most, it may cause product crashes or personal information leaks and black market sales. However, because assets are on-chain, a bug in a smart contract can directly lead to the outflow or locking of countless user assets.

We often see news of hackers attacking certain trading platforms or cross-chain bridges, resulting in billions in asset losses. BuidlerDAO has previously produced numerous research reports on these events, most of which were due to relatively low-level issues in contracts being targeted by hackers. This raises a key attribute that readers should note: Solidity is a programming language for blockchain smart contracts, but it is not a programming language for on-chain assets.

Why is this the case? For example, Solidity, like the vast majority of programming languages, treats Tokens as numerical variables, meaning the transfer process of Tokens is performed through addition and subtraction operations. For instance, if Zhang San wants to transfer 10 yuan to Li Si, it first deducts 10 from Zhang San's balance and then adds 10 to Li Si's balance.

Thus, in Solidity, assets are just numbers that can be added or subtracted, which requires the contract code to be very rigorous. For example, if there are issues during the addition and subtraction operations, resulting in Zhang San being deducted 10 while Li Si is credited 20, or Zhang San being deducted 0 while Li Si is credited 10, how can we ensure that such problems do not occur?

The reason is that assets in Solidity are not specially defined; they are treated like variables such as age or phone number. However, the definition of assets should be unique. Just like in the physical world, if I have a gold bar and I want to give it to someone, no matter how the process of giving it occurs, that gold bar will not turn into two bars. Therefore, what we commonly refer to as digital assets in Solidity can only be called numbers that can be added or subtracted, and cannot be considered true assets.

The programmable Resource in Move is the core that makes it secure and powerful, achieving true digital assetization. A Resource is a data type. A data type defines a way to structure data:

  • Characters: such as name, address, which are of String type;

  • Numbers: such as age, phone number, which can be of Int type;

  • Boolean: representing true or false, which can be expressed using Boolean's True and False.

Move considers Token assets to be a very special and important type of data that should not be defined and represented using ordinary numerical types, so it has created the Resource type to define on-chain assets. This approach presents three characteristics:

  1. Resource still exists in Move as a numerical form, can be stored as a data structure, and can be passed and returned as parameters.

  2. Resource can safely represent digital assets; its uniqueness lies in the fact that it cannot be copied, discarded, or reused, but it can be safely stored and transferred. Moreover, values of Resource types can only be created and destroyed by the module that defines that type, thus realizing the meaning of assets rather than just numbers.

  3. Resource adapts to the characteristics of blockchain applications, such as being bound to accounts. Resource data must be stored under an account, so corresponding Resource assets only exist after an account is allocated. Additionally, once a Resource is extracted, it must be "used." After using the built-in Move_form method to extract assets from an account, it must either be passed as a return value, meaning it has to flow somewhere, or it must be directly destroyed. This means that assets are used as much as they are extracted. Remember how Solidity operates? It reduces the balance of one address and increases another, ensuring that the numbers deducted and added are consistent through code. Thus, in Solidity, asset usage is entirely reliant on code logic, while Resource encapsulates the concept of assets at a lower level rather than through addition and subtraction, avoiding arbitrary generation and access of assets, greatly enhancing security. Moving Move's Tokens can be seen as moving bricks from one place to another, while Solidity operates through addition and subtraction—one place decreases, and another increases.

In summary, Move is a more native and fitting programming language specifically designed for issuing digital assets, achieving direct integration between programs and digital assets.

4. Summary of Technical Differences: Solidity vs. Move

Transitioning from Bitcoin's Script to Ethereum's Solidity, and experiencing the baptism of DeFi, Solidity has undoubtedly been successful. However, analyzing the security vulnerabilities that have occurred in the past six months—such as PolyNetwork, Horizon, Nomad, Solana, etc.—is chilling. In comparison to the impossible triangle, ensuring the security of on-chain assets has become a major issue that the entire industry urgently needs to address. a16z has recognized this potential demand and has invested heavily in the three major public chains of Move.

As we embrace the Web3 era, behind these vulnerabilities, VMs are continuously identifying and addressing shortcomings, such as fixing the original overflow issues, but fundamental design flaws are difficult to qualitatively improve. Unlike previous development experiences, DeFi applications are essentially open-source and transparent financial systems, requiring extremely high security. Therefore, designing a smarter contract language that is safer, more reliable, and has a lower barrier to entry for financial scenarios may be a better choice. Here, we will delve into a comparison between Solidity and Move:

image

From the above, it can be seen that Move adds many features on top of Solidity, possessing excellent security and engineering capabilities. Move learns valuable lessons from Solidity's real security vulnerabilities, making significant innovations in underlying security design, while ensuring language expressiveness and flexibility, making open-source systems more secure and reliable.

For example, suppose there are 100 Tokens; in Solidity, a hacker can easily copy those 100 Tokens into more (referencing the infinite issuance vulnerability). However, in Move, as long as Tokens are defined as Resource types, it is guaranteed at the virtual machine level that Tokens cannot be copied or modified, making it impossible for hackers to steal Tokens through copying.

For Move, there are many similar advantages:

  • Resource-Oriented Programming

    Move has been enhanced specifically for financial scenarios, introducing resource-oriented programming. For common scenarios like FT and NFT, Move defines data as resources, ensuring data security at the virtual machine level.

  • Pure Static Language

    Dynamic calls are the cornerstone of Solidity, and all cross-contract calls must be achieved through dynamic calls, such as DelegateCall, which is also the entry point for most security vulnerabilities, such as TheDAO attack, PolyNetwork cross-chain attack, etc. In light of Solidity's real experiences, Move adopts a completely pure static implementation, better ensuring the security of on-chain assets.

  • Formal Verification

    Formal verification (FV) refers to using mathematical tools to analyze the space of possible behaviors of a design rather than calculating specific value results. In other words, it proves the safety of a program through mathematical means. Move comes with formal verification tools, allowing us to use mathematical methods to test and prove the reliability of contracts, which is an incomparable advantage over Solidity.

  • Decentralized Storage

    In the Web3 era, users owning data is ownership. Solidity stores contract data in a centralized manner through Maps, meaning that when a contract has a vulnerability, such as gaining contract Owner permissions, all user data will be attacked. Move cleverly uses Resources to decentralize data storage into each user's own Account, ensuring data security and truly achieving data ownership for users, with the contract Owner having no permission to modify data.

  • Generic Programming

    For security considerations, Move is designed as a pure static language, but this does not reduce flexibility. Move ensures contract extensibility and increases code reusability through generic programming.

5. Future Prospects and Course Learning for Move

The transition from Script to Solidity represents a revolution in contract expressiveness, while the transition from Solidity to Move signifies a revolution in contract security capabilities.

Move is developer-friendly. The purpose of the Move language is to lower the security threshold for developers. Contract developers can focus on business logic without spending excessive effort on code security. Only by allowing contract developers to write highly secure code without being aware of it, avoiding security vulnerabilities caused by low-level bugs, can DeFi become safer and users feel more at ease. Move has many excellent features (such as engineering capabilities) that we have not elaborated on in this article, but they are very worthwhile directions to explore.

In researching the hot topic of new public chains, our researchers have found that understanding this round of new public chain narratives requires an understanding of the technical details of Move and innovations in public chain technology.

ChainCatcher reminds readers to view blockchain rationally, enhance risk awareness, and be cautious of various virtual token issuances and speculations. All content on this site is solely market information or related party opinions, and does not constitute any form of investment advice. If you find sensitive information in the content, please click "Report", and we will handle it promptly.
ChainCatcher Building the Web3 world with innovators