UNPKG

@puzzlehq/aleo-wasm-nodejs

Version:
84 lines (57 loc) 3.59 kB
[![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://provable.com) [![License](https://img.shields.io/badge/License-GPLv3-blue.svg)](./LICENSE.md) - Update the package version in `Cargo.toml` to one patch version above the current one - Run `./build-puzzle.sh` - Push your changes so the package number stays up to date [![github]](https://github.com/ProvableHQ/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 `Node.js`. 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 Node.js ```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 [provable.tools](https://provable.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/ProvableHQ/sdk) repo in the `website` folder. ## Jonathan Update 04/29/25 to get the aleo_wasm.js file to work in jigsaw, you have to replace wasm_path with const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const wasm_path = `${__dirname}/aleo_wasm.wasm`; then you have to replace require("fs") with fs. Finally, you have to add the correct imports to the files. import fs from 'fs'; import { fileURLToPath } from 'url'; import { dirname } from 'path' You must do this for both dist/mainnet/aleo_wasm.js and dist/testnet/aleo_wasm.js. Ping jon if you need an example of the files.