[![Crates.io](https://img.shields.io/crates/v/aleo-wasm.svg?color=neon)](https://crates.io/crates/aleo-wasm) [![Authors](https://img.shields.io/badge/authors-Aleo-orange.svg)](https://aleo.org) [![License](https://img.shields.io/badge/License-GPLv3-blue.svg)](./LICENSE.md) [![github]](https://github.com/AleoHQ/sdk) [![crates-io]](https://crates.io/crates/aleo-wasm) [![docs-rs]](https://docs.rs/aleo-wasm/latest/aleo-wasm/) [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rust [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rs # Aleo Wasm Aleo JavaScript and WebAssembly bindings for building zero-knowledge web applications. `Rust` compiles easily to `WebAssembly` but creating the glue code necessary to use compiled WebAssembly binaries from other languages such as JavaScript is a challenging task. `wasm-bindgen` is a tool that simplifies this process by auto-generating JavaScript bindings to Rust code that has been compiled into WebAssembly. This crate uses `wasm-bindgen` to create JavaScript bindings to Aleo source code so that it can be used to create zero knowledge proofs directly within `web browsers` and `NodeJS`. Functionality exposed by this crate includes: * Aleo account management objects * Aleo primitives such as `Records`, `Programs`, and `Transactions` and their associated helper methods * A `ProgramManager` object that contains methods for authoring, deploying, and interacting with Aleo programs More information on these concepts can be found at the [Aleo Developer Hub](https://developer.aleo.org/concepts). ## Usage The [rollup-plugin-rust](https://github.com/wasm-tool/rollup-plugin-rust/) tool is used to compile the Rust code in this crate into JavaScript modules which can be imported into other JavaScript projects. #### Installation Follow the [installation instructions](https://github.com/wasm-tool/rollup-plugin-rust/#installation) on the rollup-plugin-rust README. ### Build Instructions ```bash yarn build ``` This will produce `.js` and `.wasm` files inside of the `dist` folder. ## Testing Run tests in NodeJS ```bash wasm-pack test --node ``` Run tests in a browser ```bash wasm-pack test --[firefox/chrome/safari] ``` ## Building Web Apps Further documentation and tutorials as to how to use the modules built from this crate to build web apps will be built in the future. However - in the meantime, the [aleo.tools](https://aleo.tools) website is a good example of how to use these modules to build a web app. Its source code can be found in the [Aleo SDK](https://github.com/AleoHQ/sdk) repo in the `website` folder.