$ ucubes --describe Buy $UCUBE on Uniswap v4. The hook auto-mints a sealed cube — no mint button. Reveal → isometric SVG. Hold → earn ETH fees.
Hard constraints. Same cube art in browser (generator.js) and on-chain (UcubesRenderer).
| NFT | ERC-721 · symbol UCUBE · name UCUBES |
|---|---|
| ERC-20 | $UCUBE · Uniswap v4 ETH/UCUBE pool + UcubesHook |
| Art | On-chain SVG via tokenURI · sealed until reveal · no IPFS |
| Seed | Reveal bytes32 → uint32(uint256(seed)) art seed |
| PRNG | mulberry32 in browser; on-chain keccak walk matches CubesRenderer |
| Canvas | 64 × 64 crispEdges · rendered at any display size |
| Field | 18 glyph stamps · isometric cube · modes pure/dual/split/prism |
| Subject | Isometric cube · faces a (top) / b (left) / c (right) |
| UNIT | 50_000_000 ether backs one sealed cube NFT |
| Mint | No public mint. Buy $UCUBE on the hooked v4 pool → NFT auto-issues per UNIT |
| Reveal | Owner calls reveal(tokenId) · burns fee · unlocks SVG · starts fee share |
| Social | x.com/Ucubes_ |
Swap ETH → $UCUBE on the hooked Uniswap v4 pool. UcubesHook.afterSwap records buy credit in the same tx.
Token transfer from PoolManager consumes credit. Every UNIT (50M) backs one sealed cube NFT — no mint UI, no separate tx.
After the delay, call reveal. Seed unlocks isometric SVG on-chain. Revealed cubes earn a share of swap fees.
// same swap tx // 1. UniversalRouter / UI swap ETH → $UCUBE // 2. UcubesHook.afterSwap → _addBuyCredit(tokenOut) // 3. CubesToken._update(PoolManager → buyer) → consumeBuyCredit → nft.mint(buyer) // later: nft.reveal(tokenId) → UcubesRenderer SVG
Feed a uint32. Weighted world roll + same path as the renderer. Rail forces a world on the field.
There is no public mint button. Cubes arrive when you buy $UCUBE on the hooked Uniswap v4 pool.
UcubesHook taxes swaps and tracks buy credit; Ucubes issues sealed NFTs 1:1 per UNIT;
UcubesRenderer draws isometric cubes after reveal.
// ownership graph
UcubesHook (v4 · flags 0x20CC · 2% tax)
└─ afterSwap BUY → buy credit (transient storage)
Ucubes ($UCUBE)
├─ UNIT = 50M ether · INITIAL_SUPPLY = 100B ether
├─ fees 95% holders / 3% official / 2% buyback
└─ _update(PoolManager → buyer) → consumeBuyCredit → nft.mint
UcubesNFT
├─ sealed until reveal(tokenId)
├─ revealSeed[tokenId] → bytes32
└─ renderer → UcubesRenderer
On every ETH→$UCUBE swap through the registered pool, the hook credits the token output. When the PoolManager delivers tokens to your wallet in that same transaction, the ERC-20 consumes the credit and mints sealed cubes for each full UNIT of purchased balance capacity.
UcubesHook)afterSwap buy creditnft.mint(buyer) automatically
Commit–reveal via blockhash. After delay, owner calls reveal(tokenId); seed is
keccak256(blockhash(target), tokenId, nft). Art uses uint32(uint256(seed)).
Crisp-edge SVG 64×64. Glyph field under an isometric cube. Modes: pure / dual / split / prism. Lab on this site mirrors the same palette and geometry for previews only.
(seed >> 8) % 64Loaded live from addresses.json. Pool link appears after deploy.
// loading…
[ "function reveal(uint256 tokenId) returns (bytes32)", "function claim() returns (uint256)", "function UNIT() view returns (uint256)", "function nft() view returns (address)", "function pendingReward(address) view returns (uint256)" ]
Cubes are not minted from this site. Buy $UCUBE on Uniswap v4;
the hook mints a sealed cube into your wallet in the same swap. Then reveal when ready.
pool pending deploy · after launch: buy $UCUBE → sealed cube lands in wallet
Yes. SVG is built from the reveal seed inside tokenURI. Sealed cubes show a placeholder until reveal.
Same palette table and cube geometry as UcubesRenderer. Lab seeds preview art; on-chain reveal seed is canonical.
Four modes. pure (~62%) stays mono. dual mixes field + faces from two worlds. split gives each face a different world. prism (~3%) is max clash. Roll = (seed >> 8) % 64.
Worlds are weighted (mono common, rose/lime scarce). Modes stack — prism + rare palette raises rewardWeight (100–300) for ETH fee share.
There is no mint button. Buy $UCUBE on the hooked Uniswap v4 pool. In that same swap the hook auto-mints one sealed cube per UNIT (50M tokens). Call reveal later to unlock art and fee share.
If balance falls below UNIT × NFT count, excess cubes burn automatically. Unclaimed rewards redirect to buyback.