Findora 🛠Building Universal Privacy Dapps for Web3
ETHGlobal·Sun, Oct 9, 2022, 12:00 AM
Join Warren Paul Anderson and David Lin of Findora for a workshop titled "Building Universal Privacy Dapps for Web3." Historically, ZKP privacy has been limited to mostly UTXO-based blockchains, leaving account-based EVM blockchains without a feasible ZKP privacy solution. In this workshop, we will show how to use practical implementations of zero-knowledge proofs (ZKP) for private cross-chain transactions across EVM compatible chains. This workshop is part of ETHAmsterdam, the first in-person hackathon for ETHGlobal since ETHLondon in 2019. Join over 800 likeminded engineers, designers, and creators to build and learn over one full weekend at the Beurs Van Berlage in Amsterdam. ETHAmsterdam is taking place as part of Devconnect, the week-long in-person gathering in Amsterdam. We're back to build, we hope you'll join us. ---------------------------------------------------- Follow us: https://twitter.com/ETHGlobal​ Check us out: https://ethglobal.co​m Email us at: hello@ethglobal.com
Transcript
[Music] [Applause] hello uh uh so my name is warren this is my colleague david we are uh at discrete labs uh today we're presenting something called yellow submarine which was just announced yesterday it's a universal privacy dev for web 3. i'm really excited about it it's a collaboration between uh columbus dow which is a project new project that's a collection of a bunch of people kind of people involved in the fender ecosystem fender foundation and then also discrete labs so screen labs is about 60 people across five different continents 80 engineering design products i'm really excited about the application and just a few disclaimers you know to uh to set the stage so this is an mvp on testnet you know we literally just finished this basically yesterday uh it's going to be super buggy uh we're going to be uh you know crossing our fingers that it works uh it's running on robson so there was some issues you know yesterday i think with uh infuria as everyone probably knows uh there are will be dragons i'm sure uh so uh and then obviously you know every project has trade-offs so um you know there's some trade-offs here um and we can kind of walk through those a little bit uh there may be some trigger words if there's trigger words and you see them just breathe it'll be okay uh we'll get through it uh but we're all in this you know for the long haul and then there are some limitations so this gap is that actually only goes one direction the fully complete version will go both directions so we can kind of explain what that means a little bit also just to give you kind of a high level overview of what uh the fendora multi-chain architecture looks like so the elsa marine is built on top of fender which is kind of serves as the primitive for a lot of the cryptography uh tomorrow is a layer one uh evm compatible blockchain with zkb privacy uh there's a what we call native chain which has the utxo and state game there's a query server utxorpc and then a z library um the z library has a lot of cryptographic uh primitives in it uh fedora the industry runs bulletproofs so it allows for private transactions it also allows the ability to issue private tokens so you can think of i think zcash shielded assets kind of has this in test uh this is actually live on maintenance so fendor was launched in april the main net was launched in april 2021 so it's been running for about a year we've been through like the stability phase which is super painful we're merging our stability and finally getting into a phase where interesting things are happening uh fedora runs consent tendermint consensus we implemented tender in it moving rust and then over on the smart uh what we call the tundra smart chain this is actually our evm implementation so we implemented uh the sputnik uh evm and rust we're a big brush shop so any rust developers shout out kind of i definitely uh love to collaborate with you so this provides the runtime there's an account module of course ebm rpc and then the actual storage layer is actually shared by both native chains smart chains so it's a middleware database and then there's an rpc call so what actually binds these two together is something called prism prism is a trustless swap protocol that can actually interconnect uh or intra-connect the fedora native chain with the door smart chain and this is one of the primitives that actually allows uh you know uh bill submarine to work so that being said we're going to offer up a toast to the demo gods and hopefully this thing will work and my colleague david is going to run through the demo all right let's give it a shot all right all right so um you know just a quick explanation of what we have here so uh what we're trying to do with yellow submarine is to transfer uh esc-20 assets from one evm compatible chain to another without you know while making it pretty much untraceable to break the link somewhere in there uh so that it can't be actually traced to the the source evm chain and source address so in this uh this demo we're going to do from bse testnet to roxton and we're just going to use this ep 20 acid that we've deployed on both sides so it's just a gld uh our own version and uh so we're going to go from there so let's just do some mounts and for the receiving address so i have both accounts loaded here uh this is the account we'll be using to uh as the source and this will be the destination address so i'm just gonna go and copy this as the receiving address let's go back here okay now we're ready to go um and there there was this uh connect your wallet step of course before this but i already did that so all right cool so what's gonna happen first is uh and then we'll show a diagram of this um to kind of better walk through but basically what's happening here is we're granting uh the uh permission for the gld usb 20 contract to spend uh 1.5 uh so that this this is the columbus contract uh columbus contract is the the main smart contract that is that is going to be providing all the logic for this this operation so we're allowing it to spend 1.5 of our gld and we're going to go so this gets approved first and then after this you'll see it'll ask me to actually just do a deposit so yeah okay so this deposit transaction uh is going to invoke uh the columbus bridge and then the bridge actually talks to the columbus contract to go ahead and do the transfer from the glb uh contracts to itself and you know thereby locking the funds so we're gonna go ahead and approve that as well and then while this is going like once that happens actually what is going on in the background is should i cut to the diagrams we'll let it go um basically uh it's it's going to start the process of doing the actual cross-chain bridge so by the time we get to step two uh the acids will have already crossed over to the finger indian and then over to the fender etso and then that will be where step two kicks off so hard to get fire give it a second yeah um so prior to abroad this step uh where we turn a uh utxo into an anonymous asset using our clock implementation and disclaimer here i'm not a cryptographer i can make it so i'm not going to be able to explain to the depths what is going on yeah so bar bar is uh stands for blind asset record it's the same as the txl it's just it says blind but it's not it is fully public and then an a bar is an anonymous blind acid record so that's what those stand for um so we've successfully converted the uk stuff to a private asset anonymous asset here and what we're doing now is consuming the uh a bar and then turning it back into a bar so back into a normal utxo and that is successful so here basically we're crossing the chain back to robson well not back to russia forward to rosten and uh the last step here is uh the check so uh there are a few steps in between here you know the completion and there so we're not going to be able to see the full yeah so deposit it's not that interesting uh this is where the bargaining bar happens so [Music] really quick here uh we take the [Music] can you see that um barely all right okay so what's happening here is uh we take the original input uh and then uh consume that and then turn it into a commitment basically uh and then that'll be the a bar and then this acid type is basically it'll show you that our custom asset type uh on the thunder or david chain it's a gld [Music] we'll see that a bar was actually consumed in order to produce a gtx or normal utxo so this one yeah and then cross chain this is basically invoking the the smart contracts for the bridge and you know what is actually going to transfer over and target network checks so let's see if it actually showed yet it's probably not there yet because what's happening here is actually it's crossing the bridge there's the relays that are doing the proposals to make this transaction uh available on the rafston uh chain and also on that side there's a bunch of smart contracts that need to execute in order to release the gld on that side of the bridge to the destination address so it'll should really be another you know so that one would go for a long time just to be clear you are directly transferred like bridging the token from your native chain to your studio that's right you are not going to like all right cool uh oh i'll do this yeah so uh basically uh the the really simple user version is so we connected the web3 wallet selected the source and destination networks and click go pretty much that was it uh so um in the more deal detailed version let's really kind of dig in a little bit into the inner workings so keep in mind though we literally just finished this so uh the workflow probably isn't the diagramming it probably isn't like 100 uh but it is very close so it will give a great idea of what's actually going on so we're going to start from the green bubble which is um the source address and this is when we start to interact with the actual front end so the front end firstly asks for approval like we saw for the columbus contract down here to spend a certain amount of erc and then you know expense it to itself and then after that is all done [Music] the front end will call deposit so in this deposit we include a bunch of metadata which includes the recipient id and the recipient etxo address which is generated in this step and then also the destination chain and then the amount and the asset type and a few of a few other things and it invokes this bridge contract so the bridge contract will actually call the columnist pool contract to go ahead and you know lock up those funds um and then we have this bubble here to indicate that yes um we did have to provide liquidity uh on both sides of this transaction of course in the future this could be a liquidity incentive contract of some sort uh but right now we just directly provided to that contract so let's make it work um yeah so after it's confirmed that everything is uh all the funds are locked up and we go to this uh you know this contract will actually emit an event uh for the relays to pick up for for the bridge and um you know after voting proposal stuff uh we'll do an execute proposal uh and the columbus bridge contract this is the findora site now by the way so on this side we'll execute that proposal and it will in turn invoke our columbus reader contract because prison plus plus is a generic contract so uh this this helps with that interaction uh basically what happens here is there are uh mint transactions that are placed in this prism contract and at the end of every block the finder fender account ledger will check that and consume those mid transactions so the mid transactions once it's consumed it will mint those assets on the fender utxo so that's how it makes it over to the native chain okay and then here is really the meat of it so there's step 10 uh so this is where part of a bar happens uh the blind asset record becomes a [Music] anonymous record uh via a variety of cryptographic commitments so uh for example um actually i had a list but they're not here so [Music] uh if you're interested in exactly how this works it's you know readily available in the code to look at so uh that's already liable tested live on uh yeah so um and then in the middle here uh we have the anonymous wallet so basically the all the parameters that came from creating this a bar are stored in the local store by the front end because we're going to directly use it to create this this transaction number 11 which should be up here in this arrow in order to convert it back to a normal asset a normal transparent asset so during this process basically uh right here in a bar to bar to a bar we know um you can trace where the a bar came from based on the bar uh there's the link between that and cryptographic proofs to prove that that's where it came from but at this step number 11 you actually don't have any way of knowing which a bar was consumed to create the bar so that's where the link is broken so it makes sense okay cool um yeah so then we start the process to go to robson basically uh so this we burn the utxo call prism plus bus and the contract will begin the process to um to call the relayer contract and the bridge contract in order to send this asset uh over to the second um chain which is russell so there's the re-layers the vote uh propose and vote and then execute the proposal for this particular transaction and what happens at the end really is that this employment pool contract that already has gld in it because we funded it previously will release gld to the destination address yeah how do you make sure the steps 10 and 11 are not like bound to each other they're not analysis like because it happens like in quick success yeah yeah yeah like match them together right yeah yeah that's uh okay uh so maybe go back to slide and we can see it's actually basically park a bar and a party bar you can just like listen yeah and yeah like you will figure out like the link between first findora utx one second yeah that's a that's a great question so the question was how uh because the steps 10 and 11 happen in quick succession uh it's pretty easy to relate them uh or infer the relationship um yeah that's true uh but that's because right now there are actually no transactions happening of this type except for by this uh this application right but if there were really just a few more then it would be actually like adding a random delay or um you know but that you offer like it will be some type of asset so you are not enforcing like you are not mixing the same as you are mixing different different values as well so you can yeah that's true but you can see maybe um maybe it wouldn't take that many transactions at the same time to do that at the same time you know if there were 10 and then all 10 go somewhere else then you can only say that these ten inputs somehow made it to the other ten but those ten have to be the same like you have to say uh like amount and same as a type yeah so then like it's reasonable to say it's you have like one chance that you will like yeah figure out which one it is but like even if you have ten choices like you can probably like check out all the dance in there yeah we will need to do this multiple times i guess and they create some amounts that are most popular i guess yeah that is completely true yeah okay cool um okay so next all right uh so obviously we're at a developer conference so the question is how can you build this uh so our initial goal was to finish the tap build the sdk and write all the documentation we basically got one of those three done so we finished adapt it's been working the team is quickly putting together an sdk there's gonna be a follow-up in a week or two uh so we're open open up the sdk for developers to be able to build their own versions of this and be able to fork the repo and kind of experiment and there is an existing tool kit it's basically everything is built on open source uh fedora github.com network uh all the repos are there everything we use is all there it's kind of a patchwork of repo so you would really have to know exactly what proposed how how to use them in order to like actually build this so we're gonna basically abstract all that away and build the sdk on top of that so that's coming soon uh but definitely can't stay up to date with the project and we hope to see a lot more of these kind of built because we think you know privacy is a really important uh value proposition also um so not just doing you know asset transfer or like actual you know private swaps but you can build a whole bunch like a whole new category of dapps that are all private including vaults dark pool decks money markets nfts asset pooling dows you know as we're you know experimenting and there's more traffic on the network you know we anticipate that the uh that they'll be you know more more of these uh this is all kind of building toward uh people calling it d5 or wifi um we think that this could help unlock you know a whole uh a lot more capital capital that's kind of sitting on sidelines that they're not they don't want to participate in work because it's too transparent so i think you know privacy can help to to unlock and kind of help uh crypto meet more mainstream adoption um so where we uh so again my name is warren ceo of discrete labs as david our cto uh this is a collective project uh kind of under the columbus dow there's a lot of different people all over the world are contributing to this in various different time zones uh everyone you know it's all being built again on fedora as like the primitives um so you know it's every you can kind of check out all the the projects and follow everything uh yellow submarine's going to be you know because we just like finished everything it's going to be updated you know github and we'll share everything out so we can we can expand you know the network of this but you know we do think this is one of the first practical uh you know dabs for actually leveraging you know zero knowledge uh for d5 uh we recognize there's lots of other projects that are actually building you know the zkvm and everything but uh you know we didn't want to wait we wanted to see something you know go live and and push it so we're actively contributing we have a pretty big cryptography team that's constantly working on trying to kind of advance the state of the art for their knowledge and uh yeah that's uh that's pretty much it uh i don't know if you have time for questions how do you compare it with that uh so the question is how do you compare the project uh wifi with dark five i'm actually not familiar with darkrai uh okay but i didn't have something okay yeah there's obviously we think that you know privacy is critically important and we're supportive of any project that's building out you know privacy we want to collaborate and contribute uh in a in the best case scenario like every project has optional privacy um you know and we think that that would be a big win for the industry and it'll help to you know increase more mainstream adoption uh you know if you look at like you're storing the internet you know before when browsing you know traffic everything was very public uh there wasn't a lot of use cases it was hardly payments for the commerce uh when you know actually you could start browsing you know a way that kind of unlocked a lot of a lot more use cases so we think that crypto is going to do the same thing um so yeah i'm not sure i definitely want to check it out though um i have a question about uh what what's coming next for fendora uh is yellow submarine the first implementation that you guys have or yeah yeah so that's that's kind of a good question so kind of going back to i think this slide but the question is what's next uh so columbus dow is going to you know probably increase in size in the participants and i think on the roadmap you know they have you know things like vaults dark pool decks to prevent front running attacks uh money markets and once you start to uh increase the level of privacy in crypto it unlocks a lot of new behavior right and actually it helps to build more fair markets as well so without you know bots front running you can actually realize that the true price to true value um and you know i think that's like super important same with nfts i mean 80 of the art world is uh is actually you know private um private auction right so uh nfts are really absolutely popular everyone likes to show their uh you know their their portfolio but we also think there's a lot of kind of trapped capital right now to participate in the market especially like high network uh individuals that want to be able to deploy capital without revealing actually how much they paid for a punk even though everyone likes to brag about how much they pay for a pump a lot of people that you know don't want that so but that's why we think privacy should be optional right cool well thank you very much uh yeah check us out again follow uh projects here and uh appreciate thanks for coming out awesome [Applause] discord here if you guys want to continue conversation as well yes [Music] [Applause]
Automatic transcript — names and jargon may be misspelled.