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
| Contract | Role | Address |
|---|---|---|
| FWA | Core NFT pool | 0x692542379d6A3fc8115ae2C19787FD5bE21578bD |
| FWAToken | $FWA test token | 0x14ea7A2087E32610C08c5210E16aD163353F5Fe5 |
| FWATokenHook | Uniswap v4 hook for the $FWA pool | 0xf86c9c7e3B4EB188ee351EE7304001ECdc40e444 |
| FWATokenDistributorOwner | Permissionless distributor registry wrapper | 0xc0C608d15e59d8D3754D2828b8DD43a03B7026D2 |
| FWATestCollection | Permissionless test NFT collection | 0xd8B4A84299bD3509572daDDf50a59F081fe56678 |
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:
Open
FWATestCollection on Sepolia Etherscan
.
In Contract → Write Contract, connect the wallet you funded.
Select the no-argument
mint()function and submit the transaction.After confirmation, the contract mints the next sequential token ID to the wallet that submitted the transaction. The receipt's
Transferevent 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:
- Deploy your integration contract to Sepolia.
Open
FWATokenDistributorOwner on Sepolia Etherscan
, connect a wallet, and call
setDistributor(integrationAddress)with your contract's nonzero address.Wait for confirmation, then open
FWAToken
and confirm
isDistributor(integrationAddress)returnstrue.
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.
Wait for Chainlink VRF to fulfill the acquisition. In
FWA's Read Contract
,
pendingAcquisitionCount()tracks requests still waiting for randomness andunsettledAcquisitionCount()tracks all acquisitions that have not finished.If randomness has arrived but the acquisition remains unsettled, open
FWA's Write Contract
, connect a wallet, and call
processAcquisitions(maxCount). AmaxCountof10is a reasonable batch for normal testing.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.