-
-
Notifications
You must be signed in to change notification settings - Fork 50
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Increase portability for v0.10 #129
Comments
I think this is a good decision; since we're using BDK for wallet stuff, it's often difficult to upgrade RGB due to the mutual rust-bitcoin dependency. All three had to be updated at once. As for bulletproofs, have you received any updates from the Blockstream folks? Is there anything @fedsten or @Gigi3d at DIBA can do to help that along from the business side? |
This also would help RGB Core to become no-std and be able to run on hardware wallets. |
My expectation that the proposal would allow to go from this list of consensus-level libraries (plus their upstream dependencies):
to this list:
25 vs 10 libraries; and in 25 libs there were 6 which are not maintained by LNP/BP + 2 C libs, including one WASM-compatible. Wit this proposal we are getting rid of all those external legacy |
Much better! This will also streamline review, publishing, and a security audit, in addition to the portability improvements. |
Also, I Just ran into a case today where I could've made use of this, since there are data structures returned from RGB like So we basically have to return double-encoded (unparsable) JSON, which is ugly and useless. |
Sorry, not clear, use of what? |
RGB structs that can compile to WASM so I can deserialize them on the frontend. |
But why some of RGB structs can't compile to wasm? Because they depend/contain bulletproof data? Or any other reason? |
The crates I get them from (like |
Amplify was fixed, but probably |
I plan to dramatically increase portability of the new release, including support for WASM builds, by reducing number of dependencies - and getting rid of all C-libraries downstream. Specifically, I plan to:
rust-miniscript
, since this consensus library must not touch anything wallet-relatedsecp256k1
dependency, since this library doesn't do anything to public or private keys outside of bulletproffs/pedenrsen commitments, which anyway are not a part ofsecp256k1
rust-bitcoin
library (which requires secp256k1), but this is nice, since again, only a very few structures from rust-bitcoin are used in RGB core and in single-use-seals and they can be replaced with local vatiants. We do not use transactions, keys etc - just txids and output numbers, which is highly trivial and for sure shouldn't requirerust-bitcoin
dependency tree.descriptor-wallet
dependency here, since again RGB Core has nothing to do with any wallet-level stuff.secp256k1-zkp
fork which requires C lib, breaks WASM compillation and is needed for bulletproofs. But I think this is also possible and I am opening a separate issue to discuss on the best way of achieving that (UPD: Bulletproofs epic #130).All these changes should significantly speed up compilation time - and also allow us to have a good progress toward ossification and
v1.0
release: without rust-bitcoin family of dependencies we would not need to re-factor everything each new release and do a new version. RGB Core would become pure consensus library not requiring regular releases - and the release cycle of RGB standard library, RGB Node and LN-/wallet-related stuff can become fully independent (and much shorter) with that. I.e. versionv0.10
of RGB Core should become the last version for at least this year (unless a major bugs are discovered); after which we can move tov1.0
of it.The text was updated successfully, but these errors were encountered: