Collection engine · Robinhood Chain 4663
Lock one subject.
Stamp the whole set.
A stamp pad makes the same impression every time. So does this.
Prompt tools redraw your character from zero on every image, and lose it. Stampad locks one rigged 3D model and swaps parts on it, so every token is the same character and the metadata describes what was actually rendered.
- 1
- subject geometry
- 36/36
- metadata = render
- 36/36
- identical on re-run
● Pre-launch$STAMP not launchedStudio opens after Phase 2

Scene readback
{ "Head": "Crown", "Hand": "Torch",
"Palette": "Frost", "Backdrop": "Moss" }Read from the 3D scene, not from the buttons. Odds under this table: 1 in 1,333.
This is the real subject file, running in your browser. Click a part: it attaches to the same mesh. Nothing is regenerated.
Stampad · $STAMP · contract address
Pre-launchTo be announced.
The token has not launched, so there is nothing to buy yet. This is where the address will be printed. Until it is, any contract claiming to be Stampad is a fake.
⚠ Verify the address against this page and the official channels before sending anything. Beware of look-alike contracts.
Plate 00 · the whole idea in one scroll
Thirty-six of thirty-six, on model.
Same silhouette, same face, same proportions — and for each one, a metadata file that was read back from the render.
36
/ 36 stamped
same mesh · 216 verts
sha256 3b22aba1d90e7be38b0a… · unchanged on every press
Inspect every token.
Every tile below was rendered off the same rigged mesh. Pick any two: the silhouette, the face, the proportions are identical, because there is nothing that could make them differ.
Phase 1 proof set · rendered 2026-09-19 · not a live collection · nothing here is for sale

