an on-chain collaborative canvas where each contribution becomes a permanent mark on the evolving space, creating a layered record of expression written directly to the blockchain.
Public Space is a project inspired by my love for graffiti. Graffiti is layered, unsolicited presence. It uses public walls as contested, evolving surfaces. It exists in shared space without permission, carrying friction and risk. It is not authored by algorithms or structured by the logic of a single entity.
The internet promised something similar; a place where the world could meet regardless of geography, status or centralized verification. Yet most platforms reduce that space to siloed profiles inside linear timelines, where visibility is authored by algorithms rather than presence itself. Expression becomes sequential. What we see is ranked, filtered, and reordered. We do not coexist in space; we appear in feeds. The closest we get to dialogue is referencing someone else's post within a surface that constantly rewrites itself.
Blockchains were less a new invention than a correction; an attempt to preserve an internet that could not be centrally owned. A shared state machine, neutral territory by design. But instead of treating this as public ground, we abstracted it into markets. Blockspace became something to trade rather than something to occupy.
Public Space treats on-chain storage as a physical surface. Each contribution occupies blockspace directly, existing alongside others rather than beneath or inside them. Instead of scrolling through a timeline, you move across a shared canvas.
Contribute
Public Space is a collaborative contract where anyone can add tags to a shared virtual canvas. Each contribution is written directly to the chain and becomes part of the evolving surface. Over time the space grows through the accumulation of many individual marks, much like layers of graffiti on a physical wall.
To make contributing easier there is a studio tool available at studio.publicspace.network. The studio allows you to draw, compose, and prepare your tag before submitting it to the contract. Once added, your contribution becomes part of the canvas alongside all others.
When submitting a piece, contributors can optionally mint a Polaroid. A Polaroid is a snapshot of the contribution at the moment it is added to the canvas, minted as its own token. While the canvas itself continues to evolve as others add new work, the Polaroid preserves that specific moment as a collectible record of the piece as it first appeared.
Each contribution also includes an additional fee based on the number of bytes written to the contract. This creates a small economic cost proportional to the size of a submission, helping to discourage spam and encouraging more intentional contributions to the space.
Public Space stores contributions directly on-chain using a compact binary format designed to minimize storage while remaining easy to parse. Instead of storing full SVG or JSON structures, each submission is encoded into a small binary blob that describes the drawing instructions for the piece. These instructions contain the minimal information needed to reconstruct the lines, shapes, and placement of a tag within the shared space.
The format stores paths as sequences of coordinates and drawing commands. Because the values are stored as binary rather than text, the data footprint remains relatively small even for complex pieces. The viewer and studio tools interpret this binary format and reconstruct the geometry in the browser, turning the raw bytes back into visible line drawings.
To store this data efficiently on-chain, the contract uses chunked storage via SSTORE2. Each submission is written as one or more byte chunks and referenced by the contract. This approach allows larger contributions to be stored without exceeding transaction size limits while keeping the retrieval logic simple and gas-efficient.
The result is a system where the canonical representation of each contribution lives fully on-chain as a compact sequence of bytes. Frontend tools simply read these bytes and render them into the shared world, ensuring that the canvas can always be reconstructed directly from the contract itself.