This project deploys a contract to the Ethereum mainnet that can store 24x24 blocks of punk attributes as png images.
Each block is numbered and indexed by its name.
A view function combines the attributes, outputting the composite image into a single SVG image.
Anybody can register and store new punk block attributes, then use to create their own hybrid punks, or display the original punks.
There are two contracts deployed, punkblocks.sol
is used for storage and
renderblocks.sol
is used for generating the svg images. Originally,
punkblocks.sol
did both storage and rendering, however, a bug was discovered
with the layer ordering, so the new contract rectifies this bug while building
on top of the punkblocks.sol. Both contracts are deployed to the Ethereum
mainnet.
punkblocks.sol
=> 0xe91eb909203c8c8cad61f86fc44edee9023bda4d
renderblocks.sol
=> 0x829e113C94c1acb6b1b5577e714E486bb3F86593
punkblocks.sol
seal() transaction done.
Update: It's not possible to deploy the contracts in the current form if the chain impliments EIP-3860. This EIP has been enabled on Ethereum in the Shangai upgrade. The above contracts were deployed just before this upgrade. To fix the contracts, they would need to be initialized via an external function (TODO).
Here is a simple web UI for generating punks from blocks, or viewing and registering new blocks with the contract.
Putting the CryotoPunks images on-chain is not new. In 2021, Larva Labs released a contract that sealed all 10,000 punks on chain, including their attribute lists.
"Punk Blocks" has a different scope and purpose. The difference is that "Punk Blocs" stores the images of the attributes, rather than their entire generated image. This allows the generation of entire punk images on-the-fly by calling the "view" methods of the Punk Blocks contract.
Another difference is that besides the original attributes, it is possible for anyone to add new attribute images to the contract, i.e. "Punk Blocks", and new unique punk images can be generated with these blocks. So, the scope of this contract is not to just store the original 10,000 punk images, but the punk images of an entire punk universe!
"Woah! Hold it... You are saying that we can now make unlimited number of punks, including new punks??!!" Yup. Although, these are only images, not tokens. This contract doesn't make any tokens, and there will always ever be 10,000 punks.
Finally, some acknowledgments & thanks. "Punk Blocks" makes indirect use of the contract released by Larva Labs in 2021, to fetch a list of attributes that belong to a punk.
Naturally, this project would not have been possible without Larva Labs, so thanks to them for creating the punks & taking initiative to deploy the additional metadata on-chain. Also, thanks to @samwilsn who showed that it is possible to store png images and render them inside SVGs, and thanks to @geraldb for providing a handy sprite sheet! Finally, thanks to jeremy.eth and twitter.com/dumbnamenumbers for the review & feedback.
/**
* @dev svgFromPunkID returns the svg data as a string given a punk id
* @param _tokenID uint256 IDs a punk id, 0-9999
* @param _size the width and height of generated svg, eg. 24
* @param _orderID which order config to use when rendering, 0 is the default
*/
function svgFromPunkID(uint256 _tokenID, uint16 _x, uint16 _y, uint16 _size, uint32 _orderID) external view returns (string memory);
/**
* @dev svgFromNames returns the svg data as a string
* @param _attributeNames a list of attribute names, eg "Male 1", "Goat"
* must have at least 1 layer 0 attribute (eg. Male, Female, Alien, Ape, Zombie)
* e.g. ["Male 1","Goat"]
* Where "Male 1" is a layer 0 attribute, that decides what version of
* image to use for the higher
* layers (dataMale or dataFemale)
* @param _size the width and height of generated svg, eg. 24
* @param _orderID which order config to use when rendering, 0 is the default
*/
function svgFromNames(string[] calldata _attributeNames, uint16 _x, uint16 _y, uint16 _size, uint32 _orderID) external view returns (string memory);
/**
* @dev svgFromKeys returns the svg data as a string
* @param _attributeKeys a list of attribute names that have been hashed,
* eg keccak256("Male 1"), keccak256("Goat")
* must have at least 1 layer 0 attribute (eg. keccak256("Male 1")) which
* decides what version of image to use for the higher layers
* (dataMale or dataFemale)
* e.g. ["0x9039da071f773e85254cbd0f99efa70230c4c11d63fce84323db9eca8e8ef283",
* "0xd5de5c20969a9e22f93842ca4d65bac0c0387225cee45a944a14f03f9221fd4a"]
* @param _size the width and height of generated svg, eg. 24
* @param _orderID which order config to use when rendering, 0 is the default
*/
function svgFromKeys(bytes32[] calldata _attributeKeys, uint16 _x, uint16 _y, uint16 _size, uint32 _orderID) external view returns (string memory);
/**
* @dev svgFromIDs returns the svg data as a string
* e.g. [9,55,99]
* One of the elements must be must be a layer 0 block.
* This element decides what version of image to use for the higher layers
* (dataMale or dataFemale)
* @param _ids uint256 ids of an attribute, by it's index of creation
* @param _size the width and height of generated svg, eg. 24
* @param _orderID which order config to use when rendering, 0 is the default
*/
function svgFromIDs(uint256[] calldata _ids, uint16 _x, uint16 _y, uint16 _size, uint32 _orderID) external view returns (string memory);
/**
* @dev registerBlock allows anybody to add a new block to the contract.
* Either _dataMale or _dataFemale, or both, must contain a byte stream of a png file.
* It's best if the png is using an 'index palette' and the lowest bit depth possible,
* while keeping the highest compression setting.
* @param _dataL png data for the male version, 24x24
* @param _dataS png data for the female version, 24x24
* @param _layer 0 to 12, corresponding to the Layer enum type.
* @param _name the name of the trait, Camel Case. e.g. "Luxurious Beard"
*/
function registerBlock(
bytes calldata _dataL,
bytes calldata _dataS,
uint8 _layer,
string memory _name) external;
function blockS(bytes32) view external returns(bytes32);
function blockS(bytes32) view external returns(bytes32);
function blocksInfo(bytes32) view external returns(uint256);
Each registered block belongs to a Layer. A layer determines what order the block gets applied when the SVG is rendered. "Base" is applied first, then a "Nose" block would be applied last.
There are 13 layers in total, numbered from 0-12. The attribute names shown in the comments below are examples from the default attribute set.
Note that head-top layers are separated (Hair and Hat), this allows for more trait combinations, for example, a Cap with Hair combination becomes possible.
enum Layer {
Base, // 0 Base is the face. Determines if m or f version will be used to render the remaining layers
Mouth, // 1 (Hot Lipstick, Smile, Buck Teeth, ...)
Cheeks, // 2 (Rosy Cheeks)
Blemish, // 3 (Mole, Spots)
Eyes, // 4 (Clown Eyes Green, Green Eye Shadow, ...)
Neck, // 5 (Choker, Silver Chain, Gold Chain)
Beard, // 6 (Big Beard, Front Beard, Goat, ...)
Ears, // 7 (Earring)
HeadTop1, // 8 (Purple Hair, Shaved Head, Beanie, Fedora,Hoodie)
HeadTop2, // 9 eg. additional hat over hair (not used by LL punks)
Eyewear, // 10 (VR, 3D Glass, Eye Mask, Regular Shades, Welding Glasses, ...)
MouthProp, // 11 (Medical Mask, Cigarette, ...)
Nose // 12 (Clown Nose)
}
It's possible to define your own layer ordering. Here is the default order
used by renderblocks.sol
. This is also assumed to be the ordering of the
cryptopunks.
0 Base
2 Cheeks,
3 Blemish,
1 Mouth,
5 Neck,
6 Beard,
7 Earring,
8 HeadTop1,
9 HeadTop2,
4 Eyes,
11 MouthProp,
10 Eyewear,
12 Nose
New blocks can be added for any layer using the registerBlock
function.
The block must consist of either a male attribute image data, or female data,
or both. With the exception that Layer 0 blocks should either contain male
attribute image data or female data, but NOT both.
If the block is a Layer 0 with female attribute image data present, then all higher blocks will be rendered with their female attribute image data, and vice-versa.
Preparing the png for upload can be tricky. It's best to use an indexed palette rather than an RGBA, using a single entry for the transparency, with a low bit-depth. E.g. You could use a bit-depth of 2 if you have 4 colors, or 4 if you have 16. Confused? Here is a complete guide about png optimization.
There are several nifty png optimization tools available for Linux, such as optipng
What was used here? Well... A simple Go program was custom-made to prepare the optimized png images. see: generator . It reads some blocks from a source png file and breaks them down to 24x24 images. Each image is then saved as an optimized png, then the Solidity code is generated with the help of a sprite sheet data in a CSV format.
A list of known punk blocks. The "L" in the size column means that this block will only be rendered on top of sarge base types, "S" is for small base types.
If you would like to add your blocks to the list, please submit a PR.
Name | Hash | Size | Layer |
---|---|---|---|
Male 1 | 0x9039da071f773e85254cbd0f99efa70230c4c11d63fce84323db9eca8e8ef283 | L | 0 |
Male 2 | 0xdfcbad4edd134a08c17026fc7af40e146af242a3412600cee7c0719d0ac42d53 | L | 0 |
Male 3 | 0xed94d667f893279240c415151388f335b32027819fa6a4661afaacce342f4c54 | L | 0 |
Male 4 | 0x1323f587f8837b162082b8d221e381c5e015d390305ce6be8ade3ff70e70446e | L | 0 |
Female 1 | 0x1bb61a688fea4953cb586baa1eadb220020829a1e284be38d2ea8fb996dd7286 | S | 0 |
Female 2 | 0x47cc6a8e17679da04a479e5d29625d737670c27b21f8ccfb334e6af61bf6885a | S | 0 |
Female 3 | 0x80547b534287b04dc7e9afb751db65a7515fde92b8c2394ae341e3ae0955d519 | S | 0 |
Female 4 | 0xc0c9e42e9d271c94b57d055fc963197e4c62d5933e371a7449ef5d59f26be00a | S | 0 |
Zombie | 0xf41cb73ce9ba5c1f594bcdfd56e2d14e42d2ecc23f0a4863835bdd4baacd8b72 | L | 0 |
Ape | 0xb1ea1507d58429e4dfa3f444cd2e584ba8909c931969bbfb5f1e21e2ac8b758d | L | 0 |
Alien | 0x62223f0b03d25507f52a69efbbdbcfdc7579756a7a08a95a2f0e72ada31e32b8 | L | 0 |
Rosy Cheeks | 0x047228ad95cec16eb926f7cd21ac9cc9a3288d911a6c2917a24555eac7a2c0e2 | L,S | 2 |
Luxurious Beard | 0xce1f93a7afe9aad7ebb13c0add89c79d42b5e9b1272fdd1573aac99fe5d860d0 | L | 6 |
Clown Hair Green | 0xbfac272e71cad64427175cd77d774a7884f98c7901ebc4909ada29d464c8981e | L,S | 8 |
Mohawk Dark | 0xa71068a671b554f75b7cc31ce4f8d63c377f276333d11989e77bc4a9205b5e42 | L,S | 8 |
Cowboy Hat | 0x9a132de8409f80845eaec43154ff43d7bd61df75e52d96b4ded0b64626e4c88a | L | 8 |
Mustache | 0xfca4c5f86ef326916536dfdae74031d6960e41e10d38c624294334c3833974e2 | L | 6 |
Clown Nose | 0x4483a654781ca58fa6ba3590c74c005bce612263e17c70445d6cd167e55e900b | L,S | 12 |
Cigarette | 0x1885fe71e225eade934ab7040d533bd49efc5d66e8f2d4b5aa42477ae9892ec9 | L,S | 11 |
Nerd Glasses | 0x7411db1fe7a50d41767858710dc8b8432ac0c4fd26503ba78d2ed17789ce4f72 | L,S | 10 |
Regular Shades | 0xdd7231e98344a83b64e1ac7a07b39d2ecc2b21128681123a9030e17a12422527 | L,S | 10 |
Knitted Cap | 0x24dd0364c2b2d0e6540c7deb5a0acf9177d47737a2bf41ca29b553eb69558ef9 | L,S | 8 |
Shadow Beard | 0xea5efa009543229e434689349c866e4d254811928ae8a1320abb82a36d3be53f | L | 6 |
Frown | 0x2df03e79022dc10f7539f01da354ffe10da3ef91f1e18bc7fd096db00c381de8 | L | 1 |
Cap Forward | 0xf0ac7cf8c022008e16b983f22d22dae3a15b9b5abcc635bc5c20beb4d7c91800 | L | 8 |
Goat | 0x8580e735d58252637afd6fef159c826c5e7e6a5dcf1fe2d8398b3bf92c376d42 | L | 6 |
Mole | 0x041bf83549434251cc54c0632896c8d3176b48d06150048c1bce6b6102c4e90c | L,S | 3 |
Purple Hair | 0x591f84c8a41edd0013624b89d5e6b96cd3b0c6f1e214d4ea13a35639412f07e6 | L | 8 |
Small Shades | 0x54917cb8cff2411930ac1b1d36a674f855c6b16c8662806266734b5f718a9890 | L | 10 |
Shaved Head | 0x274ae610f9d7dec1e425c54ad990e7d265ba95c4f84683be4333542088ecb8e7 | L | 8 |
Classic Shades | 0x6a400b1508bfd84ab2f4cb067d6d74dc46f74cdae7efd8b2a2d990c9f037e426 | L,S | 10 |
Vape | 0x3e6bc8fc06a569840c9490f8122e6b7f08a7598486649b64477b548602362516 | L,S | 11 |
Silver Chain | 0x2c382a7f1f32a6a2d0e9b0d378cb95e3dad70fe6909ff13888fe2a250bd10bb0 | L,S | 5 |
Smile | 0x8968ce85cb55abb5d9f6f678baeeb565638b6bad5d9be0ea2e703a34f4593566 | L | 1 |
Big Shades | 0xc3075202748482832362d1b854d8274a38bf56c5ad38d418e590f46113ff10b1 | L,S | 10 |
Mohawk Thin | 0x971f7c3d5d14436a3b5ef2d658445ea527464a6409bd5f9a44f3d72e30d1eba8 | L,S | 8 |
Beanie | 0x1f7b5107846b1e32944ccf8aedeaa871fc859506f51e7d12d6e9ad594a4d7619 | L | 8 |
Cap | 0xd35b2735e5fcc86991c8501996742b3b8c35772d92b69859de58ddd3559be46c | L,S | 8 |
Clown Eyes Green | 0x2004722753f61acb2cefde9b14d2c01c6bcb589d749b4ea616b4e47d83fdb056 | L,S | 4 |
Normal Beard Black | 0x05a5afe13f23e20e6cebabae910a492c91f4b862c2e1a5822914be79ab519bd8 | L | 6 |
Medical Mask | 0xac5194b2986dd9939aedf83029a6e0a1d7d482eb00a5dafa05fc0aaa9b616582 | L,S | 11 |
Normal Beard | 0xf94798c1aedb2dce1990e0dae94c15178ddd4229aff8031c9a5b7a77743a34d4 | L | 6 |
VR | 0x15854f7a2b735373aa76722c01e2f289d8b18cb1a70575796be435e4ce55e57a | L,S | 10 |
Eye Patch | 0xd91f640608a7c1b2b750276d97d603512a02f4b84ca13c875a585b12a24320c2 | L,S | 10 |
Wild Hair | 0x6bb15b5e619a28950bae0eb6a03f13daea1b430ef5ded0c5606b335f5b077cda | L,S | 8 |
Top Hat | 0x7a8b4abb14bfe7b505902c23a9c4e59e5a70c7daf6e28a5f83049c13142cde5e | L | 8 |
Bandana | 0x72efa89c7645580b2d0d03f51f1a2b64a425844a5cd69f1b3bb6609a4a06e47f | L,S | 8 |
Handlebars | 0xfc1c0134d4441a1d7c81368f23d7dfcdeab3776687073c12af9d268e00d6c0a8 | L | 6 |
Frumpy Hair | 0x6ced067c29d04b367c1f3cb5e7721ad5a662f5e338ee3e10c7d64d9d109ed606 | L,S | 8 |
Crazy Hair | 0x66a6c35fd6db8b93449f29befe26e2e4bcb09799d56216ada0ef901c53cf439f | L,S | 8 |
Police Cap | 0x85c5daead3bc85feb0d62d1f185f82fdc2627bdbc7f1f2ffed1c721c6fcc4b4d | L | 8 |
Buck Teeth | 0x3d1f5637dfc56d4147818053fdcc0c0a35886121b7e4fc1a7cff584e4bb6414f | L | 1 |
Do-rag | 0x64b53b34ebe074820dbda2f80085c52f209d5eba6c783abdae0a19950f0787ec | L | 8 |
Front Beard | 0x833ca1b7f8f2ce28f7003fb78b72e259d5a484b13477ad8212edb844217225ac | L | 6 |
Spots | 0x44c2482a71c9d39dac1cf9a7daf6de80db79735c0042846cb9d47f85ccc3ba9b | L,S | 3 |
Big Beard | 0x4acd7797c5821ccc56add3739a55bcfd4e4cfd72b30274ec6c156b6c1d9185eb | L | 6 |
Vampire Hair | 0xc0ac7bb45040825a6d9a997dc99a6ec94027d27133145018c0561b880ecdb389 | L | 8 |
Peak Spike | 0xa756817780c8e400f79cdd974270d70e0cd172aa662d7cf7c9fe0b63a4a71d95 | L | 8 |
Chinstrap | 0x71c5ce05a579f7a6bbc9fb7517851ae9394c8cb6e4fcad99245ce296b6a3c541 | L | 6 |
Fedora | 0x283597377fbec1d21fb9d58af5fa0c43990b1f7c2fc6168412ceb4837d9bf86c | L | 8 |
Earring | 0xbb1f372f67259011c2e9e7346c8a03a11f260853a1fe248ddd29540219788747 | L,S | 7 |
Horned Rim Glasses | 0xd5de5c20969a9e22f93842ca4d65bac0c0387225cee45a944a14f03f9221fd4a | L,S | 10 |
Headband | 0xb040fea53c68833d052aa3e7c8552b04390371501b9976c938d3bd8ec66e4734 | L,S | 8 |
Pipe | 0x74ca947c09f7b62348c4f3c81b91973356ec81529d6220ff891012154ce517c7 | L,S | 11 |
Messy Hair | 0x30146eda149865d57c6ae9dac707d809120563fadb039d7bca3231041bea6b2e | L,S | 8 |
Front Beard Dark | 0x8394d1b7af0d52a25908dc9123cc00aa0670debcac95a76c3e9a20dd6c7e7c23 | L | 6 |
Hoodie | 0xeb787e7727b2d8d912a02d9ad4c30c964b40f4cebe754bb4d3bfb09959565c91 | L | 8 |
Gold Chain | 0x6a36bcf4268827203e8a3f374b49c1ff69b62623e234e96858ff0f2d32fbf268 | L,S | 5 |
Muttonchops | 0x2f237bd68c6e318a6d0aa26172032a8a73a5e0e968ad3d74ef1178e64d209b48 | L | 6 |
Stringy Hair | 0xad07511765ae4becdc5300c486c7806cd661840b0670d0f6670e8c4014de37b0 | L,S | 8 |
Eye Mask | 0x49e0947b696384a658eeca7f5746ffbdd90a5f5526f8d15e6396056b7a0dc8af | L,S | 10 |
3D Glasses | 0xc1695b389d89c71dc7afd5111f17f6540b3a28261e4d2bf5631c1484f322fc68 | L,S | 10 |
Clown Eyes Blue | 0x09c36cad1064f6107d2e3bef439f87a16c8ef2e95905a827b2ce7f111dd801d7 | L,S | 4 |
Mohawk | 0xeb92e34266f6fa01c275db8379f6a521f15ab6f96297fe3266df2fe6b0e1422e | L,S | 8 |
Pilot Helmet | 0x1892c4c9cf47baf2c613f184114519fe8208c2bebabb732405aeac1c3031dc2b | S | 8 |
Tassle Hat | 0x250be814c80d8ca10bbef531b679392db8221a6fab289a6b5e637df663f48699 | S | 8 |
Hot Lipstick | 0xcd87356aa78c4fcb95e51f57578570d377440e347e0869cf1b4749d5a26340b5 | S | 1 |
Blue Eye Shadow | 0x4fa682c6066fcc513a0511418aa85a0037ac59a899e9491c512b63e253697a8c | S | 4 |
Straight Hair Dark | 0x36f07f03014f047728880d9f390629140a5e7c44477290695c4c1ddda356d365 | S | 8 |
Choker | 0x68107f52c261820bd73e4046eb3fb5d5a1e0926611562c07054a3b89334cef34 | S | 5 |
Wild Blonde | 0xd395cf4acda004fbc9963f85c65bf3f190c2aceb0744a535d543bc261caf6ff0 | S | 8 |
Wild White Hair | 0xbad0fc475e9d35de67c426fc37eebb7fa38141bc2135fabd5504a911e1b05540 | S | 8 |
Tiara | 0xd10bc0475e2a0eea9f6aca91e6e82c6416f894f27fc26bb0735f29b84c54a3e6 | S | 8 |
Orange Side | 0xa0a2010e841ab7b343263c98f47a16b88656913e1353d96914f5fe492511893f | S | 8 |
Red Mohawk | 0x0e6769a10f786458ca82b57684746fe8899e35f7772543acb6a8869c4ac780cd | S | 8 |
Purple Eye Shadow | 0x1004d2d00ccf8794739c7b7cbbe6048841f4c8af046b37d59e9a801a167544e2 | S | 4 |
Dark Hair | 0x629e82a55845ea763431647fcaecfb232e275a36d8427f2568377864193801cb | S | 8 |
Blonde Short | 0xcd3633a5e96d615b834e90e67029f7f9f507b832e1cb263a29685b8e25f678cf | S | 8 |
Purple Lipstick | 0xe81a9c78c0ec4339dc6772f1b9bbf406b53063f8408a91fe29f63ba1c2bc7b5a | S | 1 |
Pigtails | 0xe11278d6c191c8199a5b8bb49be7f806b837a9811195c903d844a74c4c4a704e | S | 8 |
Straight Hair Blonde | 0x411ec1566affa22bd67b13a7c49ac060c018e1c806cd314cd2186118dd55e129 | S | 8 |
Welding Goggles | 0x1868a04ecae06e10c5b6dcbbed4befac1ed03dda2cf86ddbd855466cc588809f | S | 10 |
Pink With Hat | 0x3511b04ac6a3d46305172269904dc469a40f380a4e7afa8742ce6e6a44825c4a | S | 8 |
Blonde Bob | 0x2857e47dcac3b744dd7d41617ce362f1dd3ae8eb836685cc18338714205b036c | S | 8 |
Green Eye Shadow | 0x2e9a5434da70e5ea2ed439b3a33aac60bd252c92698c1ba37e9ed77f975c6cab | S | 4 |
Straight Hair | 0x8c0e60b85ff0f8be1a87b28ae066a63dcc3c02589a213b0856321a73882515f9 | S | 8 |
Half Shaved | 0xe651be5dd43261e6e9c1098ec114ab5c44e7cb07377dc674336f1b3d34428fe4 | S | 8 |
Black Lipstick | 0x1cd064e6db4e7c5180ccf5f2afe1370c6539b525fe3bea9c358f24a7cbdb50ad | S | 1 |
Stogie | 0x398534927262d4f6993396751323ddd3e8326784a8e9a4808f17b99e6693835e | L,S | 11 |
Earphone | 0x3b4d5e3dd66b09dd19cc19643986e2dc15e70251b31a4e5a463ecd996f7c3dc7 | L,S | 9 |
Employee Cap | 0x550aa6da33a6eca427f83a70c2510cbc3c8bdb8a1ce5e5c3a32b2262f97c4aa1 | L,S | 9 |
Headphones | 0xe2f3dcf809c00413a95bf007b46163923170ba8a0fbdaba7380f5c5079fcc98c | L,S | 7 |
Headphones Red | 0x975e45b489dc6726c2a27eb784068ec791a22cf46fb780ced5e6b2083f32ebc3 | L,S | 9 |
Headphones Yellow | 0x421c9c08478a3dfb8a098fbef56342e7e0b53239aaa40dd2d56951cc6c178d35 | L,S | 9 |
Gas Mask | 0xaffb8a29fc5ed315e2a1103abc528d4f689c8365b54b17538f96e6bcae365633 | L,S | 11 |
Goggles | 0x314ff09b8866e566e22c7bf1fe4227185bc37e1167a84aaf299f5e016ca2ea7b | L,S | 10 |
Pen | 0xe5fd4286f4fc4347131889d24238df4b5ba8d8d4985cbd9cb30d447ec14cbb2f | L,S | 7 |
Pencil | 0xaeae7be74009ff61e63109240ea8e00b3bd6d166bf8a7f6584f64ff75e783f09 | L,S | 10 |
Red Hat | 0x1cc630fd6d4fff8ca66aacb5acdba26a0a14ce5fd8f9cb60b002a153d1582b4e | L,S | 8 |
Yellow Hat | 0xbbb91da98e74857ed34286d7efaf04751ac3f4d7081d62a0aa3b09278b5ee55a | L,S | 8 |
White Hat | 0x3fbda43b0bda236b4f6f6dba8b7052381641b3d92ce4b49b4a2e9be390980019 | L,S | 8 |
Suit | 0x10214dd24c8822f95b3061229664e567e7da89d1f8a408179e12bf38be2c1430 | L,S | 5 |
Suit Black | 0xb52fd5c8112bb81b2c05dd854ac28867bf72fd52124cb27aee3de68a19c87812 | L,S | 5 |
Bot | 0xd7a861eff7c9242c2fc79148cdb44128460adae80afe1ba79c2d1eae290fb883 | L,S | 0 |
Botina | 0x7d3615eb6acf9ca19e31084888916f38df240bce4009857da690e4681bf8d4b0 | L,S | 0 |
Killer Bot | 0x18a26173165d296055f2dfd8a12afc0a3e85434dd9d3f9c3ddd1eabc37ff56bc | L | 0 |
Killer Botina | 0xb93c33f3b6e2e6aef9bd03b9ed7a064ed00f8306c06dfc93c76ae30db7a3f2b4 | S | 0 |
Green Alien | 0x9242f3766d6363a612c9e88734e9c5667f4c82e07d00b794481f5b41b97047e8 | L | 0 |
Green Alienette | 0x0c924a70f72135432a52769f20962602647a5b6528675c14bb318eaf4cbb2753 | S | 0 |
Blue Ape | 0xcd6f6379578617fc2da9c1d778e731bebaa21e9be1ed7265963ec43076d17a10 | L | 0 |
Alien 2 | 0x53f8bd0b36b2d3d9abc80e02d6fe9ed6a07068216cd737604c0c36ac60f458dc | L | 0 |
Alien 3 | 0xeca5ecd41019c8240974e9473044bf1a01598e7c650939425f53f561e959ec46 | L | 0 |
Alien 4 | 0x061c5772160bfea6296a0317f6eff655398285ab18dbe89497436563445eeddc | L | 0 |
Alien 5 | 0x224b0f8059a7c50a19036c71e7500fd115adfd3af915c8d6d6639248c6e41283 | L | 0 |
Alien 6 | 0xfb3556140e6f92df2d04796b8d8c5f6732abf43c07eb7034a90672cd4f9af372 | L | 0 |
Alienette 2 | 0xe9986a150e097f2cadc995279f34846ae9786b8ce35070b152f819d7a18d7760 | S | 0 |
Alienette 3 | 0x0a215113c1e36c8cf69812b89dd912e3e2f1d70ab8c7691e0439a002d772f56d | S | 0 |
Alienette 4 | 0xac4fc861f4029388de1fa709cb865f504fb3198a6bf4dad71ff705a436c406c2 | S | 0 |
Alienette 5 | 0xbefcd0e4ecf58c1d5e2a435bef572fca90d5fcedf6e2e3c1eb2f12b664d555a4 | S | 0 |
Alienette 6 | 0x54526cc56c302d9d091979753406975ad06ca6a58c7bea1395ae25350268ab36 | S | 0 |
Pink Ape | 0xffa2b3215eb937dd3ebe2fc73a7dd3baa1f18b9906d0f69acb3ae76b99130ff7 | L | 0 |
Male 5 | 0x46151bb75270ac0d6c45f21c75823f7da7a0c0281ddede44d207e1242e0a83f6 | L | 0 |
Male 6 | 0xef8998f2252b6977b3cc239953db2f5fbcd066a5d454652f5107c59239265884 | L | 0 |
Male 7 | 0x606da1a8306113f266975d1d05f6deed98d3b6bf84674cc69c7b1963cdc3ea86 | L | 0 |
Apelinah | miss-aligned, unused | S | 0 |
Apette | 0x804b2e3828825fc709d6d2db6078f393eafdcdedceae3bdb9b36e3c81630dd5e | S | 0 |
Female 5 | 0x54354de4503fcf83c4214caefd1d4814c0eaf0ce462d1783be54ff9f952ec542 | S | 0 |
Female 6 | 0x8a643536421eae5a22ba595625c8ba151b3cc48f2a4f86f9671f5c186b027ceb | S | 0 |
Female 7 | 0x4426d573f2858ebb8043f7fa39e34d1441d9b4fa4a8a8aa2c0ec0c78e755df0e | S | 0 |
Alientina | 0x1908d72c46a0440b2cc449de243a20ac8ab3ab9a11c096f9c5abcb6de42c99e7 | S | 0 |
Zombina | 0xcedf32c147815fdc0d5f7e785f41a33dfc773e45bbd1a9a3b5d86c264e1b8ac5 | S | 0 |
ZombieApe | 0x691d9c552cd5457793c084f8bfce824df33aa7bcff69bb398b1c50c5283700ab | L | 0 |
Cigarina | 0x44cc2bd937a1ba84d91aa4ad1c68a4019d7441276f158686ca21113d9b58c736 | S | 0 |
Cyborghina 1 | 0x6ad96c1daca4b1c9f05d375a8cc7561b56dc9f8e0c47de6294d0b56e99baba9f | S | 0 |
Cyborghina 2 | 0x630cf72f7f662f0e4ad0e59518468203238cfd411fb9c5b474e65247043ff6ff | S | 0 |
Cyborghina 3 | 0x9c4d52ffba9e3fe6a536e1420a71503203fde6d50cc7dfd6dcffb18520ea92ac | S | 0 |
Cyborghina 4 | 0xa85374c4f65c797073c8536e4d19c56b86127fd476a9b5a4b3fbf026a0a631e9 | S | 0 |
Notes:
- Apelinah has a miss-alignment,
Apette
fixes it - Headphones has an incorrect layer, it should be 9 not 7.
Earbuds
fixes this. They were also labelled incorrectly. - Earphone was mislabeled, use
Headset
instead. The layer should be 7.
When using renderblocks.sol
ID | Config | Comment |
---|---|---|
0 | 0,2,3,1,5,6,7,8,9,4,11,10,12 | Default |
MIT
Note: The MIT license is for the source code only. Images registered through this contract retain their owner's rights, whatever they may be. This contract is a non-profit "library" project and intended to archive & preserve punk images, so that they can become widely accessible for decentralized apps, including marketplaces, wallets, galleries, derivative works, research, and other uses, as implied by fair-use or granted with permission from the copyright owner.
Here's a never-seen-before punk rendered using Punk Blocks.