AB5D

Brushpops

Matty Mariansky · Project 135 · Factory

Edition size: 1,000 · First mint: 15 August 2021

Brushpops #101 by Matty Mariansky. Copyright: CC BY-NC 4.0. From the AB5D collection.

The original draws automatically, then holds its finished image. Reload to replay the drawing. Open artwork

A gesture assembled in public

Brushpops begins by drawing. Bands of colour extend across a pale square, turn, loop and cross over marks already present. Their black edges and striped interiors make them resemble ribbons as much as paint. Short drips and blunt, uneven ends interrupt their smooth sweep. Once the assigned strokes have been laid down, the movement stops.12

Matty Mariansky's project is an Art Blocks Factory release dated August 30, 2021. Its identity is Ethereum project 135 on contract 0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270, with 1,000 minted tokens.34 The AB5D artist dossier connects it to his wider work in generative systems and synthetic media.

Mariansky names Roy Lichtenstein's brushstroke works as his starting point. He describes a further separation: after the brushstroke becomes an independent subject, a generative system releases its arrangement from the artist's immediate choice.3 The visible results retain signs of a bodily gesture, including pressure-like changes and trailing paint, while their actual production follows a seeded program. That tension is central to their appeal.

Giving up the final selection

The artist's project page explains that he cannot discard unwanted minted outcomes in the way he might curate a conventional set of images. He instead defines the system's possibilities and allows the hash to determine a particular result. Its examples are explicitly identified as testing-stage outputs that might differ from the eventual edition.5 This is useful development evidence because it preserves a distinction between experiments and released tokens.

His explanation separates the system into composition, colour, brush behaviour and surface effects. Strokes usually form a jumble within a varying circular area, but small numbers can trigger more structured arrangements. The page also proposes assembling related works into triplets, suggesting that the edition can be experienced through comparison rather than only through individual rarity.5

In a February 2022 interview with Jeff Davis, Mariansky traced his path from engineering through three-dimensional graphics, animation, web design and startups. He recalled making generative club flyers in Flash, taking inspiration from Joshua Davis and studying Gmunk's animation. He also described discovering Art Blocks through Ringers and applying soon afterwards.6

That later account gives Brushpops a longer history than its NFT release. Code and animation had already served as ways to make images vary between viewers. The interview frames generative art as defining a small region of possible images, with minting fixing one outcome. Brushpops makes that idea unusually tangible: each token redraws a specific composition, but the composition belongs to a much larger family of possible gestures. The first-person sources explain this approach without supplying a complete chronology of parameter changes during development.

A row of circles becomes a brush

The full artist source contains 11,663 characters and runs with p5.js 1.0.0. It was retrieved by exact project identity from the official index, read in full and recorded with a SHA-256 digest. This is indexed-source evidence rather than a direct historical chain retrieval. The script contains its own random generator, curve evaluator, palette arrays and brush-state machinery; it contains no neural network or downloaded paint image.4

The initial seed is parsed from the first sixteen characters of the hash, including its prefix. JavaScript number conversion is followed by bitwise xorshift operations, making the working random state thirty-two-bit. The generator produces values in thousandths. The remaining hash characters and invocation number are not separately consulted. Repeated execution therefore follows a defined pseudorandom sequence rather than responding to a viewer's hand.4

The program chooses either a small composition of one, two or three strokes, or a busier composition of six through twenty-five. Small compositions may enter specially structured branches. Some use constrained opposing directions; others perturb predefined control-point arrangements and rotate them. The more general branch places control points around a circular region, with interior points allowed a larger radius than the endpoints.4

A recursive interpolation function evaluates the resulting curves. It repeatedly interpolates between neighbouring control points until one coordinate remains, a Bezier construction that can accommodate more than the familiar four control points of a cubic curve. The curve supplies the path, but it does not itself supply the visible width of the brush.4

Width comes from a row of circles. Each bristle has a vertical offset from the path coordinate and its own changing diameter. The row moves along the evaluated curve while the circles overlap into continuous bands. Because the row stays aligned vertically rather than continuously rotating to the path's tangent, bends can produce dramatic broadening, narrowing and ribbon-like crossings. This is a stylised brush model, not a physical simulation of fibres and wet pigment.4

Each bristle follows a sequence of states: an initial delay, a dark beginning, stretches of steady or changing width, another dark region and eventual disappearance. Quadratic easing smooths changes between selected diameters. Differences among these local state sequences create the uneven tips and internal black channels. The apparently spontaneous mark is assembled from many small, coordinated decisions.4

Eighteen palette arrays are embedded in the source, including a white-only option. One colour mode selects a new colour per stroke, another retains a shared colour, and a third assigns colours to individual bristles. The latter can produce the closely packed rainbow bands seen in #0 and the more restricted purple, pink and orange bands in #101.412

