Skip to main content

Post Processing Tools

The size of the contract is a critical characteristic. The best way to keep it small is a well-designed minimalistic code with a reduced number of dependencies. It is especially important for large contracts and huge multi-contract dApps that can take a fortune to deploy.

When you have done your best with the code optimization it is worth reducing the size of the contract by minifying it.

Ready to use script#

We have prepared a simple bash script that can be used to minify .wasm contract file. You can find it here.

The current approach to minification is the following:

  1. Snip (i.e. just replace with unreachable instruction) few known fat functions from the standard library (such as float formatting and panic-related) with wasm-snip.
  2. Run wasm-gc to eliminate all functions reachable from the snipped functions.
  3. Strip unneeded sections, such as names with wasm-strip.
  4. Run binaryen wasm-opt, which cleans up the rest.

Requirements to run the script:#

cargo install wasm-snip wasm-gc
  • install binaryen and wabt on your system. For Ubuntu and other Debian based Linux distributions run:
apt install binaryen wabt

WARNING#

Minification could be rather aggressive, so you must test the contract after minification. Standalone NEAR runtime could be helpful here.