Start here
  • How it works
  • Deployments
Using the protocol
  • Positions & weighting
  • Pricing & allocation
  • Collections
  • Settlement
Rewards & fees
  • Fees & protocol revenue
  • Top deposit reward
  • $FWA
Controls & safety
  • Safety
  • Parameters
  • Roles
Developers
  • Testnet
Deploy your own
  • Deployment guide
DocumentationTestnet
Start here
  • How it works
  • Deployments
Using the protocol
  • Positions & weighting
  • Pricing & allocation
  • Collections
  • Settlement
Rewards & fees
  • Fees & protocol revenue
  • Top deposit reward
  • $FWA
Controls & safety
  • Safety
  • Parameters
  • Roles
Developers
  • Testnet
Deploy your own
  • Deployment guide

Testnet

Get Sepolia ETH, mint a test NFT, and connect an integration to the public test deployment.

Build on FWA

FWA is an open, composable protocol. Developers can integrate its onchain contracts into new products, games, and experiences rather than starting from scratch. Projects already building on top of FWA include Megarip by 0xripe and FWAP by 0xquit.

If you are building an FWA integration, use the public Sepolia deployment below to set up and test your contracts before requesting any required mainnet approvals.

The public test deployment runs on Ethereum Sepolia (chain ID 11155111). Connect a Sepolia wallet with enough test ETH for gas, then use the verified contracts below through your preferred Ethereum tooling or their Etherscan contract pages.

Contracts

ContractRoleAddress
FWACore NFT pool0x692542379d6A3fc8115ae2C19787FD5bE21578bD
FWAToken$FWA test token0x14ea7A2087E32610C08c5210E16aD163353F5Fe5
FWATokenHookUniswap v4 hook for the $FWA pool0xf86c9c7e3B4EB188ee351EE7304001ECdc40e444
FWATokenDistributorOwnerPermissionless distributor registry wrapper0xc0C608d15e59d8D3754D2828b8DD43a03B7026D2
FWATestCollectionPermissionless test NFT collection0xd8B4A84299bD3509572daDDf50a59F081fe56678

1. Get Sepolia ETH

You need Sepolia ETH to pay gas and interact with the deployment. Claim some from the Gas.zip Sepolia faucet, or use any other Sepolia faucet. Send it to the wallet you will use for testing and wait for the balance to appear on Sepolia before continuing.

If you need more than a faucet provides, open a Gas.zip Sepolia refuel quote. Choose a supported L2 where you already have funds as the source, leave Sepolia selected as the destination, and choose a small dollar amount. After you review and submit the quote, you pay with real funds on the source L2 and receive Sepolia ETH in your wallet. Available source chains, rates, and fees can vary, so check the destination and final amount before confirming.

2. Mint a test NFT

The FWATestCollection contract lets anyone mint a test NFT directly to their connected wallet:

  1. Open FWATestCollection on Sepolia Etherscan.
  2. In Contract → Write Contract, connect the wallet you funded.
  3. Select the no-argument mint() function and submit the transaction.
  4. After confirmation, the contract mints the next sequential token ID to the wallet that submitted the transaction. The receipt's Transfer event contains the new token ID.

3. Register a contract that moves FWA

This step is only needed when your integration contract sends or receives $FWA. On Sepolia, registration is permissionless:

  1. Deploy your integration contract to Sepolia.
  2. Open FWATokenDistributorOwner on Sepolia Etherscan, connect a wallet, and call setDistributor(integrationAddress) with your contract's nonzero address.
  3. Wait for confirmation, then open FWAToken and confirm isDistributor(integrationAddress) returns true.

Distributor status allows the registered contract to send or receive $FWA while the token transfer lock is active. It does not bypass token balances or ERC-20 allowances, so transferFrom still requires approval.

4. Process acquisitions when needed

There is no automated keeper running for the Sepolia deployment. Chainlink VRF's callback attempts to process an acquisition as soon as randomness arrives, but that best-effort path may leave it ready and unsettled. If that happens, you must trigger processing yourself.

  1. Wait for Chainlink VRF to fulfill the acquisition. In FWA's Read Contract, pendingAcquisitionCount() tracks requests still waiting for randomness and unsettledAcquisitionCount() tracks all acquisitions that have not finished.
  2. If randomness has arrived but the acquisition remains unsettled, open FWA's Write Contract, connect a wallet, and call processAcquisitions(maxCount). A maxCount of 10 is a reasonable batch for normal testing.
  3. Wait for confirmation, then check unsettledAcquisitionCount() again. Repeat only if additional ready acquisitions remain.

Anyone can call processAcquisitions. The caller only chooses the maximum batch size; FWA determines which requests are processed and always follows the canonical queue order. Sepolia callers pay their own transaction gas and are not reimbursed.

Mainnet is different: external contracts cannot register themselves. Any external contract that needs to move $FWA must be reviewed and approved by an authorized FWA administrator before it can operate through the transfer lock.

Offchain indexing

If you want to build an offchain indexer, we use Ponder. Start with its getting-started guide; your coding agent should be able to take it from there.

← Previous
Roles
Next →
Deployment guide
FakeWorldAssets™
ActivityLeaderboardDocsTerms of ServiceTokenWorks™