tlsn-js
NPM Modules for proving and verifying using TLSNotary in the browser.
The prover requires a notary-server and a websocket proxy.
Important
The primary purpose of
tlsn-jsis to support the development of the TLSNotary browser extension.
Please do not treat this as a public API (yet).
Important
tlsn-jsis developed for the usage of TLSNotary in the Browser. This module does not work innodejs.
License
This repository is licensed under either of
at your option.
Examples
tlsn-js can be used in many different modes, depending on your use case.
The ./demo folder contains three demos of tlsn-js:
react-ts-webpack: create an attestation with a Notary and render the result.interactive-demo: prove data interactively to a Verifier.web-to-web-p2p: prove data between two peers, in the browser.
Running a local websocket proxy
In the demos, we attest data from the https://swapi.dev website. Because the browser does not allow for TCP connections, you need to set up a websocket proxy:
-
Install websocat:
Tool Command cargo cargo install websocatbrew brew install websocatsource https://github.com/vi/websocat -
Run a websocket proxy for
https://swapi.dev:
websocat --binary -v ws-l:0.0.0.0:55688 tcp:swapi.dev:443
Install as NPM Package
npm install tlsn-js
Development
This library is a JS wrapper for tlsn-wasm.
To work on tlsn-wasm and tlsn-js at the same time, replace the "tlsn-wasm" dependency in package.json with:
"tlsn-wasm": "./tlsn-wasm/pkg"
and run npm run build:wasm to build tlsn-wasm locally.
Next, run:
npm install
npm run test
Note: if you want to switch back to a build with the version from npm, make sure to reset/remove package-lock.json, or it will keep using the local link.
Build for NPM
npm install
npm run build
Adding a new test
- Create a new
new-test.spec.tsfile in thetest/directory. - Add your spec file to the entry object in
webpack.web.dev.config.js. - Add a new
divblock totest/test.ejslike this:<div>Testing "new-test":<div id="new-test"></div></div>. Thedivid must be the same as the filename.