RGB v0.11-beta6: API Stabilization, Improved Interfaces Inheritance, Scripting, Data Containers, Invoicing
RGB is a system of private and scalable client-validated smart contracts on Bitcoin and Lightning developed by LNP/BP Standards Association.
- "LNP/BP Standards Association is happy to announce the sixth beta release of RGB version 0.11," the project announced in a blog post.
"The release marks a reference point for public audit of RGB v0.11. The APIs are now stable, and feature-freeze has been reached: no further consensus-level or standard library breaking changes are planned (unless they would become required as a result of newly discovered bugs/issues by the community or auditors)."
- "All developers working with RGB are urged to update to the new version and use it to ensure cross-application interoperability between assets, invoices, consignments and other RGB exchange data."
- "You can check that you apps are working correctly with the new contract ids, as well as study new interfaces made with inheritance using RGBEX explorer."
- "Beta 6 contain one of the largest changelog: we have fixed, closed and merged more than 120 issues and pull requests. More than 20 engineers, both from LNP/BP Standards Association member companies and independent third-parties has contributed since last Beta 5 release by reviewing, discussing and proposing PRs to the RGB codebase across ~50 repositories related to the project."
"With Beta 6 release RGB development enters a new phase of preparation for a public preview of the RGB v0.11. You can track us on our journey towards v0.11 release with this GitHub dashboard."
- "Specifically, starting from the beta 6 release, we are also looking for qualified auditors and penetration testers who can contribute into making RGB more secure and robust. We plan a grant program to facilitate this process; with any enquiries please contact us via info@lnp-bp.org."
What's new
- Consensus-level changes. Beta 6 implements four proposals for consensus-level changes coming from the RGB change proposals:
- RCP-240227A: Make timestamp part of genesis.
- RCP-240227B: Make issuer identity part of genesis.
- RCP-240313B: Move script and type libraries outside of schema, interfaces and operations.
- RCP-240326A: Multiple metadata fields in contract operations.
- Other consensus-level changes include:
- "Moved information about asset tags, used in homomorphic encryption of the contract state, from standard library to contract genesis and adding them to the contract commitments; also significantly simplifying making contract operations which involve these tags."
- "Improved multichain support, such that RGB contracts can run on top of multiple layer 1 solutions. This gives contract users ability to do cheaper and faster transactions using Liquid network, and benefit from the new client-side validated layer 1 called Prime, scheduled for the release later."
- "New virtual machine op-codes for introspecting smart contract state and simplified branching op-codes making scripts more streamlined."
- "More RGB macro assembly instructions allowing to write complex verification code."
- "Improved checking and handling of strings with restricted character set, like the ones used for RGB20 asset tickers and names."
- "Refactored mechanism for combining different types of single-use seals (like tapret- and opret-based) in inputs of a state transitions."
- "Removed legacy schema inheritance feature in favor of new advanced interface inheritance, which is implemented outside of consensus code."
- Interfaces and inheritance. "Interface inheritance is the brand-new way of designing RGB smart contract interfaces which brings much better modularity, audibility and upgradeability for the contracts."
- Invoicing. "We also have made few changes to the invoicing:
- Starting from the current release we hide the amounts behind custom latin letter encoding (modified Base32 encoding with no numbers used).
- Invoices has changed they way a pay-to-address requests are handled. Previously, an explicit bitcoin address was used; now we standardized that with usual blind seal definitions using the same encoding, chunking and supporting incorporation of custom seal close method information.
- We have optimized identities we use across RGB (like contracts, interfaces etc) – it was switched from Baid58 to Baid64 encoding, which resulted in shorter fixed-length identifiers, robust chunking, and solved few issues with its URI standard compatibility and chunking."
- Data containers. "There are several types of data containers in RGB. In v0.11 beta 6 we have put a lot of optimizations into the way containers work, making them more compact and secure."
- Other standard library changes. "There are more improvements in the standard library APIs, including completed deterministic contract and operation creation; simplified API for working with contracts and consignments; many new interface-related APIs and support for accessing and adding metadata and state extension-related information to the contracts and operations."
- Application-level changes. "For the first time, RGB v0.11 comes with embedded wallet support right out of the box. This was one of the major pain points for the users and developers. Beta 6 extends and simplifies RGB wallet APIs, as well as improves Electrum and Esplora support."
- Toolchain and dev tools. "On top of standard and wallet libraries RGB v0.11 include a new high-level RGB runtime for software integration and simple command-line tool
rgb
made with it."- "In beta 6 we put a lot of effort in improving them further, providing new APIs and commands, as well as improving output presentation and information details, including presenting non-asset smart contract state like digital rights, attachments and arbitrary structured data."
- "Also, we added commands for debugging and testing smart contracts, like those converting data consignments and stash information into human-readable and editable YAML format, also allowing to import it back with some changes; which can be useful for penetration testing."
The complete list of all closed issues and pull requests can be found on the public RGB roadmap page. For detailed explanation on changes, see a full release blog post here.