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

Loading player…

zkBob 🛠️ Integrating zkBob - a privacy-enhanced smart contract wallet - Kirill Fedoseev

ETHGlobalMon, Oct 9, 2023, 12:00 AM

Speaker

Kirill Fedoseev

Join Kirill Fedoseev from zkBob for a workshop titled "Integrating zkBob - a privacy-enhanced smart contract wallet". Ensuring financial privacy is crucial for numerous on-chain use cases. zkBob offers a smart contract wallet solution powered by zkSNARKs, that is both user-friendly and compliant. Learn how to use and integrate zkBob’s payments privacy into your everyday workflows and dApps. Thank you to everyone who joined us for ETHGlobal Paris 2023! Paris is the city of light and birthplace of many revolutions. Therefore we were thrilled to be back in one of the most buzzing and free-spirited cities in Europe for ETHGlobal Paris 2023. A lot has changed in the European ecosystem since the last time we hosted a hackathon in 2019. ----------------- Follow us: https://twitter.com/ETHGlobal​ Check us out: https://ethglobal.co​m Email us at: hello@ethglobal.com

Transcript

Okay, let's begin. Welcome to the Zikbop seminar. Um, yes, I'm Keel, one of the core developers of the Zikibbop protocol. And let's talk about how you can use Zikibop and how you can integrate it into your apps to ensure privacy with our privacy-enhanced smart wallet, which is actually Zikibop which is actually Zikibop . So, at Ziggy Bob Protocol, we truly believe in this fundamental concept of personal financial privacy.

We believe it is extremely important to have a choice about this privacy and for users to be able to decide which transactions they want to keep private and which they prefer to hide from outside observers. We also believe that given that currently all available blockchain blockchain infrastructures mostly only support public transactions, and all information is publicly available on blockchain explorers blockchain explorers , and anyone can see, such as balances, addresses, transaction amounts, history, it is really inconvenient for most people who are transitioning from the traditional world of finance, where something as important as financial privacy really exists, and yes, we believe that this is one of the reasons that prevents the crypto world from gaining widespread adoption, namely the lack of privacy. Therefore, at Zikop, we try to solve this problem of lack of privacy by creating our own privacy protocols that allow us to overcome these problems. So let's dive into it. The Ziggbove app is built on top of Zik snarks and really allows you to do these fast transactions while preserving privacy and TC payments in all supported tokens which you can do by generating Ziki confirmations locally and yes, in Ziggy Bop you can do private deposits.

You can freely transfer tokens within the pool, which are completely private and hidden from the outside world, and then you can withdraw them back to the public blockchain to your public wallet and continue to use them in the definition of already enhanced privacy tokens. The principle of operation is that after you send a transaction to Zikkebop to perform a certain deposit, transfer or withdrawal of funds, only you, as the sender, and as the recipient of this operation, it can be yourself or your friend, only they can access, decrypt and actually get something useful from this data and understand what actually happened during this transaction. So now sigy bop is available on Polygon and Optimism layer tools, with more blockchains coming soon. It supports bop and USDC stablecoins, which are mainly used for payroll payments , as well as Optimism tokens for anything that requires privacy for the native Ethereum currency, which can be the deployment of private contracts private contracts , which is useful in some specific cases. Yes, and we plan to add more chains and tokens in the near future as demand for Zigbo privacy emerges.

This is a quick overview of our interface. Later in the seminar we will demonstrate how this works. But actually, yes, our interface is quite simple, and with it you can freely deposit, transfer and withdraw funds just like you normally do in Metam Mask or any similar wallet, just through another browser tab, without having to download anything. All evidence of Ziggy Bob, Ziggy Stark is generated locally is generated locally . So it's a really simple and user-friendly interface for your everyday needs to achieve some privacy.

Of course, the possibilities of using Zikop are almost endless, but we are trying to come up with a specific way of using it, or what people are already using Zikibbop for, and why we recommend they start using Zikibbop using Zikibbop . And these use cases usually relate to anything related to transactions between users. For example, when you want to split the bill for dinner with friends after the if global hackathon, you can use it to receive and pay salaries to your employees, both from the employer and employee side. It can be used for anything related to grants, donations, fundraising, crowdfunding, or any other use cases. You just want to make payments in stablecoins, ETH, or any other tokens privately.

So yes, let's take the most common example at the moment. How to transfer salaries using TK Bob. Let's say we have our employer, Karl, who really wants to pay his employees on a public blockchain public blockchain because he doesn't trust any centralized exchanges and wants to keep all his budget accounting and payroll on the blockchain. But his employees really asked him to do it privately, and that they would prefer to receive their salaries also on the blockchain, but in some private way, so Karl found out about Zikop, and now he wants to start using it using it , for example, for salaries. So, it works like this, Carl just chooses the stablecoin he wants to use wants to use , and it could be Bob, or it could be USDC directly.

