New Ethereum talks, every Monday. The week's conference uploads by event, in your inbox.

Loading player…

Ethereum Attestation Service 🛠️ An Introduction to EAS

ETHGlobalWed, Oct 9, 2024, 12:00 AM

Join us for an Introduction to Ethereum Attestation Service! From November 17-19 2023, ETHGlobal is welcoming builders from around the globe to help shape the future of Ethereum at ETHGlobal Istanbul. $500,000 USD in prizes are up for grabs at the prestige ICC Istanbul Congress Center... you're not going to want to miss this! ----------------- Follow us: https://x.com/ETHGlobal?s=20 Check us out: https://ethglobal.com/ Email us at: hello@ethglobal.com

Transcript

[Music] hey Builders thanks for choosing to hack with ethereum atation service the purpose of this recording is to help speedrun your education around what EAS is and really help you understand a lot of the tools and resources that are available to you to help you get hacking as as quick as possible so EAS is an infrastructure public good for making attestations on chain op chain ultimately attestations are going to help us build more trust in all of our online interactions and we'll explain kind of why that's important and how we got there uh one of the important key things to note is that EAS is completely open source we're permissionless tokenless and free to use we were really excited about digital identity and we kept asking ourselves why hasn't anyone been able to solve it um it's a very complex problem but incredibly important because digital identity can unlock so much and there's no shortage of apps that are trying and as we look throughout the ecosystem we notice how completely fragmented everything is so as developers we have a never- ending list of protocols we had to learn so worldcoin gcoin proof of humanity sismos Spruce poet the list keeps going on and on and we realized that none of these Protocols are talking together so we thought well what actually is identity and so we went through this thought experiment and we were starting to question well what was our first identity maybe all these protocols and all of the builders are just buil maybe we're all building one layer too high and so we realized that at one point in our lives we didn't have an identity and then we did and we realized that our first identity is actually when our mother names us right it's when she attests to our name and then throughout life other she started attesting to different aspects of who we are like the doctor attests to your date of birth your school attests to your grades the employer attests that you work there friends attest that they like you English goes on and on and so you what we realize is you can actually elegantly represent identity as an aggregate of these attestations over time and we don't aim to replace identity protocols yes aims to enhance them and to make the ecosystem more interoperable by giving all of us a base layer to start making claims about anything attestations can help us go beyond identity as well anywhere you need proof or verification that an ENT entity said something for trust and verification um that dra to stations can play a pretty critical role so we have teams building around voting systems for transparent voting uh you can build things like content authenticity platforms to attest to the authenticity of content uh by creators marketplaces proof of provenance compliance related things Registries digital notaries oracles we have a full use case doc um in our doc stage that can help Inspire if you're looking for some ideas but ultimately anywhere you need to prove trust or verification around some sort of structured data that's Rap De stations are going to be helpful our feedback in traction has been pretty awesome uh optimism was building their out station station and they ended up deprecating it to upgrade to the a standard which was a huge vot of confidence just for the ecosystem around at stations as well as for EAS becoming a standard Dev folio another hackathon team has been actively using it um for their their hackathon for quadratic voting where people actually attested to the vote of the projects that they wanted to win we have identity protocols to experimenting with it and then just ecosystem people really recognizing the need for this credibly neutral public good um and that yes uh potentially has a shot to to help me us get there yes is super simple um in terms of the infrastructure and how it works it took us a while to get there however understanding it is relatively easy uh it runs on two smart contracts one for making a scheme about any data structure um for the atation so imagine if you wanted to ATT test to an event attendance you might have like an event ID the location of the event and then the time that someone checks in um and then the other contract is for a testing on that schema so you register the data topic and then use the other contract for making anest stations on that schema if you want more control over the functionality of the schema we have an optional resolver contract which allows you to basically use any arbitrary smart contract logic tied to the schema so you can prevent people from making attestations send a payment and do a lot more from there we build built several tools to help you so our whole focus is on making the da user experiences world class so we built a lot of things like an attestation Explorer an SDK graph qln points and a lot of other things really to help you get up and going as quick as possible so let's jump over to some of them this is the basically The Ether scan of at station it's called EAS scan uh we are live on if you go to the chain um ctor there's we're live on mainnet Arbitron spolia optimism gor Bas we're also on optimism Bedrock by the time you watch this it it'll be available and um when you go to the Explorer you can start to explore some of the schemas that have been created so you can start to get an idea that schemas can be about really any type of topic so this is a schema for Tes into a hackathon which is just like a registry more or less you have a string name for the hackathon the location if it was virtual or not the start end day you have other people looking at like event attendance there's people creating schemas around identity related stuff authorizing payments and funding requests more identity stuffff so you can start to see what's available now you might say hey I want to create my own schema we built some pretty easy tools where you can just start to create ground structure so you might have let's just use the event attendance as an example an event ID that's like a byes 32 field so you can pick the data type here maybe it's like the location you have like the a string maybe it's a check-in time and you have you know a number un 64 or something like that for a time and then you can designate the resolver address and decide if you want at De station made it the schema type to be revocable or not so um and then you can make it once it gets registered it'll show up in the schema registry let's go into this hackathon one so here's a schema record it's for hackathon you see the unique ID here when it was created who the issue the creator of the schema was um and one key thing to note is the schema doesn't matter as much as who the attester is that's using the schema so imagine if I'm wanting some sort of kyc verification if I were to attest to someone that doesn't mean anything because I'm not a KC verifier but if someone else were to like a KC verifier were to attest to that person with a KC verific at station then that holds more weight on the schema record you can see the decoded data and any related at stations of this schema type so we have hackathon location let's click into this one on the attestation record we can see see the uid the schema that was used who actually made this attestation the hackathon related data that was attested to and then if anything was referencing it every at station has its own unique ID which is a a hash of the entire at station and you can also see if this attestation is going to uh expire or if it's been revoked if you were the issuer of the set station you'd have an ability to manually revoke the set station which is pretty powerful and useful Let's uh let's actually create one so you can see how this works so in in addition to this onchain add to station we also created an ability for you to make offchain ad to stations so do make let's actually do a post make a statement so this is a very simple schema it's just a string with the message so will and then you can see all the related ones down here so let's test with it you don't have to designate a recipient but you can if you want and then whatever the decoded data was per per message strength we could say looking forward to all the global waterl Haack projects um this wouldn't expire and you can reference and attestation so just like how we had the attestation um for the hackathon here we could go into the atation record grab this uid and if I wanted to reference this saying hey this is related to that hackathon atation I could do that so we'll make this add station on J actually we'll do this one off chain because we just on onchain one so this is just a EIP 712 signature we're signing it and now we have a completely private offchain at the station it's not stored anywhere it's actually fully encoded in the URI fragment of the URL and the at the uid is the entire hash of the ATA station and so if you were to uh scan this QR code it actually will decode everything and show you in the browser we one of the the key things related to offchain attestations is that they don't have proof of existence because they're not you know there's no block time and there's no onchain verification of this and so we actually created a way for you to timestamp the uid onchain so we'll actually do that really quick we also built some uh ways to use merel Tres to batch a ton of these off Genet stations into one time stamp uh which makes it super cheap to do this what this does is it's giving this attestation proof of existence that the uid actually existed at this time couldn't have existed after this this this point time and so uh you can see down below we have this reference at the station which was the original you can click on it and then opens up hey here's the hackathon that the set test station is related to but there's no uh since it a private atation you can see that there's no referencing ones there now to take privacy even a step further we built this thing called private data stations which is a very simple schema it's a byes 32 private data field so it's just a a hash and what we did is we were wondering like well with zkps right now there's no standard ation and everything seems to be very application specific so we're wondering I wonder if there's a way where we could attest a private data but then allow users to selectively disclose it and so we found a way to do that using Merkel trees and so let's explore an example let's say Steve let's say I'm a verifier like a kyc person or some sort of like identity verifier I want toest attest to some private data about steeve so the recipient Steve and maybe I'm attesting that his full name is Steve D his title is CTO maybe something more private like his social security number right uh maybe it is like home address and then maybe there's like some computed value it could be any arbitrary value but that is over 21 true and I want this verification only to last for call it the next you know month and then I want it to disappear well like you make this on chain and you might someone might think well I don't want all this data to be on chain but what actually goes on onchain it's just the Merkle root hash so we're testing to this and as this Merkel uh tree is generating um every data field that gets created is being hashed and then hashed together and hash and hash until we have ultimately a Merle rout and so by generating this you can see here is the new attestation record when it was created the expiration time when it was revoked who is from and who is to um and then all that was attested to is the decoded data here of the bytes 32 hash this private data is in my local St so I can access this just imagine if I'm Steve receiving it um but if I were to go to just a browser a private browser you can see here that the private data isn't here all that's on chain is actually the byes 32 private data field if if I'm Steve and I wanted to share that hey my name is Steve and that I'm over 21 I could generate a proof instantly it generates and every field is completely um it's it's salted so you can't Ro force it but I can grab this Proof come back over paste it and then if Steve provided the sleeves to to some to verify against you can click verify proof and then you can see uh Steve data gets uh verified against a smirk order now if you were to add in something else that wasn't a part of the tree that then it wouldn't verify and he can continue to do this and let's say ultimately he does want to share his title that he is a CTO copy this paste it and keep verifying different leaves against that so pretty cool to allow users to selectively disclose private data using Merkle rots um and then to take this a step further we're really excited about CK projects that might generate proofs based off of bations themselves and or some of the related data uh another cool thing that we built is the ability for creators to Hash content and test to it so especially in the age of AI all this generated content it's going to be increasingly important for people to attest to the authenticity of what they're producing so imagine I am a podcaster or some Creator um with all these deep fakes happening how can you actually prove the authenticity of the you know your episodes or the content that you're creating well you can do that by attesting to a hash of the content and something to note here that EAS is not intended to the the UI for all these experiences it's just meant to be a block Explorer we did build these like helper um kind of uis just to help show people what some of the possibilities are so imagine this is like with some really awesome content authenticity platform but the what you can do is if you grab some sort of file I'm just going to grab like a image or that I have so here's an image that's in my local uh files I can drop it it h generates a hash of that file if one pixel changed obviously would generate the same content hash but what happens is if I'm Creator and this was my file I can attest to it and so we are testing to the hash of this and imagine if this was like a MP3 file or something that's a podcast Creator now anyone can see that hey this actually was the hash of my podcast file but I I just attested attested to this hash if I were to drag in some other random file like some random QR code image it's not going to verify against the hash but if I were to actually drag in the right file then it does verify so this will allow people to see hey this Creator attested to this hash of this content at this time on chain and people can verify the authenticity of that file one of the most powerful things with attestations is its composability using reference at to stations and so we built a pretty cool little demo of a a a social network based off of uh ATT to stations just to help show some of the composability so I'm going to go over to it here so this is an application called speaketh or speaky and you can see that it just has a bunch of random posts from different addresses or people so here's the sample post GM let's build from Steve but what's unique is I'm going to scroll down to a post that has three replies related to it and so we can see here's a post from Steve it says the pending validator queue keeps going up down below I can see a shield icon and click on it and it goes to the outstation data so we have this decoded data for string post it was from Steve at this time and there's three at stations referencing this one so if I look down here someone liked this post and then there was other posts related to it if we go back to the UI we can see that this post post there was two other related posts and there's uh a like related to it as well and as a Creator let's say I wanted to create a new post here so we can actually do you know excited or all the e Global hackathon projects I can create this so we're just sesting to this and what's cool is like what's what's happening is on the E scan we're testing this data onchain and there's private ways to do it in silver resistance related to social um networks and stuff that can be explored but the composability of some of the UI control is what we're we're showcasing here so um as that attestation gets made you'll be able to see that oh that was my content hash um you can see when and the atation is generated so we can see when it gets generated so um here it is so excited for all the global hackathon uh projects now someone could go into the attestation record and see excited for all the global hackathon projects but what's amazing here is if for whatever reason speak it you know fails or dies the atation data doesn't disappear people can compose their own uis and the creators that are testing to their content or their post or whatever it might be their data will live on um and people can start to control the uis around this stuff so if you wanted to create um some sort of social network that only displayed like political views or maybe um you wanted to filter out political views that's all possible on here and for deleting stuff even though it's onchain you could simply just revoke the at the station too so here I am roking the to station um which which isn't true very excited for all the down projects but just for showcasing an example when you revoke an attestation it disappears um one of the cool things also to note is that you as people start so here it goes it's gone now then if we go to the Post it's revoked uh people are starting to build like some pretty cool social graphs and stuff too so here's a cool graph which is created by uh one of the members of the optimism team where he was encouraging people to just attested people he thought was cool so you can see these different nodes or these clusters where this person received a lot of attestations coming into it and also sent them out for people and that they're cool um but then you can see these like edge cases where these two people attested or this person attested to someone but they're not a part of any network and now this is kind of a Mimi example but over time as more and more at decisions are created you can start to see like how people are closer together and you can determine what you know how you trust that cluster or information related to to your use case so a lot of pretty uh amazing tools that you can leverage just even with es the Explorer but if you go into the docs page we have a ton of information related to understanding more about EAS we have an SDK that uh available for you to use super easy to get started with there's graph qlm points for every chain so you can really inspect and start to pull that data as you need to and then there's a lot of tutorials on how to kind of extend uh attestations and unique ways one of the more important ones to take note of is around delegated at to stations so if you want to decide who the payer is for the at station this method will allow you to do that um but feel free to kind of read more into it you can also look at the private data references we give you some ideas on how to like gas if you are testing on chain and a lot of other uh just helpful helpful docs the use cases page if you're looking for some inspiration for your project we Tred to draft a decent amount of just inspirational use cases that you can kind of pick and choose from so as an example for like content authenticity gives you an idea of what the problem is the opportunities some examples but it's really up to you on how you want to implement it we're just trying to help Inspire what might be able to be built so really looking forward to seeing what you all built um during this hackathon we can't do this alone please come join us and build more Trust online if you have any questions we'll be around at the event we're happy and excited to work with you all on the best ways to implement e into your projects um and look forward to working with you all so thank you all we will chat soon

Automatic transcript — names and jargon may be misspelled.