Public Space
by rudxane
an on-chain collaborative canvas where each contribution becomes a permanent mark on the evolving space.
an on-chain collaborative canvas where each contribution becomes a permanent mark on the evolving space.
West Berlin. Germany. © Mark Power | Magnum Photos
Public Space is a project inspired by my love for street art and the underlying idea of public expression. Graffiti is layered, unsolicited presence that uses public walls as contested and evolving surfaces. It exists in shared space without permission in an evolving context where it is not authored through algorithms or gatekept by a single entity.
The internet promised something similar but larger; a place where the world could meet regardless of geography, status or centralized verification. Yet most platforms have reduced 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.
New York City, United States. © Bruce Davidson | Magnum Photos
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.
Public Space would not work in isolation and needs participation from people to add tags to the space. The contract is open for anyone to add their contribution which will be stored directly on the blockchain which then becomes a 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.
You can draw directly on the canvas using the free-draw tool, sketching lines as if you were quickly tagging a wall. If you prefer working elsewhere first, you can also import an SVG in the 2D and 3D path mode and the studio will convert the vector paths into the format used in Public Space. You can also add regular text which the space automatically converts into the custom font within the Public Space. You’re not limited to flat marks, paths can also exist in 3D space, letting you place drawings with depth and position them in the environment rather than just on a surface.
Tags are built using layers, which lets you combine multiple drawings and construct more complex pieces step by step. Animations can be created by adding frames for each layer, allowing your tag to move or evolve over time.
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.
Fee = Ξ.001 + (Ξ.0000005 * bytes)
You don't need to hold any tokens to add tags to the public space. The Public Space contract mints a single ERC-721 token, this token renders the live world directly from on-chain data, functioning both as the viewer and as a permanent backup of the environment.
Ownership of the token carries stewardship: the holder has the ability to censor individual tags within the viewer, shaping what remains visible in the shared space.
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras suscipit massa massa, sit amet facilisis tortor lobortis non. Sed dictum lobortis sem, a lobortis mauris dignissim at. Donec nec ipsum sem. Sed tristique, mi eu mollis elementum, neque orci porttitor arcu, vel fermentum nibh elit vel ligula. Duis sed enim non dolor tincidunt consectetur. Morbi id dolor sapien. Nulla hendrerit neque lorem, vitae efficitur nibh pharetra quis. Nunc in convallis magna. Aliquam erat volutpat. Duis ac sollicitudin lacus. In ex nunc, pretium eu consequat eget, tincidunt vel metus. Auction details for the 1/1 will be revealed soon
When adding a piece to the canvas, contributors can choose to mint a Snapshot. Each Snapshot is a separate ERC-721 token that captures the work at the exact moment of placement. While the canvas continues to evolve with new layers and interventions, the Snapshot remains fixed—preserving the original gesture, context, and intent as it first entered the space.
0x50534731010110008c000000000000000c5075626c69632053706163656e50535031010118006e0000000100000018000000000000000102ec17ffffffff0c05164000000000b47c85401351633f00000000c87beb3e000000000000803f000000000000803f0000803f00008040020e4d202d34202d34204c202d3420340c4d2034202d34204c2034203401
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.
With special thanks to the following people for their feedback:
rudxane - public space 2026