here's an idea ... this is a new ordgen / ORC-721 word's 1st generative .... ... BEFORE deploy people inscribe .PNGs for the collection ... you specifiy e.g. 24x24px canvas or anything if you want ... ... now the ordgen / ORC-721 protocol update and new feature ... ... if you leave out the max key (and the dim key) than you can turn any inscribes (BEFORE deploy) into a collection! example:
og deploy canvas
<inscribe id no. 0>
<inscribe id no. 1>
<inscribe id no. 2>
....
that's it. no need for max because the number of inscribe ids listed are the max.
.. let's explore options for a new ordgen / ORC-721 collection syntax where you inscribe the mints (as .PNGs) BEFORE the deploy inscribe!
... so what?!
... here is the proposal ... yes, a single text deploy can turn ordinalpunks into the world's 1st ORC-721 / ordgen collection using the new formula / update ...
... all ordinal punks already inscribed as .PNGs BEFORE deploy!
... what's missing to wrap-up is the deploy to turn the "free-floating" .PNGs into a collection for indexers. here's the suggested format:
og deploy ordinalpunks
<inscribe id - ordinal punk no. 1>
<inscribe id - ordinal punk no. 2>
<inscribe id - ordinal punk no. 3>
...
that's it. no need for max because the inscribe id list IS the max ... and the magic switch to turn a deploy to use the "BEFORE" formula is dropping the max / maxblock. that's it.
as a bonus - ordgen / ORC-721 slugs / keys are like sat names - first-come / first-serve - and, thus, the ordinalpunks name is yours forever with a deploy.
now what for you might be thinking? what if .... a ordgen / ORC-721 indexer produces a listing something like this ... https://unisat.io/brc20 or this https://www.brc-20.io/ - do you want to ("automagically") get listed or not? being world's first counts ;-).
...let's explore some more... let's go recursive! ... recursive what!? ...
... let's use the inscribe id for the ordinalpunks meta data / manifest!! now how does this look:
og deploy ordinalpunks
a64027dabba3c5acf83068028edf4e938464ff3c6b279f0415f5c6573cf03207i0
yes. that's it. and the inscribe id is this -> https://ordinals.com/content/a64027dabba3c5acf83068028edf4e938464ff3c6b279f0415f5c6573cf03207i0 (the official meta data manifest inscribe by @FlowStay )
thus - the new proposal - if anyone wants to inscribe this text ( two lines):
og deploy ordinalpunks
a64027dabba3c5acf83068028edf4e938464ff3c6b279f0415f5c6573cf03207i0
than this is the world's 1st ordgen / ORC-721 collection with meta data manifest using the BEFORE formula for automagic processing by indexers.
.. one more thing ...
... one option is to turn this into a new "on-chain" protocol kind of sat names for collections .... any good names for the new protocol? here's the reworked further simplified version using the new proposed collection protocol:
collection ordinalpunks
a64027dabba3c5acf83068028edf4e938464ff3c6b279f0415f5c6573cf03207i0
Q: og deploy ordinalpunks
- what is this?
A: this is a suggested ordgen / ORC-721 protocol update to REGISTER collections with .PNGs inscribed BEFORE deploy ... that works perfectly for ordinal punks if anyone wants to try - comments and questions welcome.
your orangenpixel [by ZimmerAllDay] idea was already realized on ETH
1-bit 20x24 canvas example on ethereum -> https://canvas.papercorp.org
turn your imagination into an NFT in a 20x20 canvas
pixel format is:
[
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
[0,0,0,0,0,0,1,0,0,0,1,1,1,0,0,0,0,0,0,0]
[0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0]
]
... that is the canvas matrix metadata (copy-n-pasted) from the website ...
... that meta data "matrix" style format looks like hitting the jack pot ... and marked for an upcoming ordgen / ORC-721 protocol update that lets you expand the g(enerative) numbers in two dimensions (x and y).
let's explore some more ...
happy to do a 16 color (or 256 color - 8bit) canvas in ordgen / ORC-721 ... BUT ...
let's introduce a new g(enerative) matrix syntax!
.. here's the idea ... the dim is 1x1px! the "recursives" can be an all-in-one spritesheet with 16x1px with 1px per color (0,1,2,3,4) ... or 16 inscribes 1x1px with one pixel in one color .... now the new magic matrix generative mint syntax:
[ .., ..., ...]
[ .., ..., ...]
... for every row ... and you can use 0,1,2,3,4 for colors ... that is like classic paint by numbers .... e.g.
[0 0 0 1 0 ....]
[0 1 2 2 4 5 6 ...]
[4 4 5 ...]
... and so on ... maybe change to commas for starting a new row / line / anywhere e.g.
0 0 0 1 0 ... ,
0 1 2 2 4 5 6 ... ,
4 4 5 ... ,
... or maybe even better only numbers no commas ... and in deploy a new dim: 24x24px AND tile: 1x1px or dim: 24x24px / 1x1px and than only series of numbers e.g. colors 0 to 15 (16).
happy to experiment if anyone interested in a 16 color or 256 (8-bit) color canvas in 24x24px or such in ORC-721 / ordgen.
but remember to inscribe a bitmap / pixel canvas the easiest is to inscribe .PNG ... .PNG has all the "metadata" e.g. pixels and colors encoded in binary with compression - can't beat that - but sure with ordgen / ORC-721 in the deploy you CAN specifiy the color palette and the canvas size and the collection max. and such ... that sure is something extra (beyond plain .PNG inscribe).
Why? Why not?
Using the tabular (text) format in the comma-separated values (.csv) format lets you add "on-chain" metadata such as names, categories, and more.
Example - spritesheet.csv:
name, category, base64
Human, Base,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAElBMVEUAAAAAAADWdQf3kxr4rUv///+T6IvaAAAABnRSTlMA//////96eeD+AAAAXklEQVR4nGNiQAJM5HIEBQUFYBxGJSUlRRhHiBFIC8CU8SPr+YDTtP8fGN5DOYwK/w0YPsNlmB4wyME4D5D0/AdS95BNU8Ll6n/IyphQlf37AOfcu3cfIfP//QcM0wAaAxSH2HomKQAAAABJRU5ErkJggg==
Vampire, Base,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAFVBMVEUAAAAAAABbMwOlXQX2AAv3kxr////bh9zEAAAAB3RSTlMA////////pX+m+wAAAG1JREFUeJxjYkACTORyBAUFBWAcRhcXF0cYRwSIWQRINO3fA4Z7UA6jwz8DhsdwGZYPDPYwzgEkPf+B1B5k01xw2bNnzwEEx8TFAMxhFBRkYBBg4PkA4vxnFAQp2w9R9h7kI4EPEM5/EP0erBUAERwWzx5CqboAAAAASUVORK5CYII=
Demon, Base,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAD1BMVEUAAAAAAAC4cAv3kxr///+zzqXqAAAABXRSTlMA/////xzQJlIAAABgSURBVHichY3dDYAgDISPTgAuYGX/mdANaByAqonSEhPty+XL/ZTgjj4hRCB1Z0Fgi6VoHcq5w3Rp/J0eQQX1hsDK2G1aMD+wuY6eUvxa9uD/NB+jMdakQymrOVrltXYAZGITh03FFbsAAAAASUVORK5CYII=
Zombie, Base,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAElBMVEUAAAAAAADHcwz3kxr/AAD/z5G469XyAAAABnRSTlMA//////96eeD+AAAAYUlEQVR4nJ2O0Q2AMAhEDyZoHUAr+89UjQuUCVr7IZXE9Ec+IC93HDBc8V+IMQYDEpHdYOmNg9lWv3NO05qiPECJFdtQasJlcBJgR1sf2afJ7OvqbeRthKoDcj5epRX9pN0MGRSH7kVdXgAAAABJRU5ErkJggg==
Ape, Base,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAElBMVEUAAAAAAAD3kxr3nzL/xHj////N6G+OAAAABnRSTlMA//////96eeD+AAAAb0lEQVR4nJ3PwQ2AMAgAQNq+TcoGJg6gkf1HIDqCcYGyQFs1kdKHL/nQC4WAhy78XyBiVLgbqHgeLn721JSkYSJarSKQXrhYRjhbJQjMCummVThyttElhNLgLd9NzLudQLQ0DABZFI55s2+1W1TjAn1pHXVHt3hFAAAAAElFTkSuQmCC
Alien, Base,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAElBMVEUAAAAAAACcXA7QeA33kxr/z5E7kZyXAAAABnRSTlMA//////96eeD+AAAAY0lEQVR4nGNiQAJM5HIEBQUFYBxGY2NjQxhHmJGBgVkApowfWc8HHKYxMvy7wHAXyhFW+K/A8AnKeSsANApu9AWYEUDOf7wOFUDinD17AcExNjZA1vP3A5Ky8wiZ/+8/YBgNAJwZFZmWaFZKAAAAAElFTkSuQmCC
...
Note: The name (or names) or the category columns are optional - only the base64-encoded image is required - and, yes you can add more columns as you please.
Aside - What's base64?
Images are binary blobs - using the base64 encoding you can convert (or encode) the binary blob into an ascii-7bit (& utf-8)-safe text snippet that you can copy-n-paste into any text file.
D.I.Y. Punks Sample
Example - diypunks/spritesheet.csv:
name, category, base64
Human, Base,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAElBMVEUAAAAAAADWdQf3kxr4rUv///+T6IvaAAAABnRSTlMA//////96eeD+AAAAXklEQVR4nGNiQAJM5HIEBQUFYBxGJSUlRRhHiBFIC8CU8SPr+YDTtP8fGN5DOYwK/w0YPsNlmB4wyME4D5D0/AdS95BNU8Ll6n/IyphQlf37AOfcu3cfIfP//QcM0wAaAxSH2HomKQAAAABJRU5ErkJggg==
Vampire, Base,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAFVBMVEUAAAAAAABbMwOlXQX2AAv3kxr////bh9zEAAAAB3RSTlMA////////pX+m+wAAAG1JREFUeJxjYkACTORyBAUFBWAcRhcXF0cYRwSIWQRINO3fA4Z7UA6jwz8DhsdwGZYPDPYwzgEkPf+B1B5k01xw2bNnzwEEx8TFAMxhFBRkYBBg4PkA4vxnFAQp2w9R9h7kI4EPEM5/EP0erBUAERwWzx5CqboAAAAASUVORK5CYII=
Demon, Base,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAD1BMVEUAAAAAAAC4cAv3kxr///+zzqXqAAAABXRSTlMA/////xzQJlIAAABgSURBVHichY3dDYAgDISPTgAuYGX/mdANaByAqonSEhPty+XL/ZTgjj4hRCB1Z0Fgi6VoHcq5w3Rp/J0eQQX1hsDK2G1aMD+wuY6eUvxa9uD/NB+jMdakQymrOVrltXYAZGITh03FFbsAAAAASUVORK5CYII=
...
D.I.Y. Wiener
Example - no2/spritesheet.csv:
name, category, base64
...
D.I.Y. Ordibots
Format Option 2) Tabular Text (.csv) - Compact
Example - diyordibots/spritesheet.csv:
name, category, base64
blue, background, iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAAA1BMVEVkhZa3PARZAAAAC0lEQVR4AWMY5AAAAKAAAVQqnscAAAAASUVORK5CYII=
bitcoin-orange, background, iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAAA1BMVEX3kh03gNzOAAAAC0lEQVR4AWMY5AAAAKAAAVQqnscAAAAASUVORK5CYII=
brown, background, iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAAA1BMVEWUVU4LyOhwAAAAC0lEQVR4AWMY5AAAAKAAAVQqnscAAAAASUVORK5CYII=
purple, background, iVBORw0KGgoAAAANSUhEUgAAACAAAAAgAQMAAABJtOi3AAAAA1BMVEWOb7aMtmqBAAAAC0lEQVR4AWMY5AAAAKAAAVQqnscAAAAASUVORK5CYII=
antenna, accessories, iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAKUlEQVRYCe3BsQ0AIADDsOT/o8sJLEgssSHJhTpg4oDxmzKSJEmS5KEDUlIFA6L+DvwAAAAASUVORK5CYII=
none, accessories, iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGklEQVRYR+3BAQEAAACCIP+vbkhAAQAAAO8GECAAAcFgLJ8AAAAASUVORK5CYII=
rainbow, accessories, iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAu0lEQVRYw+2OsQ5EQBCG12ucjhegpaFdPa/GG3BoeDMamv1vZ5bG1XvJJfMlX2ZGJPspJQiCIAiCIAiWI0tx5imOLMHvH88T4K2sAU8OYROcNojuk/fUTxzGAGYvgb2w02pDzKisLoh2kHb3EmC2EtVUQ88NT3OHbIWLonnpJUBPDcLWsK8O0BRzBem5RkXyXfsJoEeHaMEQr+yrcyFk2IJvF2f8BAzxgufdsytL923/+LeP1q9vgvB3fABOiLQ6WjY8vQAAAABJRU5ErkJggg==
...
Using the structured (text) format in the javascript object notation (.json) format lets you add "on-chain" metadata such as names, categories, and more.
Example - spritesheet.json:
[{ "name": "Human",
"category": "Base",
"base64": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAElBMVEUAAAAAAADWdQf3kxr4rUv///+T6IvaAAAABnRSTlMA//////96eeD+AAAAXklEQVR4nGNiQAJM5HIEBQUFYBxGJSUlRRhHiBFIC8CU8SPr+YDTtP8fGN5DOYwK/w0YPsNlmB4wyME4D5D0/AdS95BNU8Ll6n/IyphQlf37AOfcu3cfIfP//QcM0wAaAxSH2HomKQAAAABJRU5ErkJggg==" },
{ "name": "Vampire",
"category": "Base",
"base64": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAFVBMVEUAAAAAAABbMwOlXQX2AAv3kxr////bh9zEAAAAB3RSTlMA////////pX+m+wAAAG1JREFUeJxjYkACTORyBAUFBWAcRhcXF0cYRwSIWQRINO3fA4Z7UA6jwz8DhsdwGZYPDPYwzgEkPf+B1B5k01xw2bNnzwEEx8TFAMxhFBRkYBBg4PkA4vxnFAQp2w9R9h7kI4EPEM5/EP0erBUAERwWzx5CqboAAAAASUVORK5CYII=" },
{ "name": "Demon",
"category": "Base",
"base64": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAD1BMVEUAAAAAAAC4cAv3kxr///+zzqXqAAAABXRSTlMA/////xzQJlIAAABgSURBVHichY3dDYAgDISPTgAuYGX/mdANaByAqonSEhPty+XL/ZTgjj4hRCB1Z0Fgi6VoHcq5w3Rp/J0eQQX1hsDK2G1aMD+wuY6eUvxa9uD/NB+jMdakQymrOVrltXYAZGITh03FFbsAAAAASUVORK5CYII=" },
{ "name": "Zombie",
"category": "Base",
"base64": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAElBMVEUAAAAAAADHcwz3kxr/AAD/z5G469XyAAAABnRSTlMA//////96eeD+AAAAYUlEQVR4nJ2O0Q2AMAhEDyZoHUAr+89UjQuUCVr7IZXE9Ec+IC93HDBc8V+IMQYDEpHdYOmNg9lWv3NO05qiPECJFdtQasJlcBJgR1sf2afJ7OvqbeRthKoDcj5epRX9pN0MGRSH7kVdXgAAAABJRU5ErkJggg==" },
{ "name": "Ape",
"category": "Base",
"base64": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAElBMVEUAAAAAAAD3kxr3nzL/xHj////N6G+OAAAABnRSTlMA//////96eeD+AAAAb0lEQVR4nJ3PwQ2AMAgAQNq+TcoGJg6gkf1HIDqCcYGyQFs1kdKHL/nQC4WAhy78XyBiVLgbqHgeLn721JSkYSJarSKQXrhYRjhbJQjMCummVThyttElhNLgLd9NzLudQLQ0DABZFI55s2+1W1TjAn1pHXVHt3hFAAAAAElFTkSuQmCC" },
{ "name": "Alien",
"category": "Base",
"base64": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAAElBMVEUAAAAAAACcXA7QeA33kxr/z5E7kZyXAAAABnRSTlMA//////96eeD+AAAAY0lEQVR4nGNiQAJM5HIEBQUFYBxGY2NjQxhHmJGBgVkApowfWc8HHKYxMvy7wHAXyhFW+K/A8AnKeSsANApu9AWYEUDOf7wOFUDinD17AcExNjZA1vP3A5Ky8wiZ/+8/YBgNAJwZFZmWaFZKAAAAAElFTkSuQmCC" },
...
]
Note: The name (or names) or the category keys are optional - only the base64-encoded image is required - and, yes you can add more keys as you please.