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

Loading player…

Sismo 🛠 Bridge personal data to applications

ETHGlobalMon, Oct 9, 2023, 12:00 AM

Join Sismo for a workshop titled "Bridge personal data to applications". Our first in-person appearance in 2023 is going to be an extra special one: We look forward to our inaugural Pragma and the first ever Hacker Café, plus a weekend packed with opportunities in one of the world's most fascinating cities is awaiting you! Spots are getting rarer by the day, as our prizes pool is now sitting at $375,000 in total. ----------------- Follow us: https://twitter.com/ETHGlobal​ Check us out: https://ethglobal.co​m Email us at: hello@ethglobal.com

Transcript

foreign [Applause] [Music] I hope you will like it and you will like hacking on it so I'm Leo I'm the CTO of seismo so at sismo we with the system connects we want to bridge personal data to Applications so you have a user here with his own data as like you can see with his gems and he wants to bring this data to Applications lens and this is my public and personal data I have also a very private wallet which contain all my bank accounts some nft some transaction I made on Instagram and I also have a more web to like accounts for instance my Twitter account where I have all my followers and I follow systems so yeah one sentence for an application will need this data let's take the example of physique drop it's another obligated to seismo Twitter followers so I want to bring the the iPhone system data and only this data as a decade will verify our own this data and get me the error another example is the zika sub it's made links a mailing list gated to nft Holders without knowing exactly which which address on this nft for instance so I will send the fact that I am a nft ownership foreign list so how can this be possible um you have what we call the user data worlds uh where you we you will it's like a password manager where you will generate a ZK proof of the data you want without revealing exactly uh let's see accounts that own it you will send this Escape of this application and the application will verify this CK proof so let's dig a bit into the Data Vault so inside this Data Vault I will add all my different accounts I will sign a proof of ownership a signature to prove that I own these accounts so I have my level 21. is I have with all my data inside I have my Twitter accounts and whenever I need to share a data with an application I will generate the ZK proof can be verified either Unchained directly on a smartphone site so we provide some libraries for that and we will see it after doing the workshop or off chain that can be verified directly into the back end of a more web 2 traditional application so this protocol communication between application and personal data and the system Data Vault is called sismo connect it's a crypto native single sign SSO so this is a system connect I can do I have mainly three features I can do notification that means I can bring the fact that I own my Leo 21 Twitter accounts and the application won't have to verify it again just verify the sismo connect proof I can do some data claims that means I can claim that that I own a crypto bank and without revealing uh in which account I have this crypto Bank exactly or I can do a message later to Signal something functions I can say okay I have a JS or I but no I agree I disagree Etc so and we can do all of this into a same interaction through with our data world so inside the one proof I will have these three facts for instance and I will be able to combine them so sismo connects you have an application let's say with a Fontan and the backend the smart contract and you will add some um a snippet of code in each part to be able to interact with the user database so in the Fontana you will add a button which is our signing with system button by clicking on it you will do a system connect request to the user data world I will show you a demo after it will generate the ZK proof of the data requested inside your browser directly and you will send back the this response to the application that can then verify it uh in a backend or in a smart contract so either of chain or on chain so yes what what is interesting here in the database is like when you add your address the datable can can infer all the data you earn Associated to this data world so for instance here we can see that we have this uh that data gem inside that is added the more you add accounts inside it so the the layerized structure of the data world you have first authentication you can made with the word directly so for instance an application can recreate their user to connect with the data volt directly without needing the users who have added a different web to account so just by the fact that you have a system that alerts you can request your user to single sign on with it and you will have a user ID inside your application that you can use as a user ID to authenticate to user so and then you have the other layer where you can add different type of data so for now we have a Twitter account GitHub account and uh evm accounts then you have all what we call the data claims you can claims to have some some data inside your Data Vault and this is due to the fact that you have added a lot of different type of data source so if you add I don't know all your accounts inside this system that I watch will basically be able to prove a lot of different type of data agent so this is the the data ownership part and finally you will be able for each iteration between your application and the system that evolved towards some message signature that you can approve or not inside the system so let's dig into the authentication tab so from the app you do a system connect with rest and you request the identification from being for being a Twitter accounts so this is more data tablet will generate cck proof and send back to the application that can see effectively the Twitter account user ID inside the app and the app will be um show that this Twitter account have been verified so it's like a web to SSO that you can regress a lot of different type of webto accounts in the same time so um our with the DivX we have created it's very easy to ask for a Twitter account a GitHub account and a new VM accounts in the same proof you can also so authenticate with an Instagram account so it's the same you do a request with this ethereum account and you have the response from the system connects so it's like you're saying in with zero basically so let's see now the data claims so data claims what is the claims is like for instance I follow system on Twitter I have contributed to the seismic organization and GitHub I have an ens I follow sismo dot lens on a Leinster lens protocol and I have more than one ether so for instance aggregation so this is the other different type of claims I can do from all my data that I have been putting into my system data volts and with this data I can do claims functions I have more than a monitor I have I have made at least one transaction or I have some comparator I can use to do some more granular requests on this data for now um the this type of claims are basically group membership claims so I will show you after we have a a wall infrastructure that handle to create some groups and inside the protocol we are using xeron latch proof and this zero knowledge proof helps to prove that you are part of a group of um of a list of different type of fusels that have the same type of characteristic functions we can see it's with the same color here so if you want to add a new type of data claims inside the sismo connect you will have to create the group of all the users that share the same characteristic functions here we can see the ens all those groups and a particular nft owners group or a proof of humanity resistance group you have also the value so you you can see the continent failure the ethereum address here and the value and you can inside your data claims request a value lower or equal exactly equal to the value you have inside the group so let's regress for instance through the NF tuner ship with privacy so you do a system connect request to ask some particular some particular data claims inside the approval in the system data world we will generate ozk proof to prove that you have this claim without revealing the account and here it's a bank holder and it will be sent back to the application that will verify this sticky proof and can then use it for its own logic finally we have all the message signature so it's like signaling and information you you you from your apps you request with the message okay I bought it yes for this governance proposal for instance it's a message that is going to be signed from the user inside the approvers or in the system the user will approve and generate executive with this message inside the GK proof it will then be verified in the application and we are assure that the user agree with so now let's take a look into in more detail into our defects for this crypto native single sign so first when you want to integrate it into your app you need to create to create an app and authorize some domains in our factory.smooth.io so let's go here in the factory when you arrive we can see that you can create some assist mobile so it's not in the scope of this Workshop but here you have the application it's currently called ZK connect application it will be renamed in sismo Connect it's a and you have here the system that are groups that I will show you after so in the uh ZK connect apps we can see that I have already different uh application and we are going to create a new one for this Workshop so for instance here is global to Q application and we will be we will authorize the is global.com domain and a local host because I'm going to do the demo in local let's create it so when I have created my application I will have an app ID here it will be used inside this code we are going to integrate into our app and it will be using the user system data world that will verify that the app corresponds to The Domain that do the request mainly for security reason okay so let's say now we want to um to integrate The sismo Connect into our application and this application will be the SDK sub so let me start by already move so you can go up there it's a demo.

