NPM modules for proving and verifying using TLSNotary in the browser.
Important
tlsn-js is developed specifically for browser environments and does not work in Node.js.
Important
The primary goal of tlsn-js is to support the development of the TLSNotary browser extension.
Please do not treat this as a public API (yet).
This repository is licensed under either:
...at your option.
tlsn-js can be used in several modes depending on your use case.
The ./demo folder contains three demos:
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 browser peers.
In the demos, we attest data from https://raw.githubusercontent.com. Since browsers do not support raw TCP connections, a WebSocket proxy is required:
-
Install wstcp:
Tool Command cargo cargo install wstcpbrew brew install wstcpsource https://github.com/sile/wstcp -
Run a WebSocket proxy for
https://raw.githubusercontent.com:wstcp --bind-addr 127.0.0.1:55688 raw.githubusercontent.com:443
npm install tlsn-jsThis library wraps the tlsn-wasm module.
To work on both tlsn-wasm and tlsn-js locally, update package.json:
"tlsn-wasm": "./tlsn-wasm/pkg"Then build tlsn-wasm:
npm run build:wasmNext:
npm install
npm run testℹ️ To switch back to the npm-published version of
tlsn-wasm, delete or resetpackage-lock.jsonto remove the local path reference.
npm install
npm run buildTesting is slightly complex due to the need for browser-based workers.
- Tests live in the
test/directory. - The
tests/directory contains a Playwright test runner that opens a Chromium browser and runs the actual test page.
Some tests require a running Notary. You can start one via Docker:
npm run notary-
Create a
new-test.spec.tsfile in thetest/directory. -
Add your spec file to the
entryobject inwebpack.web.dev.config.js. -
Create a corresponding
new-test.spec.tsfile in theplaywright-test/directory. -
Add an
expect()call for it intests/test.spec.ts.
Playwright is also used to test the demos.
npm install
npm run test-
View tests in the browser:
npx playwright test --ui -
Debug tests:
npx playwright test --debug