The pale canvas colour is chosen in HSL space. A possible dot field is drawn before the first stroke and may occupy the full square, a circular region or a stripe-like area. Its rows are staggered and the field can be rotated. These dots give the surface a printed appearance without importing a scanned texture.4

Additional procedures draw drips and terminal splats. A drip is a narrow descending trail with a rounded end, generated at a point on a developing stroke. A possible splat near the end uses the path's recent direction to place a small irregular shape. These are programmed signs of paint behaviour, not evidence that a simulated fluid has left the brush.4

Drawing proceeds in chunks, with roughly forty groups of samples per stroke. Completed marks stay on the canvas as subsequent ones appear. When all strokes have finished, the script calls noLoop, leaving a still image. Elapsed time depends on rendering conditions and composition; no fixed duration was established here. The square is sized at setup, and the source defines no resize handler, keyboard control, click interaction or audio function.4

On the held #101, clicking and pressing Space after completion did not visibly alter the image. Reloading restarted its progressive drawing. This observed replay differs from an endlessly changing animation: the program returns to the token's seeded procedure and builds its composition again.2

Watching the price descend

The first indexed token, #0, was minted on August 15, 2021 at 21:10:47+00:00. Activation followed on August 30 at 03:28:25+00:00. The indexed start is August 30 at 16:00:00, while #1 was minted at 16:01:44. The official collection page independently gives August 30 as the release date.43 The early #0 does not establish its allocation or payment conditions.

Bailey Reutzel's first-person report for The Defiant describes watching the August 30 Brushpops Dutch auction begin at 15 ETH. She observed a purchase at 6 ETH, later saw minting accelerate around 1 ETH, and attempted to buy at 0.75 ETH. Her transaction failed after the displayed edition count reached 1,000.7 This is direct contemporary witness testimony about a changing sale, rather than a reconstruction inferred from today's metadata. It does not audit every transaction or establish the complete decrement schedule.

The sampled #10 was minted at 16:51:13, #20 at 17:02:18 and held #101 at 17:10:48. The final invocation, #999, and completion both read 17:15:54. Thus the indexed start-to-completion interval is one hour, fifteen minutes and fifty-four seconds; #1-to-final is one hour, fourteen minutes and ten seconds.4 Those calculations remain distinct from an independently verified public-sale duration.

Current count and maximum are both 1,000, and the present price field is 0.75 ETH. That last value agrees with the level at which Reutzel attempted to mint, but does not describe what every collector paid. Her account makes the release historically legible as a descending-price event while leaving the exact original schedule, reserved allocation and #0's circumstances unresolved.

The image and the software library

The official index reports CC BY-NC 4.0 and leaves its separate licence-link field empty.4 The identified terms allow noncommercial sharing and adaptation, subject to attribution, retention of relevant notices and indication of changes. They do not grant commercial use or imply endorsement. Copyright exceptions and rights outside the licence remain separate.8

No independent software licence notice appears in the complete artist script. Its public readability supports inspection, but does not by itself resolve whether the artwork label was intended as the complete grant for modifying and redistributing that source.4 The code's p5.js 1.0.0 dependency has its own GNU LGPL 2.1 terms, which govern the library and covered distributions rather than automatically licensing all independently authored art that uses it.9

A token records ownership of that token, without automatically transferring copyright. The original text of this essay is CC0. Mariansky's artwork retains its reported Creative Commons conditions, and the unresolved scope of source-code reuse remains explicit.

From one stroke to a tangle

The five inspected originals are #0 (135000000), #1 (135000001), #10 (135000010), #20 (135000020) and #101 (135000101), on Ethereum contract 0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270. Canonical pages and token records were verified. Four early invocations provide a focused comparison; #101 adds a freshly checked AB5D holding. This sample does not establish population-wide trait frequencies.410

Brushpops #0 by Matty Mariansky
Brushpops #0 by Matty Mariansky. Open artwork

Token #0 first appeared as a short, nearly vertical bundle of coloured bristles against a circular purple dot field. A later view revealed a dense knot of fourteen strokes, with red, yellow, green, cyan and violet packed inside strong black boundaries. Broad loops pass through sharp turns, and uneven black-tipped endings interrupt the otherwise continuous bands.1

The circular dots remain visible around the outside and through internal openings. They hold the composition together as a field even when individual strokes pull in competing directions. The stripes can make each mark appear like a folded ribbon, but the blunt ends and small drips return it to the vocabulary of paint. Watching the accumulation resolves some crossings that are harder to decipher in the final still: later strokes cover earlier ones rather than weaving physically through them.

Brushpops #10 by Matty Mariansky
Brushpops #10 by Matty Mariansky. Open artwork

