cosmjs icon indicating copy to clipboard operation
cosmjs copied to clipboard

Find strategy to remove libsodium being bundled

Open ValarDragon opened this issue 2 years ago • 3 comments
trafficstars

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.

ValarDragon avatar Sep 20 '23 04:09 ValarDragon

Thanks for bringing this up. How do you feel about https://github.com/cosmos/cosmjs/issues/1479?

webmaster128 avatar Sep 20 '23 06:09 webmaster128

That sounds great to me! Would love for these to just be deleted from the codebase

ValarDragon avatar Sep 20 '23 08:09 ValarDragon

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

paulmillr avatar Sep 20 '23 22:09 paulmillr