cryptopunks 2.0.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,251 +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
- ## Command Line
16
-
17
- Use the `punk` (or `cryptopunk`) command line tool. Try:
18
-
19
- ```
20
- $ punk -h
21
- ```
22
-
23
- resulting in:
24
-
25
- ```
26
- Usage: cryptopunk [options] IDs
27
- Mint punk characters from composite (./punks.png) - for IDs use 0 to 9999
28
-
29
- Options:
30
- -z, --zoom=ZOOM Zoom factor x2, x4, x8, etc. (default: 1)
31
- -d, --dir=DIR Output directory (default: .)
32
- -f, --file=FILE True Official Genuine CryptoPunks™ composite image (default: ./punks.png)
33
- --offset=NUM Start counting at offset (default: 0)
34
- -h, --help Prints this help
35
- ```
36
-
37
-
38
- Step 0 - Download the True Official Genuine CryptoPunks™ composite image
39
-
40
- One time / first time only - Download the True Official Genuine CryptoPunks™ composite
41
- housing all 10 000 CryptoPunks
42
- in a single 2400×2400 image (~830 kb) for free.
43
- See [`punks.png` »](https://github.com/larvalabs/cryptopunks/blob/master/punks.png)
44
-
45
-
46
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punks-zoom.png)
47
-
48
-
49
-
50
-
51
- Now let's give it a try. Let's mint punk #0, #2890, and #8219:
52
-
53
- ```
54
- $ punk 0 2890 8219
55
- ```
56
-
57
- printing:
58
-
59
- ```
60
- ==> reading >./punks.png<...
61
- >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
62
- ✓ True Official Genuine CryptoPunks™ verified
63
- ==> (1/3) minting punk #0; writing to >./punk-0000.png<...
64
- ==> (2/3) minting punk #2890; writing to >./punk-2890.png<...
65
- ==> (3/3) minting punk #8219; writing to >./punk-8219.png<...
66
- ```
67
-
68
- And voila!
69
-
70
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000.png)
71
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890.png)
72
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219.png)
73
-
74
-
75
-
76
- **Bonus: Try the `-z/--zoom` factor x2, x4, x8, etc.**
77
-
78
- Let's give it a try. Let's mint punk #0, #2890, and #8219 in 2x format:
79
-
80
- ```
81
- $ punk --zoom 2 0 2890 8219
82
- # -or-
83
- $ punk -z2 0 2890 8219
84
- ```
85
-
86
- printing:
87
-
88
- ```
89
- ==> reading >./punks.png<...
90
- >ac39af4793119ee46bbff351d8cb6b5f23da60222126add4268e261199a2921b< SHA256 hash matching
91
- True Official Genuine CryptoPunks™ verified
92
- setting zoom to 2x
93
- ==> (1/3) minting punk #0; writing to >punk-0000x2.png<...
94
- ==> (2/3) minting punk #2890; writing to >punk-2890x2.png<...
95
- ==> (3/3) minting punk #8219; writing to >punk-8219x2.png<...
96
- ```
97
-
98
- And voila!
99
-
100
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x2.png)
101
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x2.png)
102
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x2.png)
103
-
104
- And x4:
105
-
106
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x4.png)
107
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x4.png)
108
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x4.png)
109
-
110
-
111
- And x8:
112
-
113
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-0000x8.png)
114
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-2890x8.png)
115
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-8219x8.png)
116
-
117
-
118
- And so on.
119
-
120
-
121
-
122
-
123
- ## 10 000 More Punks - Unauthorized? No Way?!- Fuck the Establishment - Yes, You Can - Do-It-Yourself - Use Your Own Collections
124
-
125
-
126
- Use the `-f, --file=FILE` option
127
- to pass along any unauthorized edition.
128
- Only make sure all punks are lined-up left-to-right, top-to-bottom
129
- in the 24x24 pixel format in the composite image.
130
-
131
-
132
- Let's try the 10 000 More Punks series housing punks in
133
- packs of a hundred each. Let's have a looksie at the first 100
134
- in the series.
135
-
136
-
137
- ![](https://github.com/cryptopunksnotdead/awesome-cryptopunks-bubble/raw/master/i/more-punks-1.png)
138
-
139
-
140
-
141
- Let's mint punk #0, #19, #50, and #89
142
- and let's add an offset of 10000
143
- (to start counting at 10000 instead of 0):
144
-
145
- ```
146
- $ punk 0 18 40 88 --file ./more-punks-1.png --offset 10000
147
- ```
148
-
149
- printing:
150
-
151
- ```
152
- ==> reading >./more-punks-1.png<...
153
- 240x240 (height x width)
154
- ==> (1/4) minting punk #10000; writing to >./punk-10000.png<...
155
- ==> (2/4) minting punk #10018; writing to >./punk-10018.png<...
156
- ==> (3/4) minting punk #10040; writing to >./punk-10040.png<...
157
- ==> (4/4) minting punk #10040; writing to >./punk-10088.png<...
158
- ```
159
-
160
- And voila!
161
-
162
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10000.png)
163
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10018.png)
164
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10040.png)
165
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10088.png)
166
-
167
-
168
- And 4x:
169
-
170
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10000x4.png)
171
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10018x4.png)
172
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10040x4.png)
173
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10088x4.png)
174
-
175
-
176
-
177
-
178
- Let's try the second pack - that is, punks 100 to 199 in the series.
179
-
180
-
181
- ![](https://github.com/cryptopunksnotdead/awesome-cryptopunks-bubble/raw/master/i/more-punks-2.png)
182
-
183
-
184
-
185
- Let's mint punk #0, #79, #80, and #90
186
- and let's add an offset of 10100
187
- (to start counting at 10000 plus 100 instead of 0):
188
-
189
- ```
190
- $ punk 0 79 80 90 --file ./more-punks-2.png --offset 10100
191
- ```
192
-
193
- printing:
194
-
195
- ```
196
- ==> reading >./more-punks-2.png<...
197
- 240x240 (height x width)
198
- ==> (1/4) minting punk #10100; writing to >./punk-10100.png<...
199
- ==> (2/4) minting punk #10179; writing to >./punk-10179.png<...
200
- ==> (3/4) minting punk #10180; writing to >./punk-10180.png<...
201
- ==> (4/4) minting punk #10190; writing to >./punk-10190.png<...
202
- ```
203
-
204
- And voila! Super rare - world's first female alien and much more.
205
-
206
-
207
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10100.png)
208
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10179.png)
209
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10180.png)
210
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10190.png)
211
-
212
-
213
- And 4x:
214
-
215
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10100x4.png)
216
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10179x4.png)
217
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10180x4.png)
218
- ![](https://github.com/cryptopunksnotdead/cryptopunks/raw/master/cryptopunks/i/punk-10190x4.png)
219
-
220
-
221
- And so on.
222
-
223
-
224
-
225
-
226
- ## Usage in Your Scripts
227
-
228
-
229
- Yes, you can mint punks in your own scripts
230
- and much more.
231
- See the
232
- [**Programming CryptoPunks & Copypastas Step-by-Step Booklet / Guide »**](https://github.com/cryptopunksnotdead/programming-cryptopunks)
233
-
234
-
235
-
236
- ## Install
237
-
238
- Just install the gem:
239
-
240
- $ gem install cryptopunks
241
-
242
-
243
- ## License
244
-
245
- The scripts are dedicated to the public domain.
246
- Use it as you please with no restrictions whatsoever.
247
-
248
-
249
- ## Questions? Comments?
250
-
251
- 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 / (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 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.