Hi everyone, my name is Arur Maro and I'm devil engineer in V layer. In this presentation I would like to focus on web proofs also known as a ZKTLS and how you can use them in your solidity smart contracts. I don't have much time so let's jump straight to the agenda. It's quite simple. I will start with outlining what V layer offers to solidity developers, what you can do with it.
Um then I will briefly mention on the very high level how this works, what components are needed. Then we will go through the bounties that are available for this if global and what you can win from V layer with your cool project. And then I will briefly mention how to start with Vlayer 2.0. So actually why do you need web proofs as a solidity developer?
As you probably know, smart contracts are running on very isolated environments. It's rather impossible to access external data. Of course, it's fine for many existing onchain solutions, but what if you needed to bound your solidity smart contract to real world assets? Oracles can't help with that most of the time because they're really good tool, but they work well with the public data, but it's way more complicated to actually access some private balances or some identity attributes in the privacy preserving way. So for example, if you would like to access your Reddit data, your fintech application data, your banking app information about your balance, about your recent history, what you did and and so on, it's of of course impossible to do with the oracles.
However, thanks to zero knowledge proofs and state-of-the-art cryptography, now it's possible. Vlayer uh web proofs allow you to notoriize any web to data call. So you can make a call to GitHub API or even some uh website with HTML selectively extract piece of data verify it and then turn it into zero knowledge proof that can be verified onchain. If this sounds interesting to you I will show you the demo how this works. And uh by the way um if you would like to try this project yourself just check the description to this video and there you should find a link to the documentation and link to our GitHub open repository.
Feel free to experiment with it on your own or even use it as a template or plate for upcoming um if global. So let's see the example of the proof of contributions. So I will go to this regular Nex.js application and here we can specify the GitHub repository. So owner and repo if in case if it's a private repo you need to provide us with the read access key.
Um and then we can just provide here the handle this u repo is public so I don't have to give any extra authentication. And now behind the scenes we are sending payload uh of what call we want to do to our web um prover. And this web prover is initializing um connection with the notary that is looking on the every chunk of um this call between our web prover server and github servers and notary in that configuration is needed in order to actually be sure that uh the communication between my server and GitHub actually happened and the certificates were okay and this communication was not tempered because of course if we would do some uh malicious action there is a huge risk of generating the proof that is proving something that didn't happen in re reality. But here if we have a trusted notary which is an extra party uh then the notary is uh basically signing that this particular request happened and it was correct. And now we have a web proof.
And web proof is something that we can just take to some centralized um server and just verify that the signatures are matching with the notary signatures and that actually this attestation came from the certain notary. However, what if we want to bring this data onchain? Well, it's um very simple. All we have to do now is to generate a zero knowledge proof. So if I click here um of course it works in the mock uh mocked version of our um zik prover so it was fast normally it takes a bit longer but here now we have uh public outputs out of this web proof.
So we have a certain data that we can insert into smart contract. Here we have the repo name my handle from my GitHub and the amount of pull requests that got merged into this repository. We have also a queries hash because we are taking this free items here using James path from the JSON that was returned from the GitHub uh API. Um and uh the queries hash is basically calculated out of these queries that we are doing. And here we have a notary fingerprint that must be something hardcoded in our smart contract that just that we are accepting um attestations coming from the certain uh notary.
And now once we have um this uh zk proof here uh and also this data now it's time to actually do the onchain verification. So now I will click on the verify onchain. Here I have to sign this the transaction with my wallet and now you can see the success. So actually this means that the public inputs that I've sent into the smart contracts queries hash notary fingerprint and the zero knowledge proofs are correct and the data is verified and of course here in this smart contract I can have a bit more logic what actually happens when the proof is verified. So in the nutshell to build a proof of contributions uh we would need uh three components.
So first of all we need a serverside web prover which notorizes HTTP call uh in that example call to the API github.com. Uh and here also this this call is notorized by the notary um that is signing the attestation. And then once we have the attestation sent back to the client then client again can send this attestation to ZK prover and then this attestation goes to the zk prover. ZK prover u is extracting public inputs to our smart contract and creates a growth 16 format proof that can be sent to our uh solidity smart contract.
And the last component is of course a solidity verifier contract that can be deployed on any EVM compatible blockchain. And as long as the public inputs and the proof are correct, then the logic would be executed inside our smart uh contract. That's it in terms of um how our web proofs are working. But now I think you are really interested what you can win from Vidair during the hackathon. So we prepared for you uh four bounties.
The first one is the best ZK proving uh application. So if you would like to build a application that is relying on the private information on the private data from your browser then I think the the first price is the best one. The second one is kind of the same but here you can use our serverside proving that I just show you. So you don't need basically any browser plugin or mobile verifier application. you can just send a request to the server which by the way can be hosted by you or you can use a pre-eployed infrastructure by v layer um and then generate and verify proof onchain.
Uh then we have best vouch integration. Vouch is our application that simplifies accessing certain data sources from your browser or mobile verifier. So we have prepopulated catalog of um data sources like proving your data from Revolute, Monzo, Wise, Instagram, Twitter and so on. And you can just use this data inside your smart contract. The bonus uh bounty is the one about creating own vouch data source.
So we have tools for creating a new data source inside the vouch. And then you can create a new workflow for the browser extension to just verify some data on completely new data source and we would like to reward the best ideas for the best data sources that are missing in our catalog. And in terms of installation, I think it's quite easy. We did big progress since the last Eve globals where everything wasn't so easy to to control. Now we have new dogs.
You can head over to dogs v layer xyz and there you can learn how to use our web prover zk prover and vouch how to combine this in into your application how to use existing data sources how to create the new ones everything is uh in our new docs so I highly recommend you to check them out thanks for watching I wish you all the best at the eve global happy coding happy hacking and see you
Automatic transcript — names and jargon may be misspelled.