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
, andTransactions
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.
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.
Follow the installation instructions on the rollup-plugin-rust README.
yarn build
This will produce .js
and .wasm
files inside of the dist
folder.
Run tests in NodeJS
wasm-pack test --node
Run tests in a browser
wasm-pack test --[firefox/chrome/safari]
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.