23 unstable releases (3 breaking)

0.6.9 Nov 27, 2023
0.6.5 Oct 26, 2023
0.5.1 Jul 20, 2023
0.3.6 Mar 30, 2023
0.3.1 Nov 29, 2022

#167 in Magic Beans

GPL-3.0 license

255KB
3.5K SLoC

Crates.io Authors License

githubcrates-iodocs-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.

Usage

The 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 on the rollup-plugin-rust README.

Build Instructions

yarn build

This will produce .js and .wasm files inside of the dist folder.

Testing

Run tests in NodeJS

wasm-pack test --node

Run tests in a browser

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 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 repo in the website folder.

Dependencies

~41–57MB
~703K SLoC