
Chain Punks: 10,000 on-chain ASCII collectibles. Humans, robots, skulls and aliens. CC0.
Each punk is a face: a 21 by 13 grid of characters in Facemono, our cut of jgs5, set on black. A face has a type, then a head, eyes, a nose, a mouth, hair, facial hair, clothes, a hat, glasses and extras drawn from pools with Punks-style rarity: 177 attributes in all, some on thousands of punks, some on a handful.
Male 5,895 · Female 3,902 · Robot 130 · Skull 57 · Alien 16

No one draws a Chain Punk. A number does, and the contract keeps every rule it follows.
01 · The number becomes a genome. Hashing it gives thirty-two bytes. Nothing else is stored: this is the whole punk. 02 · It is drawn in eleven layers. Cloth first, then the head, and on to the hat. Each layer paints over the one before it, which is how a hat hides hair. What comes out is 21 by 13: 273 cells, each holding one character or nothing at all. 03 · Every two bytes choose one layer's option. The colour is part of the option's name, so Long Blonde and Long Dark are two options with their own weights. 04 · The chain draws it, and the seed hands it out. tokenURI builds the name, the attributes and the image inside the contract, as an SVG with the font embedded.
See it step by step: chainpunks.app/generation

Chain Punks: 10,000 on-chain ASCII collectibles. Humans, robots, skulls and aliens. CC0.
Each punk is a face: a 21 by 13 grid of characters in Facemono, our cut of jgs5, set on black. A face has a type, then a head, eyes, a nose, a mouth, hair, facial hair, clothes, a hat, glasses and extras drawn from pools with Punks-style rarity: 177 attributes in all, some on thousands of punks, some on a handful.
Male 5,895 · Female 3,902 · Robot 130 · Skull 57 · Alien 16

No one draws a Chain Punk. A number does, and the contract keeps every rule it follows.
01 · The number becomes a genome. Hashing it gives thirty-two bytes. Nothing else is stored: this is the whole punk. 02 · It is drawn in eleven layers. Cloth first, then the head, and on to the hat. Each layer paints over the one before it, which is how a hat hides hair. What comes out is 21 by 13: 273 cells, each holding one character or nothing at all. 03 · Every two bytes choose one layer's option. The colour is part of the option's name, so Long Blonde and Long Dark are two options with their own weights. 04 · The chain draws it, and the seed hands it out. tokenURI builds the name, the attributes and the image inside the contract, as an SVG with the font embedded.
See it step by step: chainpunks.app/generation

Chain Punks: 10,000 on-chain ASCII collectibles. Humans, robots, skulls and aliens. CC0.
Each punk is a face: a 21 by 13 grid of characters in Facemono, our cut of jgs5, set on black. A face has a type, then a head, eyes, a nose, a mouth, hair, facial hair, clothes, a hat, glasses and extras drawn from pools with Punks-style rarity: 177 attributes in all, some on thousands of punks, some on a handful.
Male 5,895 · Female 3,902 · Robot 130 · Skull 57 · Alien 16

No one draws a Chain Punk. A number does, and the contract keeps every rule it follows.
01 · The number becomes a genome. Hashing it gives thirty-two bytes. Nothing else is stored: this is the whole punk. 02 · It is drawn in eleven layers. Cloth first, then the head, and on to the hat. Each layer paints over the one before it, which is how a hat hides hair. What comes out is 21 by 13: 273 cells, each holding one character or nothing at all. 03 · Every two bytes choose one layer's option. The colour is part of the option's name, so Long Blonde and Long Dark are two options with their own weights. 04 · The chain draws it, and the seed hands it out. tokenURI builds the name, the attributes and the image inside the contract, as an SVG with the font embedded.
See it step by step: chainpunks.app/generation