Why Move?
On the 4th of March, Pontem hosted a panel at MoveCon featuring industry leaders from Aptos, OtterSec, MoveBit, and Econia. The topic of the discussion was “Why Move?”
You can listen to the full recording on Twitter or YouTube.
Meet the Speakers:
- Luis: Co-founder of Movebit, a security company focused on the Move ecosystem and building the standard for secure Move applications.
- Wolfgang Grieskamp: A seasoned tech veteran and an OG of the Move language with an impressive track record at Meta, Google, and Microsoft Research. He is currently the lead for Move and tools on Aptos.
- Robert Chen: Founder of OtterSec, a leading blockchain security audit and consulting firm that provides a range of services to ensure the security and reliability of blockchain-based applications.
Move: An Ideal Alternative to Solidity for Building Secure Blockchain Applications
Move is a novel programming language created specifically for blockchain development to address the serious security flaws that were present in Solidity, such as Integer Overflow and Underflow, and reentrancy, which have resulted in the loss of millions of dollars in cryptocurrency.
Move was developed with security in mind, and it leverages Rust's reputation for delivering both safety and performance, positioning it as an ideal choice for building blockchain applications. However, Move was designed to be less complex than Rust, which makes it more approachable for developers who lack familiarity with Rust.
Unlike Solidity, which can be complex and difficult to learn, Move is designed to be more like Javascript or Typescript in terms of its ease of use. This simplicity is a major advantage for developers who are new to blockchain development or who want to quickly build and test smart contracts without having to learn a complex new language.
Mitigating Security Risks in Blockchain Development with Move
Move offers a range of benefits for developers looking to create secure blockchain applications.
Some of these benefits include:
- Type Validation:
A major advantage of the Move language is its type validation feature, which simplifies the task of writing secure code.
Unlike many other programming languages for smart contracts, Move doesn't support signed integers, strings, or floating points.
Additionally, it doesn't provide direct access to pointers, making it easier to perform formal verification.
- Move Prover:
To further support developers in creating secure code, Move comes with a dedicated tool for formal verification called the Move Prover which verifies that the code satisfies its specified properties, such as the absence of particular bugs or the correct handling of specific scenarios.
However, one of the main challenges for developers is figuring out what to prove. This is where expert analysis and advice from reputable blockchain auditing firms like OtterSec can be invaluable.
With the help of skilled auditors, developers can gain a better understanding of their product's unique security requirements and identify potential vulnerabilities that need to be addressed.
Limitations of Move Prover: Understanding the Boundaries of Formal Verification
Move prover is a remarkable tool as it instills confidence in developers that their contracts will operate flawlessly, even in complex situations. However, Move Prover has some limitations.
For instance, the Move prover is limited to local reasoning and therefore lacks the inherent capabilities to establish inductive invariants that can be maintained throughout a module. As a result, it may be necessary to analyze the output from the Move prover when debugging an issue.
Despite its limitations, the Move prover is continually improving, thanks to the efforts of developers like Wolfgang. Hence it is expected to become an indispensable tool for any Move developer.
Protecting Assets with Move's Unique Resource Concept
The concept of "Resources" is a unique feature offered by Move, which serves as a safeguard against scarcity by ensuring that assets can only be transferred between program storage locations and cannot be duplicated or destroyed.
Move enables developers to define their custom resource types, providing them with flexibility and control over how assets are managed. This makes Move a powerful tool for blockchain developers who desire to build secure, adaptable, and efficient programs capable of managing assets in various contexts.
However, despite these benefits, the inherent risks associated with blockchain development cannot be completely eradicated. As such, developers and protocols experimenting with Move must approach the process with due caution and diligence before releasing their products to users.
Unit Testing in Move: Ensuring Code Reliability and Functionality
Move has a built-in unit testing feature, which makes it easy for developers to write unit tests that analyze Move code.
Move's unit testing framework is robust and allows developers to achieve high test coverage for both public and private functions in a clear and easily maintainable manner. This makes it simpler to detect and prevent bugs in the future, which can save countless hours of debugging and ensure smoother operation in the long run.
While there are some limitations to be aware of - for instance, the lack of a framework for integration testing - Move developers can still write unit tests within the same module as the code they are testing.
Reasons Behind Move's Rapid Adoption for Building Scalable Applications
Move is rapidly becoming a popular programming language among blockchain developers, surpassing other languages at a rapid pace.
Although security is a compelling factor driving the adoption of Move, there are several other reasons why developers are drawn to it.
Some of these factors include:
- Scarcity: Move was designed to address the issue of scarcity in blockchains which helps prevent double-spending attacks.
- Scalability: Move was designed to support parallel execution, making it possible for multiple transactions to be executed simultaneously without any risk of conflict or inconsistency which helps to improve the scalability and efficiency.
Building With Move: No Prior Rust Knowledge Required
Move is built on Rust, a programming language known for its focus on safety, performance, and concurrency. While Rust is a crucial component of the Move language, developers do not need to know Rust to use Move effectively.
Move's distinct advantages are attributed to its extensive collection of tools and resources, which facilitate developers' smooth onboarding and provide a user-friendly environment for smart contract development and deployment.
Moreover, Move boasts an active and supportive community of developers and enthusiasts who are always ready to provide guidance and assistance to new users.
Making the Move: How Other Programmers Can Seamlessly Transition to Move
Blockchain developers who are proficient in other programming languages can seamlessly transition to the Move programming language.
The most recommended way to get started with Move is by referring to the official documentation. The documentation offers a detailed overview of the language's syntax and features, in addition to tutorials that serve as a stepping stone for developers to start writing Move code.
Transitioning to Move from another programming language is an achievable goal. With the right resources and a bit of persistence, developers can quickly become proficient in Move and leverage its benefits for building decentralized applications and blockchain infrastructure.
ABOUT PONTEM
Pontem is a product development platform that enables global financial inclusion through blockchain technology. Pontem is developing infrastructure and decentralized tools for the fastest and most scalable Layer 1 blockchain – Aptos.
The Pontem Wallet is the gateway to the Aptos ecosystem available for Chrome, Firefox, and iOS. Pontem Wallet users can send and receive tokens, connect to decentralized applications, and explore the Aptos ecosystem.
As a result of its partnership with Aptos, Pontem has developed foundational dApps like the Move Playground IDE, Liquidswap AMM, and ByteBabel code translator.