Proof token
#0034
✓ readback matched
- Head
- Crown
- Hand
- Torch
- Palette
- Frost
- Backdrop
- Moss
- Subject
- sha256 3b22aba1d90e7be3…
Hover or tap a tile to read its metadata.
1
distinct subject geometry across 36 renders
SHA-256 of the mesh, re-measured after every render
36 / 36
tokens whose metadata matched the rendered scene
the build aborts on the first mismatch
36 / 36
pixel-identical on a full re-run
same seed, same pixels, on any machine
0
third-party generation calls to produce the set
the renderer runs on our own hardware
A single good image is the easy half.
Diffusion models are stochastic by design. The same sentence with a different seed is a different character — useful for art, fatal for a 10,000-piece set.
A prompt generator's loop
- “grey robot” + frost scenedrawn from zero → A
- “grey robot” + neon scenedrawn from zero → B
- “grey robot” + garden scenedrawn from zero → C
Illustration — our own render, distorted, to show what drift looks like. Not anyone else's output.
A, B and C are three different robots. Nothing connects them except a sentence.
Stampad's loop
- subject.glb + Crown · Frostphotographed → 1
- subject.glb + Cap · Neonphotographed → 2
- subject.glb + Helm · Gardenphotographed → 3
1, 2 and 3 are the same object under different conditions. There is no mechanism by which it could change.
01
The character drifts
“Subject lock” means pasting the description in front of every prompt and hoping it holds. Published runs in this category openly report keeping 15 of 36 renders.
02
The metadata lies
The JSON says Hat: Crown because the prompt said crown, not because a crown was drawn. Holders buy a rarity table that does not describe the art.
03
Five tools, five handoffs
A model, a layering script, a spreadsheet, a pinning dashboard, a contract. Every handoff is a chance for image 417 to be described as image 471.
04
Nobody can reproduce it
Re-render the collection and you get different art under the same token IDs. There is nothing for a third party to check.
- Subject is a sentence pasted in front of every promptSubject is a rigged mesh that is photographed, never regenerated
- The model redraws the character from zero each imageNothing is redrawn. Parts are swapped on the same geometry
- Reject rates of 40–60% are treated as normalReject rate is structurally zero — there is nothing to drift
- Rarity is a text label stapled to a pictureRarity is a readback of the scene that produced the image
- “Fees fund compute” — with no contract behind itThe vault is a contract with no owner and no withdraw path
- Output is a flat imageOutput is PNG + JSON + GLB — the 3D asset ships with the token
- Re-running the job gives a different collectionSame seed, same pixels, forever
Four presses, one sheet.
- 1
Lock a subject
Pick a base rig from the library, or bring your own. Output: one rigged mesh with named slots.
→ subject.glb
- 2
Set the trait table
Categories, values, weights, forbidden pairs. Rarity is previewed before a single image exists.
→ traits + seed
- 3
Stamp the set
Per token: sample a combination from the seed, show the matching parts, repaint the shared materials, render, read the scene back.
→ PNG + JSON + GLB
- 4
Publish
Pin the files, deploy the ERC-721, verify the source, mint. One wallet approval.
→ on-chain
Route A · ships first
Library rigs
- Curated base rigs: humanoid, creature, mech, critter, vehicle, totem, warden, drone
- Every rig arrives with named slots and a fitted trait kit
- Consistency guaranteed · rig failure rate zero · generation cost zero
Trade-off: Eight starting points, not infinite ones.
Route B · after A is proven
Custom subjects
- Describe a subject → concept sheet → pick one frame
- That frame becomes a mesh and is auto-rigged
- Rigging failures are caught before the subject can be locked, never after
Trade-off: More freedom, a QA gate, and a per-subject cost.
Slots, parts and palettes — every trait is a thing in the scene, not an adjective in a sentence
- head
- hats, helms, crowns, horns, halos
- hand.L / hand.R
- tools, banners, weapons, lanterns
- back
- capes, packs, wings, shells
- face
- visors, masks, expressions
- palette
- repaints shell · accent · visor · metal · trim — no vertex moves
- backdrop
- world and ground colour behind the shot
The seed contract.
Trait sampling is derived from a hash, never from a random number generator. This is the published function, running in your browser right now — type a seed and the whole table is recomputed.
roll = sha256( seed / token / category / attempt ) value = weighted_pick( category, roll )
- The same seed produces the same collection on any machine.
- A creator cannot quietly re-roll for a better personal token — the mapping is fixed before the first render.
- Anyone can recompute the full table from the seed and diff it against what was minted.
✓ 36 / 36 match the published proof metadata
Forbidden pair in this table: a Crown never appears with the Neon palette.
| # | Head | Hand | Palette | Backdrop | tries |
|---|---|---|---|---|---|
| 0001 | Crown | Flag | Garden | Dusk | 1 |
| 0002 | Cap | Flag | Garden | Studio | 1 |
| 0003 | Cap | Wrench | Garden | Studio | 1 |
| 0004 | None | Wrench | Aurora | Studio | 1 |
| 0005 | Helm | Wrench | Neon | Moss | 1 |
| 0006 | Cap | None | Neon | Studio | 1 |
| 0007 | Cap | Flag | Frost | Sand | 1 |
| 0008 | Helm | Flag | Frost | Sand | 1 |
| 0009 | None | None | Neon | Dusk | 1 |
| 0010 | Helm | Flag | Neon | Studio | 1 |
| 0011 | Helm | Wrench | Garden | Studio | 1 |
| 0012 | None | None | Frost | Moss | 1 |
First 12 tokens shown. “tries” is how many rolls a token needed to avoid a duplicate or a forbidden pair.
Head
- None36%
- Helm28%
- Cap31%
- Crown6%
Hand
- None31%
- Wrench39%
- Torch14%
- Flag17%
Palette
- Frost28%
- Garden33%
- Neon19%
- Aurora19%
Backdrop
- Studio31%
- Dusk17%
- Moss17%
- Ink25%
- Sand8%
- Rose3%
Observed share per value, against the declared weight (tick). Rarity is derived from the sample, never declared up front.
Metadata is a readback, not a label.
Standard pipeline
- 1decide traits
- 2write them into JSON
- 3ask a model for a picture
- 4hope the picture contains them
Stampad pipeline
- 1decide traits
- 2configure the scene
- 3render
- 4read the scene back
- 5write what was actually there
The render step asserts the readback against the intended combination and aborts the run on any mismatch. A collection cannot be published with a trait table that disagrees with its own art, because the build fails first.
Known gap, stated plainly: the check proves a part was in the scene, not that the camera could see it. A per-trait pixel-occupancy check ships before the first public mint.
The vault nobody owns.
The creator fee on $STAMP trading does not go to a personal wallet. The fee recipient is the RenderVault contract — and ETH that enters it can only leave by paying for renders.
01
Trade
$STAMP changes hands
02
Fee
launchpad creator fee
03
RenderVault
no owner · no withdraw
04
Renders
one credit, one image
What the contract has
- +pull() — anyone can move accrued fees in
- +claimCredits() — a verified buy becomes credits
- +consume() — burns one credit, emits the record
- +event Rendered(wallet, promptHash, imageHash, remaining)
What it deliberately does not have
- ✕no owner
- ✕no withdraw, no rescue, no sweep-to-treasury
- ✕no pause
- ✕no upgrade path
Those omissions are the product. A vault with an owner is a wallet with extra steps.
Pre-launch state · these become live chain reads the day the vault is deployed
- Contract
- not deployed yet
- Vault balance
- 0 ETH — nothing to hold yet
- Renders paid by the vault
- 0
- Live fee recipient
- shown here, read from chain, from launch day
This is a deliberate revenue sacrifice. The largest income stream in this category is routed away from the team on purpose, because it is the only way the central claim is checkable.
The token buys throughput. Nothing else.
The free tier finishes a real collection. $STAMP raises the ceiling — it never buys the right to exist on the site.
hold 0%
Free
- ✓Full studio, library rigs
- ✓50 renders per day
- ✓ZIP export, no watermark
- ✓Publish on-chain at the standard fee
hold 0.1%
Press
- ✓Everything in Free
- ✓500 renders per day
- ✓Batch size up to 500
- ✓Queue priority
hold 0.5%
Foundry
- ✓Everything in Press
- ✓5,000 renders per day
- ✓Custom subject route unlocked
- ✓Reduced publishing fee
hold 2%
Master
- ✓Everything in Foundry
- ✓Unmetered renders
- ✓Private rigs kept off the public library
- ✓Direct line on rig commissions
Render credits — the core utility
- Buy $STAMP
- credits are granted to the buying wallet
- Render one image
- one credit is consumed, an event is emitted
- Credits
- never transferable, never sellable
What the token may never do
- ✕No reward for holding
- ✕No distribution to holders
- ✕No claim button, no staking dashboard
- ✕No protocol buyback, no burn promise — a lever we control is a lever we can stop pulling
The flywheel — note what is not in it: no reward for holding
- more trading volume
- larger render vault
- more renders subsidised for everyone
- more collections shipped
- more proof pages in the wild
- more creators arrive
Where the money comes from, and where it may not go.
- 01
Publishing fee
A flat fee per on-chain deployment, reduced for Foundry and above.
- 02
Custom subjects
Per-subject fee covering concept generation, mesh conversion and rig QA.
- 03
Rig commissions
A bespoke rig built to a brief, delivered with slots and a fitted trait kit.
- 04
Studio production
Asset families for games and brands: one mesh, a variant matrix, stills, sprite sheets and GLBs. No token or mint required.
- 05
Render API
Headless pipeline for teams that want the engine without the interface.
Allocation model
- Development40%
- Render infrastructure25%
- Rig library and commissioned art15%
- Marketing and creator grants10%
- Reserve10%
Allocation of non-token revenue. Token trading fees are excluded entirely — they never reach the team, so they are not ours to allocate.
Token facts · fair launch
- Total supply
- 1,000,000,000 $STAMP
- Team allocation
- 0%
- Pre-sale
- none
- Distribution
- 100% through the launchpad curve
- Team purchases
- bought from the curve like anyone, locked publicly, lock transaction linked
- Supply behaviour
- burnable by any holder; the protocol runs no buyback and promises no burn
- Token status
- not launched
Known risk — disclosed up front
The launchpad factory's owner holds a timelocked power to change the creator fee recipient of any token launched through it. The current recipient cannot veto that change.
- ETH already inside the RenderVault is permanently safe — no owner, no withdraw path.
- The future fee stream could be redirected after the timelock elapses.
- The vault balance and the live fee recipient will both be displayed on this page, read from chain, so a redirect would be visible to everyone the day it happened.
One mesh in, five stations.
- 1
Browser studio
rig preview · trait table · rarity math · proof verifier
- 2
Render service
headless 3D renderer · deterministic · queue-backed · the mesh is loaded once per collection
- 3
Metadata builder
asserts readback = intended · writes ERC-721 JSON
- 4
Pinning layer
content-addressed storage for art + metadata · no timestamps in published images
- 5
Robinhood Chain 4663
StampadCollection (ERC-721) · RenderVault · $STAMP
StampadCollection · ERC-721
- Fixed supply cap, set at deployment
- No open mint — a batch moves only with a signed authorization that expires and works once
- The ordered list of token URIs is hashed into that signature
- Seed and subject mesh hash stored on the contract, immutable
- Exact-value payment · reentrancy guard · source verified before any mint
Stack
- Frontend
- Next.js · React · Tailwind · three.js
- Renderer
- headless 3D renderer driven by a build script
- Assets
- PNG · ERC-721 JSON · GLB per token
- Storage
- content-addressed pinning
- Contracts
- Solidity · ERC-721 · EIP-712 mint authorization
- Chain
- Robinhood Chain (EVM, chainId 4663, ETH gas)
Three numbers, and how a stranger checks them.
①
Subject geometries
must be 1
Distinct subject mesh hashes observed across the whole run. Anything else means the character drifted, and the build rejects the collection.
②
Metadata match
must be N of N
Tokens whose attribute list equals a readback of the scene that produced their image.
③
Reproducibility
must be identical
A re-run from the same seed compared pixel by pixel against the published art.
How a stranger checks a collection
- 01Read the seed and the subject hash from the contract
- 02Recompute the full trait table from the seed — the function is published and deterministic
- 03Diff that table against the on-chain token URIs
- 04Fetch the subject GLB, hash it, compare to the contract
- 05Re-render any token locally and compare to the pinned art
- Creator re-rolls until their own token is rareSeed is committed to the contract before the first mint
- Art swapped after a mint is signedThe token URI list is hashed into the mint authorization
- Farming render subsidy with failed jobsCredits are consumed on delivery, not on request
- A secondary market for creditsCredits are non-transferable
- Shipping a mislabelled collectionThe build fails on any readback mismatch, before pinning
Roadmap.
Phase 1done
The proof
done
- Rigged subject with named slots and bone-parented parts
- Hash-derived trait sampler with weights and forbidden pairs
- 36-token render, contact sheet, per-token metadata
- 1 geometry · 36 of 36 readback · 36 of 36 pixel-identical re-run
Phase 2in progress
The studio
weeks 1–4
- Eight library rigs, each with a fitted trait kit
- Web studio: rig preview, trait editor, rarity preview
- Render queue with sample and full-set runs
- ZIP export with art, metadata and per-token GLBs
Phase 3weeks 5–10
The chain
weeks 5–10
- RenderVault tested against a mainnet fork, then deployed
- StampadCollection reviewed and source-verified
- On-chain credits wired into the render gate
- Proof page, in-browser verifier and live vault reads
Phase 4months 3–9
The ecosystem
months 3–9
- Custom subject route with QA gates
- Sprite-sheet output for 2D games from the same rigs
- Animation clips inside the per-token GLB
- Render API · private rig libraries · community rig marketplace
Decisions, and what we watch.
- Subject is a mesh, not a promptText cannot hold a character across renders. Geometry can.
- Library rigs before custom subjectsEight guaranteed subjects beat infinite unreliable ones.
- Bring back the layer stackThe thing the category discarded is the thing that made it work.
- Metadata written from a scene readbackOtherwise rarity is a claim, not a description.
- Hash-derived sampling, not an RNGReproducibility, and a creator who cannot re-roll for himself.
- Fee recipient is an ownerless contractThe only way “trading funds the renders” is verifiable.
- Free tier finishes a real collectionWord of mouth needs a finished artefact, not a teaser.
- GLB ships with every tokenA second audience, and a real afterlife for the art.
What we watch
- +Collections published end to end, not drafts started
- +Renders delivered, and renders paid by the vault
- +Vault balance: in, out, remaining
- +Proof-page verifications run by third parties
- +Metadata match rate across every collection shipped — it stays at 100% or the thesis is dead
What we deliberately ignore
- –Follower counts
- –Drafts started
- –Token price as a product metric
- –Self-reported numbers of any kind
The honest take.
Strengths
Structural, not tuned
A competitor cannot close the gap with a better prompt. They would have to rebuild around geometry.
A number nobody else can publish
You cannot read back a scene you never built. The first project to publish metadata-match owns the standard.
The library compounds
Each rig makes every future collection cheaper and faster, and rigs do not expire the way a fine-tuned model does.
Route A costs nothing per render
A rival paying per call cannot undercut a renderer that runs on its own hardware.
Risks
Less freedom on day one
Route A trades subject freedom for reliability. Someone who wants any character from any sentence is not our user yet.
Rendered 3D has a look
It will not suit every collection, and it competes with hand-drawn art on taste, not on specs.
Rendering is heavy
Throughput is a real engineering constraint, not a slider.
A power we do not hold
The launchpad factory owner's fee-recipient power is outside our control. We can disclose it and display it. We cannot remove it.
Lock one subject. Stamp the whole set.
They prefix a prompt and hope. We rotate the same mesh. 36 of 36, not 15 of 36.



































