This issue was created as a discussion in LNP/BP association on 31 Mar 2021 https://github.com/LNP-BP/LNPBPs/discussions/95. Since it was an improper place for it I move it here and delete it there. Here is a copy of the text:
Today RGB performs validation in three steps:
validation of commitments against Bitcoin transaction graph (either from blockchein using resolvers like Electrum or from LN channel using LN nodes)
validation of RGB state transition history against Schema rules, which includes
validation of complex state changes (lie zk-proofs for non-inflation of the assets) using "embedded procedures"
This was a temporary solution before completion of Simplicity, expected Q4 2020. However, Simplicity takes longer than expected and still is not a part of Liquid, meaning that it's actual use in RGB may start not earlier than Q4 2021. At the same time, limitations of the embedded procedures makes very complex implementation of new RGB schema aside of the number of procedures which will be provided at the moment of RGBv1 mainnet release, planned on 20201 H2, leaving RGB poorly extensible until RGBv2 with Simplicity will arrive in 2023, or even later.
Thus my proposal is:
Accept the fact that it will be impossible to add Simplicity to RGBv1 and move its support in the roadmap on RGBv2 (RGBv2 will be a separate backward-incompatible system anyway).
Consider replacing hard-coded "embedded procedures" vitrual machine with WASM engine for RGBv1 – and re-write embedded procedures using it. Rationale: WASM is rust-based, so this will require very small changes to the existing code base, and will allow more custom schema development with RGBv1, much before RGBv2.
This issue was created as a discussion in LNP/BP association on 31 Mar 2021 https://github.com/LNP-BP/LNPBPs/discussions/95. Since it was an improper place for it I move it here and delete it there. Here is a copy of the text:
Today RGB performs validation in three steps:
The number of this "embedded procedures" is very limited; they are implemented like a part of overall rust validation logic alonside the schema (but as a separate "virtual machine" module): https://github.com/rgb-org/rgb-core/blob/master/src/vm/embedded.rs
This was a temporary solution before completion of Simplicity, expected Q4 2020. However, Simplicity takes longer than expected and still is not a part of Liquid, meaning that it's actual use in RGB may start not earlier than Q4 2021. At the same time, limitations of the embedded procedures makes very complex implementation of new RGB schema aside of the number of procedures which will be provided at the moment of RGBv1 mainnet release, planned on 20201 H2, leaving RGB poorly extensible until RGBv2 with Simplicity will arrive in 2023, or even later.
Thus my proposal is: