mirror of
https://github.com/tlsnotary/website.git
synced 2026-01-06 21:43:53 -05:00
plugin sdk presentation
This commit is contained in:
4
_drafts/tlsn-sdk-2025-06-23/Prover.svg
Normal file
4
_drafts/tlsn-sdk-2025-06-23/Prover.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 97 KiB |
10
_drafts/tlsn-sdk-2025-06-23/README.md
Normal file
10
_drafts/tlsn-sdk-2025-06-23/README.md
Normal file
@@ -0,0 +1,10 @@
|
||||
* https://marpit.marp.app/
|
||||
* https://chris-ayers.com/2023/03/31/customizing-marp
|
||||
|
||||
```
|
||||
brew install marp-cli
|
||||
```
|
||||
|
||||
```
|
||||
marp sdk.md --preview
|
||||
```
|
||||
4
_drafts/tlsn-sdk-2025-06-23/Verifier.svg
Normal file
4
_drafts/tlsn-sdk-2025-06-23/Verifier.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 32 KiB |
61
_drafts/tlsn-sdk-2025-06-23/plugins.drawio
Normal file
61
_drafts/tlsn-sdk-2025-06-23/plugins.drawio
Normal file
@@ -0,0 +1,61 @@
|
||||
<mxfile host="Electron" agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/27.0.5 Chrome/134.0.6998.205 Electron/35.3.0 Safari/537.36" version="27.0.5">
|
||||
<diagram name="Page-1" id="ZVzS0hWE6rFlb-wLMT9V">
|
||||
<mxGraphModel dx="1190" dy="694" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
|
||||
<root>
|
||||
<mxCell id="0" />
|
||||
<mxCell id="1" parent="0" />
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-1" value="<font style="font-size: 20px;">Desktop<br>App</font>" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="50" y="180" width="90" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-2" value="<span style="font-size: 20px;">Browser</span>" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="150" y="180" width="90" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-3" value="<span style="font-size: 20px;">Mobile<br>App</span>" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="250" y="180" width="90" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-4" value="<span style="font-size: 20px;">Plugin<br>Tester</span>" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="350" y="180" width="90" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-5" value="Plugin" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="55" y="240" width="40" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-6" value="Plugin" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="95" y="240" width="40" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-7" value="Plugin" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="155" y="240" width="40" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-8" value="Plugin" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="195" y="240" width="40" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-9" value="Plugin" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="255" y="240" width="40" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-10" value="Plugin" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="295" y="240" width="40" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-11" value="Plugin" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="355" y="240" width="40" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-12" value="Plugin" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="395" y="240" width="40" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-15" value="<span style="font-size: 20px;">Verifier<br>Server</span>" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="630" y="180" width="90" height="60" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-16" value="Plugin" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="635" y="240" width="40" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-17" value="Plugin" style="rounded=1;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="675" y="240" width="40" height="30" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="wI3hIcFJyoDZbVb4rXhT-18" value="" style="shape=flexArrow;endArrow=classic;startArrow=classic;html=1;rounded=0;width=25.555555555555554;endSize=7.444444444444445;" edge="1" parent="1">
|
||||
<mxGeometry width="100" height="100" relative="1" as="geometry">
|
||||
<mxPoint x="480" y="220" as="sourcePoint" />
|
||||
<mxPoint x="590" y="220" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
4
_drafts/tlsn-sdk-2025-06-23/plugins.svg
Normal file
4
_drafts/tlsn-sdk-2025-06-23/plugins.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 123 KiB |
302
_drafts/tlsn-sdk-2025-06-23/sdk.html
Normal file
302
_drafts/tlsn-sdk-2025-06-23/sdk.html
Normal file
File diff suppressed because one or more lines are too long
144
_drafts/tlsn-sdk-2025-06-23/sdk.md
Normal file
144
_drafts/tlsn-sdk-2025-06-23/sdk.md
Normal file
@@ -0,0 +1,144 @@
|
||||
---
|
||||
theme: gaia
|
||||
class: invert
|
||||
paginate: true
|
||||
marp: true
|
||||
style: |
|
||||
.columns {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
gap: 1rem;
|
||||
}
|
||||
---
|
||||
<!-- _class: lead invert -->
|
||||
# TLSNotary SDK
|
||||
|
||||
A modular SDK for private web data verification
|
||||
without compromising flexibility, privacy, or security.
|
||||
|
||||
---
|
||||
<!-- Speaker notes go here. -->
|
||||
|
||||
## From Breakthrough to SDK
|
||||
|
||||
- ✅ TLSNotary: zkTLS **0 → 1**
|
||||
- 🔓 Censorship-resistant, open source, private, and secure
|
||||
- ⚠️ Next challenge: safe & flexible developer experience
|
||||
|
||||
---
|
||||
|
||||
## What Does TLSNotary Proving Involve?
|
||||
|
||||

