Skip to content

FAssets

Securely explore XRPfi, BTCfi, and DOGEfi.

Bridge, trade, lend, and stake for greater liquidity in one DeFi hub.

Securely explore XRPfi, BTCfi, and DOGEfi.

Bridge, trade, lend, and stake for greater liquidity in one DeFi hub.

What is the FAssets system?

FAssets turn non-smart contract-enabled cryptocurrencies like XRP, BTC, and DOGE into assets that can be used in DeFi — securely, scalably, and with full custody retained. FAssets v1.2 is now live on Flare mainnet, starting with FXRP.

FXRP is a 1:1, overcollateralized ERC-20 representation of XRP on Flare, non-custodial and onchain verified via Flare’s enshrined data protocols (the Flare Time Series Oracle and the Flare Data Connector). It adds utility to XRP by providing them with non-custodial and decentralized access to Flare’s DeFi ecosystem and beyond.

Because FAssets is a system built for all large market cap, non-smart contract assets (e.g. BTC, DOGE, XLM), support for more assets is coming.

XRP is live on Flare mainnet. You can bridge XRP to Flare, use it in DeFi, and stake it via Firelight today.

Mint FAssets on your preferred dApp

How it works: Minting flow of FAssets

  1. User Initiates Minting: A user on the XRPL sends their XRP to a registered agent's XRPL address and pays a collateral reservation fee in FLR.

  2. Agent Receives XRP & Provides Collateral: The agent, who operates on both XRPL and Songbird, receives the XRP and provides collateral on Songbird to back the minting. The collateral is a mix of XRP, FLR (or SGB), and stablecoins. The total collateral value must be at least 1.3x the value of the FXRP being minted, as required by the safety collateral ratio — ensuring system security and protection against price volatility.

  3. FXRP is Minted on Songbird: Once the collateral is locked and the receipt of XRP is verified via the Flare Data Connector, the system mints the corresponding amount of FXRP and delivers it to the user on Songbird.

  4. (Optional) Collateral Support from Community Pool: Additional collateral can be provided by liquidity providers via community pools. These providers contribute FLR (or SGB) to agents’ collateral reserves and, in return, earn a share of minting fees.
FAssets how it works flowchart

Use cases: FAssets power a variety of DeFi use cases

Cross-chain yield farming, logos of Bitcoin linking to XRP
Cross-chain yield farming, logos of Bitcoin linking to XRP

Cross-Chain Yield Farming

Users can convert their BTC, XRP, or DOGE into FAssets and participate in yield farming strategies on Flare-based DeFi platforms — earning rewards in ways not possible on their native chains.

Collateral for DeFi Loans, page symbol with arrows pointing up and down
Collateral for DeFi Loans, page symbol with arrows pointing up and down

Collateral for DeFi Loans

FAssets unlock liquidity without requiring users to sell their underlying holdings. They can be used as collateral to take out stablecoin loans or crypto-backed loans on Flare-powered lending protocols.

Staking, logo of open book containing linked shapes
Staking, logo of open book containing linked shapes

Staking

With the upcoming staking protocol, we’re adding a native yield layer to XRP — not just through staking itself, but by making it composable, secure, and fully integrated with DeFi.
This lays the foundation for a new incentive economy around XRP, made possible by FAssets.

Explore the XRPFi ecosystem today

Image of a three painted figures in the clouds for the XRP program.

Start building with FAssets

Forge a DeFi hub for XRP, BTC, and DOGE with verifiable economic security.

import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import {IAssetManager} from "@flarelabs/fasset/contracts/userInterfaces/IAssetManager.sol";

contract FAssetArbitrager {
    IAssetManager internal assetManager;
    IERC20 internal fAsset;

    constructor(IAssetManager _assetManager) {
        assetManager = _assetManager;
        fAsset = _assetManager.fAsset();
    }

    function arbitrage(address _agentVault) external {
        uint256 availableFAsset = fAsset.balanceOf(address(this));
        (uint256 liquidatedFAsset, uint256 obtainedVault, uint256 obtainedNative) =
            assetManager.liquidate(_agentVault, availableFAsset);
        IERC20 agentVaultToken = assetManager.getAgentVaultCollateralToken(_agentVault);
        swapToFAsset(agentVaultToken, liquidatedFAsset, obtainedVault, obtainedNative);
    }
...
}