cryptopunks 2.1.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,633 +1,666 @@
1
- # Crypto Punks
2
-
3
- cryptopunks - mint your own 24×24 pixel punk images off chain from the True Official Genuine CryptoPunks™ sha256-verified original 10 000 unique character collection; incl. 2x/4x/8x zoom for bigger sizes
4
-
5
- * home :: [github.com/cryptopunksnotdead/cryptopunks](https://github.com/cryptopunksnotdead/cryptopunks)
6
- * bugs :: [github.com/cryptopunksnotdead/cryptopunks/issues](https://github.com/cryptopunksnotdead/cryptopunks/issues)
7
- * gem :: [rubygems.org/gems/cryptopunks](https://rubygems.org/gems/cryptopunks)
8
- * rdoc :: [rubydoc.info/gems/cryptopunks](http://rubydoc.info/gems/cryptopunks)
9
-
10
-
11
- New to Crypto Punks?
12
- See the [**Awesome CryptoPunks Bubble (Anno 2021) - Modern 24×24 Pixel Crypto Art on the Blockchain** »](https://github.com/cryptopunksnotdead/awesome-cryptopunks-bubble)
13
-
14
-
15
-
16
- ## Command Line
17
-
18
- Use the `punk` (or `cryptopunk`) command line tool. Try:
19
-
20
- ```
21
- $ punk -h
22
- ```
23
-
24
- resulting in:
25
-
26
- ```
27
- NAME
28
- punk - punk (or cryptopunk) command line tool
29
-
30
- SYNOPSIS
31
- punk [global options] command [command options] [arguments...]
32
-
33
- VERSION
34
- 2.1.0
35
-
36
- GLOBAL OPTIONS
37
- -d, --dir,
38
- -o, --out, --outdir=DIR - Output directory (default: .)
39
- -f, --file=FILE - True Official Genuine CryptoPunks™ all-in-one
40
- composite image (default: ./punks.png)
41
- --offset=NUM - Start counting at offset (default: 0)
42
- --seed=NUM - Seed for random number generation /
43
- shuffle (default: 4142)
44
- -z, --zoom=ZOOM - Zoom factor x2, x4, x8, etc. (default: 1)
45
-
46
- --help - Show this message
47
- --version - Display the program version
48
- --verbose - (Debug) Show debug messages
49
-
50
-
51
- COMMANDS
52
- g, gen, generate - Generate punk characters from text attributes (from
53
- scratch / zero) via builtin punk spritesheet
54
- l, ls, list - List all punk archetype and attribute names from builtin
55
- punk spritesheet
56
- q, query - Query (builtin off-chain) punk contract for punk text
57
- attributes by IDs - use 0 to 9999
58
- t, tile - Get punk characters via image tiles from all-in-one punk
59
- series composite (./punks.png) - for IDs use 0 to 9999
60
- f, flip - Flip (vertically) all punk characters in all-in-one punk
61
- series composite (./punks.png)
62
- s, shuffle - Shuffle all punk characters (randomly) in all-in-one
63
- punk series composite (./punks.png)
64
-
65
- help - Shows a list of commands or help for one command
66
- ```
67
-
68
-
69
- ### Generate Command
70
-
71
- _Generate punk characters from text attributes (from scratch / zero) via builtin punk spritesheet_
72
-
73
-
74
- Let's try punk #0:
75
-
76
- ```
77
- $ punk generate female_2 earring blonde_bob green_eye_shadow
78
- ```
79
-
80
- resulting in:
81
-
82
- ![](i/punk-0000.png)
83
-
84
- Let's try the `-z/--zoom` factor 2x, 4x, 8x, etc.:
85
-
86
- ```
87
- $ punk --zoom 4 generate female_2 earring blonde_bob green_eye_shadow
88
- # -or-
89
- $ punk -z2 g female_2 earring blonde_bob green_eye_shadow
90
- ```
91
-
92
- resulting in:
93
-
94
- 2x ![](i/punk-0000x2.png)
95
- 4x ![](i/punk-0000x4.png)
96
- 8x ![](i/punk-0000x8.png)
97
-
98
-
99
- Let's try never-before-seen super-rare punks:
100
-
101
- ```
102
- $ punk generate demon heart_shades
103
- $ punk generate vampire_female wild_hair
104
- ```
105
-
106
- resulting in:
107
-
108
- ![](i/demon.png)
109
- ![](i/vampire-female.png)
110
-
111
-
112
-
113
- Q: What punk archetypes and attributes can I use?
114
-
115
- A: See the list command.
116
-
117
-
118
- ### List Command
119
-
120
- _List all punk archetype and attribute names from builtin punk spritesheet_
121
-
122
-
123
- Let's try:
124
-
125
- ```
126
- $ punk list
127
- # -or-
128
- $ punk ls
129
- ```
130
-
131
- resulting in:
132
-
133
- ```
134
- ==> Archetypes
135
- Male 1 / (m) - Archetype - Human
136
- Male 2 / (m) - Archetype - Human
137
- Male 3 / (m) - Archetype - Human
138
- Male 4 / (m) - Archetype - Human
139
- Female 1 / (f) - Archetype - Human
140
- Female 2 / (f) - Archetype - Human
141
- Female 3 / (f) - Archetype - Human
142
- Female 4 / (f) - Archetype - Human
143
- Zombie / (m) - Archetype - Zombie
144
- Zombie Female / (f) - Archetype - Zombie
145
- Ape / (m) - Archetype - Ape
146
- Ape Female / (f) - Archetype - Ape
147
- Alien / (m) - Archetype - Alien
148
- Alien Female / (f) - Archetype - Alien
149
- Demon / (m) - Archetype - Demon
150
- Demon Female / (f) - Archetype - Demon
151
- Mummy / (m) - Archetype - Mummy
152
- Mummy Female / (f) - Archetype - Mummy
153
- Orc / (m) - Archetype - Orc
154
- Orc Female / (f) - Archetype - Orc
155
- Robot / (m) - Archetype - Robot
156
- Robot Female / (f) - Archetype - Robot
157
- Skeleton / (m) - Archetype - Skeleton
158
- Skeleton Female / (f) - Archetype - Skeleton
159
- Vampire / (m) - Archetype - Vampire
160
- Vampire Female / (f) - Archetype - Vampire
161
- Zombie (Ape) / (m) - Archetype - Zombie
162
- Alien (Ape) / (m) - Archetype - Alien
163
- Alien 0° / (m) - Archetype - Alien
164
- Alien 30° / (m) - Archetype - Alien
165
- Alien 60° / (m) - Archetype - Alien
166
- Alien 90° / (m) - Archetype - Alien
167
- Alien 120° / (m) - Archetype - Alien
168
- Alien 150° / (m) - Archetype - Alien
169
- Alien 180° / (m) - Archetype - Alien
170
- Alien 210° / (m) - Archetype - Alien
171
- Alien 240° / (m) - Archetype - Alien
172
- Alien 270° / (m) - Archetype - Alien
173
- Alien 300° / (m) - Archetype - Alien
174
- Alien 330° / (m) - Archetype - Alien
175
- Alien (Ape) / (m) - Archetype - Alien
176
- Alien (Ape) 30° / (m) - Archetype - Alien
177
- Alien (Ape) 60° / (m) - Archetype - Alien
178
- Alien (Ape) 90° / (m) - Archetype - Alien
179
- Alien (Ape) 120° / (m) - Archetype - Alien
180
- Alien (Ape) 150° / (m) - Archetype - Alien
181
- Alien (Ape) 180° / (m) - Archetype - Alien
182
- Alien (Ape) 210° / (m) - Archetype - Alien
183
- Alien (Ape) 240° / (m) - Archetype - Alien
184
- Alien (Ape) 270° / (m) - Archetype - Alien
185
- Alien (Ape) 300° / (m) - Archetype - Alien
186
- Alien (Ape) 330° / (m) - Archetype - Alien
187
- Alien Female / (f) - Archetype - Alien
188
- Alien Female 30° / (f) - Archetype - Alien
189
- Alien Female 60° / (f) - Archetype - Alien
190
- Alien Female 90° / (f) - Archetype - Alien
191
- Alien Female 120° / (f) - Archetype - Alien
192
- Alien Female 150° / (f) - Archetype - Alien
193
- Alien Female 180° / (f) - Archetype - Alien
194
- Alien Female 210° / (f) - Archetype - Alien
195
- Alien Female 240° / (f) - Archetype - Alien
196
- Alien Female 270° / (f) - Archetype - Alien
197
- Alien Female 300° / (f) - Archetype - Alien
198
- Alien Female 330° / (f) - Archetype - Alien
199
-
200
- ==> Attributes
201
- 3D Glasses / (m) - Attribute
202
- 3D Glasses / (f) - Attribute
203
- Bandana / (m) - Attribute
204
- Bandana / (f) - Attribute
205
- Beanie / (m) - Attribute
206
- Beanie / (f) - Attribute
207
- Big Beard / (m) - Attribute
208
- Big Shades / (m) - Attribute
209
- Big Shades / (f) - Attribute
210
- Black Lipstick / (f) - Attribute
211
- Blonde Bob / (f) - Attribute
212
- Blonde Short / (f) - Attribute
213
- Blue Eye Shadow / (f) - Attribute
214
- Buck Teeth / (m) - Attribute
215
- Cap / (m) - Attribute
216
- Cap / (f) - Attribute
217
- Cap Forward / (m) - Attribute
218
- Cap Forward / (f) - Attribute
219
- Chinstrap / (m) - Attribute
220
- Choker / (f) - Attribute
221
- Cigarette / (m) - Attribute
222
- Cigarette / (f) - Attribute
223
- Classic Shades / (m) - Attribute
224
- Classic Shades / (f) - Attribute
225
- Clown Eyes Blue / (m) - Attribute
226
- Clown Eyes Blue / (f) - Attribute
227
- Clown Eyes Green / (m) - Attribute
228
- Clown Eyes Green / (f) - Attribute
229
- Clown Hair Green / (m) - Attribute
230
- Clown Hair Green / (f) - Attribute
231
- Clown Nose / (m) - Attribute
232
- Clown Nose / (f) - Attribute
233
- Cowboy Hat / (m) - Attribute
234
- Cowboy Hat / (f) - Attribute
235
- Crazy Hair / (m) - Attribute
236
- Crazy Hair / (f) - Attribute
237
- Dark Hair / (f) - Attribute
238
- Do-rag / (m) - Attribute
239
- Do-rag / (f) - Attribute
240
- Earring / (m) - Attribute
241
- Earring / (f) - Attribute
242
- Eye Mask / (m) - Attribute
243
- Eye Mask / (f) - Attribute
244
- Eye Patch / (m) - Attribute
245
- Eye Patch / (f) - Attribute
246
- Fedora / (m) - Attribute
247
- Fedora / (f) - Attribute
248
- Front Beard / (m) - Attribute
249
- Front Beard Dark / (m) - Attribute
250
- Frown / (m) - Attribute
251
- Frumpy Hair / (m) - Attribute
252
- Frumpy Hair / (f) - Attribute
253
- Green Eye Shadow / (f) - Attribute
254
- Goat / (m) - Attribute
255
- Gold Chain / (m) - Attribute
256
- Gold Chain / (f) - Attribute
257
- ...
258
- ```
259
-
260
- See the [**punks.spritesheet**](https://github.com/cryptopunksnotdead/punks.spritesheet) for more.
261
-
262
-
263
-
264
-
265
- ### Query Command
266
-
267
- _Query (builtin off-chain) punk contract for punk text attributes by IDs - use 0 to 9999_
268
-
269
-
270
- Let's try punk #0:
271
-
272
- ```
273
- $ punk query 0
274
- # -or-
275
- $ punk q 0
276
- ```
277
-
278
- resulting in:
279
-
280
- ```
281
- ==> (1/1) punk #0...
282
- female_2 earring blonde_bob green_eye_shadow
283
- ```
284
-
285
- Let's try some top sellers:
286
-
287
- ```
288
- $ punk query 7804 3100 5217 8857
289
- # -or-
290
- $ punk q 7804 3100 5217 8857
291
- ```
292
-
293
- resulting in:
294
-
295
- ```
296
- ==> (1/4) punk #7804...
297
- alien cap_forward pipe small_shades
298
- ==> (2/4) punk #3100...
299
- alien headband
300
- ==> (3/4) punk #5217...
301
- ape gold_chain knitted_cap
302
- ==> (4/4) punk #8857...
303
- zombie wild_hair 3d_glasses
304
- ```
305
-
306
- Note: Yes, you can pass the text attributes to the generate command
307
- to get a free "cleanroom" copy built from scratch / zero
308
- that you own 100% forever.
309
-
310
-
311
-
312
- ### Tile Command
313
-
314
- _Get punk characters via image tiles from all-in-one punk series composite (`./punks.png`) - for IDs use 0 to 9999_
315
-
316
-
317
-
318
- Step 0 - Download the True Official Genuine CryptoPunks™ composite image
319
-
320
- One time / first time only - Download the True Official Genuine CryptoPunks™ composite
321
- housing all 10 000 CryptoPunks
322
- in a single 2400×2400 image (~830 kb) for free.
323
- See [`punks.png` »](https://github.com/larvalabs/cryptopunks/blob/master/punks.png)
324
-
325
-
326
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punks-zoom.png)
327
-
328
-
329
-
330
-
331
- Now let's give it a try. Let's save punk #0, #2890, and #8219:
332
-
333
- ```
334
- $ punk tile 0 2890 8219
335
- ```
336
-
337
- printing:
338
-
339
- ```
340
- ==> reading >./punks.png<...
341
- >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
342
- ✓ True Official Genuine CryptoPunks™ verified
343
- ==> (1/3) saving punk #0 to >./punk-0000.png<...
344
- ==> (2/3) saving punk #2890 to >./punk-2890.png<...
345
- ==> (3/3) saving punk #8219 to >./punk-8219.png<...
346
- ```
347
-
348
- And voila!
349
-
350
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000.png)
351
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890.png)
352
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219.png)
353
-
354
-
355
-
356
- **Bonus: Try the `-z/--zoom` factor 2x, 4x, 8x, etc.**
357
-
358
- Let's give it a try. Let's save punk #0, #2890, and #8219 in 2x format:
359
-
360
- ```
361
- $ punk --zoom 2 tile 0 2890 8219
362
- # -or-
363
- $ punk -z2 t 0 2890 8219
364
- ```
365
-
366
- printing:
367
-
368
- ```
369
- ==> reading >./punks.png<...
370
- >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
371
- ✓ True Official Genuine CryptoPunks™ verified
372
- setting zoom to 2x
373
- ==> (1/3) saving punk #0 to >punk-0000@2x.png<...
374
- ==> (2/3) saving punk #2890 to >punk-2890@2x.png<...
375
- ==> (3/3) saving punk #8219 to >punk-8219@2x.png<...
376
- ```
377
-
378
- And voila!
379
-
380
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x2.png)
381
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x2.png)
382
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x2.png)
383
-
384
- And x4:
385
-
386
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x4.png)
387
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x4.png)
388
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x4.png)
389
-
390
-
391
- And x8:
392
-
393
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x8.png)
394
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x8.png)
395
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x8.png)
396
-
397
-
398
- And so on.
399
-
400
-
401
-
402
-
403
- **10 000 More Punks - Unauthorized? No Way?!- Fuck the Establishment - Yes, You Can - Do-It-Yourself - Use Your Own Collections**
404
-
405
-
406
- Use the `-f, --file=FILE` option
407
- to pass along any unauthorized edition.
408
- Only make sure all punks are lined-up left-to-right, top-to-bottom
409
- in the 24x24 pixel format in the composite image.
410
-
411
-
412
- Let's try the 10 000 More Punks series housing punks in
413
- packs of a hundred each. Let's have a looksie at the first 100
414
- in the series.
415
-
416
-
417
- ![](https://github.com/cryptopunksnotdead/awesome-cryptopunks-bubble/raw/master/i/more-punks-1.png)
418
-
419
-
420
-
421
- Let's save punk #0, #19, #50, and #89
422
- and let's add an offset of 10000
423
- (to start counting at 10000 instead of 0):
424
-
425
- ```
426
- $ punk --file ./more-punks-1.png --offset 10000 tile 0 18 40 88
427
- ```
428
-
429
- printing:
430
-
431
- ```
432
- ==> reading >./more-punks-1.png<...
433
- 240x240 (height x width)
434
- ==> (1/4) saving punk #10000 to >./punk-10000.png<...
435
- ==> (2/4) saving punk #10018 to >./punk-10018.png<...
436
- ==> (3/4) saving punk #10040 to >./punk-10040.png<...
437
- ==> (4/4) saving punk #10040 to >./punk-10088.png<...
438
- ```
439
-
440
- And voila!
441
-
442
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10000.png)
443
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10018.png)
444
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10040.png)
445
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10088.png)
446
-
447
-
448
- And 4x:
449
-
450
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10000x4.png)
451
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10018x4.png)
452
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10040x4.png)
453
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10088x4.png)
454
-
455
-
456
-
457
-
458
- Let's try the second pack - that is, punks 100 to 199 in the series.
459
-
460
-
461
- ![](https://github.com/cryptopunksnotdead/awesome-cryptopunks-bubble/raw/master/i/more-punks-2.png)
462
-
463
-
464
-
465
- Let's save punk #0, #79, #80, and #90
466
- and let's add an offset of 10100
467
- (to start counting at 10000 plus 100 instead of 0):
468
-
469
- ```
470
- $ punk --file ./more-punks-2.png --offset 10100 tile 0 79 80 90
471
- ```
472
-
473
- printing:
474
-
475
- ```
476
- ==> reading >./more-punks-2.png<...
477
- 240x240 (height x width)
478
- ==> (1/4) saving punk #10100 to >./punk-10100.png<...
479
- ==> (2/4) saving punk #10179 to >./punk-10179.png<...
480
- ==> (3/4) saving punk #10180 to >./punk-10180.png<...
481
- ==> (4/4) saving punk #10190 to >./punk-10190.png<...
482
- ```
483
-
484
- And voila! Super rare - world's first female alien and much more.
485
-
486
-
487
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10100.png)
488
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10179.png)
489
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10180.png)
490
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10190.png)
491
-
492
-
493
- And 4x:
494
-
495
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10100x4.png)
496
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10179x4.png)
497
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10180x4.png)
498
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10190x4.png)
499
-
500
-
501
- And so on.
502
-
503
-
504
-
505
-
506
- ### Flip Command
507
-
508
- _Flip (vertically) all punk characters in all-in-one punk series composite (`./punks.png`)_
509
-
510
-
511
- Let's generate an all new punk series by turning all punks
512
- in the classic series
513
- from right-looking to left-looking
514
- by flipping vertically "one-by-one by hand [thanks to philip the intern]"
515
- all punks. Phree the phunks! Let's give it a try:
516
-
517
- ```
518
- $ punk flip
519
- # - same as -
520
- $ punk --file ./punks.png flip
521
- ```
522
-
523
- printing:
524
-
525
- ```
526
- ==> reading >./punks.png<...
527
- >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
528
- ✓ True Official Genuine CryptoPunks™ verified
529
- (1/10000) philip the intern flipping punk #0...
530
- (2/10000) philip the intern flipping punk #1...
531
- ...
532
- ==> saving phunks flipped one-by-one by hand to >./punks-flipped.png<...
533
- ```
534
-
535
- And voila!
536
-
537
- Yes, you can use any 24x24 composite. Use the `--file` option.
538
- Example - let's flip the 1000 More Punks collection:
539
-
540
- ```
541
- $ punk --file ./morepunks.png flip
542
- ```
543
-
544
- And so on.
545
-
546
-
547
-
548
-
549
- ### Shuffle Command
550
-
551
- _Shuffle all punk characters (randomly) in all-in-one punk series composite (`./punks.png`)_
552
-
553
- Let's generate an all new punks series by randomly shuffling
554
- "one-by-one by hand [thanks to philip the intern]".
555
- Let's give it a try:
556
-
557
- ```
558
- $ punk shuffle
559
- # - same as -
560
- $ punk --file ./punks.png --seed 4142 shuffle
561
- ```
562
-
563
- printing:
564
-
565
- ```
566
- ==> reading >./punks.png<...
567
- >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
568
- True Official Genuine CryptoPunks™ verified
569
- using random generation number seed >4142< for shuffle
570
- #1369 now #0
571
- #590 now #1
572
- #1635 now #2
573
- #3199 now #3
574
- ...
575
- ==> saving p(h)unks shuffled one-by-one by hand to >./punks-4142.png<...
576
- ```
577
-
578
- And voila!
579
-
580
- Note: The shuffle command also prints out
581
- all new index numbers for easy reference (to reuse attributes and so on):
582
-
583
- ```
584
- All 10000 index numbers (zero-based) for reference using seed 4142:
585
-
586
- [1369, 590, 1635, 3199, 1887, 7719, 5747, 2146, 6671, 7144,
587
- 1428, 7817, 1219, 163, 7186, 8488, 7191, 5240, 7226, 6574,
588
- 1619, 1701, 3018, 4745, 2438, 6474, 4756, 9300, 9382, 9528,
589
- 102, 1847, 2848, 8369, 7825, 842, 66, 1035, 2934, 2442,
590
- ...
591
- 8789, 7299, 4403, 5972, 338, 5635, 7566, 828, 8987, 9777]
592
- ```
593
-
594
-
595
-
596
- Yes, you can use any 24x24 composite. Use the `--file` option.
597
- Example - let's flip the 1000 More Punks collection:
598
-
599
- ```
600
- $ punk --file ./morepunks.png shuffle
601
- ```
602
-
603
- And so on.
604
-
605
-
606
-
607
-
608
- ## Usage in Your Scripts
609
-
610
-
611
- Yes, you can generate punks in your own scripts
612
- and much more.
613
- See the
614
- [**Programming CryptoPunks & Copypastas Step-by-Step Booklet / Guide »**](https://github.com/cryptopunksnotdead/programming-cryptopunks)
615
-
616
-
617
-
618
- ## Install
619
-
620
- Just install the gem:
621
-
622
- $ gem install cryptopunks
623
-
624
-
625
- ## License
626
-
627
- The scripts are dedicated to the public domain.
628
- Use it as you please with no restrictions whatsoever.
629
-
630
-
631
- ## Questions? Comments?
632
-
633
- Post them on the [CryptoPunksDev reddit](https://old.reddit.com/r/CryptoPunksDev). Thanks.
1
+ > Someday, owning a Matt & John's® Punk might signify just how early of an
2
+ > adopter you were into the world of blockchain and its thriving digital
3
+ > art scene. Or, they could just be a bunch of [24×24 pixel] images.
4
+ >
5
+ > -- [June 2017](https://mashable.com/2017/06/16/cryptopunks-ethereum-art-collectibles/)
6
+ >
7
+ >
8
+ > There will be a desire and need to buy expensive [status symbols]
9
+ > in the digital realm [to "flex" how rich and stupid I am].
10
+ > What could be more desirable than a small [24×24]
11
+ > pixelated [knitted cap-wearing ape] face?
12
+ > Matt & John's® Punk artwork [![](i/punk-8219.png) [#8219](https://www.larvalabs.com/cryptopunks/details/8219)] just sold for $176,000.
13
+ >
14
+ > -- [January 2021](https://decrypt.co/53519/an-ethereum-based-cryptopunk-artwork-just-sold-for-176000)
15
+ >
16
+ >
17
+ > Ultra-rare alien [24×24 pixel] Matt & John's® Punk
18
+ > sells for 605 ETH, or $750,000.
19
+ > The investment thesis. "Aliens are the rarest form of Matt & John's® Punk and
20
+ > we believe that the acquired Alien [![](i/punk-2890.png) [#2890](https://www.larvalabs.com/cryptopunks/details/2890), one of nine]
21
+ > will be prized by collectors over
22
+ > time and mature into an iconic digital art piece."
23
+ >
24
+ > -- [January 2021](https://cointelegraph.com/news/ultra-rare-alien-cryptopunk-nft-sells-for-605-eth-or-750-000)
25
+ >
26
+ >
27
+ > The Matt & John's® [CryptoPunksMarket] contract now holds 4,095 ETH (~$5.4M USD) in open bids and pending withdrawals.
28
+ >
29
+ > -- [January 2021](https://twitter.com/larvalabs/status/1353915659453870080)
30
+
31
+
32
+
33
+
34
+ # Crypto Punks
35
+
36
+ cryptopunks - generate your own 24×24 pixel punk images (off-chain) from the True Official Matt & John's® Punks sha256-verified original 10 000 unique character collection; incl. 2x/4x/8x zoom for bigger sizes
37
+
38
+ * home :: [github.com/cryptopunksnotdead/cryptopunks](https://github.com/cryptopunksnotdead/cryptopunks)
39
+ * bugs :: [github.com/cryptopunksnotdead/cryptopunks/issues](https://github.com/cryptopunksnotdead/cryptopunks/issues)
40
+ * gem :: [rubygems.org/gems/cryptopunks](https://rubygems.org/gems/cryptopunks)
41
+ * rdoc :: [rubydoc.info/gems/cryptopunks](http://rubydoc.info/gems/cryptopunks)
42
+
43
+
44
+ New to Crypto Punks?
45
+ See the [**Awesome CryptoPunks Bubble (Anno 2021) - Modern 24×24 Pixel Crypto Art on the Blockchain** »](https://github.com/cryptopunksnotdead/awesome-cryptopunks-bubble)
46
+
47
+
48
+
49
+ ## Command Line
50
+
51
+ Use the `punk` (or `cryptopunk`) command line tool. Try:
52
+
53
+ ```
54
+ $ punk -h
55
+ ```
56
+
57
+ resulting in:
58
+
59
+ ```
60
+ NAME
61
+ punk - punk (or cryptopunk) command line tool
62
+
63
+ SYNOPSIS
64
+ punk [global options] command [command options] [arguments...]
65
+
66
+ VERSION
67
+ 3.0.0
68
+
69
+ GLOBAL OPTIONS
70
+ -d, --dir,
71
+ -o, --out, --outdir=DIR - Output directory (default: .)
72
+ -f, --file=FILE - All-in-one
73
+ composite image (default: ./punks.png)
74
+ --offset=NUM - Start counting at offset (default: 0)
75
+ --seed=NUM - Seed for random number generation /
76
+ shuffle (default: 4142)
77
+ -z, --zoom=ZOOM - Zoom factor x2, x4, x8, etc. (default: 1)
78
+
79
+ --help - Show this message
80
+ --version - Display the program version
81
+ --verbose - (Debug) Show debug messages
82
+
83
+
84
+ COMMANDS
85
+ g, gen, generate - Generate punk characters from text attributes (from
86
+ scratch / zero) via builtin punk spritesheet
87
+ l, ls, list - List all punk archetype and attribute names from builtin
88
+ punk spritesheet
89
+ q, query - Query (builtin off-chain) punk contract for punk text
90
+ attributes by IDs - use 0 to 9999
91
+ t, tile - Get punk characters via image tiles from all-in-one punk
92
+ series composite (./punks.png) - for IDs use 0 to 9999
93
+ f, flip - Flip (vertically) all punk characters in all-in-one punk
94
+ series composite (./punks.png)
95
+ s, shuffle - Shuffle all punk characters (randomly) in all-in-one
96
+ punk series composite (./punks.png)
97
+
98
+ help - Shows a list of commands or help for one command
99
+ ```
100
+
101
+
102
+ ### Generate Command
103
+
104
+ _Generate punk characters from text attributes (from scratch / zero) via builtin punk spritesheet_
105
+
106
+
107
+ Let's try punk #0:
108
+
109
+ ```
110
+ $ punk generate female_2 earring blonde_bob green_eye_shadow
111
+ ```
112
+
113
+ resulting in:
114
+
115
+ ![](i/punk-0000.png)
116
+
117
+ Let's try the `-z/--zoom` factor 2x, 4x, 8x, etc.:
118
+
119
+ ```
120
+ $ punk --zoom 4 generate female_2 earring blonde_bob green_eye_shadow
121
+ # -or-
122
+ $ punk -z2 g female_2 earring blonde_bob green_eye_shadow
123
+ ```
124
+
125
+ resulting in:
126
+
127
+ 2x ![](i/punk-0000x2.png)
128
+ 4x ![](i/punk-0000x4.png)
129
+ 8x ![](i/punk-0000x8.png)
130
+
131
+
132
+ Let's try never-before-seen super-rare punks:
133
+
134
+ ```
135
+ $ punk generate demon heart_shades
136
+ $ punk generate vampire_female wild_hair
137
+ ```
138
+
139
+ resulting in:
140
+
141
+ ![](i/demon.png)
142
+ ![](i/vampire-female.png)
143
+
144
+
145
+
146
+ Q: What punk archetypes and attributes can I use?
147
+
148
+ A: See the list command.
149
+
150
+
151
+ ### List Command
152
+
153
+ _List all punk archetype and attribute names from builtin punk spritesheet_
154
+
155
+
156
+ Let's try:
157
+
158
+ ```
159
+ $ punk list
160
+ # -or-
161
+ $ punk ls
162
+ ```
163
+
164
+ resulting in:
165
+
166
+ ```
167
+ ==> Archetypes
168
+ Male 1 / (m) - Archetype - Human
169
+ Male 2 / (m) - Archetype - Human
170
+ Male 3 / (m) - Archetype - Human
171
+ Male 4 / (m) - Archetype - Human
172
+ Female 1 / (f) - Archetype - Human
173
+ Female 2 / (f) - Archetype - Human
174
+ Female 3 / (f) - Archetype - Human
175
+ Female 4 / (f) - Archetype - Human
176
+ Zombie / (m) - Archetype - Zombie
177
+ Zombie Female / (f) - Archetype - Zombie
178
+ Ape / (m) - Archetype - Ape
179
+ Ape Female / (f) - Archetype - Ape
180
+ Alien / (m) - Archetype - Alien
181
+ Alien Female / (f) - Archetype - Alien
182
+ Demon / (m) - Archetype - Demon
183
+ Demon Female / (f) - Archetype - Demon
184
+ Mummy / (m) - Archetype - Mummy
185
+ Mummy Female / (f) - Archetype - Mummy
186
+ Orc / (m) - Archetype - Orc
187
+ Orc Female / (f) - Archetype - Orc
188
+ Robot / (m) - Archetype - Robot
189
+ Robot Female / (f) - Archetype - Robot
190
+ Skeleton / (m) - Archetype - Skeleton
191
+ Skeleton Female / (f) - Archetype - Skeleton
192
+ Vampire / (m) - Archetype - Vampire
193
+ Vampire Female / (f) - Archetype - Vampire
194
+ Zombie (Ape) / (m) - Archetype - Zombie
195
+ Alien (Ape) / (m) - Archetype - Alien
196
+ Alien 0° / (m) - Archetype - Alien
197
+ Alien 30° / (m) - Archetype - Alien
198
+ Alien 60° / (m) - Archetype - Alien
199
+ Alien 90° / (m) - Archetype - Alien
200
+ Alien 120° / (m) - Archetype - Alien
201
+ Alien 150° / (m) - Archetype - Alien
202
+ Alien 180° / (m) - Archetype - Alien
203
+ Alien 210° / (m) - Archetype - Alien
204
+ Alien 240° / (m) - Archetype - Alien
205
+ Alien 270° / (m) - Archetype - Alien
206
+ Alien 300° / (m) - Archetype - Alien
207
+ Alien 330° / (m) - Archetype - Alien
208
+ Alien (Ape) / (m) - Archetype - Alien
209
+ Alien (Ape) 30° / (m) - Archetype - Alien
210
+ Alien (Ape) 60° / (m) - Archetype - Alien
211
+ Alien (Ape) 90° / (m) - Archetype - Alien
212
+ Alien (Ape) 120° / (m) - Archetype - Alien
213
+ Alien (Ape) 150° / (m) - Archetype - Alien
214
+ Alien (Ape) 180° / (m) - Archetype - Alien
215
+ Alien (Ape) 210° / (m) - Archetype - Alien
216
+ Alien (Ape) 240° / (m) - Archetype - Alien
217
+ Alien (Ape) 270° / (m) - Archetype - Alien
218
+ Alien (Ape) 300° / (m) - Archetype - Alien
219
+ Alien (Ape) 330° / (m) - Archetype - Alien
220
+ Alien Female 0° / (f) - Archetype - Alien
221
+ Alien Female 30° / (f) - Archetype - Alien
222
+ Alien Female 60° / (f) - Archetype - Alien
223
+ Alien Female 90° / (f) - Archetype - Alien
224
+ Alien Female 120° / (f) - Archetype - Alien
225
+ Alien Female 150° / (f) - Archetype - Alien
226
+ Alien Female 180° / (f) - Archetype - Alien
227
+ Alien Female 210° / (f) - Archetype - Alien
228
+ Alien Female 240° / (f) - Archetype - Alien
229
+ Alien Female 270° / (f) - Archetype - Alien
230
+ Alien Female 300° / (f) - Archetype - Alien
231
+ Alien Female 330° / (f) - Archetype - Alien
232
+
233
+ ==> Attributes
234
+ 3D Glasses / (m) - Attribute
235
+ 3D Glasses / (f) - Attribute
236
+ Bandana / (m) - Attribute
237
+ Bandana / (f) - Attribute
238
+ Beanie / (m) - Attribute
239
+ Beanie / (f) - Attribute
240
+ Big Beard / (m) - Attribute
241
+ Big Shades / (m) - Attribute
242
+ Big Shades / (f) - Attribute
243
+ Black Lipstick / (f) - Attribute
244
+ Blonde Bob / (f) - Attribute
245
+ Blonde Short / (f) - Attribute
246
+ Blue Eye Shadow / (f) - Attribute
247
+ Buck Teeth / (m) - Attribute
248
+ Cap / (m) - Attribute
249
+ Cap / (f) - Attribute
250
+ Cap Forward / (m) - Attribute
251
+ Cap Forward / (f) - Attribute
252
+ Chinstrap / (m) - Attribute
253
+ Choker / (f) - Attribute
254
+ Cigarette / (m) - Attribute
255
+ Cigarette / (f) - Attribute
256
+ Classic Shades / (m) - Attribute
257
+ Classic Shades / (f) - Attribute
258
+ Clown Eyes Blue / (m) - Attribute
259
+ Clown Eyes Blue / (f) - Attribute
260
+ Clown Eyes Green / (m) - Attribute
261
+ Clown Eyes Green / (f) - Attribute
262
+ Clown Hair Green / (m) - Attribute
263
+ Clown Hair Green / (f) - Attribute
264
+ Clown Nose / (m) - Attribute
265
+ Clown Nose / (f) - Attribute
266
+ Cowboy Hat / (m) - Attribute
267
+ Cowboy Hat / (f) - Attribute
268
+ Crazy Hair / (m) - Attribute
269
+ Crazy Hair / (f) - Attribute
270
+ Dark Hair / (f) - Attribute
271
+ Do-rag / (m) - Attribute
272
+ Do-rag / (f) - Attribute
273
+ Earring / (m) - Attribute
274
+ Earring / (f) - Attribute
275
+ Eye Mask / (m) - Attribute
276
+ Eye Mask / (f) - Attribute
277
+ Eye Patch / (m) - Attribute
278
+ Eye Patch / (f) - Attribute
279
+ Fedora / (m) - Attribute
280
+ Fedora / (f) - Attribute
281
+ Front Beard / (m) - Attribute
282
+ Front Beard Dark / (m) - Attribute
283
+ Frown / (m) - Attribute
284
+ Frumpy Hair / (m) - Attribute
285
+ Frumpy Hair / (f) - Attribute
286
+ Green Eye Shadow / (f) - Attribute
287
+ Goat / (m) - Attribute
288
+ Gold Chain / (m) - Attribute
289
+ Gold Chain / (f) - Attribute
290
+ ...
291
+ ```
292
+
293
+ See the [**punks.spritesheet**](https://github.com/cryptopunksnotdead/punks.spritesheet) for more.
294
+
295
+
296
+
297
+
298
+ ### Query Command
299
+
300
+ _Query (builtin off-chain) punk contract for punk text attributes by IDs - use 0 to 9999_
301
+
302
+
303
+ Let's try punk #0:
304
+
305
+ ```
306
+ $ punk query 0
307
+ # -or-
308
+ $ punk q 0
309
+ ```
310
+
311
+ resulting in:
312
+
313
+ ```
314
+ ==> (1/1) punk #0...
315
+ female_2 earring blonde_bob green_eye_shadow
316
+ ```
317
+
318
+ Let's try some top sellers:
319
+
320
+ ```
321
+ $ punk query 7804 3100 5217 8857
322
+ # -or-
323
+ $ punk q 7804 3100 5217 8857
324
+ ```
325
+
326
+ resulting in:
327
+
328
+ ```
329
+ ==> (1/4) punk #7804...
330
+ alien cap_forward pipe small_shades
331
+ ==> (2/4) punk #3100...
332
+ alien headband
333
+ ==> (3/4) punk #5217...
334
+ ape gold_chain knitted_cap
335
+ ==> (4/4) punk #8857...
336
+ zombie wild_hair 3d_glasses
337
+ ```
338
+
339
+ Note: Yes, you can pass the text attributes to the generate command
340
+ to get a free "cleanroom" copy built from scratch / zero
341
+ that you own 100% forever.
342
+
343
+
344
+
345
+ ### Tile Command
346
+
347
+ _Get punk characters via image tiles from all-in-one punk series composite (`./punks.png`) - for IDs use 0 to 9999_
348
+
349
+
350
+
351
+ Step 0 - Download the True Official Genuine CryptoPunks™ composite image
352
+
353
+ One time / first time only - Download the True Official Genuine Matt & John's® Punks composite
354
+ housing all 10 000 Punks
355
+ in a single 2400×2400 image (~830 kb) for free.
356
+ See [`punks.png` »](https://github.com/larvalabs/cryptopunks/blob/master/punks.png)
357
+
358
+
359
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punks-zoom.png)
360
+
361
+
362
+
363
+
364
+ Now let's give it a try. Let's save punk #0, #2890, and #8219:
365
+
366
+ ```
367
+ $ punk tile 0 2890 8219
368
+ ```
369
+
370
+ printing:
371
+
372
+ ```
373
+ ==> reading >./punks.png<...
374
+ >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
375
+ True Official Genuine Matt & John's® Punks verified
376
+ ==> (1/3) saving punk #0 to >./punk-0000.png<...
377
+ ==> (2/3) saving punk #2890 to >./punk-2890.png<...
378
+ ==> (3/3) saving punk #8219 to >./punk-8219.png<...
379
+ ```
380
+
381
+ And voila!
382
+
383
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000.png)
384
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890.png)
385
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219.png)
386
+
387
+
388
+
389
+ **Bonus: Try the `-z/--zoom` factor 2x, 4x, 8x, etc.**
390
+
391
+ Let's give it a try. Let's save punk #0, #2890, and #8219 in 2x format:
392
+
393
+ ```
394
+ $ punk --zoom 2 tile 0 2890 8219
395
+ # -or-
396
+ $ punk -z2 t 0 2890 8219
397
+ ```
398
+
399
+ printing:
400
+
401
+ ```
402
+ ==> reading >./punks.png<...
403
+ >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
404
+ ✓ True Official Genuine Matt & John's® Punks verified
405
+ setting zoom to 2x
406
+ ==> (1/3) saving punk #0 to >punk-0000@2x.png<...
407
+ ==> (2/3) saving punk #2890 to >punk-2890@2x.png<...
408
+ ==> (3/3) saving punk #8219 to >punk-8219@2x.png<...
409
+ ```
410
+
411
+ And voila!
412
+
413
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x2.png)
414
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x2.png)
415
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x2.png)
416
+
417
+ And x4:
418
+
419
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x4.png)
420
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x4.png)
421
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x4.png)
422
+
423
+
424
+ And x8:
425
+
426
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x8.png)
427
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x8.png)
428
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x8.png)
429
+
430
+
431
+ And so on.
432
+
433
+
434
+
435
+
436
+ **10 000 More Punks - Unauthorized? No Way?!- Fuck the Establishment - Yes, You Can - Do-It-Yourself - Use Your Own Collections**
437
+
438
+
439
+ Use the `-f, --file=FILE` option
440
+ to pass along any unauthorized edition.
441
+ Only make sure all punks are lined-up left-to-right, top-to-bottom
442
+ in the 24x24 pixel format in the composite image.
443
+
444
+
445
+ Let's try the 10 000 More Punks series housing punks in
446
+ packs of a hundred each. Let's have a looksie at the first 100
447
+ in the series.
448
+
449
+
450
+ ![](https://github.com/cryptopunksnotdead/awesome-cryptopunks-bubble/raw/master/i/more-punks-1.png)
451
+
452
+
453
+
454
+ Let's save punk #0, #19, #50, and #89
455
+ and let's add an offset of 10000
456
+ (to start counting at 10000 instead of 0):
457
+
458
+ ```
459
+ $ punk --file ./more-punks-1.png --offset 10000 tile 0 18 40 88
460
+ ```
461
+
462
+ printing:
463
+
464
+ ```
465
+ ==> reading >./more-punks-1.png<...
466
+ 240x240 (height x width)
467
+ ==> (1/4) saving punk #10000 to >./punk-10000.png<...
468
+ ==> (2/4) saving punk #10018 to >./punk-10018.png<...
469
+ ==> (3/4) saving punk #10040 to >./punk-10040.png<...
470
+ ==> (4/4) saving punk #10040 to >./punk-10088.png<...
471
+ ```
472
+
473
+ And voila!
474
+
475
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10000.png)
476
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10018.png)
477
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10040.png)
478
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10088.png)
479
+
480
+
481
+ And 4x:
482
+
483
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10000x4.png)
484
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10018x4.png)
485
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10040x4.png)
486
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10088x4.png)
487
+
488
+
489
+
490
+
491
+ Let's try the second pack - that is, punks 100 to 199 in the series.
492
+
493
+
494
+ ![](https://github.com/cryptopunksnotdead/awesome-cryptopunks-bubble/raw/master/i/more-punks-2.png)
495
+
496
+
497
+
498
+ Let's save punk #0, #79, #80, and #90
499
+ and let's add an offset of 10100
500
+ (to start counting at 10000 plus 100 instead of 0):
501
+
502
+ ```
503
+ $ punk --file ./more-punks-2.png --offset 10100 tile 0 79 80 90
504
+ ```
505
+
506
+ printing:
507
+
508
+ ```
509
+ ==> reading >./more-punks-2.png<...
510
+ 240x240 (height x width)
511
+ ==> (1/4) saving punk #10100 to >./punk-10100.png<...
512
+ ==> (2/4) saving punk #10179 to >./punk-10179.png<...
513
+ ==> (3/4) saving punk #10180 to >./punk-10180.png<...
514
+ ==> (4/4) saving punk #10190 to >./punk-10190.png<...
515
+ ```
516
+
517
+ And voila! Super rare - world's first female alien and much more.
518
+
519
+
520
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10100.png)
521
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10179.png)
522
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10180.png)
523
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10190.png)
524
+
525
+
526
+ And 4x:
527
+
528
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10100x4.png)
529
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10179x4.png)
530
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10180x4.png)
531
+ ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10190x4.png)
532
+
533
+
534
+ And so on.
535
+
536
+
537
+
538
+
539
+ ### Flip Command
540
+
541
+ _Flip (vertically) all punk characters in all-in-one punk series composite (`./punks.png`)_
542
+
543
+
544
+ Let's generate an all new punk series by turning all punks
545
+ in the classic series
546
+ from right-looking to left-looking
547
+ by flipping vertically "one-by-one by hand [thanks to philip the intern]"
548
+ all punks. Phree the phunks! Let's give it a try:
549
+
550
+ ```
551
+ $ punk flip
552
+ # - same as -
553
+ $ punk --file ./punks.png flip
554
+ ```
555
+
556
+ printing:
557
+
558
+ ```
559
+ ==> reading >./punks.png<...
560
+ >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
561
+ ✓ True Official Genuine Matt & John's® Punks verified
562
+ (1/10000) philip the intern flipping punk #0...
563
+ (2/10000) philip the intern flipping punk #1...
564
+ ...
565
+ ==> saving phunks flipped one-by-one by hand to >./punks-flipped.png<...
566
+ ```
567
+
568
+ And voila!
569
+
570
+ Yes, you can. Use any all-in-one composite image in the 24x24 format. Use the `--file` option.
571
+ Example - let's flip the 1000 More Punks collection:
572
+
573
+ ```
574
+ $ punk --file ./morepunks.png flip
575
+ ```
576
+
577
+ And so on.
578
+
579
+
580
+
581
+
582
+ ### Shuffle Command
583
+
584
+ _Shuffle all punk characters (randomly) in all-in-one punk series composite (`./punks.png`)_
585
+
586
+ Let's generate an all new punks series by randomly shuffling
587
+ "one-by-one by hand [thanks to philip the intern]" all punks.
588
+ Let's give it a try:
589
+
590
+ ```
591
+ $ punk shuffle
592
+ # - same as -
593
+ $ punk --file ./punks.png --seed 4142 shuffle
594
+ ```
595
+
596
+ printing:
597
+
598
+ ```
599
+ ==> reading >./punks.png<...
600
+ >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
601
+ ✓ True Official Genuine Matt & John's® Punks verified
602
+ using random generation number seed >4142< for shuffle
603
+ #1369 now #0
604
+ #590 now #1
605
+ #1635 now #2
606
+ #3199 now #3
607
+ ...
608
+ ==> saving p(h)unks shuffled one-by-one by hand to >./punks-4142.png<...
609
+ ```
610
+
611
+ And voila!
612
+
613
+ Note: The shuffle command also prints out
614
+ all new index numbers for easy reference (to reuse attributes and so on):
615
+
616
+ ```
617
+ All 10000 index numbers (zero-based) for reference using seed 4142:
618
+
619
+ [1369, 590, 1635, 3199, 1887, 7719, 5747, 2146, 6671, 7144,
620
+ 1428, 7817, 1219, 163, 7186, 8488, 7191, 5240, 7226, 6574,
621
+ 1619, 1701, 3018, 4745, 2438, 6474, 4756, 9300, 9382, 9528,
622
+ 102, 1847, 2848, 8369, 7825, 842, 66, 1035, 2934, 2442,
623
+ ...
624
+ 8789, 7299, 4403, 5972, 338, 5635, 7566, 828, 8987, 9777]
625
+ ```
626
+
627
+
628
+
629
+ Yes, you can. Use any all-in-one composite image in the 24x24 format. Use the `--file` option.
630
+ Example - let's shuffle the 1000 More Punks collection:
631
+
632
+ ```
633
+ $ punk --file ./morepunks.png shuffle
634
+ ```
635
+
636
+ And so on.
637
+
638
+
639
+
640
+
641
+ ## Usage in Your Scripts
642
+
643
+
644
+ Yes, you can generate punks in your own scripts
645
+ and much more.
646
+ See the
647
+ [**Programming CryptoPunks & Copypastas Step-by-Step Booklet / Guide »**](https://github.com/cryptopunksnotdead/programming-cryptopunks)
648
+
649
+
650
+
651
+ ## Install
652
+
653
+ Just install the gem:
654
+
655
+ $ gem install cryptopunks
656
+
657
+
658
+ ## License
659
+
660
+ The scripts are dedicated to the public domain.
661
+ Use it as you please with no restrictions whatsoever.
662
+
663
+
664
+ ## Questions? Comments?
665
+
666
+ Post them on the [D.I.Y. Punk (Pixel) Art reddit](https://old.reddit.com/r/DIYPunkArt). Thanks.