Skip to main contentSkip to navigation
Aleatory

Aleatory

Fully on-chain generative art on Tezos. The generator's code lives in contract storage, and each piece's seed is the hash of the operation that minted it.

Tezos
Generative Art
SmartPy
Next.js
On-chain
p5.js
IPFS
Open Source
GitHub

VISUAL SHOWCASE

Aleatory studio editor showing a p5.js generator's source code beside a single rendered flow-field artwork
Expand image

The Studio

Code on the left, a live preview on the right, and tabs for seeds, parameters, libraries, determinism checks, and on-chain cost.

Code plus a seed

Network
Tezos mainnet
Contracts
7, from router to registry
Runtimes
Canvas 2D, SVG, p5.js, custom
License
Unlicense (public domain)

Built to survive the platform

Generative art on Tezos has already watched platforms die. EditArt shut down and its pieces still render, because the code sat on chain. HEN shut down and the community rebuilt its front end as Teia, because the contracts were unowned and the data was open. Aleatory treats both lessons as requirements. The work has to survive the site, and anyone has to be able to rebuild the site. Every design decision in the contracts, the renderer, and the spec follows from those two rules.
Check mark

The studio

Four runtimes: Canvas 2D, SVG, p5.js, and custom engines. Start from a template, drop in an .html or .zip, or work in your own editor with a starter kit.
A sixteen-seed grid shows the range of a generator at a glance, since one good output proves very little.
Artists can declare up to five named, ranged parameters that a collector tunes before minting. The values are stored with the token beside the seed.
A cost estimator prices the payload against protocol constants read live from the chain.
Check mark

Determinism, checked by machine

Each seed runs twice in two fresh sealed frames, and the captures are compared byte for byte.
Network access is blocked by CSP and by API override, Math.random is swapped out, and every violation is reported before publish.
Pieces run in a separate isolate origin with no network. The parent hands it the code.
Libraries are declared by npm coordinates and a hash. Any mirror works, and a renderer refuses bytes that don't match.
Check mark

Contracts that give up control

Deploying a generator takes one operation, with the artist written in as admin in the initial storage. The platform never holds it, even briefly.
Code, code hash, and royalties have no setter. Artists can pause, reprice, shrink, or close an edition, and no entrypoint exists to grow one.
The collector's own operation mints the token and splits payment: price to the artist, render gas to the provider, nothing left in the contract.
Royalties cap at 25% and are credited, then claimed, so a recipient that can't receive tez never freezes trading.
Check mark

Open render providers

A provider runs each new piece once in a headless harness with the clock frozen and the network blocked, pins the capture, and publishes its metadata.
Registration is free and permissionless. The registry checks three on-chain views and lists the contract.
The reference provider charges 0.05 ꜩ per mint against about 0.0066 ꜩ in chain fees.
If every provider disappeared, new pieces would arrive without thumbnails and still render, because the code and seed already sit on chain.
Check mark

Open by default

ALEATORY-001 specifies the interface, so a third-party viewer, indexer, or marketplace can render every piece without reading this codebase.
Agent skills for artists, provider operators, and integrators are served from the site itself.
The list of what the front end hides is one public file, and hiding something there removes it from this site and nowhere else.
A Discord bot reads the chain and posts new generators and mints, with live totals written into channel names.

Audited, then rebuilt

Before mainnet, an adversarial audit of the full repository found three critical issues, including script execution through the sandbox shell and a server-side request forgery path in the render function. Its sharpest observation was that the comments described controls the code didn't implement. Each finding got a written response. Most were fixed in code and two were settled by documented design decisions. The contracts were redeployed, and the marketplace shipped without an admin escape hatch: it holds other people's tokens and tez, so it gets replaced, never upgraded.

Stack

Next.js 16
React 19
TypeScript
SmartPy (7 contracts)
Taquito
octez.connect
CodeMirror
Sandboxed isolate origin
Headless render provider
IPFS
Netlify
Discord bot

Art that outlives the site

Aleatory lets an artist put a fully on-chain generator on Tezos for a few tez and keep sole control of it. If the site went dark tomorrow, every piece minted on it would still render from chain state alone.

Cookie Consent

We only use cookies for site functionality and avoid any kind of tracking cookies or privacy invasive software.

Privacy-First Approach

Our optional Cloudflare analytics is privacy-focused and doesn't use cookies or track personal data.