Fake World Assets
Bug Bounty Program
Fully onchain протокол для рандомизированного приобретения NFT с backing ETH, Fenwick tree и Chainlink VRF. Максимально раскрепощённая программа с акцентом на fork-based live drain PoC.
Что такое FWA
Fully onchain протокол рандомизированного NFT acquisition с backing ETH.
Fake World Assets (FWA) — это fully onchain протокол для рандомизированного приобретения NFT. Депозиторы вносят NFT + ETH backing, которое определяет selection weight и создает irrevocable standing bid. Покупатели платят acquisition price за случайный NFT position, выбираемый через Chainlink VRF.
🎯 Ключевая механика
После acquisition покупатель может либо оставить NFT, либо продать его обратно депозитору за большую часть ETH backing. Это создаёт непрерывный цикл value flow между депозиторами и покупателями.
📦 Depositors
Вносят NFT + ETH backing. Получают fees и $FWA rewards пока их position активен.
🎲 Buyers
Платят acquisition price за случайный NFT через VRF-based selection.
🌳 Fenwick Tree
O(log n) tracking до ~4 billion positions с weight-based selection.
🔐 Chainlink VRF
Verifiable randomness для fair selection без bias.
Что можно тестировать
Все контракты проекта на Ethereum mainnet + любые найденные связанные контракты.
Core Protocol Contracts
- Pool accounting, positions, selection, settlement
- Fenwick tree для tracking до ~4 billion positions
- Chainlink VRF integration для fair selection
- Solady ReentrancyGuard
- SafeTransferLib.forceSafeTransferETH для ETH payouts
🔍 Additional Contracts — Open Scope
МОЖНО ТЕСТИРОВАТЬ ЛЮБЫЕ КОНТРАКТЫ, СВЯЗАННЫЕ С ПРОЕКТОМ.
Если нашли контракт, который явно принадлежит FWA проекту, но не перечислен выше — тестируйте его. Мы поощряем самостоятельный поиск дополнительных targets.
Источники для поиска:
Frontend & Backend
🌐 Main App
https://www.fwa.fun/
Deposit, acquire, post-acquisition decisions, position tracking.
🔗 Infrastructure
Chainlink VRF · Uniswap V4 · Ethereum Mainnet
Fork-Based Testing
Полная свобода на mainnet fork с эмуляцией реальных транзакций.
🔥 Что можно делать
Mainnet Fork Testing
- Создание mainnet fork с текущим состоянием протокола
- Эмуляция реальных транзакций на форке
- Тестирование всех user flows в fork environment
- Воспроизведение attack scenarios с реальными данными
Live Drain PoC на форке
- Попытки drained funds из протокола на форке
- Тестирование reentrancy на эмулированных балансах
- Oracle manipulation attempts на форке
- Selection weight manipulation
- Fenwick tree exploitation
Live Transaction Emulation
- Эмуляция реальных депозитов NFT + ETH
- Эмуляция acquisitions через VRF
- Эмуляция withdrawals и sell-backs
- Эмуляция concurrent operations
- Эмуляция stress testing scenarios
🎯 High Priority — Live Drain PoC
Максимальные выплаты за demonstrated drain на форке:
💸 Direct Fund Drainage
- Кража ETH backing из positions
- Манипуляция acquisition price
- Double-spending через reentrancy
- Unauthorized withdrawals
🎲 Selection Manipulation
- VRF prediction/exploitation
- Fenwick tree corruption
- Weight manipulation
- Bias in random selection
📊 Accounting Exploits
- Pool accounting errors
- Fee calculation bugs
- Reward distribution manipulation
- Balance tracking errors
🔓 Access Control
- Unauthorized role escalation
- Admin function abuse
- Ownership takeover
- Pause mechanism bypass
📊 Severity & Rewards
Условие: Demonstrated fund drainage на mainnet fork с emulated live transactions
- Steal ETH backing от depositors
- Manipulate acquisition price для profit
- Drain protocol fees
- Corrupt Fenwick tree leading to funds loss
- VRF exploitation leading to fund loss
Условие: Partial fund loss или critical logic error, demonstrated на форке
- Withdrawal lock bypass
- Emergency exit abuse
- Standing bid manipulation
- Position tracking errors
Условие: Non-critical bugs с potential impact
- DoS возможности
- Information disclosure
- UI/UX security issues
- Best practice violations
Условие: Minor issues
- Gas optimization opportunities
- Code quality issues
- Documentation errors
Testing Workflow
Пошаговый процесс fork-based testing с emulated live transactions.
4.1 Mainnet Fork Testing
Step 1 · Создать mainnet fork
anvil --fork-url https://eth-mainnet.alchemyapi.io/v2/YOUR_KEY \
--fork-block-number 12345678
Step 2 · Эмулировать реальные транзакции
- Депозиты с реальными NFT и ETH (на форке)
- Acquisitions через VRF (на форке)
- Withdrawals и sell-backs (на форке)
- Все взаимодействия через fork
Step 3 · Тестировать attack vectors
- Reentrancy на state-changing functions
- Oracle manipulation
- Fenwick tree edge cases
- Concurrent operations
Step 4 · Документировать drain attempts
- Transaction hashes на форке
- State changes
- Fund movements
- Profit/loss calculation
4.2 PoC Template
# Fork-Based Live Drain PoC
## Summary
- Vulnerability type: [reentrancy/oracle manipulation/etc]
- Impact: [amount of funds at risk]
- Affected contracts: [addresses]
- Fork block number: [number]
## Attack Flow (на форке)
1. Initial state: [balances, positions]
2. Transaction 1: [description, tx hash]
3. Transaction 2: [description, tx hash]
...
N. Final state: [drained amount]
## Evidence
- Fork block number: [number]
- Fork RPC URL: [url]
- Transaction hashes: [list]
- Balance changes: [before/after]
- Profit calculation: [math]
## Reproduction
```bash
anvil --fork-url <RPC> --fork-block-number <BLOCK>
forge create --rpc-url http://localhost:8545 src/Exploit.sol:Exploit
cast send --rpc-url http://localhost:8545 <EXPLOIT> "attack()"
```
4.3 Attack Vector Priorities
P1 · Fund Drainage
- Reentrancy в deposit/withdraw/acquire
- Integer overflow/underflow
- Access control bypass
- Fenwick tree corruption
- VRF exploitation
P2 · Selection
- Weight calculation errors
- Random selection bias
- Fenwick tree traversal bugs
- Slot allocation exploits
P3 · Settlement
- Failed ETH transfers
- Stuck positions
- Inconsistent state
- Lost backing funds
P4 · Mechanics
- Acquisition price manipulation
- Standing bid exploitation
- Fee calculation errors
- Reward distribution bugs
Deep Dive
Полное понимание flows для поиска уязвимостей.
5.1 Deposit Flow
- User deposits NFT + ETH backing
- Position создается с weight = f(ETH backing)
- Fenwick tree обновляется
- Standing bid создается для depositor
- Deposition earns fees + FWA rewards
Attack vectors
- Weight calculation manipulation
- NFT valuation exploits
- Standing bid bypass
- Fee distribution errors
5.2 Acquisition Flow
- User pays acquisition price
- Chainlink VRF генерирует random number
randomWords[0] % totalWeightmaps to position- Fenwick tree walk (depth-32) finds selected position
- Position transferred to purchaser
- Settlement происходит
Attack vectors
- VRF prediction
- Random number manipulation
- Fenwick tree traversal bugs
- Selection bias
- Price manipulation
5.3 Post-Acquisition Flow
- Purchaser получает position
- Choice: keep NFT или sell back to depositor
- Если sell back: depositor получает NFT, purchaser получает ETH backing
- Если keep: purchaser keeps NFT, depositor loses NFT but keeps standing bid value
Attack vectors
- Sell-back price manipulation
- Standing bid exploitation
- Double-dipping
- Settlement failures
5.4 Withdrawal Flow
- Depositor requests withdrawal
- Проверка withdrawal lock (если недавно был acquisition)
- NFT + ETH backing возвращаются depositor
- Fenwick tree обновляется
- Weight removed from total
Attack vectors
- Withdrawal lock bypass
- Unauthorized withdrawals
- Reentrancy в withdrawal
- State corruption
Known Controls
Что уже реализовано и какие риски приняты.
Implemented Safety Features
🔒 Depositor-only withdrawal
- Только depositor может withdraw свою position
- Team не может seize assets
- Работает даже в paused/emergency mode
⏸️ Loading phase
- Acquisitions off при deploy
- Positions можно stock перед go-live
🔐 Withdrawal lock
- Несколько blocks после acquisition
- Depositions не могут withdraw/re-price
- Capped at
MAX_WINDOW_BLOCKS = 7200
🚨 Emergency exit
- Team может halt acquisitions и deposits
- Withdrawals остаются доступными
- Resolutions still settle
📋 Collection allowlist
- Limits какие NFT collections можно deposit
- Не блокирует existing positions
💎 Hardened transfers
- Solady ReentrancyGuard
- Effects-before-interactions
SafeTransferLib.forceSafeTransferETH
🗝️ Ownership renouncement
- Goal: team gives up control over time
- Escrowed backing beyond owner's reach
- Renouncing removes remaining levers
⚠️ Known Accepted Risks
- NFT может быть selected earlier than weight-implied
- Earnings могут закончиться до compound fees
- $FWA rewards не имеют guaranteed value
Live Drain PoC на Форке
Обязательные требования для Critical/High с live drain bonus.
1. Working PoC на mainnet fork
- Точная копия mainnet state
- Реальные contract addresses
- Актуальные balances (на момент fork)
2. Emulated live transactions на форке
- Эмуляция реальных deposit/acquire/withdraw flows
- Transaction hashes на форке
- State changes documentation
3. Demonstrated fund movement на форке
- Clear proof of fund drainage
- Before/after balance snapshots
- Profit calculation
4. Reproducibility
- Step-by-step instructions для воспроизведения
- All parameters documented
- Team может reproduce на своем форке
Fork Setup
# Foundry (рекомендуется)
anvil --fork-url https://eth-mainnet.alchemyapi.io/v2/YOUR_KEY \
--fork-block-number 12345678 \
--port 8545
forge test --fork-url http://localhost:8545 -vvv
# Hardhat
npx hardhat node --fork https://eth-mainnet.alchemyapi.io/v2/YOUR_KEY \
--fork-block-number 12345678
npx hardhat run scripts/exploit.js --network localhost
// Пример drain PoC на форке
function testDrainOnFork() public {
uint256 initialBalance = address(fwa).balance;
exploit.attack();
uint256 finalBalance = address(fwa).balance;
uint256 drained = initialBalance - finalBalance;
assertTrue(drained > 0, "No funds drained on fork");
console.log("Drained:", drained);
}
Как отправить отчёт
Структура отчёта для fork-based live drain PoC.
1. Executive Summary
- Что нашли
- Какой impact (в ETH/USD)
- Affected contracts
2. Fork Setup
- Block number для fork
- RPC URL (если public)
- Initial state description
3. Attack Flow на форке
- Step-by-step с transaction hashes
- State changes после каждой транзакции
- Balance changes
4. PoC Code
- Working exploit contract
- Deployment script для форка
- Execution script для форка
5. Evidence с форка
- Transaction hashes
- Balance changes (before/after)
- Screenshots/logs
- Profit calculation
6. Reproduction Steps
- Commands для запуска форка
- Commands для deploy exploit
- Commands для execution и verification
7. Impact Assessment
- Сколько funds at risk в production
- Какие контракты affected
- Какие users affected
8. Suggested Fix (optional)
- Code changes
- Explanation
Reward Structure
Прозрачная система выплат с бонусами за live drain PoC.
Base Rewards
| Severity | Base Reward | Live Drain Bonus | Total Potential |
|---|---|---|---|
| Critical | $50,000+ | +50% | $75,000+ |
| High | $15,000 | +25% | $18,750 |
| Medium | $5,000 | — | $5,000 |
| Low | $1,000 | — | $1,000 |
Additional Bonuses
🥇 First Blood
+10%
Для первого valid report конкретного vulnerability class
🆕 Novel Vector
+20%
Для уникального attack vector
⛓️ Exploit Chain
+30%
За full end-to-end exploit на форке
🔍 Contract Discovery
+15%
За finding неочевидных контрактов проекта
Testing Checklist
Что проверить на форке для полного покрытия.
Smart Contract Testing
Protocol Mechanics
Live Drain Scenarios
Частые вопросы
Ответы на типичные вопросы о программе.
Additional Notes
Важные детали о проекте и программе.
⛓️ Chain
Ethereum mainnet only
✅ Contracts
Все verified на Etherscan
🏗️ Architecture
Fully onchain, no off-chain components
🎲 Randomness
Chainlink VRF для fair selection
🌳 Data Structure
Fenwick tree для O(log n) operations
🛡️ Safety
Multiple layers of protection
🎯 Goal
Eventual ownership renouncement
🔬 Testing
Fork-based с emulated live transactions
🔍 Discovery
Поощряется поиск дополнительных контрактов
🚀 Готовы к hunting?
Этот scope максимально раскрепощён для fork-based testing. Экспериментируйте на форках, эмулируйте реальные транзакции, находите дополнительные контракты и получайте бонусы за live drain PoC.