Build the Future of Web3 on Aptos
Everything you need to build the best-in-class Web3 developer experience.
Craft safe and high-performance smart contracts with Move
Get started with these Move examples
module 0xCAFE::BasicCoin {
// Only included in compilation for testing. Similar to #[cfg(testing)]
// in Rust. Imports the `Signer` module from the MoveStdlib package.
#[test_only]
use std::signer;
struct Coin has key {
value: u64,
}
public fun mint(account: signer, value: u64) {
move_to(&account, Coin { value })
}
// Declare a unit test. It takes a signer called `account` with an
// address value of `0xC0FFEE`.
#[test(account = @0xC0FFEE)]
fun test_mint_10(account: signer) acquires Coin {
let addr = signer::address_of(&account);
mint(account, 10);
// Make sure there is a `Coin` resource under `addr` with a value of `10`.
// We can access this resource and its value since we are in the
// same module that defined the `Coin` resource.
assert!(borrow_global<Coin>(addr).value == 10, 0);
}
}
Aptos tooling makes web3 development easier than ever
At Aptos, developers come first
Discover blockchain features on Aptos
Performance
Redefine blockchain performance with high TPS and low latency
Parallel Execution
Learn how Block-STM powers parallelization and optimistic concurrency on Aptos
Validators & Fullnodes
Learn more about what it takes to run a validator or fullnode
Keyless
Enjoy seamless user authentication with Keyless
Passkeys
Onboard seamlessly using biometrics
On-Chain Randomness
Unlock true fairness in gaming and beyond
Fee Payer
Empower your transactions with seamless execution, letting others foot the bill
Multi-sig
Secure your assets like never before with collaborative control and unparalleled safety
Gas
Trade smarter, not harder with low gas fees
Consensus
Learn more about DAG based consensus
Storage
Learn more about Aptos' Jellyfish Merkle Tree and custom RocksDB configuration
Networking
Learn about the topology of the Aptos blockchain and how nodes communicate with each other
Mempool
Learn how transactions are buffered for processing before they're sent upstream
State Sync
Learn how nodes downstream synchronizes with the latest state