awesome-move
Code and content from the Move programming language community.
Move is a programming language for writing safe smart contracts originally developed at Facebook to power the Diem blockchain. Move is designed to be a platform-agnostic language to enable common libraries, tooling, and developer communities across diverse blockchains with vastly different data and execution models. Move's ambition is to become the "JavaScript of web3" in terms of ubiquity--when developers want to quickly write safe code involving assets, it should be written in Move.
Overview
Move-Powered Blockchains
- 0L (in mainnet)
- StarCoin (in mainnet)
- Celo (coming soon)
- Diem
Books
- https://diem.github.io/move/. Maintained by the Move core team.
- https://move-book.com/. Maintained by @damirka.
Tutorials
- Implementing, testing, and verifying a fungible token. Maintained by the Move core team.
Community
Code
Fungible Tokens
- BasicCoin: a toy implementation of an ERC20-like fungible token.
- Diem: an ERC20-like token with permissioned minting/burning, see also this spec. Deployed on 0L.
- Token: another ERC20-like Token. Deployed on StarCoin.
- GAS: a token that instantiates the Diem standard above. Deployed on 0L.
- STC: a token that instantiates the StarCoin standard above. Deployed on StarCoin.
- WEN stablecoin. Deployed on StarCoin.
- FAI stablecoin. Deployed on StarCoin.
- FLY stablecoin: a fork of Ohm implemented in Move. Deployed on StarCoin.
- Synthetic token backed by a basket containing a reserve of other tokens. From Diem.
Non-Fungible Tokens
- NFT: an ERC721-like token. Deployed on StarCoin.
- Merkle Airdrop: utility for airdropping a large number of NFT's. Deployed on StarCoin.
- NFT: an implementation of a hybrid ERC721/ERC1155-like token. From Diem.
- BARS: an NFT that instantiates this hybrid standard. From Diem.
- MultiToken: an ERC1155-like token. From Diem.
- NFTGallery: utility for holding multiple NFT's of the same type. From Diem.
DeFi
- CoinSwap a toy implementation of a Uniswap-like liquidity pool containing two tokens.
- StarSwap: a Uniswap-style DEX. Deployed on StarCoin.
- Offer: generic implementation of atomic swaps for any pair of assets.
On-Chain Governance
- ValidatorUniverse: validator set management. Deployed on 0L.
- Oracle for on-chain community voting. Deployed on 0L.
- DAO for on-chain proposals and voting. Deployed on StarCoin.
- DiemSystem: validator set management. From Diem.
- Vote: on-chain voting. From Diem.
Accounts
- Account: a generic account for Diem-powered chains. From Diem.
- DiemAccount: fork of the above. From 0L.
- Account: fork of the above. From StarCoin.
Frameworks
A Move framework is the set of Move modules included in the genesis state of the chain. These modules typically implement key concepts like accounts, currencies, . The ability to separate blockchain-specific framework logic from the generic functionality of the Move language is a key part of Move's platform-agnostic design.
Libraries
- Move standard library: utilities intended (but not required) to be used in every platform running Move. From the Move repo.
- Move nursery: experimental modules that may eventually be promoted into the standard library. From the Move repo.
- Decimal: efficient implementation of a decimal value. From 0L.
- Math: math utility functions. From StarCoin.
- Compare: polymorphic comparison (i.e., compare any two Move values of the same type). From the nursery.
- Vault and ACL: libraries for capability and list-based acess control. From the nursery.
Miscellaneous
- Experimental project to compile Move source code to EVM bytecode.
Tools
- Move Package Manager. Like
cargo
ornpm
for Move: single CLI (and corresponding Rust API's for other tools to hook into) for building, running, testing, debugging, and verifying Move packages. Maintained by the Move core team. - Move Prover. Formal verification of user-defined specifications written in Move source code. Maintained by the Move core team.
- Move Read/Write Set Analyzer. Static analysis tool for computing an overapproximation of the global memory touched by a Move program. Maintained by the Move core team.
IDE's
- Move vscode plugin (install, source code). Maintained by the Move core team.
- Move IntelliJ plugin (install, source code)
- Move Playground, instructions. Like Remix for Move--alpha version of a Web IDE. Maintained by the Pontem team.
Wallets
- StarMask (install, source code). A wallet for the StarCoin blockchain. Maintained by the StarCoin team.
- bcs-js. JavaScript implementation of the BCS serialization scheme used by Move, may be useful for implementing wallets.
Papers
Language Design
- Move: A Language With Programmable Resources. This was the original Move white paper released in 2018. Many aspects of this are now out of date (e.g., the syntax and description of the bytecode instructions), but the first two sections are worth a read for explaining the difficulties of programming with assets and how Move tackles them.
- Robust Safety for Move
- Resources: A Safe Language Abstraction for Money
Static Analysis and Verification
- Fast and Reliable Formal Verification of Smart Contracts with the Move Prover
- The Move Prover
- Verification of Programs Written in Libra's Move Language
- Exact and Linear-Time Gas-Cost Analysis
Videos
- Move: A Safe Language for Programming with Money. Talk from @sblackshear at the Fields Institute Blockchain research seminar series.
- Formal Verification of Move Programs for the Libra Blockchain. Talk from @DavidLDill at the Fields Institute Blockchain research seminar series.