cc.io here we want to get the email addresses of all the contributors to the merge so we have currently a group of all the contributors to the Nerge as it was made by Tim Deku and we are going to uh gauge this mailing list with the fact the fact that you are well into this uh this group and we won't know exactly who you are inside the group but at the end we will have the list of all uh the email address of of the different users that enter the disease Pro so I start by doing uh the signing with this mode and redirected to the system World here I can see that the system that Awards want to request some data I need to have the mail contributor group to be part of this group so I can see here the list of all the accounts I'm going to show you that inside this group I can go there and check and I can see here also the book generator so the group generator is the code that is executed at a specific frequency it's like infrastructure as a service that generate automatically the group and it can be dynamic so you can have a frequency here of daily frequency that will regularly update the group when we change it so all here is open source you can do a progress to update and so on so I do connect it helps me to be eligible that means to have the data inside my system that Awards so I have well the first time a major contributor so here I can see my all different accounts so I have this is a demo so it's a fake databitual italic that is you have a Twitter account GitHub account and some very private wallets functions we do generated proof Suzuki proof once generated is sent back to the application that verify it and I can enter my email and it will be added into the backend and by verifying also that the GK proof is valid so um let me show you in more detail I thought so this repository is open source you have a link here it's system of course ZK sub and we just have to add this system connect button it's a react button in the front-end part and this package here to verify the system connect response and to be sure that it's valid so under the wood it will verify the ZK proof that was a replied replied by The Cisco datavert so let me show you a bit the I have a localhost and stance here and we will update uh the code so here I am in the front-end part I have here the app ID I want to dark at so this is the zig episode one the one I presented you and now we will use the new one we have just created so it's here I can change it here so we say this is to cure okay let's go again here and so when I do send which is more I can see them now it's the scrollable to kill that are requesting to have access to this data so now let's say we want to regress some particular data so this is a merge contributor we are going to create here in our system Factory a new data group oh I think I've prepared it there so here in this uh data groups I can search for different data group for instance let's say proof of we talked about proof of humanity so let's find it proof of humanity I can find it here so you have a 17 000 users you can see here the group generators so this one is is more interesting because it's uh updated at a weekly frequency and it will use data providers to get all the data so data providers as a way are a way to get all the data for the group it can be um for instance a rest call to rest API to graphql API to some bigquery stuff that are indexed into the blockchain here it's a subgraph data provided so we request this subgraph ID we have our requests we map the the result of this request and we generate our groups so I I I showed you the code but now um let's create a new data group so here I have the uh already in the factory directly so in no good uh you can create the name of your data group and add eligible account so you can constants add your your accounts inside the list let's say I did here but you can also directly use the data provider that are here so um all this is Moab is open source so when you create a new data providers for the community it will appear here automatically so you can we have also some bounties to create a data providers and uh to let them add here so let's say for instance we are going to get also um all my lens follower and maintenance and I see that they have made eligible accounts and then I will have a union between my list my manual list and this follower from lens I will say that I want a daily upgrade editability description so uh groups for at Global Workshop and the technical specification is how we can be inside this database so uh having been added manually by NGO or following video lens and lens okay let's create this group and then we can see here that this group has been created I have a pull request Associated it goes to the system hub and we can see that the code albino automatically generated so here we have a group generators with a frequency of daily we we can see that we have our static list why I did my Leo 21 address and I have also the use of the lens provider to call all the followers from u21.is I do learn a union of these two data and it's used inside my my group so yeah he this was how we can use a group so now let's update uh here on our code so we were doing the uh the update of the local environment so uh we want here when we click here to change the group ID so let's find a group ID that shoots us so we are going to take the proof of poh group I'm taking this so I can copy code copy paste it here very easily let's go to the code and just changing make so here in the button we can see that I'm doing a not request to have a word ID that will be used as a user ID into my application to register the email to this particular user ID and to avoid that user can add a lot of different type of email I will do a claim of being member of this group so I've just changed here let's go again doing the sending with this move and I can see that here now I have the proof of humanity requested data so yes we have seen that it was very easy to [Music] um integrate the sismo connect button uh into the front and part let's go now see the back end part so in the semi repository you have the font and back folder here you have the root which is the Subscribe where you add your email at the end of the flow so you have your email and the seismo connect response and you will verify it directly so you use the ZK connect Library so the system connect Library you will verify the system response that corresponded well to the connect the request you did and the group ID that you wanted basically when it's verified you can exercise your user ID and use it to store the associated email so you can find uh the different piece of code here into this Repository and now you can do exactly the same thing but on chain and this is uh another demo which is our I'm sorry ezekiel.io so in this demo we are going to to uh ZK drop which is a non-transferable nft in this particular case so you you prove that you are part of this list and you can mint this nft to any of your addresses and we don't know exactly who you are inside the list so you click on get your pass to other destination let's say it a little is a destination you do then the system the same with this move we arrive under system data world we can see that we have a message Senator request this is used to avoid front running of our ZK proof under our transaction so here we have encoded the destination account we will have this um nft at the end we do generated proof we are redirecting back to uh the zika drop and we can in one transaction directly mint our uh merger bus um nft so let's now uh dig a bit into the smartphone track Library so here you just need to import the uh ZK connect solidity library with smoothly to extend your contract with the ZK connect and declare your app ID like that so it's a little bit like on the back end that we see just before and now we are going to claim with sismo connects to have our nft so we're just bringing the system according response as a belt it's already well formatted and that the address where we want to have it we verify so this function is injected directly thanks to this ZK connect library inside our contract we verify this system connect response and we verify that it corresponded well to our group ID the group ID of our merge contributor once it's verified we can directly use our user user ID the user ID that comes from the word that is specific to us and so the user ID is completed into ZK as being the user ID equal hash of the votes secrets and the app ID so it's very specific to me inside the ZIP code application but as I'm always using the same system data World it will be it will be used as an authentication layer my token ID I can then mint directly on this token ID the token so yeah same here early is directly um open source you can find it on our on this Repository so now to building system we have our dog that is uh will detail all the information on on the easiest way to build a on top of small you have also the builders.io which is a telegram group where you can enter and ask for help or you will see other chismo builders there and you have our GitHub organization where all what we are doing is open source to have all our different report there and you can dig it into it So yeah thank you for your time hope you enjoy the seismo connect and uh we also are hiring so just yeah have a good hackathon and uh and enjoy your your time hacking bye

Automatic transcript — names and jargon may be misspelled.