Movemate
August 13, 2022 ยท View on GitHub
A library of module building blocks for Move on Aptos and Sui.
Movemate provides an advanced standard library of common modules in the Move ecosystem (working in tandem with the native frameworks), focusing on security, efficiency, composability, and ease of implementation.
Modules
acl: Multi-role access control list (ACL).bcd: Binary canonical DEserialization. Convertvector<u8>tou64andu128.bloom_filter: Space-efficient probabilistic data structure for checking if an element is part of a set.box: On Aptos, send objects without the recipient having to set up a store for themselves beforehand. On Sui, transfer objects with thestoreability but not thekeyability.crit_bit: Crit-bit trees data structure. (Thanks to Econia.)date: Date conversion library in Move.escrow(Sui only): Very basic object escrow module on Sui.escrow_shared(Sui only): Basic object escrow module with refunds and arbitration on Sui.governance: On-chain coinholder governance (store coins and other objects; on Aptos, retrieve asignerfor special actions like upgrading packages).i64: Signed 64-bit integers.i128: Signed 128-bit integers.linear_vesting: Linear vesting of coins for a given beneficiary.math: Standard math utilities missing in the Move language (foru64).math_safe_precise:mul_divforu64s while avoiding overflow and a more precisequadraticfunction.math_u128: Standard math utilities missing in the Move language (foru128).merkle_proof: Merkle proof verification utilities.pseudorandom: Pseudorandom number generator.to_string:u128toStringconversion utilities.u256: Unsigned 256-bit integer implementation in Move. (Thanks to Pontem.) Includes bitwise operations andvector<u8>conversion.vectors: Vector utilities--specifically, comparison operators and a binary search function.virtual_block: Replace latency auctions with gas auctions (with control over MEV rewards) via virtual blocks.
Outside the repo
multisig_wallet: Multisignature wallet for coins and arbitrary objects.oracle_factory(Sui only): Create and share custom oracles, aggregating data across validator sets.xyk_amm: Constant product (XY=K) AMM (like Uniswap V2).
Usage
Sui
Add the following to your Move.toml:
[dependencies.Movemate]
git = "https://github.com/pentagonxyz/movemate.git"
subdir = "sui"
rev = "devnet"
Aptos
Add the following to your Move.toml:
[dependencies.Movemate]
git = "https://github.com/pentagonxyz/movemate.git"
subdir = "aptos"
rev = "devnet"
Testing
Sui
cd movemate/sui
sui move test --instructions 100000
Aptos
cd movemate/aptos
aptos move test
Publishing
Sui
sui client publish --path ./movemate/sui --gas-budget 30000
Aptos
aptos move publish --package-dir ./movemate/aptos
aptos move run --function-id 0x3953993C1D8DFB8BAC2DA2F4DBA6521BA3E705299760FBEE6695E38BCE712A82::pseudorandom::init