BRC-555: Programmable Ordinals
Introduction
BRC-555 is a new standard enabling programmability for ordinal collections. It allows individual inscriptions and/or complete ordinal collections to be modified based on a comprehensive infrastructure of parent-child relationships. Its modular structure enables the division of inscriptions into as many parts as desired, thus facilitating efficient updates at a lower cost.
Advantages
Ordinals on the Bitcoin network consist of immutable data “inscribed” in the Segwit envelope of UTXOs. This immutability eliminates the option make changes or updates to ordinals after their initial inscription, limiting their functionality. Using BRC-555, ordinals gain increased functionality, paving the way for the creation of collection-wide updates on Bitcoin.
(1) Delegate is a batch minting function that reduces cost of inscribing considerably; however, this function can only be used when the content of the inscriptions are absolutely the same, so it can't be used in generative collections. BRC-555 makes Delegate function available for any type of collections and helps you reduce minting costs especially for high supply.
(2) The modular structure allows for an ordinal to be updated in parts. This enables cost reduction per update and prevents payments for parts that remain unchanged. Just by changing a few lines in your code, you can update all inscriptions in your collection simultaneously.
(3) BRC-555 makes use of Parent-Child model to make changes. By inscribing a composite parent, it is possible to delegate temporary control of your collection to your developers while you hold the ownership rights in your cold storage or in a multi-signature wallet safely.
Additionally, the composite parent model provides multiple working environments on projects, distributing authority for updates without giving all powers to one person, thus decentralizing responsibility and enhancing security.
(4) Errors made on ordinals does not have to be your destiny. For example, If you made a mistake and ended up with a flawed art generation, or inscribed something with a type; they can all be corrected.
(5) Applications that rely on updates or patches (e.g. games, metaverse) can now be developed on Bitcoin network because BRC-555 does not only enable changing your inscriptions but also adding new features.
(6) Ordinal technology is rapidly evolving. A year from now, there could be a whole new set of features that you might wish you had for your collection when you inscribed it. BRC-555 helps you stay up to date.
(7) Collections can be developed adhering to a protocol instead of using independent, untested methods, providing security and interoperability.
(8) If you don't want your collection to be modifiable at any stage, you can renounce ownership by sending the parent to Satoshi wallet.
(9) BRC-555 does not have any compability issues. Whether you are inscribing images, videos, audio, HTML or 3D assets, you can make them all programmable without any issues.
Disadvantages
(1) The initial set up is not easy as there isn't a front-end yet to inscribe necessary components of BRC-555.
(2) Loss of the root parent would make new updates impossible. Thus, you must make sure to keep the root parent safely in cold storage or in a multisig wallet.
(3) Malicious project owners can render an ordinal non-functional, alter traits, and make unjust distributions through projects lacking verified randomness. To counteract this and ensure reliability, it is crucial that the parts determining an ordinal’s value are contained in non-updatable sections.
Modules
Root Parent
This is the top layer of the structure and the root parent. It is one of the most critical parts and the single point of security vulnerability in the system. It is highly recommended that responsible entities secure this asset with multi-signature access.
Layer Parent
The middle layer parent. The list of modules is inscribed as a JSON file under these parents. If a parent is lost or access is denied, a new parent can be inscribed using the root parent to ensure the continuity of the collection.
Inscription.html
This immutable part only facilitates the loading of the script file. A collection is delegated to this ordinal for creation. Multiple collections can be created with different contents.
Incription.js
The initialize function is called within inscription.js to provide initialization. It has its own section within Library.json. The procedures to be conducted, functions to be run, and their order are specified here. It is an updatable part. It also has functions like defining content and pulling common parameters.
Fetcher Script
One of the immutable parts used to retrieve ordinals in a parent-child relationship. It does not need to be inscribed for each collection; once inscribed, it can be used across all collections.
Library.json
A JSON file containing all modules, styles, and objects to be loaded. It consists of version, modules, and initialize sections. Updating the version is crucial for verification. The initialize and version sections are mandatory. The modules section is optional and can be configured as described below.
Loader.js
This part allows for the loading of the ordinal content, enabling the creation of ordinals with the desired appearance according to specified parameters. It is an optional and modifiable section.
Step-by-Step process
The Github link below includes a generic step-by-step process guideline for developers eager to build using the BRC-555. We highly encourage experimentation using BRC-555. Ordinal evolution, project gamification, simple smart contracts functionality, and many other options should be more feasible using this BRC-555 compared to existing methods.
https://github.com/Extraordinals/BRC555
Conclusion
BRC-555 allows ordinals to be programmed in compatability with the existing standards. Use of BRC-555 enables programmable inscriptions/collections to allow the creation of new type of products on that are dynamic in nature. In addition, BRC-555 allows keeping up with the rapid technological innovation within the ordinal industry, and fixing any imperfections with the existing features of a collection.
Technical Support
This new standard was first implemented in the XO | Unchained collection by ExtraOrdinals. We believe it provides Ordinal builders with a more flexible and functional development experience while retaining the "forever on-chain" ethos of ordinals and open the door for further innovation and development on Bitcoin's core infrastructure.
To support this innovation, we invite Ordinal builders to utilize, experiment with and improve BRC-555 in true open-source fashion. Our community is open to anyone looking for advise and collaboration!
Don't hesitate to reach out, you can find us on discord!
Last updated