Verifiable reveal
Provenance
How you can check that nobody — including us — chose which Shameless Ape landed on which token. SASC committed a final image-set fingerprint on-chain before the sale opened; after the sale, Chainlink randomness decides the alignment.
Values on this page
The provenance hash below is the value stored in the SASC contract on Base. It was committed on October 16, 2026, before the sale opened, and can never be changed. The other hashes are fingerprints the generator recorded for the same accepted run. A hash makes a substituted image set detectable by comparison; it does not prevent changing a metadata URI before the metadata freeze.
The problem this solves
In a generative collection, somebody has to produce the artwork before anybody can buy it. That creates an obvious temptation: whoever holds the finished images could quietly keep the best ones, or let friends buy the token numbers that map to them. Provenance is the answer to "how would you ever know?"
Step 1 — commit to the artwork in advance
The generator hashes each final original PNG with SHA-256, writes each digest as 64 lowercase hex characters, joins them with no separators in generator-position order (position 1 through 333), and hashes that string with SHA-256. That single value is the provenance hash. It commits to the artwork and its generator order. Token IDs exist as soon as tokens are minted; their artwork assignment becomes known at reveal. For SASC, the final hash was written into the contract once, on October 16, 2026, before the sale opened. The contract does not allow a sale or a reserve mint until it is set, and it can never be changed afterwards.
Because it is a hash of the whole set, changing a single pixel in a single image would change it. Anyone will be able to recompute it once the original images and their ordered per-image hashes are published, which is planned with the revealed metadata after the sale. The WebP previews on this site are resized copies and cannot reproduce it.
Algorithm
sha256( hex(sha256(png₁)) ‖ hex(sha256(png₂)) ‖ … ‖ hex(sha256(png333)) )
pngᵢ is the original PNG at generator position i, counted from 1; ‖ is plain concatenation; hex is lowercase. The generator's record calls its file index "token-id order": those numbers index the generated artwork. They do not assign that artwork to minted token IDs before reveal. The reveal rotation below determines that assignment.
Provenance hash — run production-01, committed on Base
8c5f959fda420f2dea141d3dfa7d5a3f9602ced5646971a2a004d3b4d454b3e3
Computed over all 333 positions of the accepted run. The same value is stored in the SASC contract (provenanceHash) and was finalized on Base on October 16, 2026.
Step 2 — draw one random number, after the sale
Once the sale supply sells out, or from 7 days after the public phase opened, the owner's Safe can request a random word from Chainlink VRF; that request closes the sale permanently in the same transaction. Until then the sale stays open unless it sells out or the owner closes or pauses it. Chainlink returns a verifiable random value that neither the team nor a miner can predict or grind. That value becomes the starting index: a single number between 0 and one less than the supply.
The reveal cannot happen while the sale is still open. That restriction matters: if the starting index were known mid-sale, anyone could compute exactly which token number carried which artwork and buy those positions. Closing the sale first removes the entire attack. This was a finding in the internal audit and it is now pinned by a regression test.
Step 3 — map tokens to generator positions
With the starting index fixed, every token derives its artwork by one formula. There is no lookup table anyone could edit.
position(t) = ((t − 1 + startingIndex) mod 333) + 1
Token 1 receives generator position startingIndex + 1. If startingIndex is 0, token 1 receives artwork at position 1; if it is 1, token 1 receives position 2. The mapping is a single rotation of the whole set, so it is a bijection — every one of the 333 artworks is used exactly once, and no two tokens can share one.
The Unforgivables ride along in this rotation like everything else. Their positions in the generated order come from the generation seed, fixed before the seed was published, and the VRF draw then decides which token numbers land on them. Nobody hand-picks a one-of-one, and nobody can buy a specific one.
Step 4 — freeze it
Before reveal, every token serves the shared unrevealed metadata. After reveal, setting the final base URI and permanently freezing metadata are separate required steps; neither has happened yet for the production collection. Once frozen, neither the base URI nor the placeholder can ever be changed again — not by the owner, not by anyone. URI updates emit ERC-4906 events for marketplace refreshes; the separate freeze operation closes those update paths.
What you can verify yourself
- Recompute the provenance hash from the published artwork and compare it with the value stored in the contract.
- Read the starting index from the contract and check it against the Chainlink VRF fulfilment on-chain.
- Apply the formula above to any token and confirm the artwork it serves matches.
- Check that the metadata freeze flag is set, so none of the above can change later.
These checks describe the production collection on Base mainnet. The SASC contract is deployed there and its provenance hash is committed and readable on-chain. Recomputing it needs the published artwork, which is released with the revealed metadata after the sale; the other checks follow the VRF reveal and the metadata freeze. A separate rehearsal contract on Base Sepolia completed its test mints and VRF reveal; its metadata freeze is pending. Those tests do not verify the production release.
Other hashes from this run
The generator records separate fingerprints so a run can be audited piece by piece. These are its records for run production-01, the run accepted for this release; only the provenance hash above is stored on-chain.
- Trait configuration
-
79e0541079baa995eec1db8db08f7420a9f8a7207d7b352bf37e79a469fb82a5 - Image set
-
4b6a28a7ec4553b9ef62a08d315e010498a6b9e6d146fb789ecc7ebf1c1835ee - Metadata set
-
6d386d40680abfcc94f04f886d7d05670ee82029c26175c86ba045bc5572e2bc - On-chain commitment
- Committed The provenance hash was finalized on Base on October 16, 2026 and cannot be changed. The original images are planned for publication with the revealed metadata after the sale.