He then deposits this stablecoin into the sikop pool, say once a month, and then on payday he can distribute all the salaries in a single multi-transfer transaction to his employees' addresses that he received from the invoices. And yes, he just needs to send one multi-transfer once a month to sikib through our interface, and then employees are free to withdraw any amounts of to withdraw any amounts of , um, their salary, to their public wallets as soon as they say they want to do so. One of the features of Zikop that we think is really important for the widespread adoption of blockchain and privacy is its good support for mobile devices, where you can send and receive transactions on the fly when you don't have access to your desktop or laptop. That's why we spent a lot of time optimizing the Ziggbo app for mobile devices. We have verified that Ziggy's book is used on a mobile device, that sample generation works fast enough, and now it only takes 10-15 seconds to actually create a completely private cigar .

One of the interesting features of Tikbop interesting features of Tikbop is its integration with Lei, which allows you to perform any cross-chain interactions from the chain and with chains that are not supported by the Cebob app. So you can freely deposit and withdraw funds not only from Optimism and Polygon, but also just connect to connect to any other asset or chain in the same interface by simply opening the Leifi widget, which is really cool and we are very excited to see how it all works. And the last point I would like to discuss in this seminar in this seminar is our emphasis on compliance. So, regulatory requirements, as we have seen over the past few months, have become stricter on any privacy-enhanced applications or protocols. We believe this should be taken into account, and our mission is to find the right balance and compromise between the level of privacy you get as a user of the Sigbo protocol and the way in which the government or various authorities can expect compliance from such protocols, so that everyone gets what they want without hitting each other's pain points.

And so at Ziggbo, we're trying to create this compliance-friendly tool that still maintains privacy in these transactions, but at the same time meets certain regulatory requirements. And yes, the way it works is that we use several methods in Zikibob to support this aspect of compliance. The first of these compliance. The first of these is the address screen. So every time you deposit or withdraw funds on Zikib, we make sure that your address and your wallet meet the necessary machine learning requirements.

This way, we can make sure that Ziggbob is protected from various malicious parties and users who may try to access and exploit the applications. We currently use the TRM labs vendor for such a machine learning screen for automated checks. But we are always looking forward to any other integrations and new protocols that perform similar actions. Our checks are not only used on the UI side, but are also deeply integrated into the sequencer code so that attackers cannot access the protocol by somehow bypassing the UI . Instead, they have integrated with sequencers, and the sequencer is the only party that has direct access to the zikop pool contract.

The next important feature we had in zik bop is the concept of optional KYC. So, basically, KYC is not mandatory for Ziggbop user and you are free to use Ziggbop app up to certain limits without needing KYC. But if you are a large business that wants to pay salaries, meaning you are a large user who transfers large amounts, in order to increase these limits, there is a concept of optional KYC that you can go through; you may encounter a specific Soulbound NFT on your wallet, and then the protocol will automatically use that NFT as your access key to these expanded and increased limits. And now we are using this integration with the opium no protocol, and under that it uses the Binance B Soulbound NFT token, and in the future we are looking at several approaches to further improve the Ziggbop match size. We look forward to seeing how we can leverage and implement selective anonymization of users' transactions, should they choose to do so.

How users will be able to generate cryptographically verified bank statements with their transactions. How they will be able to export and give someone read-only account access keys, and how we can support different ways of not only Binance B tokens but also more KYC on the blockchain. So, let's say a few words about our hackathon reward. Hmm, yes, one of the rewards is related to the direct deposit feature. Essentially, it is a way to integrate deposits via the Stickable protocol into Stickable protocol into any third-party protocol, smart protocol, smart contract, open source wallet, and its goal is to minimize the required effort and barrier-to-entry requirements required to access cyberspace deposits.

The best thing about direct deposit is that you don't actually need to generate or interact with our SDK to create any initial confirmation to make it happen. You just need to send a simple smart contract hall, which can be done from any smart contract integration, any third-party protocol, and you don't need any SDK for that. So, yes, the way it works is that we have a separate smart we have a separate smart contract that brings together all of these direct deposits and then the data that can come from all of these protocols on the left. It could be anything related to taxes related to taxes , violations, aggregators, wallets, anything related to payroll. And then, after all of these direct deposits are combined in a special contract, the sequencer will in turn generate a z-package and actually include these deposits in the zikable pool contract, where the recipient of these deposits and users will be able to access them in a few minutes.

So, as I said, the first chain is related to the implementation and integration of these cybop direct deposits. So we have, essentially, any best use of this particular feature will come at a price. So we have three places: 3, 2, and 1000 for each. And then the second way of rewarding: if you're not really confident about integrating ziggbob deposits into your own app because you have a slightly different, um, project slightly different, um, project that doesn't involve any stablecoin transfers, let's say, then we have this open prize this open prize pool for almost anyone, any team, who can just go through the registration process in the ziggbob app, generate a receiving address, open an account; We will then ask you a couple of questions for feedback during the contact session. And in fact, it takes 5 minutes to become part of this prize pool.

So, we'll just take that 4k and distribute it among all the teams that completed the registration process. And so, in essence, we created a Zikibob account. And so, again, a few ideas on how you can integrate direct deposits into your hacks, is integration with any open source wallet. Let's say with MetaMask snaps. It can be integrated with various taxes, fiduciaries, aggregators or any other smart contracts, and yes, any great ideas are of course welcome too.

