XYXYX introduces a fully blockchain-based iteration of the ERC-404 standard.
Each full XYXYX is represented by an ERC-721 token. The token's tokenURI
points to a unique Base64-encoded string, which is permanently stored on the blockchain as part of the token's metadata. This Base64 string encodes an SVG image, which is a human-readable format. As a result, the XYXYX is generated, stored, and rendered fully on-chain.
Below is an architecture overview of XYXYX, using the tokenURI
of Xyxyx #1
as an example:
1. Token URI Base64 String
Copy data:application/json;base64,eyJuYW1lIjogIlh5eHl4ICMxIiwgImRlc2NyaXB0aW9uIjogIiIsICJpbWFnZSI6ICJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUIzYVdSMGFEMGlOVEF3SWlCb1pXbG5hSFE5SWpVd01DSWdlRzFzYm5NOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6SXdNREF2YzNabklqNDhjbVZqZENCM2FXUjBhRDBpTVRBd0pTSWdhR1ZwWjJoMFBTSXlOVEJ3ZUNJZ1ptbHNiRDBpSXpBd01DSWdMejQ4Y21WamRDQjNhV1IwYUQwaU5UQWxJaUJvWldsbmFIUTlJakkxTUhCNElpQm1hV3hzUFNJak5EUmtaR05qSWlCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZ3dMQ0F5TlRBdU1EQXdNREF3S1NJZ0x6NDhjbVZqZENCM2FXUjBhRDBpTlRBbElpQm9aV2xuYUhROUlqSTFNSEI0SWlCbWFXeHNQU0lqT0RneU1qSXlJaUIwY21GdWMyWnZjbTA5SW5SeVlXNXpiR0YwWlNneU5UQXNJREkxTUM0d01EQXdNREFwSWlBdlBqeDBaWGgwSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZEhKaGJuTm1iM0p0UFNKMGNtRnVjMnhoZEdVb01qTXVNREF3TURBd0xETXpMakF3TURBd01Da2lJR1pwYkd3OUlpTm1abVlpSUdadmJuUXRabUZ0YVd4NVBTSkRiM1Z5YVdWeUlFNWxkeXhEYjNWeWFXVnlMRXgxWTJsa1lTQlRZVzV6SUZSNWNHVjNjbWwwWlhJc1RIVmphV1JoSUZSNWNHVjNjbWwwWlhJc2JXOXViM053WVdObElpQm1iMjUwTFhOcGVtVTlJakV3Y0hnaUlHWnZiblF0ZDJWcFoyaDBQU0ppYjJ4a0lqNHhQQzkwWlhoMFBqd3ZjM1puUGc9PSJ9
The Base64 string encoding the token URI, which is stored within the token’s metadata.
2. Base64 Decoded to JSON
Copy {"name": "Xyxyx #1", "description": "", "image": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTAwIiBoZWlnaHQ9IjUwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIyNTBweCIgZmlsbD0iIzAwMCIgLz48cmVjdCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjI1MHB4IiBmaWxsPSIjNDRkZGNjIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLCAyNTAuMDAwMDAwKSIgLz48cmVjdCB3aWR0aD0iNTAlIiBoZWlnaHQ9IjI1MHB4IiBmaWxsPSIjODgyMjIyIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgyNTAsIDI1MC4wMDAwMDApIiAvPjx0ZXh0IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjMuMDAwMDAwLDMzLjAwMDAwMCkiIGZpbGw9IiNmZmYiIGZvbnQtZmFtaWx5PSJDb3VyaWVyIE5ldyxDb3VyaWVyLEx1Y2lkYSBTYW5zIFR5cGV3cml0ZXIsTHVjaWRhIFR5cGV3cml0ZXIsbW9ub3NwYWNlIiBmb250LXNpemU9IjEwcHgiIGZvbnQtd2VpZ2h0PSJib2xkIj4xPC90ZXh0Pjwvc3ZnPg=="}
When the token URI's Base64 string is decoded, it generates a JSON file containing a secondary Base64 string under the key "image":
.
3. JSON Base64 Decoded to XLM
Copy <svg width="500" height="500" xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="250px" fill="#000" /><rect width="50%" height="250px" fill="#44ddcc" transform="translate(0, 250.000000)" /><rect width="50%" height="250px" fill="#882222" transform="translate(250, 250.000000)" /><text xmlns="http://www.w3.org/2000/svg" transform="translate(23.000000,33.000000)" fill="#fff" font-family="Courier New,Courier,Lucida Sans Typewriter,Lucida Typewriter,monospace" font-size="10px" font-weight="bold">1</text></svg>
When the secondary Base64 string from the JSON file is decoded, it generates the XLM code that represents the SVG output.
4. SVG Output
The resulting SVG output generated by the XLM code.