Sepolia deployment
V2 testnet contracts, fixed-price oracle usage, and NFT listing instructions on Ethereum Sepolia.
Network: Ethereum Sepolia
Chain ID: 11155111
The FWAV2 pool uses the existing FWAToken and FWATokenHook. The whitelist is disabled, and a permissionless fixed-price test oracle is enabled.
Contracts
| Contract | Role | Address |
|---|---|---|
| FWAV2 | Main NFT pool | 0x8D62A3eb2AC9Fc0148f1A69CAC3Eb2c71623AA90 |
| CollectionFloorOracleSepolia | Fixed-price test oracle | 0xAD520c5fb1Ffb335d058d63d8C10DADE25105E34 |
| FWAVRFService | Chainlink randomness service | 0xaD6ad686e7fe60Dc582968EEFBAA6d3972A64dbA |
| FWAV2Rewards | Token rewards accounting and distribution | 0xB013ec82d838a2e0f9AAF95847ccee2c89788fb8 |
| FWAV2Buyback | ETH-funded token buybacks | 0xafE3Ef4dB444e0bd2feC022683760317e37e2f8B |
| FWAPurchaseNotifier | Purchase notifications | 0xa86bb73B421fa004739Ada7AB1C959AEB28a73A6 |
| FWAToken | Existing $FWA test token | 0x14ea7A2087E32610C08c5210E16aD163353F5Fe5 |
| FWATokenHook | Existing Uniswap v4 hook | 0xf86c9c7e3B4EB188ee351EE7304001ECdc40e444 |
| FWATokenDistributorOwner | Permissionless distributor registry wrapper | 0xc0C608d15e59d8D3754D2828b8DD43a03B7026D2 |
| FWATestCollection | Permissionless test NFT collection | 0xd8B4A84299bD3509572daDDf50a59F081fe56678 |
| FWA V1 | Legacy NFT pool | 0x692542379d6A3fc8115ae2C19787FD5bE21578bD |
Oracle usage
The Sepolia oracle assigns a fixed test price to each registered collection:
- Ask: 0.05 ETH
- Bid: 0.045 ETH
Prices apply to the entire collection, rather than individual token IDs.
Anyone can register or refresh a collection by calling:
setFloor(address collection, uint256 askPrice)
| Parameter | Value |
|---|---|
collection | The NFT collection's contract address |
askPrice | 50000000000000000 — exactly 0.05 ETH in wei |
The transaction requires Sepolia ETH for gas only. Do not send 0.05 ETH with the call: it is the price being recorded, not a payment. NFT ownership and NFT approval are not required to update the oracle.
Other price amounts are rejected. The collection address must contain deployed contract code.
Reading and refreshing prices
Call getFloor(collection) to read the ask price and its last update timestamp. An unregistered collection returns (0, 0).
Call getFloorRange(collection) to read the bid, ask, timestamp, and manual-price marker.
FWAV2 requires a quote no older than seven days when listing, relisting, or updating an NFT's backing. Anyone can refresh it by calling setFloor again with the same fixed price. The refreshed quote takes effect immediately.
The oracle continues returning its stored price after it becomes stale, so integrations must check the timestamp.
Listing NFTs
After registering or refreshing the collection:
- Approve the FWAV2 pool to transfer the NFT.
- List the NFT through FWAV2 with the required ETH backing.
With the deployed settings, backing must be at least 0.01 ETH and no more than 0.055 ETH, which is the oracle's 0.05 ETH ask plus the pool's 10% allowance.
Refreshing the oracle does not change an existing listing's backing. A stale quote does not automatically remove an existing listing.
The supplied FWATestCollection was registered during deployment. Its quote can be refreshed using the same permissionless process.