Someday, owning a Matt & John's® Punk might signify just how early of an adopter you were into the world of blockchain and its thriving digital art scene. Or, they could just be a bunch of [24×24 pixel] images.
-- June 2017
There will be a desire and need to buy expensive [status symbols] in the digital realm [to "flex" how rich and stupid I am]. What could be more desirable than a small [24×24] pixelated [knitted cap-wearing ape] face? Matt & John's® Punk artwork [ #8219] just sold for $176,000.
-- January 2021
Ultra-rare alien [24×24 pixel] Matt & John's® Punk sells for 605 ETH, or $750,000. The investment thesis. "Aliens are the rarest form of Matt & John's® Punk and we believe that the acquired Alien [ #2890, one of nine] will be prized by collectors over time and mature into an iconic digital art piece."
-- January 2021
The Matt & John's® [CryptoPunksMarket] contract now holds 4,095 ETH (~$5.4M USD) in open bids and pending withdrawals.
-- January 2021
Crypto Punks
cryptopunks - generate your own 24×24 pixel punk images from text prompts incl. 2x/4x/8x zoom for bigger sizes (or crop 'n' save tiles from all-in-one composites incl. the True Official Matt & John's® Punks sha256-verified original 10 000 unique character collection)
- home :: github.com/cryptopunksnotdead/cryptopunks
- bugs :: github.com/cryptopunksnotdead/cryptopunks/issues
- gem :: rubygems.org/gems/cryptopunks
- rdoc :: rubydoc.info/gems/cryptopunks
New to Crypto Punks? See the Awesome CryptoPunks Bubble (Anno 2021) - Modern 24×24 Pixel Crypto Art on the Blockchain »
Command Line
Use the punk
(or cryptopunk
) command line tool. Try:
$ punk -h
resulting in:
NAME
punk - punk (or cryptopunk) command line tool
SYNOPSIS
punk [global options] command [command options] [arguments...]
VERSION
3.0.0
GLOBAL OPTIONS
-o, --out, --dir, --outdir=DIR - Output directory (default: .)
-f, --file=FILE - All-in-one
composite image (default: ./punks.png)
--offset=NUM - Start counting at offset (default: 0)
--seed=NUM - Seed for random number generation /
shuffle (default: 4142)
-z, --zoom=NUM - Zoom factor x2, x4, x8, etc. (default: 1)
--help - Show this message
--version - Display the program version
--verbose - (Debug) Show debug messages
COMMANDS
g, gen, - Generate punk characters from text attributes (from
scratch / zero) via builtin punk spritesheet
l, ls - List all punk archetype and attribute names from builtin
punk spritesheet
q, query - Query (builtin off-chain) punk contract for punk text
attributes by IDs - use 0 to 9999
t, tile - Get punk characters via image tiles from all-in-one punk
series composite (./punks.png) - for IDs use 0 to 9999
f, flip - Flip (vertically) all punk characters in all-in-one punk
series composite (./punks.png)
s, shuffle - Shuffle all punk characters (randomly) in all-in-one
punk series composite (./punks.png)
help - Shows a list of commands or help for one command
Generate Command
Generate punk characters from text attributes (from scratch / zero) via builtin punk spritesheet
Let's try punk #0:
$ punk gen female_2 earring blonde_bob green_eye_shadow
resulting in:
Let's try the -z/--zoom
factor 2x, 4x, 8x, etc.:
$ punk --zoom=4 gen female_2 earring blonde_bob green_eye_shadow
# -or-
$ punk -z4 g female_2 earring blonde_bob green_eye_shadow
resulting in:
2x 4x 8x
Let's try never-before-seen super-rare punks:
$ punk gen demon heart_shades
$ punk gen vampire_female wild_hair
resulting in:
Q: What punk archetypes and attributes can I use?
A: See the list command.
List Command
List all punk archetype and attribute names from builtin punk spritesheet
Let's try:
$ punk ls
# -or-
$ punk l
resulting in:
==> Archetypes
Male 1 / (m) - Archetype - Human
Male 2 / (m) - Archetype - Human
Male 3 / (m) - Archetype - Human
Male 4 / (m) - Archetype - Human
Female 1 / (f) - Archetype - Human
Female 2 / (f) - Archetype - Human
Female 3 / (f) - Archetype - Human
Female 4 / (f) - Archetype - Human
Zombie / (m) - Archetype - Zombie
Zombie Female / (f) - Archetype - Zombie
Ape / (m) - Archetype - Ape
Ape Female / (f) - Archetype - Ape
Alien / (m) - Archetype - Alien
Alien Female / (f) - Archetype - Alien
Demon / (m) - Archetype - Demon
Demon Female / (f) - Archetype - Demon
Mummy / (m) - Archetype - Mummy
Mummy Female / (f) - Archetype - Mummy
Orc / (m) - Archetype - Orc
Orc Female / (f) - Archetype - Orc
Robot / (m) - Archetype - Robot
Robot Female / (f) - Archetype - Robot
Skeleton / (m) - Archetype - Skeleton
Skeleton Female / (f) - Archetype - Skeleton
Vampire / (m) - Archetype - Vampire
Vampire Female / (f) - Archetype - Vampire
Zombie (Ape) / (m) - Archetype - Zombie
Alien (Ape) / (m) - Archetype - Alien
Alien 0° / (m) - Archetype - Alien
Alien 30° / (m) - Archetype - Alien
Alien 60° / (m) - Archetype - Alien
Alien 90° / (m) - Archetype - Alien
Alien 120° / (m) - Archetype - Alien
Alien 150° / (m) - Archetype - Alien
Alien 180° / (m) - Archetype - Alien
Alien 210° / (m) - Archetype - Alien
Alien 240° / (m) - Archetype - Alien
Alien 270° / (m) - Archetype - Alien
Alien 300° / (m) - Archetype - Alien
Alien 330° / (m) - Archetype - Alien
Alien (Ape) 0° / (m) - Archetype - Alien
Alien (Ape) 30° / (m) - Archetype - Alien
Alien (Ape) 60° / (m) - Archetype - Alien
Alien (Ape) 90° / (m) - Archetype - Alien
Alien (Ape) 120° / (m) - Archetype - Alien
Alien (Ape) 150° / (m) - Archetype - Alien
Alien (Ape) 180° / (m) - Archetype - Alien
Alien (Ape) 210° / (m) - Archetype - Alien
Alien (Ape) 240° / (m) - Archetype - Alien
Alien (Ape) 270° / (m) - Archetype - Alien
Alien (Ape) 300° / (m) - Archetype - Alien
Alien (Ape) 330° / (m) - Archetype - Alien
Alien Female 0° / (f) - Archetype - Alien
Alien Female 30° / (f) - Archetype - Alien
Alien Female 60° / (f) - Archetype - Alien
Alien Female 90° / (f) - Archetype - Alien
Alien Female 120° / (f) - Archetype - Alien
Alien Female 150° / (f) - Archetype - Alien
Alien Female 180° / (f) - Archetype - Alien
Alien Female 210° / (f) - Archetype - Alien
Alien Female 240° / (f) - Archetype - Alien
Alien Female 270° / (f) - Archetype - Alien
Alien Female 300° / (f) - Archetype - Alien
Alien Female 330° / (f) - Archetype - Alien
==> Attributes
3D Glasses / (m) - Attribute
3D Glasses / (f) - Attribute
Bandana / (m) - Attribute
Bandana / (f) - Attribute
Beanie / (m) - Attribute
Beanie / (f) - Attribute
Big Beard / (m) - Attribute
Big Shades / (m) - Attribute
Big Shades / (f) - Attribute
Black Lipstick / (f) - Attribute
Blonde Bob / (f) - Attribute
Blonde Short / (f) - Attribute
Blue Eye Shadow / (f) - Attribute
Buck Teeth / (m) - Attribute
Cap / (m) - Attribute
Cap / (f) - Attribute
Cap Forward / (m) - Attribute
Cap Forward / (f) - Attribute
Chinstrap / (m) - Attribute
Choker / (f) - Attribute
Cigarette / (m) - Attribute
Cigarette / (f) - Attribute
Classic Shades / (m) - Attribute
Classic Shades / (f) - Attribute
Clown Eyes Blue / (m) - Attribute
Clown Eyes Blue / (f) - Attribute
Clown Eyes Green / (m) - Attribute
Clown Eyes Green / (f) - Attribute
Clown Hair Green / (m) - Attribute
Clown Hair Green / (f) - Attribute
Clown Nose / (m) - Attribute
Clown Nose / (f) - Attribute
Cowboy Hat / (m) - Attribute
Cowboy Hat / (f) - Attribute
Crazy Hair / (m) - Attribute
Crazy Hair / (f) - Attribute
Dark Hair / (f) - Attribute
Do-rag / (m) - Attribute
Do-rag / (f) - Attribute
Earring / (m) - Attribute
Earring / (f) - Attribute
Eye Mask / (m) - Attribute
Eye Mask / (f) - Attribute
Eye Patch / (m) - Attribute
Eye Patch / (f) - Attribute
Fedora / (m) - Attribute
Fedora / (f) - Attribute
Front Beard / (m) - Attribute
Front Beard Dark / (m) - Attribute
Frown / (m) - Attribute
Frumpy Hair / (m) - Attribute
Frumpy Hair / (f) - Attribute
Green Eye Shadow / (f) - Attribute
Goat / (m) - Attribute
Gold Chain / (m) - Attribute
Gold Chain / (f) - Attribute
...
See the punks.spritesheet for more.
Query Command
Query (builtin off-chain) punk contract for punk text attributes by IDs - use 0 to 9999
Let's try punk #0:
$ punk query 0
# -or-
$ punk q 0
resulting in:
==> (1/1) punk #0...
female_2 earring blonde_bob green_eye_shadow
Let's try some top sellers:
$ punk query 7804 3100 5217 8857
# -or-
$ punk q 7804 3100 5217 8857
resulting in:
==> (1/4) punk #7804...
alien cap_forward pipe small_shades
==> (2/4) punk #3100...
alien headband
==> (3/4) punk #5217...
ape gold_chain knitted_cap
==> (4/4) punk #8857...
zombie wild_hair 3d_glasses
Note: Yes, you can pass the text attributes to the generate command to get a free "cleanroom" copy built from scratch / zero that you own 100% forever.
Tile Command
Get punk characters via image tiles from all-in-one punk series composite (./punks.png
) - for IDs use 0 to 9999
Step 0 - Download the True Official Genuine Matt & John's® Punks composite image
One time / first time only - Download the True Official Genuine Matt & John's® Punks composite
housing all 10 000 Punks
in a single 2400×2400 image (~830 kb) for free.
See punks.png
»
Now let's give it a try. Let's save punk #0, #2890, and #8219:
$ punk tile 0 2890 8219
printing:
==> reading >./punks.png<...
>ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
✓ True Official Genuine Matt & John's® Punks verified
==> (1/3) saving punk #0 to >./punk-0000.png<...
==> (2/3) saving punk #2890 to >./punk-2890.png<...
==> (3/3) saving punk #8219 to >./punk-8219.png<...
And voila!
Bonus: Try the -z/--zoom
factor 2x, 4x, 8x, etc.
Let's give it a try. Let's save punk #0, #2890, and #8219 in 2x format:
$ punk --zoom=2 tile 0 2890 8219
# -or-
$ punk -z2 t 0 2890 8219
printing:
==> reading >./punks.png<...
>ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
✓ True Official Genuine Matt & John's® Punks verified
setting zoom to 2x
==> (1/3) saving punk #0 to >[email protected]<...
==> (2/3) saving punk #2890 to >[email protected]<...
==> (3/3) saving punk #8219 to >[email protected]<...
And voila!
And x4:
And x8:
And so on.
10 000 More Punks - Unauthorized? No Way?!- Fuck the Establishment - Yes, You Can - Do-It-Yourself - Use Your Own Collections
Use the -f, --file=FILE
option
to pass along any unauthorized edition.
Only make sure all punks are lined-up left-to-right, top-to-bottom
in the 24x24 pixel format in the composite image.
Let's try the 10 000 More Punks series housing punks in packs of a hundred each. Let's have a looksie at the first 100 in the series.
Let's save punk #0, #19, #50, and #89 and let's add an offset of 10000 (to start counting at 10000 instead of 0):
$ punk --file=./more-punks-1.png --offset=10000 tile 0 18 40 88
printing:
==> reading >./more-punks-1.png<...
240x240 (height x width)
==> (1/4) saving punk #10000 to >./punk-10000.png<...
==> (2/4) saving punk #10018 to >./punk-10018.png<...
==> (3/4) saving punk #10040 to >./punk-10040.png<...
==> (4/4) saving punk #10040 to >./punk-10088.png<...
And voila!
And 4x:
Let's try the second pack - that is, punks 100 to 199 in the series.
Let's save punk #0, #79, #80, and #90 and let's add an offset of 10100 (to start counting at 10000 plus 100 instead of 0):
$ punk --file=./more-punks-2.png --offset=10100 tile 0 79 80 90
printing:
==> reading >./more-punks-2.png<...
240x240 (height x width)
==> (1/4) saving punk #10100 to >./punk-10100.png<...
==> (2/4) saving punk #10179 to >./punk-10179.png<...
==> (3/4) saving punk #10180 to >./punk-10180.png<...
==> (4/4) saving punk #10190 to >./punk-10190.png<...
And voila! Super rare - world's first female alien and much more.
And 4x:
And so on.
Flip Command
Flip (vertically) all punk characters in all-in-one punk series composite (./punks.png
)
Let's generate an all new punk series by turning all punks in the classic series from right-looking to left-looking by flipping vertically "one-by-one by hand [thanks to philip the intern]" all punks. Phree the phunks! Let's give it a try:
$ punk flip
# - same as -
$ punk --file=./punks.png flip
printing:
==> reading >./punks.png<...
>ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
✓ True Official Genuine Matt & John's® Punks verified
(1/10000) philip the intern flipping punk #0...
(2/10000) philip the intern flipping punk #1...
...
==> saving phunks flipped one-by-one by hand to >./punks-flipped.png<...
And voila!
Yes, you can. Use any all-in-one composite image in the 24x24 format. Use the --file
option.
Example - let's flip the 1000 More Punks collection:
$ punk --file=./morepunks.png flip
And so on.
Shuffle Command
Shuffle all punk characters (randomly) in all-in-one punk series composite (./punks.png
)
Let's generate an all new punks series by randomly shuffling "one-by-one by hand [thanks to philip the intern]" all punks. Let's give it a try:
$ punk shuffle
# - same as -
$ punk --file=./punks.png --seed=4142 shuffle
printing:
==> reading >./punks.png<...
>ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
✓ True Official Genuine Matt & John's® Punks verified
using random generation number seed >4142< for shuffle
#1369 now #0
#590 now #1
#1635 now #2
#3199 now #3
...
==> saving p(h)unks shuffled one-by-one by hand to >./punks-4142.png<...
And voila!
Note: The shuffle command also prints out all new index numbers for easy reference (to reuse attributes and so on):
All 10000 index numbers (zero-based) for reference using seed 4142:
[1369, 590, 1635, 3199, 1887, 7719, 5747, 2146, 6671, 7144,
1428, 7817, 1219, 163, 7186, 8488, 7191, 5240, 7226, 6574,
1619, 1701, 3018, 4745, 2438, 6474, 4756, 9300, 9382, 9528,
102, 1847, 2848, 8369, 7825, 842, 66, 1035, 2934, 2442,
...
8789, 7299, 4403, 5972, 338, 5635, 7566, 828, 8987, 9777]
Yes, you can. Use any all-in-one composite image in the 24x24 format. Use the --file
option.
Example - let's shuffle the 1000 More Punks collection:
$ punk --file=./morepunks.png shuffle
And so on.
Usage in Your Scripts
Yes, you can generate punks in your own scripts and much more. See the Programming (Crypto) Punk (Pixel) Profile Pictures & (Generative) Art - Step-by-Step Booklet / Guide »
Install
Just install the gem:
$ gem install cryptopunks
License
The scripts are dedicated to the public domain. Use it as you please with no restrictions whatsoever.
Questions? Comments?
Join us in the Punk Art discord (chat server). Yes you can. Your questions and commentary welcome.
Or post them over at the Help & Support page. Thanks.