|
||||
|
||||
1. **Prover** creates request (with headers, cookies, payload)
|
||||
2. **Prover** redacts/zkps sensitive parts
|
||||
3. **Verifier** validates the revealed data
|
||||
4. **Verifier** performs a follow-up action (e.g., attestation)
|
||||
|
||||
---
|
||||
|
||||
## Challenge: How to Use TLSNotary in Practice?
|
||||
|
||||
- TLSNotary is a Rust library 🦀 (+WASM 🌍)
|
||||
- Clone getting started examples (low level)
|
||||
- Clone our browser extension (requires access to **all data on all sites** 😱)
|
||||
|
||||
How to ensure that:
|
||||
- it is secure?
|
||||
- user privacy is truly protected?
|
||||
|
||||
---
|
||||
|
||||
## Insight: App Logic Is "Same But Different"
|
||||
|
||||
- Wide variety of integration patterns across **web, mobile, and server environments**
|
||||
- A structured solution is required to handle diverse use cases safely and allow for independent **audits**
|
||||
|
||||
---
|
||||
|
||||
## Solution: SDK with Plugin System
|
||||
|
||||
- App-specific logic lives in isolated plugins
|
||||
- TLSNotary runtime handles the rest
|
||||
Web, Mobile, Desktop, Server runtimes (wasm/native bindings)
|
||||
|
||||
_Plugin-style architecture, running in a secure sandbox._
|
||||
|
||||

|
||||

|
||||
|
||||
---
|
||||
<!-- - Plugins allow for independent inspection
|
||||
-->
|
||||
|
||||
## What Exactly Is a Plugin?
|
||||
- Small WebAssembly module defining app-specific logic
|
||||
- Called by the TLSNotary runtime during proof or verification
|
||||
- Written in Rust, TypeScript, or any WASM-compatible language
|
||||
- Compiled, auditable, and sandboxed
|
||||
|
||||
_(We currently use [Extism](https://extism.org/) to handle this.)_
|
||||
|
||||

|
||||

|
||||
|
||||
---
|
||||
|
||||
## Why Not Simple Templates?
|
||||
|
||||
- **Templates** cover common cases but break under edge-case needs
|
||||
- Rigid approaches lead to workarounds and **security** risks
|
||||
|
||||
A simple template engine could be added as a plugin (e.g., to support Reclaim templates).
|
||||
|
||||
---
|
||||
|
||||
## Prover Plugins: Creating proofs
|
||||
|
||||
- Developed by app developer (often also the verifier)
|
||||
- Should be open source
|
||||
- Balance between:
|
||||
- user privacy
|
||||
- verifiability (valid JSON with "holes")
|
||||
- ease of development
|
||||
- Handles 2 major application specific tasks:
|
||||
- Creating requests requires input: headers, cookies, etc.
|
||||
- Redaction (more complicated than it sounds)
|
||||
|
||||
---
|
||||
|
||||
## Verifier Plugins: Interpreting Proofs Safely
|
||||
|
||||
- Can be closed source
|
||||
- Verification on multiple levels:
|
||||
- TLSNotary checks protocol and commitments
|
||||
- Plugins verify structure of revealed data...
|
||||
- ...and process the data for higher-level app consumption
|
||||
|
||||
---
|
||||
|
||||
## Performance and Security Considerations
|
||||
|
||||
- Performance-critical operations reside in core runtime
|
||||
- Plugin execution (control logic) incurs negligible WASM overhead
|
||||
- Sandboxed plugins reduce risk of misconfiguration and simplify auditing
|
||||
- SDK defines a clear API → low level development also fully supported
|
||||
|
||||
---
|
||||
## What About Generic Notaries?
|
||||
|
||||
A **blind notary** is a verifier plugin:
|
||||
|
||||
- Verifies commitments only, without inspecting revealed data
|
||||
- Issues signed attestation for downstream verification
|
||||
|
||||
→ Plugins enable both public attestations and fully private verification flows
|
||||
|
||||
---
|
||||
|
||||
## Closing: Enabling the Next Wave of Use Cases
|
||||
|
||||
- Modular integrations without modifying TLSNotary internals
|
||||
- Safer, more consistent developer experience
|
||||
- Foundation for broader adoption across Web2 and Web3 applications
|
||||
17
_drafts/tlsn-sdk-2025-06-23/tlsnotary-logo.svg
Normal file
17
_drafts/tlsn-sdk-2025-06-23/tlsnotary-logo.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg width="529" height="548" viewBox="-15 -1 550 550" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect
|
||||
fill="#243f5f"
|
||||
width="550"
|
||||
height="550"
|
||||
x="-15"
|
||||
y="-1" />
|
||||
<path
|
||||
d="M153.581 4.41505C153.581 1.08579 157.014 -1.04229 159.856 0.525709L202.517 24.065C203.907 24.8316 204.774 26.3268 204.774 27.9544V58.7885H226.105C228.461 58.7885 230.371 60.7624 230.371 63.1974V133.741L217.573 124.923V72.0154H204.774V504.359C204.774 505.115 204.586 505.859 204.227 506.519L182.897 545.751C181.266 548.75 177.089 548.75 175.458 545.751L154.128 506.519C153.769 505.859 153.581 505.115 153.581 504.359V4.41505Z"
|
||||
fill="#FCFCFC" />
|
||||
<path d="M127.984 160.194V477.639H76.7903V213.102H0V160.194H127.984Z" fill="#FCFCFC" />
|
||||
<path d="M383.952 477.639H435.145V213.102H460.742V477.639H511.935V160.194H383.952V477.639Z"
|
||||
fill="#FCFCFC" />
|
||||
<path
|
||||
d="M230.371 160.194H358.355V213.102H281.565V292.463H358.355V477.639H230.371V424.732H307.161V345.37H230.371V160.194Z"
|
||||
fill="#FCFCFC" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
Reference in New Issue
Block a user