cryptopunks 2.0.1 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -3
- data/Manifest.txt +0 -3
- data/README.md +666 -526
- data/Rakefile +40 -32
- data/bin/cryptopunk +17 -17
- data/bin/punk +17 -17
- data/lib/cryptopunks/attributes.rb +147 -147
- data/lib/cryptopunks/colors.rb +162 -162
- data/lib/cryptopunks/composite.rb +38 -38
- data/lib/cryptopunks/contract/punksdata-assets.rb +338 -338
- data/lib/cryptopunks/contract/punksdata-contract.rb +55 -55
- data/lib/cryptopunks/contract/punksdata-meta.rb +2107 -2107
- data/lib/cryptopunks/dataset.rb +67 -67
- data/lib/cryptopunks/image.rb +35 -33
- data/lib/cryptopunks/structs.rb +161 -161
- data/lib/cryptopunks/tool.rb +382 -275
- data/lib/cryptopunks/version.rb +27 -23
- data/lib/cryptopunks.rb +66 -109
- metadata +16 -19
- data/config/spritesheet.csv +0 -402
- data/config/spritesheet.png +0 -0
- data/lib/cryptopunks/generator.rb +0 -223
data/README.md
CHANGED
@@ -1,526 +1,666 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
Alien
|
181
|
-
Alien Female
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
```
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
==>
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
!
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
```
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
==>
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-

|
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 [ [#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 [ [#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
|
+

|
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 
|
128
|
+
4x 
|
129
|
+
8x 
|
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
|
+

|
142
|
+

|
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) 0° / (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 Matt & John's® Punks 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
|
+

|
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
|
+

|
384
|
+

|
385
|
+

|
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
|
+

|
414
|
+

|
415
|
+

|
416
|
+
|
417
|
+
And x4:
|
418
|
+
|
419
|
+

|
420
|
+

|
421
|
+

|
422
|
+
|
423
|
+
|
424
|
+
And x8:
|
425
|
+
|
426
|
+

|
427
|
+

|
428
|
+

|
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
|
+

|
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
|
+

|
476
|
+

|
477
|
+

|
478
|
+

|
479
|
+
|
480
|
+
|
481
|
+
And 4x:
|
482
|
+
|
483
|
+

|
484
|
+

|
485
|
+

|
486
|
+

|
487
|
+
|
488
|
+
|
489
|
+
|
490
|
+
|
491
|
+
Let's try the second pack - that is, punks 100 to 199 in the series.
|
492
|
+
|
493
|
+
|
494
|
+

|
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
|
+

|
521
|
+

|
522
|
+

|
523
|
+

|
524
|
+
|
525
|
+
|
526
|
+
And 4x:
|
527
|
+
|
528
|
+

|
529
|
+

|
530
|
+

|
531
|
+

|
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 (Crypto) Punk (Pixel) Profile Pictures & (Generative) Art - 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.
|