cosmjs
cosmjs copied to clipboard
Find strategy to remove libsodium being bundled
Currently libsodium is brought in for 2 imports:
- Argon2I
- Ed25519 key pairs
But neither of these code utilities are used by most apps. I cant even see usage of these within cosmJS. This is causing a large import to appear in our bundles. (190kb gzipped, 500kb after parsing)
I'm new to the JS ecosystem, so these are two options I see right now:
- Move the libsodium dependency into another package thats not imported everywhere
- Require libsodium wrappers to be an external dependency, and its up to the caller to include libsodium (https://webpack.js.org/configuration/externals/)
This seems from my (very not robust) testing, to not be handled with tree-shaking in turbo right now, for an app that uses stargate queries.
Thanks for bringing this up. How do you feel about https://github.com/cosmos/cosmjs/issues/1479?
That sounds great to me! Would love for these to just be deleted from the codebase
there's argon2 implementation in noble/hashes which is already bundled, but unused - wasm version can be removed
ed25519 would be almost free if you switch from elliptic to noble/curves, which exposes both secp256k1 and ed25519 with shared code