Non-EVM Standards

Aptos Fungible Asset Standard

Learn how the Aptos fungible asset standard enables secure, flexible token issuance using the Move programming model.

Last updated: 12/29/2025
Improve this page

Aptos Fungible Asset (FA) Standard, the object-based token framework on Aptos' Move-powered blockchain, introduces a flexible, linear-type system for fungible tokens, replacing the legacy Coin module with enhanced compliance hooks, metadata, and dispatchability for regulated use cases. For Real World Asset (RWA) protocols, this standard is especially valuable, as tokens can represent fractional claims on tokenized bonds, treasuries, commodities, or other off-chain collateral while maintaining a compliant, interoperable interface for minting, transfers, redemptions, and hooks without rigid resource constraints. Launched in 2024 as part of Aptos v1.5 upgrades, FA surged in adoption for RWAs by mid-2025, powering $900M+ in tokenized value via platforms like Movement Labs.

Before FA, Aptos RWA projects used Coin for basic fungibility, leading to inefficient compliance, fragmented metadata, and scalability issues in high-volume settlements. FA resolved this by treating tokens as Move objects with dispatchable actions (e.g., automated compliance via hooks), leveraging Aptos' parallel execution for sub-second finality and <0.01 cent fees. For RWA builders, the standard provides a secure abstraction layer supporting off-chain oracles for KYC/AML, cross-chain bridges via ERC-3643 ports, and asynchronous redemptions, while enabling seamless composability with DeFi protocols like Tortuga or Aptos DEXs.

Use of Fungible Asset Standard in RWA Contexts

Fungible Asset Standard is the foundational standard for RWA tokens on Aptos because it abstracts the complexity of tokenizing and managing real-world assets into an object-oriented, Move-native framework. While traditional DeFi tokens wrap liquid assets like APT for simple transfers, RWA tokens adapt the model to illiquid, regulated assets, tokenized private credit, commercial real estate, bonds, or bond portfolios, where on-chain tokens represent legally backed off-chain value held by custodians or SPVs, with dispatchable hooks for securities laws like Reg D or MiCA.

Key Applications in RWA Development

Fractional Ownership and Liquidity Provision

Many RWAs are high-value and indivisible (for example, a ten-million-dollar bond or a portfolio of private credit). Fungible Asset Standard allows developers to mint object-based tokens proportional to deposits, unlocking fractional ownership and secondary-market liquidity under compliance rules.

  • Implement mint via issuer with metadata for off-chain backing, using hooks to restrict to verified addresses.
  • Tokens can trade freely on DEXs like Tortuga, offering liquidity for assets that would otherwise be locked for years.
  • Example: A bond token where dispatchable actions enforce KYC, with fractions for diversified debt pools via Movement Labs.

Yield Accrual and NAV Management

Hooks and object metadata automate revenue distribution (e.g., interest from bond tokens), with oracle queries (e.g., Pyth) for real-time NAV updates. This supports auto-compounding without manual interventions, ideal for tokenized bonds or funds.

Using trusted sources (Pyth, Switchboard) ensures accurate metadata, critical for compliance and for investor redemptions. Regulators increasingly expect transparent audit trails, and FA provides this without exposing internal object state.

Redemption and Settlement Mechanics

RWA redemptions are inherently asynchronous, as physical settlement layers (banks, custodians, transfer agents) cannot finalize instantly.

Patterns include:

  • burn with redeemer hook for queued claims.
  • Compliance hooks for invalid transfers.
  • Memo-required events for signed proofs.
  • Proof-of-reserve checks before fulfillment.

Composability Across the RWA Stack

Fungible Asset tokens plug directly into Aptos DeFi:

  • Tortuga accepts tokens as collateral within hook restrictions.
  • DEXs can provide deep secondary liquidity for permitted transfers.
  • Aggregators route into FA natively.

For regulated RWAs:

  • Pair with hooks for investor eligibility gating.
  • Combine with ERC-3643 ports for modular compliance.
  • Integrate identity proofs via metadata.

This drastically reduces integration complexity, for example, a tokenized bond token can list across lending markets without custom adapters.

Developer Advantages in RWA Builds

  • Regulatory Alignment: Dispatchable hooks and metadata hide off-chain custodian processes while preserving accurate validations for MiFID II/MiCA-aligned disclosures.
  • Extensibility: Object model and hooks allow injecting RWA-specific logic i.e., pricing oracles, geofencing, or IPFS-pinned compliance policies.
  • Risk Isolation: Tokens remain fully Move compliant, burns do not impact wallet-held balances outside hooks.
  • Upgrade Path: Aptos' Move upgrades migrate via modules, preserving TVL and simplifying audits.

To visualize the end-to-end flow in an RWA token, the following sequence diagram captures the typical mint - transfer - burn cycle. It illustrates how users interact with the Move modules, how hooks interact with oracles, and how off-chain compliance updates flow back on-chain through validations or memos. This representation is especially important for understanding asynchronous transfers, delayed settlements, and hook-driven compliance in RWA systems.

Aptos fungible.svg

This diagram highlights how Fungible Asset Standard acts as the connective tissue between on-chain token operations and off-chain asset realities. Mints create objects proportional to contributed value, hooks capture real-world compliance as transfers execute, and burn functions help manage redemptions during claims. For illiquid RWA portfolios, the model can be extended with explicit hook modules between the module (M) and the custodian or SPV (C) to handle delayed settlement cycles.

Core Specification

A Fungible Asset token must implement the Move module interface for its object-based structure, the compliant representation of a user’s fractional claim on the underlying asset. Optional dispatchable hooks enable advanced features like compliance validation, a valuable enhancement for RWA use cases where institutions manage access without needing full custom modules.

In Fungible Asset Standard, the token behaves like any Move object (balance queries, total supply via views, transfers), while object refs refer to appended logic for asset management. The specification enforces a clean separation between base objects and hook params, ensuring predictable operations and seamless integration across Aptos and RWA systems.

Key Definitions

  • Object: The core Move struct for the token, e.g., a tokenized bond or treasury share.
  • Balance: The decimal field in object for holdings, extensible for confidential proofs or fees.
  • Total Supply: The aggregate token value managed by the module, equal to the sum of principal, burned amounts, and adjustments for fees or losses.
  • Hooks: Dispatchable functions (e.g., pre_transfer, post_transfer) providing idealized, rule-agnostic behaviors for UI, analytics, and oracle integrations. They represent the regulatory relationship between base tokens and enforced logic.
  • Function Calls: (e.g., transfer, mint) Provide near-exact estimates of expected outcomes, reflecting hooks, rounding, or NAV changes, without executing state updates. These enable accurate transaction planning.
  • Rounding Rules: The standard mandates rounding in favor of the token:
    • Round down when issuing tokens or deductions, preventing dilution.
    • Round up when applying hooks or requirements, protecting existing participants. These rules ensure fair distribution and discourage precision-based attacks.

The Fungible Asset Standard defines core Move modules with 15+ functions, organized by their roles in object logic, compliance, and hooks. Every token is created as an object via a single call, ensuring a single source of truth for behavior and movements. Below is the Move-equivalent interface, accompanied by developer notes covering edge cases, rounding behavior, and considerations specific to RWA tokens such as asynchronous hooks and oracle-driven updates.

1module aptos_framework::fungible_asset {
2    use aptos_framework::object::{Self, Object};
3    use aptos_framework::dispatchable_fungible_asset;
4
5    #[resource_group_member(group = aptos_framework::object::ObjectGroup)]
6    struct FungibleStore has key {
7        balance: u128,
8        metadata: Object<Metadata>,
9    }
10
11    struct Metadata has key {
12        name: String,
13        symbol: String,
14        decimals: u8,
15        total_supply: u128,
16    }
17
18    public fun mint(ref: &mut Object<Metadata>, amount: u128): FungibleAsset acquires Metadata {
19        let metadata = borrow_global_mut<Metadata>(object::object_address(ref));
20        metadata.total_supply = metadata.total_supply + amount;
21        FungibleAsset { balance: amount }
22    }
23
24    public fun transfer(store_from: &mut FungibleStore, store_to: &mut FungibleStore, amount: u128) acquires FungibleStore {
25        // Pre-transfer hook
26        dispatchable_fungible_asset::pre_transfer(store_from.metadata, store_from.balance, amount);
27        store_from.balance = store_from.balance - amount;
28        store_to.balance = store_to.balance + amount;
29        // Post-transfer hook
30        dispatchable_fungible_asset::post_transfer(store_from.metadata, store_to.balance, amount);
31    }
32
33    public fun burn(ref: &mut Object<Metadata>, amount: u128) acquires Metadata {
34        let metadata = borrow_global_mut<Metadata>(object::object_address(ref));
35        metadata.total_supply = metadata.total_supply - amount;
36    }
37
38    // Dispatchable Hook Example
39    public entry fun pre_transfer(metadata: Object<Metadata>, balance: u128, amount: u128) {
40        // RWA Logic: Oracle KYC check
41        assert!(balance >= amount, 1001);
42        // External oracle call via off-chain
43    }
44}

Detailed Function Breakdown (with RWA Developer Notes)

Below is a function-by-function explanation of the Fungible Asset Standard interface, including edge cases, rounding behavior, and RWA-specific implementation guidance for regulated assets, off-chain settlement, and hook-driven validation.

mint

Issuer-only supply increase, updating total_supply.

  • RWA Integration: For compliance-based assets, tie to oracle-fed KYC (Pyth / Switchboard).
  • Edge Case: Must handle zero amounts or overflow (error: EAMOUNT_OVERFLOW).

transfer

Moves amount from store_from to store_to, with pre/post hooks.

  • Formula: u128 math with rounding down.
  • Usage: UI quoting, risk dashboards.
  • RWA Note: Reflects pure regulatory transfer, does not account for settlement delays or custody fees.

burn

Issuer-only supply decrease.

  • Ensures no precision-based arbitrage.
  • RWA Note: Useful for redemptions in regulated markets.

pre_transfer / post_transfer

Dispatchable hooks for validation.

  • Return revert for “invalid.”
  • RWA Note: Enforce investor caps, jurisdiction restrictions, or temporary pauses due to regulatory flags.

Metadata Functions (e.g., set_metadata)

Updates name/symbol/decimals.

  • Discrepancies vs mint reveal metadata impact.
  • RWA Note: Useful for quote generation in dynamic vaults or those with evolving fees.

Destroy (Module Call)

Removes token if supply zero.

  • Requires prior admin check.
  • Includes errors for non-empty (e.g., ESUPPLY_NOT_ZERO).
  • RWA Note:
    • For illiquid assets (such as bonds and private credit): pair with burn asynchronous resolutions.
    • Trigger oracle checks for sanctions/residency validation.

Reference Implementation

Aptos Labs’ fungible_asset.move offers a mature, security-audited foundation for building object tokens. The module integrates with Move runtime, providing a clean function surface for RWA-specific logic. Its design encourages minimal overrides while still supporting custom hook models, metadata structs, dispatch layers, and oracle integration.

Key capabilities include:

  • Inflation Attack Protection: The implementation prevents dilution by enforcing mint refs and hook invariants. Early minters cannot exploit low-supply corner cases to extract excess value.
  • Rounding Compliance: All operations use u128 arithmetic for precise, deterministic operations that adhere to FA requirements of rounding in favor of the token. This eliminates subtle precision-drift exploits.
  • Extensible Hooks: Dispatchable functions such as pre_transfer allow developers to embed RWA-specific functionality, NAV oracle checks, compliance gating, settlement status validation, or fee accounting, without modifying core logic.
  • Flexible Structure: FA builds on Move’s base, with optional dispatch for regulated administration. This makes it straightforward to integrate custodial controls, upgrade pathways, or hook-gated operations required in regulated RWA environments.