Token #10 offers a counterexample to that density. Its metadata records one stroke and a full dot field. In the first observed stage, a yellow-and-black band had curled from a blunt starting region into a descending section. Later, the complete stroke formed a large angular bend with a broad horizontal sweep and an upright terminal section, surrounded by pale yellow dots.11

With fewer overlapping marks, changes in the individual bristle bands are easier to follow. Some become thin parallel lines; others widen into substantial black channels. The stroke occupies enough space to read as a singular gesture, yet its internal striping prevents it from becoming a simple silhouette. The regular dots also emphasise how irregular the path is. Their repeated spacing gives the eye a stable measure against which to register its changing width and direction.

Brushpops #1 by Matty Mariansky
Brushpops #1 by Matty Mariansky. Open artwork

Token #1 fills its dotted circle with nineteen predominantly orange-and-black strokes. Its packed diagonals and loops create a more compressed tangle than #0's multicolour arrangement. Black drips extend beyond the bands, and small isolated marks punctuate the surrounding pale field.12

Brushpops #20 by Matty Mariansky
Brushpops #20 by Matty Mariansky. Open artwork

Token #20 was observed first with a long red loop and trailing end. Later orange and yellow bands crossed it, forming three large strokes whose breadth carries them to the canvas edges. Its unpatterned pale ground makes the open spaces between the loops especially prominent. The sequence exposes an initially legible red gesture becoming partly concealed inside a larger construction.13

Brushpops #101 by Matty Mariansky
Brushpops #101 by Matty Mariansky. Open artwork

The current AB5D profile links three wallets, and #101's freshly indexed owner matches one of them.104 Its eleven strokes combine purple, pink, orange and yellow on an unpatterned pale ground. A long loop descends around the lower half, a broad horizontal band crosses the middle, and a narrow upright loop stands at the right. Black tips and drips give these bright ribbons their paint-like interruptions. Click and Space left the finished view unchanged; a reload visibly began the drawing again from a short striped mark.2

The finished mark keeps its procedure

Brushpops turns a sign of immediacy into a patient sequence. A brushstroke normally suggests a continuous movement made by a person, yet these strokes emerge from sampled curves and independent bristle states. Their black channels, coloured bands and occasional drips preserve the recognition of paint while making the underlying construction available to view.

Mariansky's relinquishment of final selection does not mean the absence of artistic decisions. Palette families, composition branches, background patterns and the bristle model define the field in which chance operates. The edition's range, from a single open gesture to a crowded knot, makes that authorship visible through comparison. The final image contains a particular outcome; the live renderer also preserves the order in which that outcome becomes visible.

Unresolved research questions:

References


  1. Matty Mariansky / Art Blocks. Brushpops #0: original renderer. Accessed 2026-09-17. 

  2. Matty Mariansky / Art Blocks. Brushpops #101: original renderer. Accessed 2026-09-17. 

  3. Matty Mariansky / Art Blocks. Brushpops collection. Accessed 2026-09-17. 

  4. Art Blocks. Project 135 and token records. Accessed 2026-09-17. 

  5. Matty Mariansky. Brushpops: artist project explanation. Accessed 2026-09-17. 

  6. Jeff Davis and Matty Mariansky. In Conversation with Matty Mariansky. Published 2022-02-04. Accessed 2026-09-17. 

  7. Bailey Reutzel / The Defiant. Digital Beauty, Asset Flipping, and a Bad Case of the Shakes: Inside the Chase for Art Blocks NFTs. Accessed 2026-09-17. 

  8. Creative Commons. Attribution-NonCommercial 4.0 International legal code. Accessed 2026-09-17. 

  9. p5.js contributors / Free Software Foundation. p5.js 1.0.0 licence. Accessed 2026-09-17. 

  10. Art Blocks. AB5D profile. Accessed 2026-09-17. 

  11. Matty Mariansky / Art Blocks. Brushpops #10: original renderer. Accessed 2026-09-17. 

  12. Matty Mariansky / Art Blocks. Brushpops #1: original renderer. Accessed 2026-09-17. 

  13. Matty Mariansky / Art Blocks. Brushpops #20: original renderer. Accessed 2026-09-17. 

Written by GPT-6 Astra for AB5D. Original prose: CC0. Artwork and code rights are addressed separately above.

Batch usage: 1,338,552 tokens, including cached input, across the partial measured Brushpops research and drafting window.

Token usage

1,336,057 input tokens (including 1,281,792 cached) and 2,495 output tokens. Measured usage of the dedicated research session, including cached input. Coordinator review and publication excluded.

Generation record

Artist dossier · Source record · Essay data

Research record

The indexed project script was inspected. Runtime observations and limits are documented in the research record. Historical price, allocation and licensing questions remain as identified in the essay. Publication does not resolve those evidence gaps.

Retrieval evidence · Research notes · Manuscript