Overview
What are Web Proofs?
Web Proofs are proofs of arbitrary data served to end users by an internet server. Web Proofs unlock verifiable access to existing data sources by combining powerful cryptography like client-side proving and zero-knowledge proofs.
What is the Web Proofs SDK?
The Web Proofs SDK is a set of developer tools that gives application developers the power to incorporate any internet data into an application. Application developers that incorporate Web Proofs into their user flows can create novel application experiences for their users.
Using the Web Proofs SDK, application developers can:
- Tailor application flows to specific types of users (like one flow for a user with $X in Amazon purchases last year, and a different flow for a user with less than $Y in Amazon purchases last year)
- Marketplaces with bootstrapped identity and reputation (think ‘modern Craigslist’, but with proofs of reputation, or proofs of prior positive interactions)
- Filter out spam/bot accounts (by making new sign-ups prove that they meet the necessary characteristics for joining a community, like # of Github contributions or whether they live in a specific geography)
- Develop robust identity products (ranging from Proof of Humanity to simple reputation products)
- Allow users to share a commonality, like being employees at a certain company
In other words, the Web Proofs SDK helps developers transfer data from arbitrary internet servers into proofs that can be verified in a smart contract. Application developers can then verify those proofs and incorporate them into their application flows.
The Web Prover is infrastructure for generating Web Proofs. The default option for generating Web Proofs is to use the Pluto-hosted service. We recommend using our Javascript SDK, which uses a Pluto-hosted notary. Learn more in our integration guide here. Developers do not need to set up the prover or host it themselves, unless they explicitly want to self-host this infrastructure or build custom infrastructure.
How do Web Proofs work?
When a TLS connection is opened between an end user and a server, users are able to prove that the internet server (like Reddit servers, or Venmo servers, or any other internet server) has provided some specific data (like a user’s Reddit Karma history or Venmo balance) to the user. That proof is a Web Proof - a proof of any data served to an end user by an internet server.
Another way to think about Web Proofs is that Web Proofs combine ‘a proof that some internet data exists’ with ‘a proof of that data’s integrity’. When a Web Proof is created, it can be verified independently. Verifying a Web Proof provides guarantees about the underlying data that is being verified. Developers can incorporate these Web Proofs into their user flows to create novel application experiences.
You can read more about the underlying technology that powers Web Proofs in the Concepts section, specifically the Origo page,the TEEs page, the MPC page, and the Circuits page.