1module rwa_token::rwa_fa {
2    use aptos_framework::fungible_asset::{Self, FungibleAsset, Metadata};
3    use aptos_framework::object::{Self, Object};
4    use aptos_framework::dispatchable_fungible_asset;
5
6    struct RwaMetadata has key {
7        terms_uri: String,
8    }
9
10    public fun create_rwa_metadata(terms_uri: String): Object<Metadata> {
11        let metadata = fungible_asset::create_metadata("RWA-BOND", "RWAB", 6, terms_uri);
12        move_to(&metadata, RwaMetadata { terms_uri });
13        metadata
14    }
15
16    public entry fun mint_rwa(metadata: Object<Metadata>, amount: u128, to: address) {
17        let fa = fungible_asset::mint(&mut metadata, amount);
18        fungible_asset::deposit(to, fa);
19    }
20
21    #[dispatchable]
22    public fun pre_transfer(metadata: Object<Metadata>, balance: u128, amount: u128) {
23        // RWA Logic: Oracle KYC via external
24        assert!(balance >= amount, 1001);
25    }
26}
  • The mint pins metadata at creation. For RWA tokens, prefer dispatch hooks and link terms to IPFS for provenance.
  • Objects can be extended for audit in UIs.

Mint Flow (Issuer-Facing)

Issuer-level calls enforce hooks with compliance.

1public entry fun mint_rwa_entry(metadata: Object<Metadata>, amount: u128, to: address) {
2    mint_rwa(metadata, amount, to);
3}
  • Use dispatch for safe minting.
  • Override pre-mint to add compliance checks (KYC, caps) and revert early if hook fails.
  • For illiquid or async-backed assets, combine mint with provisional issuance and oracle finalization to avoid over-minting.

Transfer Flow

Symmetric to mint, transfer invokes hooks then updates objects.

1public entry fun transfer_rwa(from: &mut FungibleStore, to: &mut FungibleStore, amount: u128) {
2    fungible_asset::transfer(from, to, amount);
3}
  • Hook-first follows checks-effects-interactions and reduces reentrancy risk.
  • For queued transfers, implement hook to check status and push into a compliance queue.
  • Add transfer rate limits or liquidity buffers to defend against sudden runs.

Burn Flow

Default burns are hook-gated; RWA overrides query reasons.

1public entry fun burn_rwa(store: &mut FungibleStore, amount: u128) {
2    fungible_asset::burn(store, amount);
3}
  • Burn uses object for precision.
  • Consider a time-bound hook for redemptions.

Adding Dispatch Hook (Example: KYC Check)

Hook handling keeps execution consistent.

1// In dispatchable module
2#[dispatchable]
3public fun post_transfer(metadata: Object<Metadata>, balance: u128, amount: u128) {
4    // RWA Logic: Audit log via oracle
5}
  • Keep hook accounting transparent: Emit events via Move logs and track via explorer.
  • For RWA products, hooks may fund legal overhead, document in on-chain strings.
Polkadot Asset Hub Parachain
Sui Programmable Assets

WE SECURE EVERYTHING YOU BUILD.

From day-zero risk mapping to exchange-ready audits — QuillAudits helps projects grow with confidence. Smart contracts, dApps, infrastructure, compliance — secured end-to-end.

DeFi SecurityplumeUniswap FoundationAethiropt-collectivePolygon SPNBNB Chain Kickstart

Office 104/105 Level 1, Emaar Square, Building 4 Sheikh Mohammed Bin Rashid Boulevard Downtown Dubai, United Arab Emirates P.O box: 416654

[email protected]

All Rights Reserved. © 2026. QuillAudits - LLC

Privacy Policy