Getting Started with Zero Knowledge Proofs by Harshad Patil (Discreet Labs)
Ethereum Denver·Mon, Oct 9, 2023, 12:00 AM
Transcript
hi guys uh my name is harshad Patel I'm from I'm from findura I work in Fender as a lead blockchain engineer so uh I hope you all of you had lunch and feeling energetic uh so this this talk is going to be about how can you leverage the zero knowledge proof based transactions on findora send completely private transfers from one evm address to another so getting on so let's begin with Pandora Network so what's Pandora so uh Fender is a privacy focused blockchain and it it works on similar principles as zcash you can say I don't know how many of you are aware with zcache have used Z cash wallets or Monero so uh yeah some of you so uh findora is a utxo chain primarily and it's a it's a proof of stake change so everything regarding to staking and uh the the main uh ritual funds happens on the on the utxo chain and in the utxo change you have an option to create assets and convert them to Anonymous assets and those Anonymous assets can be transferred completely privately to anyone they could be held proof of their ownership can be produced so uh how does it compare with Monero and Z cash so both are single asset utxo chains so in findora the utxo has have an extra parameter where called the asset ID so you can create custom assets like you create say erc20 tokens on any evm compatible chains and the fees are also private for anonymous transactions that's the main difference with zcash so findura the utxo chain of indora can be leveraged uh to create and send trans uh assets utxus privately anonymously and also hold hold the assets in the anonymous domain apart from that what's different for Pandora is that we have evm integration quite like uh near protocol we have a parallel evm running on Pandora so you can send both evm transactions and Pandora utxo transactions and there is something called prism which means like it's it's an internal Bridge which can be used to convert assets from the utxo domain to The evm Domain and vice versa and we are currently working on something called findora X which is the which is like giving you the complete power to send zero knowledge proofs and verify them on the evm Chain currently it's like work in progress but we uh soon developed and launched so I'll show you an example of findora wallet so yeah so this is uh my Pandora wallet and uh currently I don't have it's a re-initialized wallet I don't have any assets here but uh there's this fra asset I could have and there is this prism interface in the wallet where you can convert between your evm address and your friendora native wallet any amounts uh and this could be done also for different kinds of tokens or custom assets so coming back yeah so the the base of finra is Noah Noah is our cryptographic library full of various tools we use in the fender blockchain for example we have Ed 25519 sccp key implementations in Rust we use ARC Works cryptography libraries a lot in this for this is only for curve curve calculation and stuff then turbo Planck implementation is done in this library then there is a custom constraint system we Define who is compatible with what we call r1cs which is kind of the standard for defining zero knowledge constraints systems and our complete Anonymous transfer implementation so come converting uh non-private assets to the anonymous domain and sending Anonymous transactions and converting them back everything has been implemented this here so you can go check it out on GitHub so uh today for this hackathon what I'll be explaining more would be the Privacy routing SDK a privacy routing SDK is like a so JavaScript SDK which enables you to transfer assets like uh findora coin or any other frc20 token which is the same as the erc20 interface format you can send them those transactions those assets from the Eva from any evm address a to address B privately and in between there would be the the privacy and conversion transactions used in findora so uh of course this JavaScript SDK which can you can integrate it anywhere with you know web-based apps uh like react.js or xjs or anything you use also uh you could build pro privacy use cases like private Dow salaries so you don't know you don't have to expose your addresses while collecting Dao grants and those can be done anonymously also you can deposit or withdraw from from D5 app or Bridges so it adds so it adds a layer of privacy onto the evm uh so it's uh it's not completely straightforward a single transaction from sender one to Sender to receiver so what happens uh as you can see in this diagram is uh you have the asset in the evm and it is converted to prism to the Pandora utx okay and from that it it is converted to the anonymous domain so this is very similar to the zcash shielded transactions the main difference being that uh the the conversion can happen for any custom asset then from the anonymous domain you send this to another spindora address which is not linked to the first address so the link breaks when you do this bar to a bar and a bar to bar transactions so in between there's this privacy uh this is private domain which holds the assets then from again from the findora utxo domain you can convert the asset to the evm chain so uh a usual flow goes like this so create intermediate Keys holding the assets then you transfer from evm to utxo then utx1 on it to anonymous then again from Anonymous to a new utx address and from utxo to the evm address so this is actually uh about the implementation uh so for the setup you need to you need to install this package it's available on npm and uh there is a there is a fedora wasm which is used to build Anonymous and utxo transactions which you need to download and integrate in your project and in the project file you need to initialize it with the correct uh correct RPC URL for the evm so this is the forge testnet evm RPC URL so that's all about the setup you need to get started then uh then we come to the Fedora force test net so this test net has all the features available you need to you need to use with the Privacy routing SDK uh there's a faucet running on a Discord group called Discord Channel called testnet faucet on Pandora Discord server and you can type this command with your address and you can receive uh findora tokens in the EV on the evm then there's also uh uh there's also this website running you can use it to you can use it to uh get uh findora and ZK usdt tokens I'll just show you the website yeah so you can add your evm wallet address here I can and receive the token on the findora evm then for the actual wallet connect and all that stuff like your browser stuff you can you'll have to use the network config the network config defined here so it has the RPC URL the findora token chain ID chain name and uh all the currency elements so this for that then yeah you need to to use uh it with metamask or any other wallet you need to register the network the Fedora Force network name with your with the correct RPC URL chain ID and there is also a block Explorer Explorer for a YouTube debug any transactions transfers so as I said earlier so there's a simple way to create the intermediate wallets of course to keep them anonymous and the Second Step becomes the transfer of the transfer from the evm to the to the utxo chain and there are some differences in the uh in the way you transfer the fra token or the way you transfer the frc20 token uh then these are the intermediate evm uh sorry Anonymous domain transactions the bar to a bar and the bar to bar I just came this over fast uh there's a link I can give you for the Privacy routing SDK and its implementation later and finally when uh when the link is broken you can send it to the receiver evm address so destination address would be of anyone who who's going to receive the original assets so uh as I said there's a privacy routing SDK example implemented and you can check it out and the good thing is there's a independent like react component uh you can use this make changes to this according to your project and actually I'm running an implementation of that locally yeah this one so this is how this project looks like so internally it has this privacy routing SDK of uh whatever I told like this react component implemented and it all it has all those five steps to make the transfer from evm address a to evm address B and here you can see I can I have connected my metamask wallet and uh I'm using the friendora evm force test net and I'm from account one which has 1000 fra I'm trying to send it to account 2 which does not have any fra so I'll just paste this address of account to here and account one is connected and start transfer and this will do all the transactions in the JavaScript behind the scenes yeah so it goes on so you can check it out this project on on GitHub now if you are doing things on the server side you can also use privacy needs us I think another it was just asking the gas confirmation so yeah coming back so if you're doing things on the node.js side you can you can't of course use the um the web browser version of the private privacy rooting SDK so there's this privacy routing script there's this privacy routing script uh you can use this for your uh node.js or backend.js projects so this is about the whole uh usage and how it functions uh so coming back like uh so yeah one of the questions often asked is right now which erc20 coins are supported to be converted from like the evm to the the utxo domain so you can check it out on the faucet you can see like you can see the findora and ZK usdt so ZK usdt is like a bridge asset on the first test net so uh you can mint this uh so you say erc20 token and you can use it to transfer privately so this is still going on so you just need to uh put your your address here and you can so it needs very Discord sign in but you can mint your you can mint your ZK usdt tokens there for your meta mask address and uh other question can we transfer directly from evm to Anonymous so uh so yeah right now that is not implemented uh it's in progress so right now you have to go through the multiple layer transactions of converting from evm to utxo utxo to anonymous and if you have any questions regarding to the implementation or you're getting stuck then you can ask us on the Pandora Discord Dev chat Channel and uh also there is a there's a page uh there's there's a page for for this event running on the Pandora website for the for the Denver hackathon you can check it out it has lots of uh like use cases and helpful links so I hope like this helps to build you some some interesting privacy use cases on indoora on findora for your dabs uh thank you I think I'll wrap it up thanks
Automatic transcript — names and jargon may be misspelled.