Artur Chmaro I vlayer Workshop I ETHGlobal Prague 2025
ETHGlobal·Thu, Oct 9, 2025, 12:00 AM
Artur Chmaro introduces Vlayer's revolutionary ZK-powered tools for Solidity developers at ETHGlobal Prague 2025. Discover four groundbreaking superpowers: Time Travel (historical state access), Teleport (cross-chain state verification), Web Proofs (private web data verification), and Email Proofs (on-chain email authentication). Learn how to implement these features using familiar Solidity and Foundry tooling, with live demos of Twitter handle verification and Revolut transaction proofs. Perfect for developers building identity solutions, RWA tokenization, or cross-chain applications needing verifiable off-chain data. 00:00 - Introduction to Vlayer's 4 Developer Superpowers 00:51 - Time Travel: Accessing Historical Blockchain State 01:27 - Web Proofs: Private Data Verification with ZK 02:02 - Vlayer's Dual Contract Model: Prover vs Verifier 03:15 - Demo: Reading Historical NFT Ownership Data 04:25 - On-Chain Verification with OnlyVerified Modifier 05:35 - Advanced Time Travel: Calculating Token Averages 06:49 - Supported Chains: Ethereum, Base, Optimism 07:25 - Web Proofs Deep Dive: Revolut & Twitter Examples 09:14 - Browser Extension Demo: TLS Session Notarization 11:07 - Starter Templates & Local Development Setup 12:23 - Live Twitter Handle Verification Demo 14:59 - Data Redaction in ZK Proofs 16:12 - Email Proofs: On-Chain Email Authentication 18:43 - Getting Started: Vlayer CLI & Documentation 21:09 - Q&A: Prover/Verifier Deployment Architecture 22:31 - Chain Compatibility Explained 24:02 - Notary Trust Model & Security Assumptions _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 🇨🇿 *ETHGlobal Prague* This workshop is specifically for ETHGlobal Prague, a 3-day hackathon held May 30 - June 1 2025, bringing together the most skilled web3 developers, designers and product builders from all around the globe for a weekend-long adventure to advance the Ethereum ecosystem! Watch the full ETHGlobal Prague 2025 playlist here: https://youtube.com/playlist?list=PLXzKMXK2aHh5Vv-ZobDU2YMWekDFYvOqd&si=SoQ5O2TOAK8RkYf- _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ✅ *Follow ETHGlobal* X: https://x.com/ETHGlobal Warpcast: https://warpcast.com/ethglobal Website: https://ethglobal.com YouTube: https://www.youtube.com/c/ETHGlobal _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _Are you interested in Ethereum development and entrepreneurship?_ 👉 Sign up for the next ETHGlobal event: https://ethglobal.com/events 🎁 Get exclusive access and perks with ETHGlobal Plus! https://ethglobal.com/plus 📣 Want us to throw an event in your city? Tell us where! https://ethglobal.com/city _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Transcript
[Music] Hello everyone. I'm super excited to see so many uh faces on Vlayer workshop. So my name is Arur. I'm Deel from Vlayer and today I would like to introduce you to Vlayer superpowers that we offer to solidity developers. So I will start first with bit of uh maybe talking maybe a bit of slides but then I will just show you the code uh what you can do with with V layer and how.
So uh we introduce you uh to four new superpowers. We have time travel, teleport, web proofs and email proofs. Time travel um and teleport let you jump to specific block number in the past. So for example, if you would like to u prove that you were the very first owner of some NFT or that something happened one month ago, then you can use time travel. Teleport is bit the same but you can also jump to specific uh chain.
Web proof and email proofs are bridge between web two and web 3 world. So basically with web proofs it's something that lets you take some private web data turn it into zero knowledge proof that can be verified onchain. So many people think about this as a oracle because oracle is something that allows you to take u data and then insert it um to your smart contract. But uh oracles are perfect for uh public data. they are not uh really work with for example your social media activities or something that is uh behind some authentication.
Uh email proofs are also interesting concept that I will show you in the second that are working in the way that you can take an email message and then turn it into zero knowledge proof that can be verified onchain. So you may be thinking how it's even possible. So how you can use that with your solidity smart contracts? Well, it's possible thank to the new execution model. So we have uh two types of solidity smart contracts prover and verifier.
In both cases you can use solidity. So there's no need that you need to learn rust or some DSL. You can stay with solidity and the tooling like foundry. Um and the only difference is that the prover is something that inherits from v layer prover contract. It's executed offchain.
So it's not like that you run this on regular EVM blockchain. It's something that uh has to be executed in ZKVM. So we have a pre-ompiles that allow you to do the teleport, time travel, web proving and so on. Um and the inputs that are entered to your prover are private. So it's not something that you have to worry about that you have public meool and somebody can see uh what kind of stuff you are uh proving there.
So um and yeah and in provers we have also this uh pre-ompiles. So for example this is the the prover that uh uses set chain um id pre-ompile and here we are jumping to ethereum mainet to specific block number u and then if you see um the owner of call then it's not getting the current owner of some uh NFT but we are reading the state from that block number that we have it set chain ID function. So um this is the first thing that you have to notice the set chain ID thing and then the last thing that is in the return. You can see that we are using the proof function. So here we are returning the proof and owner is combined with the proof.
So anything that we are returning from the prover is be becoming a public input to the verifier. So uh please notice here that we are not leaking a a ID from this prover. So it's something that we are inserting to the prover is private by default but uh what we are returning from this smart contract uh it becomes uh things that we have to use for onchain verification and in terms of verifier uh it's again some smart contract that you have to inherit from v layer contracts because you need to use only verified modifier which works in the way that it verifies the proof plus the public input and this is something that can be deployed to any EVM compatible blockchain. Uh and here is a example. We have a contract airdrop that takes proof plus some public input which is in that case the owner address.
Uh and then we have um verifier here the only verified u which takes first of all the prover contract. So we need to be sure that this proof was generated with specific prover just to not have weird situation that we have valid proof but for from complete different thing and we want to verify it here. uh plus we need to specify the selector to the function that was used to produce the proof because we can have of course multiple functions that uh can generate proof in one uh contract and then um this only verified um modifier it reads from message data. So it's like it automatically knows what proof and what public inputs were entered. And of course if something is wrong with the proof or public inputs they're not matching then we have revert and uh our onchain verification is um failed.
So uh you may be wondering now how we can use all these superpowers uh in details. So maybe I will start with time travel. So time travel allows us to jump to the something in the past. So here for example we can read USDC balance in two different point of time. Uh but uh it's not like you can only do this.
Of course, you can just uh use for loops and regular uh code in your solidity. And for example, here you can calculate the average balance uh for some specific token. It can be USDC, it can be maybe NFTs, whatever. You can also read some state of course from different smart contracts. It's not like we are supporting only ERC20 or NFTs.
It's you can read basically um all the contracts that are available on this um on on the chain to to which um you are jumping. Um and teleport uh is kind of the same but here we can uh pass uh also chain ID. So not only we are jumping to the block uh number but also to the specific chain. Caveat here with V layer is that of course we are not supporting all chains on the world. It's not like you can jump to polygon or or some other chains that we are not supporting at the moment.
We are supporting Ethereum mainet base optimism and sepoleas for these chains. So um there teleport and time travel works. Um if you would like to verify web and email proofs which I will show you in the second uh then we are also supporting flow and uh wcoin. So these these two partners are also available here on the if global. So it might be interesting if you would like to build something with v layer and also um deploy uh our contracts to flow or wardcoin and verify the proofs there and and of course with teleport again same example as before we can do the for loop we can do multiple jumps um and then we are returning uh from here the proof and web proofs are very interesting thing um we noticing that out of people that um our customers uh people from our community and also here on the if global that's it's something that is very um interesting to hackers.
So um I will show you just uh some example what you can build with u web proofs. So let's say you want to do something with real world assets. Usually the problem is that you have to mint something and uh the problem is if your claim is somehow backed with the things that are happening in real world. So for example, if you are tokenizing gold or some assets, then uh it would be good to prove somehow that these assets really exist. Of course, I'm not saying that it will uh eliminate all kind of scams, but still it's good that we have something more than just one transaction claiming that we tokenize gold or something else.
And webproof what uh it allows us to do um is that we can use browser connect to revolute or some fintech application or some centralized exchange log in with our browser and use vlayer browser extension that is notorizing the calls that are happening between your device and um some endpoints that are uh in your browser. So for example, if we go to Revolute, you have a history of your uh transactions, you have balance, you have status of your KYC and then we are able to notoriize the call um to check that there is a valid TLS session between your device and Revolute uh servers. It's sometimes known also as ZKTLS web proofs. Um there are many projects that are doing that at the moment. Um but with V layer it's interesting that uh we we you can do this still with solidity you can still um do it with um tooling that you already know.
So it's not like you have to come up with some new language for that. Um but here the interesting thing is that I'm able to generate proof that for example I own some asset in Revolute or some other um website and then finally I'm able to uh mint or do something onchain and put this uh proof as as some extra thing to the chain and maybe it can be convincing to my community that I'm doing something right. Uh but there are of course many other examples. Let's see uh also web to web three markets what you can do with it. Um so let's say you want to have a peer-to-peer um exchange um between US dollar and USDC.
So what you can do is you can send a transaction over Revolute or some other fintech application. send some 200 bucks to the specific handle maybe with specific um title of this transaction and then you can generate proof that can be exchanged in some smart contract for USDC dollars. So for example, we can use uh transaction from Revolute as a nullifier and we can uh for example make sure that this transaction the proof for this transaction was used only once um and then you can claim back some funds uh from your um contract. Um so in terms of um the code um I I will show you quickly how um this works uh in terms of code. Um so um for each of these superpowers that I just mentioned you have templates in our documentation.
So it's not like that you have to start with blank page. You can just go um to um to our docs and you can u just fetch for example simple web proof example. Uh and here you we have um first of all just a script. So it's proofs and here you can see exactly what are the steps to uh start building. So first of all you have to deploy vlayer contracts.
You can either deploy them straight to the test net or you can do this with local devet. Um here we are writing this to the n variables just to be sure u that um something is available for our front-end application that is also part of this example. So if you would like to play with react see how this works uh in the browser then it's also part of the example. Um and then uh finally um we are able to uh get the web proof out of the browser and uh send it to V layer prover. And now you may be wondering okay but how we can get this web proof how it's even possible.
So uh let's uh see how this works. If I will run um if I will run the the web version uh so um it's like web dev and I will show you how our browser extension works um just that you have idea how you can use it with your application. So um here I'm going to the react application that will proof my Twitter handle. Um so uh I will do some start proving open extension and here we have the extension uh from v layer that right now is uh listening to um the HTTP requests that are happening uh in my uh browser and uh of course it's not like we are fetching all kind of HTTP requests that are happening here because of course we have images we have stylesheets some JavaScript u and uh and some other stuff but uh in the code of course we can specify that we are interested in specific endpoint. So for example, if I would like to prove uh my Twitter handle uh then I'm looking for some internal communication between uh Twitter u that holds for example information about my Twitter handle which of course is authorized.
So um if we go back here um and I will maybe inspect um how this um page works. So if I will refresh um the um the application uh and here we will find for settings uh JSON uh then you can see uh that here we have um some endpoint that is super big but it doesn't matter because we can just spec use reg uh the endpoint without parameters and then here we have um we have um some u JSON returned from the Twitter servers and Here we have the screen name of my Twitter account and uh I'm able to prove that actually this TLS session between my device and api.x.com happened. You may be wondering okay but u maybe somebody can spoof it somehow.
Well uh it's not that easy because we are having a multi-party computation between notary which is looking on this TLS session and making sure that certificates are fine that uh none of the data was manipulated along the way. Um and um as uh as long as notary is not cooperating with the prover um it's pretty safe. Uh I will get back to the security assumptions uh in the second. So uh if anybody is interested uh in that I I think you will get the answer. Um so uh coming back to code um this is um this is our SDK where we can specify what would you what would you like to notoriize?
We can control here the steps that are visible in the extension. So it's not like you have to ask V layer to integrate Twitter, Reddit or whatever. It's rather that you as a developer you can configure this uh data sources. Uh here's also interesting part because um in ZK world um you you know probably that um it's a very nice feature that we don't have to reveal all data. So for example, let's say that this settings JSON contains some sensitive information that I don't want to share with Vlayer and other other people.
Uh then you can also locally on on uh on your browser here uh you can uh do some decision that you would like to redact some information from the transcript. So uh it will go to the V layer prover masked. So maybe for social media things it's not that uh important because already our data is there but uh for some financial maybe for some specific use cases we want to redact this information. So um that's uh this this example that is here is available for you. You can just fetch it.
I will show you um exactly how. Uh so coming back quickly um to my uh presentation um here is just what happens next. So we have the web proof and we are able to pass it to solidity smart contract which is prover in that case and inside the prover of course we can do some extra stuff like we can verify the URL make sure that web proof is coming from x.com here we have pre-ompile for example for deal with the JSON we have regular expressions so of course it works like regular solidity so if we do some if statement here or if some require is not met then you would not get a right proof. Um and um the obtaining the proof happens through our JavaScript SDK.
Um the the one that I just showed you is something that you can uh control from your uh front- end application. Um and we have here uh the flow for Revolute or or some other uh services. You can even put the logo uh to to the browser extension. So um that that works that way. And uh last but not least we have email proofs.
Email proof um is something um like um I just uh showed you but the data source it's not web data but email message. So let's say you are sending message from your mail server. Your mail server is putting some cryptographic signatures on your mail. Um it's called DKM headers. inside of it you you have some stuff that we as V layer can verify just to be sure that uh email is not tempered with and this for example as long as you trust the mail servers this allow you to uh generate a zero knowledge proof that can be verified onchain out of email.
So for example if you have account abstraction wallet that uh you can specify that this email address can control this account obstruction wallet. If somebody sends a specific message with subject wallet recovery with specific body then we are able to do the same thing as with web proofs but we can analyze the EML message uh do some assertions do some regular expressions and generate the zero knowledge proof that can be uh verified onchain. This of course can work with some legacy systems, some government services. Sometimes still are using emails to deliver you some information. Uh and you can use it also in your projects.
Um then here's the example that you can uh match do some matching against subject. Uh you can um also do something about from or to headers. Um you can also mask the email using the hashing here. So also it doesn't require you to even uh reveal your uh email address onchain because it's nothing stops you from uh hashing that in the prover. Um so um if you would like to start with v layer um I highly recommend you to check our docs.
We have v layer app uh command line uh tool that will just download um the v layer for you. We have v layer in it and the name of the template. So if you would like to try email proof or teleport on time travel these templates are available to you it's all on our book uh vlayer.xyz um in the first steps make sure that you have all the prerequisites in the installation section. So we require you to have foundry and git but I think it's shouldn't be problem on uh this hackathon.
Um and uh please notice all the things that I didn't mention today. So I didn't go into math circuits, guest ids, exotic languages, uh some um I don't know uh complicated stuff that usually in other ZK projects you have to know. Um, of course it doesn't mean that you can do everything with V layer, but we are just abstraction. So you can do the things uh like time travel, teleport, web and email proofs. Um, and you don't have to be uh expert in um programmable cryptography.
If you are interested in how this works behind the scenes, we have three reports on web proofs, email proofs, onchain proofs. It's available on Vlayer XYZ. You can just download it. Each report is about 20 25 pages and you have there all the security assumptions. Uh so you can learn um that we are using TLS notary how we are using it and what you can do with it.
Um and that's it what I prepared for you today. Uh thank you very much for your attention and I wish you a happy coding. Uh if we have some if you guys have some questions I think we have uh five minutes uh for questions. Thank you. Also, we have a telegram support channel.
If you haven't joined yet, um I will say there's a little QR code. So, uh there's only question. So, do we need to deploy the prover contract because in the verifier you mentioned you will refer to Yeah. Yeah, that's a good question. So um v layer prover um is not um having the memory.
So we are treating a blockchain as a uh place of uh storage the code of the prover code. So whenever you are deploying prover and verifier let's say to base you have to always deploy these two contracts to the base. Of course prover is not usable on the base but uh our prover just fetches the code using the contract code. So um that's the storage for the code. Uh and you have to always deploy the there this two contracts.
So in the beginning you said it's compatible with all EVM chains and then later you said it's compatible with Oh yeah yeah yeah. So so very good question about the compatibility of the chains. So um it's like um the time travel and teleport is something tricky to be implemented on every uh possible chain. So we are not supporting all of them. Right now we are focusing on base uh ethereum mainet um and optimism and of course sepoleas.
Um however uh verification of web and email proofs is way easier for us. But it's also not like we are focusing on every chain that is available. Uh we just added flow uh and wartcoin from this hackathon. Uh it was hard for us to add other EVMs. Um but yeah in future if we see that people would like to use that uh on other chains uh it should be quite easy for us to enable that uh but the current state is that these uh chains are supported.
Okay. Any other questions? Like for example, my balance or transactions? Um, you mean to check the balance of your account or crypto balance? Yeah.
Yeah. Yeah. Of course, you can you can also use um teleport uh and time travel in the context of um smart contracts. So, ERC20, NFTTS and so on. Um however if you would like to just uh get the balance of the specific address so for example for if uh then it should work as well without any problems all the events are not supported uh because it's tricky for us to index events uh but uh it's something that we would like to tackle this year as well regarding the not so it's like a trusted party like it's or not.
Uh yeah. Uh right now we have the we we are running the notary. However, of course, it's possible that uh you can run the notary on your infrastructure or you can work with specific uh network of uh notaries. Uh so of course for hackathon we are just deployed some some notary that you can use by default. However, for our customers, uh we are just able to give them docker so they can run their own uh notaries for that.
Uh they can use ours. Uh so so uh there are not it's not limited that you must only use our notary. Um but yeah, it's it's some trusted party and more about that you can read on our uh white paper about TLS not because we are building on top of notary uh TLS not we are abstraction over it. Um and uh there you can find all the security assumptions and uh learn more there. Okay.
So thank you very much and if you would like to build on Vair I invite you to our [Music]
Automatic transcript — names and jargon may be misspelled.