So, let's do a little demo of the bop interface to see how it all works and what we can do with it. So, yes, we'll go into our tab. We will choose...yes, we recently deployed an Ethereum pool for ETH tokens on Optimism for ETH tokens on Optimism . So let's use that for this demonstration.

But in reality, all pools are very similar, and you can use use any of them in your HYIPs and, um, in your workflows. So, we will connect our ZK account using our web3 wallet. The user interface will ask me to assign a message and then use my signature to create a private key for my account. I'll skip the password for now. Yes, my CK account is now synced now synced .

And in the top right corner I see corner I see that I have a public balance of some ETH and wrapped Ethereum, and I also have a private balance that is completely hidden and is part of the part of the Zikib pool smart contract. So now that I'm connected to my Zika account, I can make deposits in both ETH and Frapp, I can transfer them to different people in the pool who have also created a Zika account. So yeah, let's just do the translation ourselves. So, to make a transfer, I need to ask the receiver on the receiving side to generate a recipient address. So every time I click this button on the account tab , it generates and displays a random address for me.

Thus, the total number of addresses is unlimited. So you can just generate a new one every time someone asks you to send one. Thus, it helps you maintain some level of privacy. So yeah, and let's just transfer some ETH. So yes, my web browser is now using our SDK to generate a withdrawal confirmation .

So on a laptop, it should take about five or take about five or six seconds. On a mobile device, this takes about 10-15 seconds. So yes, confirmation is being generated now . It is sent to the sequencer, and now the sequencer has sent its transaction. And yes, it is already included.

And if you go to the history tab, you'll see all the actions I took a few hours ago. And yes, 20 seconds ago I completed this translation. And of course, the whole story that I see here, only I can decipher that story and access that data to see what addresses were sent to. Thus, the remaining information for the rest of the blockchain is hidden and remains private. And yes, I can access my history and see what I've done on my account.

Um, yeah, let's now see how we can track deposits and how they can be integrated into your application. So, an easy way to test direct deposits is to install the Block Explorer interface. So, basically, that's all we need. So I'm going to go over to this great Block Scout interface to see how we can send a direct deposit from there. So basically, to send a direct deposit, I'm also going to need to get this receiving address, which is different from the one we used before.

So I'll copy it. I'm going to choose the direct deposit feature. I'm going to pass my CK address here. I'm going to, yeah, let's say I want to deposit 100 ETH. And yes, as a backup user backup user , I'm also going to specify myself.

So, yes, essentially, these three arguments are enough to send direct deposits to the blockchain, and as you can imagine, this function call can be easily integrated into integrated into any smart any smart contract application, any protocol, and it really is that simple. So, yes, I'm going to send the transaction. Yes, let's see its details. Yes, and we see that 0.01 01 if it was transferred to a direct deposit contract.

Now it will take a few seconds for this to appear in history. So, yeah, let's wait and see how long it takes for the charting service to sync this deposit. So, yes, he's already here. Yes, we see that 30 seconds ago I made this deposit. So, we deposited 0.

01 01 each, but some commission was deducted at the smart smart contract level, and yes, now I see that my deposit is pending processing and it will be credited to my account in about 10 minutes. Yes, that's how direct deposits work, and we have more detailed documentation on all of this on our documentation page in our documentation on the Zikop portal. So yes, feel free to try out the Sikbow app, create an account, apply for our rewards, view the documentation for direct deposits, SDK, and the rest of the app on our Sikbow website. If you have any questions, please questions, please visit our booth. We also have some cool merchandise.

You can ask questions, chat with us, and if you are not on the site, you can freely ask questions in the Discord channel if global. Yeah, and uh, I think we have a few minutes for questions on the site. So I will be happy to answer. So, if I understand what you mean correctly, with direct deposit you can anonymize the transaction. So maybe if we build a decentralized application and we want users to run our functions from our smart contract without knowing who they are, can we easily lock down that scene to make it work or not?

Yes, I think it's possible. So, deposit tracking is a very simplified version of the combination of deposit and transfer. So if you want to do something like this in the UI , it works like this: first you need to make a deposit. To do this, you need to calculate the initial confirmation, and then you can make the transfer. But direct deposit simply allows smart contracts to bypass this complicated process of generating the initial confirmation and just call a function at the smart contract level, pass a few arguments, and, uh, yeah arguments, and, uh, yeah , it will make this deposit and transfer to the recipient side.

So of course this, uh, sender address is public because the deposit is coming from a public network. The amount can also be seen, but then the recipient is actually an anonymous party. So no one can really know who this recipient address belongs to . What . What if I want the opposite?

Since I have a smart contract with a function, someone has to call it, I just don't want anyone to publicly know who is calling my smart contract. Yes, for this, uh, at Zikop we use our own sequencer and, uh, some kind of account abstraction, but, uh, yes, for your own accounts and smart accounts and smart contracts, there are several services that do the same and similar things. So, there are several frameworks for account locking or, for example, transaction metrics. So yes, you can connect to connect to any of them. I think they also have a reward for a second try.

So that's how it will probably be done. Yes. Good. Thank you very much. Thank you.

Automatic transcript — names and jargon may be misspelled.