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

Loading player…

ETHLondonUK Winner: ZK Social Recovery

ETHGlobalFri, Oct 9, 2020, 12:00 AM

ETHLondonUK winner ZK Social Recovery presents their winning hack during the Closing Ceremony of ETHLondonUK. ETHLondonUK was an Ethereum focused hackathon that took place Feb. 28 through Mar. 01, 2020 at 8 Northumberland in London. ETHLondonUK was organized by ETHGlobal and a team of hackers, developers and enthusiasts interested in building and creating in the Ethereum ecosystem. For more information visit https://ethglobal.co Video produced in collaboration with @Pillar Project

Transcript

yeah with a ZK social recovery team we're kind of going through a rebrand exercise at the moment so some people know us as secret guardians anyway so I'm Tom I work as tech by day there's some we're set over in the corner I think and then from an SN kickback exactly so we came in a problem statement so smart contracts these days smart contract wallets these days so you can think of things like monolith Arjun increasingly have this feature where you can nominate guardians and these guardians basically if you lose your private key or you lose your access to your smart contract Woollett these guardians can restore you access to your wallet so they're in quite privileged position but talking things through we quite quickly realize that these Guardian addresses are stored in public on chain and so anybody on chain can see who your garden address is we think that's both the privacy concern and a security concern so we set out to try and fix this it's to do this we basically rely on zero-knowledge technology so we built a Janice's bill to prove a concept smart contract wallets and then I've integrated some zero knowledge stuff into it and Makoto has put together helped draft this front end along with we're using a tool called solder UI by ramp which is really really useful so anyway so how does this work so normally in a smart contract wallet your guardian address is stored on chain in public now instead of doing that we take that hash of this and we do it when you add a guardian to your wallet you store the hash of the address of the Guardian on chain which means nobody else can work out what this Maps do and then fundamentally when a user is trying to get access back to their wallet a guardian has to generate a zero annoyed proof that they know the preimage this hash now the only way that they're going to be able to have this proof satisfied is if they do in fact know the prematures hash which means that they are a valid guardian so if we take you through what this looks like step-by-step so first thing we're going to do is we use Socrates to build some of the decade-- snark stuff that we need specifically we're using a star called broth 16 so first of all when you're using these sort of things you have to do various steps and you're gonna see something like matrix S stuff going on so these are very steps going on here when I'm using Zack it's not you have to do a trusty setup where you're basically creating some toxic wastes and some of the crypto points that are used in this we're creating a proof here we're computing some secret information and also generating various keys you'll see at some point a proof is gonna get output from this it looks like I think it's three elliptic curve points and you can see here at the bottom so we get a proof out so that's gonna be our Guardians proof eventually that they know the preimage to the hash they stored on chain so that's the local proof side of things now this would happen on the client locally ideally in the browser if you can get this working in the browser so the next thing we've built was a deck a social recovery is in the app so this is connected to ring P and it allows you to deploy one of these ZK wallets as we call them execute metal mask pops up a standard stuff so this is going to first of all deploy the wallet it's then going to deploy The Associated verification contract so when a guardian calls recover on this okay wallet the method is going to static call out to a proof verification contract and it sends the proof to this this verifies that there's a case now proof is correct and if so the normal mechanic can continue so we're on ring P so this might take 30 seconds something like that but basically once you've deployed this wallet you can then interact with it you can get state you can mask is requesting my signature so it's also deploying the proof validator so it wants to signatures and then you can do various things you can send just as a normal bullet and then we have to set our proof validator we have to link these two contracts together this will ideally be abstracted away in a future version you can add a guardian by adding this hashed address that we talked about it has to split into two segments some technical details and then eventually once you're working through this flow you can then call a ZK recover where you pass in some of those proof variables that you saw on the on the item terminal anyway so that's a key recovery someone get help feel free to check it out and yeah thank you for everything it's been a great [Applause]

Automatic transcript — names and jargon may be misspelled.