aleo-wasm 0.6.9

WebAssembly based toolkit for developing zero knowledge applications with Aleo
Documentation
[![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.