01 — overview
what is pool party?
pool party is a fully on-chain generative art project released on Art Blocks. each mint triggers a chain of smart contract interactions that purchase a randomly-selected ERC-20 token, then tracks its price over time through 12 automated check-ins. these real-world price movements directly influence the artwork's visual output — making every piece a living, evolving composition.
fully on-chain
100%
all script data and project configuration stored on-chain
supported tokens
13
popular ERC-20 tokens randomly assigned at mint
price check-ins
12
automated Chainlink updates per token lifetime
MEV protection
✓
Chainlink oracle price feeds guard against sandwich attacks
02 — how it works
the life of a pool party token
every token goes through three distinct phases, from mint to maturity.
phase 1
mint
collector chooses a price: the collector decides how much ETH to spend. a random ERC-20 token is selected based on the token's hash. 80% of the payment is immediately swapped into that token via Uniswap V3.
funds are distributed: 10% goes to Art Blocks, 10% to the artists, and the remaining 80% purchases an ERC-20 token — all in a single atomic transaction.
phase 2
living art
12 automated check-ins: Chainlink Automation triggers price check-ins over the token's lifetime. each check-in records the current price, injected as a PostParam value that directly shapes the artwork's output.
the art responds to markets: as prices rise and fall in the real world, each artwork evolves. no two tokens will ever look the same because no two price histories are the same.
phase 3
withdrawal
claim your tokens: after all 12 check-ins are complete, the token owner can toggle the isWithdrawn PostParam to withdraw the ERC-20 tokens purchased at mint to their wallet.
03 — mint flow
what happens when you mint
a single transaction triggers an orchestrated sequence of smart contract interactions.
collector sends ETH
→
Art Blocks sliding scale minter
10% → Art Blocks
10% → artists
80% → ERC-20 purchase
↓
StratHooks.sol — PostParam hook
↓
GuardedEthTokenSwapper — Chainlink oracle validates fair price
↓
Uniswap V3 atomic swap → ERC-20 tokens held
revenue distribution
04 — token pool
13 supported ERC-20 tokens
one of these tokens is randomly selected at mint based on the token's hash. each uses a verified Chainlink TOKEN/ETH price feed and an optimal Uniswap V3 fee tier.
WBTC
LINK
UNI
AAVE
1INCH
COMP
CRV
LDO
MKR
APE
ZRX
USDT
SHIB
all tokens use 5% oracle validation tolerance. WBTC uses the ETH/BTC Chainlink feed for optimal precision.
05 — living artwork
price check-ins & visual evolution
each token is assigned a random interval between its 12 price check-ins. Chainlink Automation nodes monitor the contract and execute check-ins automatically.
⛓ Chainlink Automation
off-chain nodes call checkUpkeep() to determine when a price check-in is needed. when triggered, performUpkeep() executes on-chain with idempotency guarantees via round tracking.
⏹ PostParam augmentation
when the artwork is read (displayed), onTokenPMPReadAugmentation injects all recorded price check-ins as parameters. the generative script uses these to shape its visual output.
⑆ unique histories
because each token has a different ERC-20, a different mint time, and different check-in intervals, no two price histories — and therefore no two artworks — will ever be the same.
06 — withdrawal
claiming your tokens
once all 12 price check-ins are complete, the artistic journey concludes and the collector can reclaim the underlying ERC-20 tokens.
✓ all 12 check-ins complete
↓
token owner sets isWithdrawn = true via PostParam configure
↓
StratHooks contract transfers ERC-20 tokens
↓
✰ owner's wallet — tokens received
07 — technical deep dive
architecture & smart contracts
pool party's on-chain architecture orchestrates multiple smart contracts, oracles, and DEX protocols into a single cohesive system.
system architecture
ART BLOCKS ECOSYSTEM
Art Blocks
core contract
sliding scale
minter
studio contract
(on-chain scripts)
↓
PostParam hook
StratHooks.sol (UUPS proxy)
• onTokenPMPConfigure — mint logic
• onTokenPMPReadAugmentation
• checkUpkeep / performUpkeep
• token metadata & price history
• withdrawal logic
↓
GuardedEthToken Swapper.sol
• ETH → ERC20 swap
• MEV protection
• Uniswap V3
Chainlink oracles
• TOKEN/ETH feeds
• price validation
• 24hr staleness
Chainlink automation
• checkUpkeep
• performUpkeep
• round tracking
⛓ fully on-chain
pool party is configured on the BASEMENT Art Blocks Studio contract. all script information — the generative code that produces each artwork — is stored fully on-chain, ensuring permanence and decentralization.
⛨ MEV protection
the GuardedEthTokenSwapper uses Chainlink oracle price feeds to validate that Uniswap swaps execute at fair market prices. this eliminates sandwich attacks without requiring special function input arguments.
⚄ idempotent automation
Chainlink Automation uses a round-based system with per-token tracking. each upkeep encodes (tokenId, round) for guaranteed idempotency, preventing duplicate or stale executions.
08 — references
contracts & links
⑀ StratHooks
PostParam hook contract — mint logic, price check-ins, Chainlink Automation, withdrawal. UUPS upgradeable.
♽ GuardedEthTokenSwapper
MEV-protected ETH→ERC20 swapper using Chainlink oracles and Uniswap V3. 13 supported tokens.
▣ Art Blocks contracts
smart contracts that power Art Blocks — includes the Studio contract and PostMintParameters (PMP) system.
▦ StratHooks proxy (mainnet)
0x9a3f4307b1d12aea5e2633e6e10fb3cf9ac81f9a
UUPS proxy on ethereum mainnet
◪ GuardedEthTokenSwapper (mainnet)
0x7FFc0E3F2aC6ba73ada2063D3Ad8c5aF554ED05f
deployed and verified on ethereum mainnet
〜 pool party studio contract
0xaa00b2b2db36b8f8004a9aa96f0012005d92b300
BASEMENT Art Blocks Studio contract
∿ pool party on Art Blocks
view the collection, mint, and explore all pool party tokens.
◎ live view — pool party #0
view the live generative output of token #0 in the Art Blocks generator.
09 — contact us
