zknotary-verifier
v1.2.0
Published
package for tlsn notary proof verification in wasm
Readme
Verifier
Introduction
The Verifier component of zkNotary is a crucial tool for validating the authenticity of data notarized by the Prover. It's a WebAssembly module compiled from Rust, using wasm-pack, and is designed for use within JavaScript applications.
Features
- WebAssembly Compilation: The Rust code is compiled into WebAssembly, making it suitable for integration in web environments.
- Single Public Function -
verify: Exposes a function that takesproof_jsonandnotary_pubkeyas inputs and returns a plain-text notarization of the original interaction with a web server. - Digital Signature Validation: Validates that the proof was digitally signed by the notary server, ensuring authenticity.
Prerequisites
- Rust
- Cargo
- wasm-pack
Note: This project requires a clang version newer than 16.0.0 to compile ring to wasm. If not, you will run into warning: error: unable to create target: 'No available targets are compatible with triple "wasm32-unknown-unknown"'
File Structure
src/lib.rs: This is the main library file for the Verifier.src/utils.rs: This file contains utility functions used by the Verifier.pkg: Autogenerated directory where the npm package code lives.examples/node: A sample node application that showcases how to use the verifier package. For more information see the sample application's README file.
Usage
- Install wasm-pack
npm install -g wasm-pack- Optional: For Mac users with a version of clang older than 16.0.0, you can use Homebrew to install
llvmand then use it to compile the project.
brew install llvm
echo 'export PATH="/path/to/your/newly/installed/llvm/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc- Build the wasm project
wasm-pack build --target nodejsThis creates a new pkg directory with the wasm package ready to publish to npmjs.com.
- Publish your npm package
cd pkg
npm publishContributing
Contributions are welcome. Please submit a pull request or create an issue to discuss the changes you want to make.
Acknowledgements
This project is inspired by and borrows code from the following projects:
We are grateful to the authors of these projects for their work.
License
Apache
