Art Blocks · Generative Art · On-Chain

Pool Party

A networked, generative art experience where real-world ERC-20 token prices shape each artwork over time.

by BASEMENT x ryley-o.eth

View on Art Blocks →
Pool Party #0
Pool Party #0 View Live →
Scroll
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
14
Popular ERC-20 tokens randomly assigned at mint
Price Check-ins
12
Automated Chainlink updates per token lifetime
MEV Protected
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.

Phase 1   Revenue Split

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.

Phase 2   Visual Evolution

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.

Mint Transaction Flow
flowchart TD
    A["πŸ§‘ Collector
sends ETH"]:::cyan -->|"mints via Art Blocks"| B["Art Blocks
Sliding Scale Minter"]:::pink B -->|"10%"| R1["Art Blocks
Revenue"]:::muted B -->|"10%"| R2["Artist
Revenue"]:::muted B -->|"80%"| C["StratHooks.sol
onTokenPMPConfigure
(PostParam Hook)"]:::yellow C --> D["GuardedEthTokenSwapper
Chainlink oracle validates fair price"]:::purple D -->|"Uniswap V3
atomic swap"| E["ERC-20 Tokens
held by StratHooks
until withdrawal"]:::orange classDef cyan fill:#0d2d2b,stroke:#5ce0d8,color:#5ce0d8 classDef pink fill:#2d0d1e,stroke:#f06292,color:#f06292 classDef yellow fill:#2d2a0d,stroke:#ffd54f,color:#ffd54f classDef purple fill:#1a0d2d,stroke:#7c4dff,color:#7c4dff classDef orange fill:#2d1a0d,stroke:#ff7043,color:#ff7043 classDef muted fill:#1a1a1f,stroke:#6b6b7b,color:#6b6b7b
Revenue Distribution
10%
10%
80%
Art Blocks Artists ERC-20 Token Purchase
04 — Token Pool

14 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
BAT
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 & PostParam Injection
flowchart LR
    M(("Mint")):::cyan -.->|"random
intervals"| C["C1 β†’ C2 β†’ ... β†’ C12
12 Automated Check-ins"]:::yellow C -->|"each price
recorded on-chain"| PS["On-Chain State
priceHistory array"]:::cyan PS -->|"onTokenPMPRead
Augmentation"| PP["PostParam Values
injected on display"]:::purple PP --> ART["🎨 Artwork
Responds & Evolves"]:::pink classDef cyan fill:#0d2d2b,stroke:#5ce0d8,color:#5ce0d8 classDef pink fill:#2d0d1e,stroke:#f06292,color:#f06292 classDef yellow fill:#2d2a0d,stroke:#ffd54f,color:#ffd54f classDef purple fill:#1a0d2d,stroke:#7c4dff,color:#7c4dff
πŸ”—

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.

Simulated price wave β€” illustrating how real-world price movements shape the art

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.

Withdrawal Flow
flowchart TD
    A["βœ… All 12 check-ins
complete"]:::yellow --> B["Token Owner
sets isWithdrawn = true
via PostParam configure"]:::cyan B --> C["StratHooks Contract
transfers ERC-20 tokens"]:::purple C --> D["πŸŽ‰ Collector's Wallet
tokens received"]:::pink classDef cyan fill:#0d2d2b,stroke:#5ce0d8,color:#5ce0d8 classDef pink fill:#2d0d1e,stroke:#f06292,color:#f06292 classDef yellow fill:#2d2a0d,stroke:#ffd54f,color:#ffd54f classDef purple fill:#1a0d2d,stroke:#7c4dff,color:#7c4dff
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
flowchart TD
    subgraph AB ["ART BLOCKS ECOSYSTEM"]
        direction LR
        ABC["Art Blocks
Core Contract"]:::cyan --> SSM["Sliding Scale
Minter
(variable price)"]:::cyan SSM --> SC["Studio Contract
(on-chain scripts)"]:::cyan end SC -->|"PostParam Hook"| SH subgraph SH_BOX ["StratHooks.sol (UUPS Proxy)"] SH["β€’ onTokenPMPConfigure β€” mint logic
β€’ onTokenPMPReadAugmentation
β€’ checkUpkeep / performUpkeep
β€’ Token metadata & price history
β€’ Withdrawal logic"]:::pink end SH --> GETS["GuardedEthToken
Swapper.sol
─────────────
β€’ ETH β†’ ERC20 swap
β€’ MEV protection
β€’ Uniswap V3"]:::yellow SH --> CLO["Chainlink
Oracles
─────────────
β€’ TOKEN/ETH feeds
β€’ Price validation
β€’ 24hr staleness"]:::purple SH --> CLA["Chainlink
Automation
─────────────
β€’ checkUpkeep
β€’ performUpkeep
β€’ Round tracking"]:::orange classDef cyan fill:#0d2d2b,stroke:#5ce0d8,color:#5ce0d8 classDef pink fill:#2d0d1e,stroke:#f06292,color:#f06292 classDef yellow fill:#2d2a0d,stroke:#ffd54f,color:#ffd54f classDef purple fill:#1a0d2d,stroke:#7c4dff,color:#7c4dff classDef orange fill:#2d1a0d,stroke:#ff7043,color:#ff7043
⛓️

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 — keeping it compatible with standard Art Blocks minting.

πŸ€–

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

Explore the open-source code and deployed contracts powering Pool Party.