Anna Rose (00:00:05): Welcome to Zero Knowledge. I'm your host, Anna Rose. In this podcast, we will be exploring the latest in zero knowledge research and the decentralized web, as well as new paradigms that promise to change the way we interact and transact online. (00:00:26): This week, I catch up with Emre and Izaak from O(1) Labs. They share an update on the Mina protocol, cover the launch and look at how the network has evolved since then. We also touch on the organizations that have built Mina and how O(1) Labs is experimenting with a new employee-run structure. Lastly and importantly, we dig into Snapps that are SNARK-powered dApps on the Mina network. But before we start in, I want to share with you very exciting event that we were putting together. This fall, ZK Validator and Zero Knowledge Podcast bring you ZK Hack, a multi-round online event with workshops and puzzle solving competitions. The ZK Hack offers ZK enthusiasts and practitioners a space to learn more about ZK while also giving advanced cryptographers and hackers a challenging competition to try their hand at. Think Hackathon meets CTF meets Dark Forest round based competition, but all focus on ZK tech. And this is supported by our puzzle building partners, Aleo and Anoma, as well as gold sponsors and workshop hosts, Aztec, iden3, O(1) Labs, and StarkWare. This event will be running every Tuesday, starting October 26th for 7 weeks. We knew we could not cram this all into two days. If you're interested in participating in one or many of these workshops or puzzle competitions do head over to the website now. I've added the link in the show notes. If you sign up, you'll be reminded about updates as well as getting info about the actual workshops as they're happening. (00:01:56): I also want to thank this week's sponsor, cLabs. The cLabs folks wanted me to let you know about Optics, a new cross-chain project. Optics uses optimistic or optimistic-ish replication of data structures to send messages, tokens, and data between chains and rollups. The Optics-powered token bridge supports bridging ERC-20 tokens between any network it is deployed on. No pesky multi-hop bridging to get where you want to go. One send and it's done. The team has recently deployed Optics on Ethereum, Celo and Polygon mainnets. While it's still in degen beta, you can still use it today via Etherscan. Give it a try. And if you're interested in building a cross-chain application, maybe an NFT bridge, using Optics communication channels, or if you're just very opinionated about which new chains or rollups should be supported by Optics, do reach out to them via GitHub discussions or join the discord. I've added the link in the show notes. Now, most importantly, they're also hiring Rust and Solidity engineers who would be interested in building out the future of interoperability in crypto. If this sounds like you, you may want to apply. So thank you again, cLabs. Now, here is my interview all about Mina and Snapps with Izaak and Emre. (00:03:16): This week, I'm here with Emre Tekişalp and Izaak Meckler from O(1) Labs. Welcome to the show. Emre Tekişalp (00:03:22): Great to be here. Izaak Meckler (00:03:23): Yeah, happy to be here. Anna Rose (00:03:25): Izaak Meckler, you've been on the show before you, I think this might actually be your third time on the Zero Knowledge Podcast. The last time you were on was January 2020. And it feels like a million years ago, actually. It's crazy. It was a totally different sort of era. Not only like a different era in the world, but a very different era for Mina, which at the time was called Coda. So yeah, at the time you were running testnets for like six months, there was a growing community. There were people running nodes, but it was still a ways off from becoming like a live network. You were figuring out governance, we talked about some interesting use cases, and yeah, since then the network has launched. So how are you feeling? What's new? Izaak Meckler (00:04:11): Yeah. Well, it's funny. I don't know if you mind, maybe I'll just recall kind of a funny anecdote, crypto anecdote of January 2020. I remember going to the Stanford Blockchain Conference, which was in January, 2020. And it was like, people weren't sure how seriously to take COVID or whatever. And I was like, COVID like, what is that? You know? And I remember there were a lot of people from China who were there and who were like... Anna Rose (00:04:37): They could see the future. Izaak Meckler (00:04:38): Kind of joking. Like they were like, oh, hopefully, you guys should... Like I wouldn't eat the food or whatever. So anyway. Yeah, it was definitely a very different time when I think back to what we've kind of been through with Mina since then, I feel like we definitely went through the most painful parts before we launched the mainnet, which is great. As you mentioned, we were running testnets for a long time and there were periods of really painful debugging and problems and whatever, but things have been relatively smooth on mainnet itself. It feels pretty good, I guess. Anna Rose (00:05:13): Good. Emre, this is the first time you're actually on the Zero Knowledge Podcast. We should get to know you a little bit. What are you doing? What maybe has changed for you over the last... Yeah, since January, 2020 and your role at Mina? Emre Tekişalp (00:05:30): Yeah, super excited to be here. One of the fans, I don't know how many episodes I've listened to, but I'm always a fan and great to be here. Let's see. Yeah, so I am currently the interim CEO of O(1) Labs and we can get into the interim part a bit later with kind of the transitions that we're going through. And I joined the team a little over two years ago. So I joined to help lead our biz dev and general business efforts. And before that I was at Coinbase also doing similar biz dev work. Well, not too similar, nothing to do with SNARKs, but all sorts of crypto stuff, as you might imagine. So then I've been around for awhile, but yeah, it was funny like when I... I think we launched our first testnet the week I joined or maybe the week after. So it was super exciting for the team, obviously for me as well, but I would have been excited no matter what we were doing. And then, yeah, as Izzy said, it was quite a bit of a grind and I felt like it's a very thin line between like, oh my God, if all these issues are coming up on testnet, how much more is there going to be during mainnet versus, we're actually coming up with all the issues now such that there isn't any on the mainnet. So fortunately, so far we've been kind of closer to the latter one and that feels good. Anna Rose (00:06:46): Can you share with me what launching the network felt like or was. Either of you, kind of like, what was that process like? Because this happened... I mean, is it now six months ago or so that it happened? Emre Tekişalp (00:06:59): Yeah. Almost exactly six months ago. Anna Rose (00:06:59): Wow. Yeah. So tell me about that process. What was it like? Emre Tekişalp (00:07:04): When people ask me this question, I kind of say it's kind of like launching your first product, doing an IPO and growing your company like a thousand times in size, all at the same time. Like it's a crazy endeavor. I hope I never get to do this again. And I'm saying that in the best way, because it's obviously that gave us a lot of excitement and a lot of huge feat on, on all of our team and all of our community. Right? Because it was also like we jumped on this call as the network was being launched, like as the first block was scheduled and it was all like more community members than O(1) Labs team members. And they were the ones who produced the first blocks and still, like we don't run any block producers. It's very community managed. So yeah, it was crazy. It was crazy, I think is the one word to summarize. Anna Rose (00:07:52): Izaak, from your perspective, having worked on this for many years, leading up to this launch, what was it like? Izaak Meckler (00:08:01): It was definitely, the actual launch itself was, I think, emotionally kind of weird for me. I mean, just it was kind of surreal to be, I guess, on that call and see all these people who were so invested in, many whom I had no... Like I didn't know at all, and I don't know. But I think sometimes when you accomplish something that you had sort of intended to for a long time, there can often be a feeling of, a sort of surprising feeling of emptiness. Anna Rose (00:08:28): Oh, no. The anticlimactic launch. Izaak Meckler (00:08:32): Yeah, just because you sort of, I think you have... You know, desire can kind of never really be fulfilled. So you have this image that you just sort of hold down in front of yourself, but it's not... You can never achieve it. So I think that was probably a little strange. I was also in Los Angeles at the time, which I really don't like, and it fills me also with this sort of a spiritual emptiness. So I think that probably contributed to it, but I always really enjoy when there's kind of a spirit of camaraderie and all hands on deck kind of situation, which in the days leading up, there was late nights getting everything just set up, just so. So I always enjoy that. So that was fun. Anna Rose (00:09:10): Did you have any sense of relief? Izaak Meckler (00:09:12): Oh, definitely. Anna Rose (00:09:13): Maybe that was the emptiness almost. Izaak Meckler (00:09:16): Maybe. Yeah, I don't know. I mean, I think it probably has something to do with LA too, but especially since I feel kind of responsible for, at the end of the day, the correctness of some of the cryptography involved. So for everything to be working smoothly for the last six months, especially has definitely been a huge relief. Anna Rose (00:09:35): So in this episode, the goal is to catch us up on what's going on in the Mina universe, O(1) Labs, the creation of the Foundation. I want to talk about Snapps. That's, I think, one of the key things that I want to cover. I do want to share a quick note about some of the connections that I have, or this podcast basically has with Mina already. I am an advisor to O(1) Labs. I work with you Emre and the team on the community side of things. O(1) Labs is a sometimes sponsor of the show, but just note this episode is in no way sponsored in case people are wondering, I never do paid episodes. I interview the people I find interesting, and I think there's something to actually explore here with Snapps. ZK Validator is currently running a block producer on Mina. Yeah, and as part of our contribution to the Mina network, ZKV has even started contributing tools. I want to just do a quick shout out because there's this mina-vrf-rs tool built by Kobi Gurkan and Chris Lin within the ZKV umbrella that I've not had a chance to talk about it yet on the show. (00:10:35): So yeah, personally I'm pretty engaged with the project and I wanted to share all this, but at the same time, I want to kind of give people a heads up. As involved as we are, there's actually some parts of the Mina project, specifically Snapps, that I don't know very much about and would really like to dig into. In fact, I feel a little bit like I should know more. I hope that through this interview, I can find out more and also share it with the audience. But yeah, so we've kind of given a little bit of a history up to the launch, but there's been a lot of changes. So please let's maybe start with the org. Let's talk a little bit about Mina and O(1) Labs and the Foundation. How does this organization now look? And yeah, what's happened since... Maybe even since launch? Actually, when did the foundation come out? Was it before or after? Emre Tekişalp (00:11:27): Both. It's been a long work in progress and I forget now when we kind of announced it, but it should have been right before launch. Yeah, so to your point, Mina is an open source project that's community managed, yet it has to have both a legal structure around it to hold certain assets and be responsible of some of its doings and some of its actions, but also, there's a lot of coordination that needs to happen. So like many other blockchain projects we thought it would be in the best interest of the whole project to essentially start a new non-profit foundation. It's actually a public benefit corporation here in the U.S to really take this whole ecosystem forming, whether it's about grants making or community management or certain marketing related items or again certain legal items and really house them in this non-profit foundation that's very transparent and nonprofit. So some members of the original O(1) Labs basically departed to start off the Foundation. So Evan who was the original CEO and co-founder of O(1) Labs is now the CEO of Mina Foundation. Also several members of our marketing team and legal team left to really bootstrap it. We're also super fortunate to have a very experienced board at the Foundation with in addition to Evan with Josh Cincinnati, former Director of Zcash Foundation Anna Rose (00:12:54): Yeah, sometimes co-host of the Zero Knowledge Podcast, too. Emre Tekişalp (00:12:57): Exactly. Yeah, lots of familiar faces. Jill Carlson who has also been in this space for a long time and has been an advisor to us in the past as well, as well as Tess Rinearson from Cosmos or Interchain Foundation. So yeah, it's stellar group of folks and they're really starting to get up to the ground and really do some amazing stuff with all the huge ecosystem that's forming around the project. And on the O(1) Labs side, we remain a major contributor to the project. Obviously, we incubated the project but at this point, we're one of three actually, contributors, engineering contributors, obviously there's many more types of contributors, but engineering contributors to the project. And although obviously we're doing a lot of many different stuff, our focus is slowly shifting to become all about Snapps. So I'll save the details there to when we start going into Snapps. But yeah, our mission is to really enable this adoption and use case proliferation on top of the project, because as interesting and unique and exciting, many things as Mina is by lieu of this unique design as a layer 1, none of that really matters if you don't have usage on top of the platform. And that's our main mission. Anna Rose (00:14:17): Totally. You just mentioned that there was some other teams also building. Is this like dev shops, like a dev team building core infrastructure along with you, or different implementations? Who are those other teams basically and what are they doing? Emre Tekişalp (00:14:32): It depends. So the second team is ChainSafe. The audience might know them. ChainSafe also contributes to various other exciting projects. For us, they're working on a new Rust-based client. That's also gonna become a, what we call a browser node implementation, which is like the... Basically taking the Mina today and taking apart everything, but the full node, which was like the 22 kilobyte piece, right? Which is the whole vision of Mina. That's already there in our current software, but it's just strapped in together with everything else. So it just needs to be cleaned up a bit. So that's what they're working on. The third contributor, I'm actually unsure if it's yet to announce, it's been signed very recently. But they're also very experienced, let's say OCaml shop, which is the language our client is written in. So yeah, they're basically, decentralizing both software and node development for Mina as well as adding new features as well. Anna Rose (00:15:30): Cool. And how is O(1) Labs now running itself? You sort of mentioned you're interim CEO. Is there... Yeah, maybe you can explore a little bit what the plan is there? Emre Tekişalp (00:15:42): Yeah. Maybe I'll give you a high level and then Izaak can go over to details given he and Evan have been thinking about this for a long time. So we're changing our governance structure. So we O(1) Labs, a for-profit Delaware Corp, your traditional startup, let's say based in San Francisco, although now we're fully remote. So that no longer is the case. And we had a very traditional board structure and voting rights in the traditional way, whatnot. And we decided to take advantage of this transition with the Foundation splitting apart to also take a look at our governance structure and see how we can make it more sustainable and also more true to the ethos of the entire crypto space we're in. So we're becoming, almost there, like officially an employee-governance structure and I'll let Izaak Meckler maybe go through the details of it a bit more. Izaak Meckler (00:16:35): Yeah. That's I think a good intro. I would just add the motivation, at least for me in spearheading or kind of pushing for this new structure, is really the idea that in our world, you're not free unless you have control over what's required for your own continued existence, right? So most people in a sense are not really free in that they're dependent on their employer or whatever for their continued existence or an employer. And so my sincere hope is to create a new kind of society in which that's not the case in which everyone is free in the sense of not being able to just reproduce the conditions of their own life and existence. And also to create the world that in the way that they kind of see fit. Not just sort of being the tool to be used by someone else. That was my own personal interest in pushing for this, and of course, such a project is like a society-wide project. It's not something that can happen in one company or anything like that. But my hope is that this will kind of create experiences and structures that maybe can have some kind of ripple effect over time. And specifically, I mean, in terms of just how it's structured, I can just say a few words. So basically the formal structure is as follows, like everyone who works at O(1) Labs, who has been working there for more than a year is considered a member. And essentially the membership elects the board of the company and the board elects the CEO as well as ratifies kind of major decisions related to the running of the company. And so the board itself consists of employees, members and is democratically elected by the employees. So it's sort of real kind of self-governance in that sense. In terms of the day-to-day decision-making, I think that's still a little bit to be worked out, how exactly elements of democratic control can be injected into that, but that's for the future, I guess. Anna Rose (00:18:39): Are there any models that you were kind of looking to when you were thinking about this? Is there any companies or structures that we know about? Izaak Meckler (00:18:47): Yeah, I think for pretty clear reasons, most people who start companies don't want to pursue such a direction because of the desire to retain control and so on. But there are many examples outside of the technology space, but then there are a few even in tech and in crypto space. So like, I guess I can just point at some in the crypto space in particular. So there's one called Informal Systems, who work on Cosmos, I think primarily. I'm not exactly sure how they're structured, but I know they have some kind of democratic governance. Emre were you going to say something about that? Emre Tekişalp (00:19:25): Sure, yeah. They're somewhat similar. They've also innovated a bit more with their shareholder structure as far as I can remember as well. But we decided to start with keeping things simple. So as an example, we have similar shareholders and employees are shareholders. And one of the advantages is that employees get to own a larger portion of the company than they would in your classical startup. So we've worked out a few models to basically share more of the company with the employees, because they're the ones who spend their days, hopefully not a lot of nights, but usually days, to basically create some value and create new products and services. So it's just makes sense to us. Izaak Meckler (00:20:06): There's a whole lot of smaller businesses that operate this way. I live in Berkeley and Berkeley is very famous for having a lot of cooperatives for some reason. I'm not sure why. I guess maybe ex-hippies or something. So for Berkeley residents, you might be familiar with... Or even the bay, like Arizmendi or Cheese Board or there's like a skate shop that's a co-op. So there's lots of kind of small non-tech businesses that are run this way. There's also large companies that are run this way. There's a really famous one called Mondragon, which is in Spain. They do sort of, I think... It's manufacturing. They manufacture all kinds of different things. They have, I think, a few thousand employees. Anna Rose (00:20:52): To me, it makes sense though, like there's so many experimentations with decentralization on the networks, and yet companies tend to just take up pretty traditional company structures. And it seems sort of in a weird way, antithetical. Like you're putting a regular old company together with something so novel. Izaak Meckler (00:21:09): Yeah. I think the rhetoric of people in the space often contradicts the reality of controlling and ownership. There's a lot of rhetoric about democratization and community control and so on, but that's pretty infrequently the reality, there's usually a few large players who will control most of these projects or anyway. Anna Rose (00:21:36): How big is the team actually today? Emre Tekişalp (00:21:39): So today the O(1) Labs team is 25 of employees. Anna Rose (00:21:44): Oh, that's a nice size. Emre Tekişalp (00:21:46): Yeah. It's a nice, cozy size, yet large enough. And then the Foundation has another 13, 15 people. So overall full-time, there's about 40. But obviously, a lot of community members are, I wouldn't say full-time, but spending a lot of hours on doing very super valuable stuff. Like there's so many tools that are developed by community members. So if you add it all up, it adds up. Anna Rose (00:22:06): Nice. Izaak Meckler (00:22:10): To any listeners who are either founders of companies, to whom this is an interesting idea. I don't know if there will be any people like that, or more likely probably employees at companies to which controlling your own destiny, so to speak at your organization sounds appealing, please don't hesitate to get in touch with me. You can DM me on Twitter, @izmeckler is my handle, so get in touch. Anna Rose (00:22:35): Cool. Are you looking to sort of spread the word, get more teams thinking about this? Izaak Meckler (00:22:41): Well, yeah, I mean, as I said, it's sort of, for me, part of a larger desire to see a broader transformation in society. So if anyone is interested in pursuing that, I'm very happy to share what I can. Anna Rose (00:22:54): Cool. So one thing we haven't yet done on the show, I'm realizing now, is really defined what Mina is. I've kind of... We've started in with a bit of an assumption that people had listened to previous episodes, but if they hadn't, I think it makes sense for us to do like a quick primer. We've been talking about the Mina protocol, we talked about O(1) Labs, the Mina Foundation, but let's go back to that protocol. What is Mina? What does it do? How is it different? Yeah, and then I want to talk about Snapps. Izaak Meckler (00:23:23): So Mina today is a proof of stake blockchain that has the novel feature that it's a succinct blockchain. And what that basically means is there's a really small amount of data. So in all of the marketing materials, they say 22 kilobytes but it's actually less than that. Anna Rose (00:23:38): Oh, cool. Izaak Meckler (00:23:39 ): But there's a really small amount of data that anyone can download something on the order of 22 kilobytes, let's say, which will enable one to sort of verify the entire history of all the transactions and all the blocks that have occurred in the chain so far. And what this means is basically, everyone in the network, as far as interacting with the shared state of the chain goes, is on kind of equal footing. There's no need to kind of delegate trust to miners/stakers or a block explorer, god forbid, or anything like that as it's usually done. Mina going forward will be that plus a platform, basically for private scalable applications which we call Snapps. And we'll get into that later in the show. I don't know Emre, if there's anything you want to add there? Emre Tekişalp (00:24:35): Maybe another, like there's two perspectives to look at Mina, one of which is, how Izzy he described it, like the genesis of it, and how it's evolving. And I think another is all blockchains at the end of the day are these shared state layers, right? They're universally accessible state layers. Most of them are optimizing in one direction or not, like Bitcoin is only for transfers. Ethereum is for all smart contract transactions, I don't know Solana's for super fast transactions. I think one thing we're discovering is like, as zero-knowledge proof systems are better understood, as their features for SNARKs and what have you, are more in demand., Mina becomes like this super... Based on what we know, the most efficient zero-knowledge proof state layer out there, because if you look at Ethereum, etc, those are not efficient in verifying zero-knowledge proofs. It just becomes super expensive. Whereas Mina is born into zero-knowledge proofs, like it's made of zero knowledge proofs. So it becomes like this super efficient native zero-knowledge proof state layer, that's we're seeing a lot of demand for. And nowadays, as Izzy mentioned, its use case is becoming this privacy layer for basically the entire crypto space. Anna Rose (00:25:48): When you mentioned, Izaak, the 22 kilobyte. I know, and you said maybe it's smaller, that is a proof, right? That is a SNARK proof. Izaak Meckler (00:25:57): Yeah, yeah. So that's basically just to kind of elaborate a little bit, at any point in time, there is like the current state of the chain, right? Which is all the information that's required for checking consensus stuff, how long is the chain and some proof of stake related data. And then basically the database of accounts. We'll call that the blockchain state. That on Mina is accompanied by a little proof, which is a SNARK that basically says, there is a blockchain that when you run through it, ends up with this blockchain state. And so the only kind of big thing in this whole picture is the database of accounts. And that's represented in the blockchain state, that a light full node or whatever you want to call it would receive, that would be represented just as the Merkle root of that database of accounts. So if you want to know anything about the state, you basically get this little blockchain state, the accompanying proof that says, hey, this really is a valid blockchain state. And then you can get Merkle paths to see whatever you want to see about the current state. Anna Rose (00:27:01): And are those both in that thing that is downloaded? Like those two things, the Merkle root and the proof is that kind of the one thing that's under 22 kilobytes. Izaak Meckler (00:27:12): Exactly. Exactly. Anna Rose (00:27:14): Okay, Cool. So when it comes to the SNARK proofs themselves, though, who makes those? Where are those coming from? Izaak Meckler (00:27:22): So there's sort of two network participants who kind of co-construct these proofs. Every time a block is produced the block producers sort of take the old proof corresponding to the old chain and kind of extend it by one to build the proof corresponding to the next chain. But that proof, at least initially, that the block producer kind of extends by one, it doesn't contain all of the transactions that happened right in that block. There's a little bit of a delay in which all the transactions from that block will then be kind of compressed into a proof, and then again, folded back in. And the work of taking all of the transactions and compressing them into proofs, which are then kind of folded into this chain proof, that's performed by other nodes on the network that we usually refer to as SNARK workers. And that's like in a... Anyone can do that, it's not permissioned. And basically they earn fees for doing this work of compressing the transactions. Anna Rose (00:28:24): Cool. The reason I wanted to ask about that is because now I want to talk a little bit about Snapps. So everything we've covered so far, I think we may have even mentioned somewhere on previous episodes, but well, everything we've talked about Mina at least, but now going forward, Snapps. Like you mentioned, it's a platform for private applications that work on the Mina network. But what are they actually? Izaak Meckler (00:28:51): Yes. So the basic setup is like this. So basically there'll be a new kind of account called a Snapp account. And unlike on, say Ethereum, where the code of the smart contract is stored fully in that account, in Snapps, on Mina, only the verification key corresponding to that contract will be stored in the account. And so this is like a small piece of data that you can kind of think of as a hash of the code corresponding to the contract. Anna Rose (00:29:20): When you say verification key though, are you talking in the SNARK context of prover verifier? Izaak Meckler (00:29:26): Yeah. Anna Rose (00:29:24): Okay. Izaak Meckler (00:29:24): Basically the programmer will write their smart contract and that will kind of get compiled into a verification key, which is kind of a hash of the whole contract, and that's what will actually get stored on-chain. Anna Rose (00:29:35): All right. But it's interesting, you don't call it a proof. This is the verification key. Izaak Meckler (00:29:40): Yeah. It's like a hash of the contract. Anna Rose (00:29:42): Would proofs be like sent to that verification ke, and that's where the contract is like making sure like the interaction is... Is it that way where it's like the verification key lives in the contract? Izaak Meckler (00:29:55): Yeah. So the verification key lives on-chain, and then when a user wants to interact with that contract, they will basically create a proof corresponding to that verification key. And then they'll send a transaction that has that proof attached to it, to the chain. And that'll kind of get checked against the verification key in that account, it'll say, Hey, did the user basically run this contract correctly? Anna Rose (00:30:17): And actually, as you say, this is similar, like a ZK rollup is doing something similar. Right? The smart contract is holding the verification and a proof is submitted to it, I believe? Izaak Meckler (00:30:28): Yeah. It's similar. Yeah. It's similar in that sense. Anna Rose (0:30:31): Okay. Cool, cool. Izaak Meckler (00:30:32): So I guess just to kind of go back to how developer let's say actually, programs a Snapp, and then how a user actually interacts with it. So basically we're developing a set of tools based on a library that... So we have long had this library, Snarky, which is an OCaml library for writing zero-knowledge proof systems and that we use in Mina. And we've kind of against my naive hopes, no one really likes writing OCaml, so. Now we have a new library called SnarkyJS, which is basically a TypeScript library that provides a similar functionality to Snarky, but in a much more user-friendly way, because it's just TypeScript. And so the developer writes their smart contract using TypeScript using SnarkyJS. And as I said, the contracts aren't really run on-chain. Like executions are verified on-chain, but the contracts themselves are not really run on-chain. What happens is the developer writes their contract using SnarkyJS, it gets compiled into some Javascript, which is quite portable. All the crypto is using Wasm. So it runs in the browser and you can run it on a server using node. It's actually really... I'm really proud of how easy it is to set up. It's just like you npm install SnarkyJS, and then you're off to the races. And basically, users will use that kind of JavaScript bundle corresponding to the contract to interact with the contract essentially. And then to generate proofs of their interaction with the contract, which then get verified on-chain and applied to the Mina blockchain state. Anna Rose (00:32:09): Okay. Yeah. It's basically like, so part of the contract executed, this is happening off-chain, but the way that you're kind of doing validity proofs or some like proving that those have happened correctly is through the mechanism you just described. Izaak Meckler (00:32:21): Yes, exactly. So like all the contract execution, basically, most of it happens off-chain, which is how you can enable privacy as well, because sensitive data doesn't need to be submitted to the chain, private user data doesn't need to be submitted to the chain in order for the chain to know that the contract was executed correctly, because you're providing this proof of the correctness of the execution. Anna Rose (00:32:42): And the only thing that's written on-chain, like you wouldn't be able to see the thing that's written on-chain and then deduce what had actually been executed. It's just that, you know that, that execution happened correctly. Izaak Meckler (00:32:54): Yeah, exactly. Yeah. Because of the magic of zero-knowledge. Anna Rose (00:32:59): Yeah. One of the things that I want to understand about Snapps though, is there's, I mean, at least in the way that I've understood it, it's this connection between real-world data and the Mina protocol and the smart contracts. Where is that happening? What does that mean? And then maybe we can even take an example. Maybe you have a use case that will help us understand this a bit better. Emre Tekişalp (00:33:24): So if you zoom out a bit, right? One of the issues in the blockchain space today is that there's no really easy and prolific way to import data, right? From the rest of the internet, from the Web 2.0 world that the 99% of the world uses into Web3, into the cryptoland. Perhaps the only way to do that is using Oracles. Right? But those are very rudimentary solutions where there's an intermediary or a set of intermediaries that only stream a specific set of data. And this caused a lot of problems because A, people exist in the real world, like in the real internet or the Web 2 internet, and then they can't start from scratch. Not everyone can start from scratch, not everyone is the nerds that we all are, right? Like we like to dig into everything. So there needs to be this easy link. And as we were thinking through this problem, again, through the magic of zero knowledge and other cryptography, what we stumbled upon was that, hold on a second, all the modern websites or HTTPS, they're all cryptographically signed, and that is a computation, right? So that can be SNARK basically. (00:34:33): So what we've come up with is and... We're improving upon it as a protocol, which is going to be a library within our Snapps SDK stack, where you can basically prove that any data exist on any website, as long as it's HTTPS, right? And that any user individual can prove that the data is legitimate along with the type of computation or fact checking that they want to run on it, write the private computation that Izaak just talked about and then share that onto Mina. So basically you don't have to resort to any oracles or you're not limited with whatever data the oracles are streaming. So you can grab any data from any website and share it privately. I kind of see it as you know, those in the U.S. might be more familiar, but like a private Plaid for everything, right? Like if you think of this Plaid, this service that in the U.S. we're all stuck with, where you have to use to link your bank, and it only works with banks and Plaid sees all your private information, all your financial like banking statements. And so it does... Whomever they're linking it to. With this, there's no intermediary you're using the magic of zero knowledge, and you're able to share all that information privately to the service provider that you want to use. So that's at a very high level. Maybe Izaak can speak a bit more unto how it actually happens. Izaak Meckler (00:35:53): Yeah. And I also just want to stress two things about what you said. So, like the first thing is it differs from existing things, as Emre was saying in that it's really easy to import from any existing data source. You don't have to make a new Oracle or whatever, as long as it's like on the web, on HTTPS, which pretty much everything is. And then the second is it's possible to use this data without having to reveal it publicly. Because normally any kind of oracle data would be operating in an on-chain context where it has to be revealed publicly for the contract to use it. But with Snapps, and we're calling it this kind of functionality web-Snapps, because the smart contract execution is happening locally, you don't have to post that data publicly anywhere. Anna Rose (00:36:37): There had been an example that had been floated to me by someone else who was explaining or trying to explain Snapps to me, which was this idea of like GitHub commits as a potential source. Would this be something possible? Like you sort of said, it's HTTPS, but is it sort of any public record that is in a browser that's provable could be incorporated into this? Izaak Meckler (00:36:58): If you wanted, you could be like, I have an NFT, like maybe you have a smart contract that mints an NFT corresponding to GitHub commits that are longer than 5,000 lines or something like that, whatever. So that's, if you wanted to do that, you could do it. Emre Tekişalp (00:37:13): It does allow for many interesting novel use cases though. Like sound might be just hacky, interesting, fun things, like what you just mentioned of GitHub commits or if a Reddit vote or reddit post receives a certain number of upvotes, you can mint a commemorative NFT or whatever, right? It's because anything you see on a website is possible to be linked. Or there's more, let's say serious examples as well. One proof of concept that we released earlier on was with an Ethereum dAapp called... In the DeFi space called Teller. And they're trying to do unsecured lending and we were able to basically link the credit score of any user on Credit Karma, which is again a popular credit score checking website in North America. And you can only... You can grab your data from Credit Karma... By the way, we never talked to Credit Karma. It wasn't like they needed to set up a special API for us or anything. It just works. And you prove that your credit score is above a certain threshold and you share that proof with Teller and they verify it. So they don't see your social security number, they don't see your actual credit score, they just get this proof that a source that they trust, which in this case is Credit Karma, because many people trust them, has shared that your credit score is above, let's say 700. But sky's the limit because this is infinitely programmable. Anna Rose (00:38:39): Emre, in the example you just gave, is there any sort of NFT of this in there? Izaak, you had sort of mentioned NFTs a few times. I'm just wondering if it's like, if there's an NFT of some action, is that helpful or does that like super not matter? It's just something that could be a mechanism to use it? Emre Tekişalp (00:38:55): Could be. We actually haven't really like NFTs, it's like hype cycles, so now we have to think about NFTs, I guess. But yeah, it's not like a... It's definitely not a core part of the system. You could, and I'm sure developers will come up with cool ways to make the system better, thanks to NFT-like structures. But it's not a requirement or anything. Anna Rose (00:39:16): Do you also see... I mean, you talk about web data and maybe this is sort of ridiculous, but would you also be able to use this for other networks for other blockchains or is there like no point in doing that because those are public ledgers that are already shared? Emre Tekişalp (00:39:29): No, you could. You could. It's actually, there's some pretty cool use cases in this. Our team has been working on a lot of cool demos. One of them for example, is like, let's say an exclusive messaging boards for people that only own Bitcoin or who can prove that they own Bitcoin before, I don't know, 2014, right? Or if you own a CryptoPunk. But in these instances, you don't have to share your address, right? So even if you owned 0.01 Bitcoin, you can hang out on the same part of your club with the person who owns, I don't know, 10,000 Bitcoin, because you're not sharing your address. You're only proving that you own Bitcoin before a certain date, or you have more than an X amount of Bitcoin, or Ethers, right? Because again, you're just proving that a certain cryptography in this case, the signing of a public key with a private key is legitimate. (00:40:22): And then on the flip side, there's an interesting not to take too many places, but there's an interesting flip side to this. If you go back to the genesis of Mina, which is the succinct blockchain, the core premise, not only does it enable anyone joining the Mina network as a full node from your browser, smartphone, whatever, but other blockchains are also computers. So other blockchains can also join Mina as a full node. So this creates the possibility for these trustless bridges, where an Ethereum dApp or Polkadot, Solana whatever, they can all be writing full node verifiers of Mina within their chain as a smart contract, and dApps on Ethereum, such as Teller, can be monitoring that smart contract for state updates to Mina, and basically grab the Snapp verification of whatever data that they're trying to verify on Mina. And basically use Mina as an add-on to their application. So it's not like to benefit from this, developers have to move their entire application over, have to deal with this very complex and strategic decision. It's just an add-on, so we only see this as a value-add to the entire space and basically as this gateway between Web2 data and Web3 services. Anna Rose (00:41:40): Yeah. This is interesting. I actually want to talk about bridges a little bit more, but before we do that, I actually want to talk... I sort of want to just go over what we just covered. This idea that you're taking any cryptographic action, proof or something, and you're actually able to use whatever it describes without revealing what it describes in a Snapp for some other action. So I think the one you just said is like, you have some cryptographic thing that allows you in a club. You can prove that you have that thing without revealing what you actually have, where your address is, the amounts or whatever. And that through a Snapp, it would allow... Like the Snapp itself would be the club maker and you'd be allowed into it. I don't know. Maybe it's a very vague example, but that's really cool. I don't know for me that sort of... I think it is the first time that I'm actually understanding Snapps. I have tried to get into it before. So I'm really glad... If I got it right, I think I got it right. Right? Emre Tekişalp (00:42:37): Yeah. Pretty much. Izaak Meckler (00:42:38): Yeah, yeah. Totally. Emre Tekişalp (00:42:39): It's yeah, clubs are not the only use case, but yeah. Izaak Meckler (00:42:43): I think like a lot of the "use cases" which have been perpetuated so far have been kind of limited to either fantasy realms of game-related things or fantasy realms of financial speculation, because there's nothing to refer to. You know what I mean? Like everything has to only refer to things within the system. So it's kind of not very meaningful in a sense. So this will kind of open the door to just bring in all of this like existing meaning in some sense and meaningful data to operate on. Anna Rose (00:43:19): So at first, when I heard about this, this idea of bringing Web2 stuff in, and I don't know that it is in any way a reference to this, but is it all like a wayback machine where you can... It sort of proves something at a certain time that at a certain time something was true? Is there any... For some reason it was this idea of logging HTTPS, somehow like proving that it existed made me think of this wayback machine, but am I totally off base? Is there any connection there? Izaak Meckler (00:43:49): It is like that. It's kind of like an authenticate... Like a verifiable screenshot. Okay? So it's like, you might want to use some fact, right? So you'd be like, hey, I got an email from, I don't know, who's famous person? The president emailed me. Okay? And you're like, no, no, no, I don't believe you. So then I'd be like, oh yeah, no, really the president emailed me. Here's a screenshot to prove it. Right? But it's like, okay, well a screenshot... I know how to use Photoshop, I'm sure you do too. You can do that yourself. But actually you already kind of have the data in hand to really prove that the president really... Well, email is kind of a special case, but let's say Twitter DM'd you or something, because you have this TLS transcript that comes from a trusted source. Like probably you're not able to like go in Twitter and edit their database of DMs. You know what I mean? So you actually have this cryptographic data of the TLS transcript, which is sort of like a cryptographic screenshot that then you can wrap up in a SNARK and use inside of a Snapp. Anna Rose (00:44:57): Now I kind of want to go back to the concept you brought up Emre, this idea of bridges. And I know bridges is a key part of Mina's plans right now. But first of all, what bridges are there? Are there already live bridges or what bridges should we expect to see pretty soon? Emre Tekişalp (00:45:16): There aren't any live bridges today, they take a while to build. But we have announced a few initiatives. The first one we announced a while back actually is a joint grant or an RFP with the Ethereum Foundation to build essentially a full node bridge from Mina to Ethereum. So this would include an efficient verifier of the Mina SNARK within EVM and everything else that comes with it. So the Mina Foundation has actually found and, and the Ethereum Foundation, they found that a developer to start working on this. They are going to announce it soon. But so that's getting started off. And then it was also recently announced, thanks to the... I guess the proliferation of EVM, right? Polygon also is going to leverage this bridge because they're basically able to reuse it very fast. And yeah, obviously we're in touch with other non-EVM layer 1s as well because they're interested in the same functionality because it basically kind of opens the doors of Web 2.0 to the dApps on their platform. So that's a valuable use case. And we see bridges as the way where... Mina is another layer 1, but it should be able to talk to other layer 1s if we want to really enable this for developers, because as great as Mina is, other chains are great in other things. And we want to respect that and enable everyone to do this. Anna Rose (00:46:41): I want to now look at how the Snapp, and I know you had mentioned sort of a path for a Snapp over a bridge, but maybe we can just cover that again. Because I think you just mentioned it really quickly, but I want to explore that. Like, I'd love to think of an example of what exists today on Ethereum using that bridge, a Snapp, and I guess bringing back that result. I sort of want to know how that would work because it's not necessarily like token exchange happening here, right? It's data exchange across this bridge? Emre Tekişalp (00:47:14): Sure. So maybe just to explore more examples, let's say an Ethereum dApp again or DeFi dApp wants to serve only who users can prove that they're not a resident of the U.S. I was going to do it the other way around, but no, no app does that. Anna Rose (00: 47:32): Nobody does that. Emre Tekişalp (00:47:33): No one welcomes U.S users. Thank you, SEC and others. Anyways, so and but they don't want to hold on to any of the user, like any other PII, any other personally identifiable information because data nowadays is a liability. So what can be done, thanks to Snapps, is there can be a Snapp that basically leverages any KYC provider that this DeFi app trusts. Let's say it's one of the crypto exchanges, right? Let's say it's Coinbase. And by using either Coinbase's APIs, or even just the webpage itself, the Snapp can... Like the user would have to log into their Coinbase account, and then the Snapp would basically guide them to the page or the API endpoint that shows that they have a verified KYC with Coinbase. And then it would generate a proof on the user's machine of that. And then the user would also, by the way, all of this would happen in a nice app with a nice UX. Anna Rose (00:48:36): Nice UI. Emre Tekişalp (00:48:36): But yeah, and then the user would submit that proof via transaction on Mina to a Snapp account that's setup to verify such proofs. So you remember when Izzy was describing the architecture on the Snapp accounts are basically holding the verification key, and only if they receive a Snapp transaction with that proof that is able to be verified by that verification key. So by that circuit, do they update their state? Right? So let's assume it's true, it goes through, and then the Snapp account updates it states to say, this proof checks out. This basically what it does is like this address has a proof that says that they have access to a valid Coinbase account. And you can also combine this with other conditionals, such as do they have access to a KYC account that also has a name and Emre Tekişalp, right? So that I'm not grabbing someone else's KYC data. (00:49:32): And then this DeFi app in return is also monitoring the smart contract that tracks the Mina state. And because the Snapp account is associated with Mina's global state, that smart contract will also update the state, because it's checking the canonical Mina SNARK and it's getting the other information from the Merkle root. And then that DeFi app can basically, yeah, look at the smart contract and say, yup, the KYC has passed through or the user with this address, who also happens to have this Ethereum address has access to a Coinbase KYC account with the name, Emre Tekişalp, so I'm going to serve this person because they're not in the U.S. Anna Rose (00:50:12): And then it gets executed on the Ethereum side? Emre Tekişalp (00:50:15): Yeah. Everything else is happening on Ethereum, right? Or the host chain, like all the logic keeps happening there. Of course, the other benefit of Snapps is that because computation is off-chain, they're much cheaper. So we do believe over time that hopefully these applications also see other benefits of Mina, both the succinctness as well as the cheaper computation cost, similar to ZK rollups on Ethereum, and then decide to move their stuff over there, over to Mina. But we don't want to burden folks with that decision because yes, like Mina is new, there'll be many deficiencies compared to more mature ecosystems like Ethereum, but we want to provide this benefit right away. So that's why we see the concept of bridges here is very important. Anna Rose (00:51:02): Are these bridges... This is a topic in general, I want to explore more, maybe in a whole episode, but this type of bridge, like the SNARK itself, still lives on the Snapp side, right? The SNARK... Or, actually what you described, is there part of the SNARK... Actually, I think you did say this, like the prover is sort of going over this bridge, right? Like there's, or the proof rather, there's a proof going over the bridge, but otherwise most of the SNARK lives on the Snapp? Izaak Meckler (00:51:28): Yeah, exactly. Exactly. So like, well, I guess the way that I would say it is like, there is the kind of Mina like super-SNARK that basically verifying the Mina SNARK, implicitly verifies like every single SNARK that has ever been posted to the Mina chain. So every execution of every Snapp and every SNARK involved in that Snapp that has ever happened, you know? So what the bridge actually does is basically import the Mina, like uber SNARK into the host... The other blockchain and verify it there. The Ethereum bridge, the way that it's going to be designed is basically, well, the Mina uber SNARK will sort of be verified on the Ethereum blockchain, like in EVM. And that will kind of give access to all of the information that's already been verified on Mina. Anna Rose (00:52:14): I see. Does that mean, is the verification happening in the smart contract on Ethereum? Izaak Meckler (00:52:20): The smart contract on Ethereum will just verify the Mina uber SNARK. Anna Rose (00:52:24): Uber SNARK, but the Snapp actually has the verifier of the... Like the proof that the Snapp will actually verify is the data part, like the thing you're trying to prove. And then that Snapp pushes something into the meta SNARK that is then verified on the Ethereum chain? Izaak Meckler (00:52:40): Okay. So let's say you want to make an application that's like I want to build... Like I want to have a smart contract on Mina who's state is basically the set of all GitHub users who have proven that they have done a commit every day for the last year. I don't know, whatever. So basically the way that that would work is you would make a Snapp on Mina that has like a... It's a smart contract. It has a method that can be called on it, which is basically provide proof that I am a super committer or whatever. Let's just call it being a super committer. So basically people can interact with the smart contract by providing it with the cryptographic screenshot of going to their GitHub and showing, hey, I committed every day for the last year. That will update some state on Mina, which basically records the set of all the users who have provided that kind of proof. And now after the user gets their cryptographic screenshot, they'll generate a Snapp proof by running the GitHub recorder, smart contracts Snapp locally. That will generate a proof that they'll submit to the Mina blockchain that will update the state on the Mina blockchain, that of all the users who have proven that they are GitHub super committers, and then the Mina SNARK at that point, the Mina uber SNARK will implicitly have within it, the fact that this set of GitHub users are all super committers. But you won't have to go and verify all those old proofs. All those old proof verifications are encoded in the Mina uber SNARK, and then on Ethereum, like you'd bring... You just verify the Mina uber SNARK, and that would also implicitly verify the correctness of the set of super committers referred to in the Mina state. Does that make sense? Anna Rose (00:54:26): Yeah, it does. Except that, how does like on the Ethereum side, you're talking about the meta SNARK, but the meta SNARK also has within it all other Snapp activity and transaction activity, like there's a lot of things that have gone into that updated SNARK on the meta SNARK that the Ethereum side would then verify. But if it doesn't know the other stuff, how does it still know that just the GitHub data is correct? Emre Tekişalp (00:54:53): Maybe one other way to look at this could be that similar to the Mina full node, the generic full node, right? The way that's structured is there is canonical proof, but there's also what we mean when we say 22, which is actually 11 kilobytes is like a full node for one account, right? So you, as a normal user, you usually want access to one account. And for that, you have to... 11 kilobytes consists of the proof, the canonical proof, as well as the Merkle root and the Merkle branch to your own account, and then certain other metadata that allows you to send transactions and sign transactions and whatnot. Right? Similarly in a bridge here, we haven't yet figured this out, but likely there will be one smart contract on Ethereum probably will be the Mina full nodes watcher, let's say, like that's just going to update each with each proof. And then there will be a second smart contract that monitors the Merkle branch, just for that specific Snapp account that you want, right? So that smart contract is going to update its state basically and make sure that the state it has is against, or its Merkle root is within, or is compliant against the latest canonical proof. And then there will be a third smart contract, which is the actual dApp that wants to ingest this data. So it's going to ping both of those smart contracts and make sure that it gets the data it wants, and it confirms that the data is from the latest state, which is guaranteed by the canonical proof. Anna Rose (00:56:19): Okay. I think I understand this now. Emre Tekişalp (00:56:22): Awesome. Anna Rose (00:56:22): Very, very cool. Where do you picture the builders living in this scenario? Do you picture a Snapp builder, especially if they're like bridge users, would they be working on both sides of this bridge or do you actually imagine Snapps existing and then Ethereum dApps using, or just interacting with those? I guess it depends, but... Emre Tekişalp (00:56:42): It depends. The way we see this is that a dApp developer on Ethereum or other chains will basically also develop their own Snapp. And that's why also we want it to go down the path of TypeScript because it's way more universal than anything else. Maybe barring Solidity because we're in the space, but you know what I mean? Such that it's not too hard for a Solidity developer to pick it up and then basically deploy their own Snapp on Mina and then leverage the bridge. Right? So, yeah, we want it to be easy such that any developer can pick it up. Anna Rose (00:57:16): Cool. So I think we've covered Snapps pretty well. I feel like I have a way deeper understanding on how they work, on how developers could potentially interact with them. Maybe even how users could sort of understand how they're interacting with them, but where are we at with Snapps actually? Like how far along is Mina to having Snapps be live? I'm just curious a little bit about your roadmap. When can we expect Snapps on the market? Izaak Meckler (00:57:44): So the goal... Okay. So there's a few different pieces of the puzzle. There's the support at the kind of bare protocol level, and then there's the developer tooling. So on the protocol level, the goal is to have them running in our next testnet in November and on the developer tools level, we have kind of the initial version of SnarkyJS out there. We recently had a small workshop with developers starting to use it, and there was really positive feedback. So that's really exciting. There's still some more work to be done on the tooling side before it's super ready, but that's kind of the current state of things. Yeah, so I guess the short answer though, is like on the protocol side, it will... Inshallah, hopefully be on the November release. Anna Rose (00:58:32): It sounds a bit like soon TM. It's like, I know, it's always a little scary to predict, but it sounds like you're close. So maybe, end of this year? Emre Tekişalp (00:58:42): Yeah. That's definitely one hope. We hope we did have a good sense of how we're progressing after having been through many of this to launching mainnet and this one feels good. So yeah, crossing our fingers. Anna Rose (00:58:57): I mean, I think this is going to be a super cool platform basically to start experimenting with some of these zero knowledge ideas that have been floating around for a while. I remember on a previous episode, you would share it actually this idea, Izaak, of being able to prove in closed source repos that some piece of code is in there. And the thing is that was always amazing, theoretically, with a zero-knowledge proof, but I personally didn't understand how you actually get from there to these blockchains that we're working on. And it sounds like with Snapps, you're bringing it... Like that's the bridge, that's the thing. That's where you get to actually experiment and build these real zero knowledge cases and actually see, I guess what works and what doesn't. Izaak Meckler (00:59:38): Yeah, totally. Because you need... In order to have zero knowledge be meaningful or whatever, you need to have some meaningful data that you're keeping private. Right? And until now there's been definitely a lack of that. So I think it should unlock a lot of cool applications. Anna Rose (00:59:55): Cool. Well, I want to say a big thank you to both of you for coming on the show and exploring Snapps, like in depth. This is kind of what I've been wanting to do for a while. I'm so glad I got a chance to do it. So yeah, thanks so much for being on here. Emre Tekişalp (01:00:08): Yeah. Thank you for having us Anna. Izaak Meckler (01:00:10): Thanks Anna. Anna Rose (01:00:12): And I do want to mention that like this fall, actually there's an event that the ZKV and the ZK Podcast we're actually putting together called ZK Hack. Mina, you folks are going to be a participant in this. So there will be a workshop hopefully near the end of November-ish and yeah, I guess it will be very exciting to see where you guys are at by then. And hopefully we'll get a chance to start playing with these things. Emre Tekişalp (01:00:35): Yeah. We're super excited to get in front of developers and yeah, really see what the power of ZKPs allows in terms of creativity and new novel applications for crypto. Anna Rose (01:00:48): I want to say thank you to the podcast editor, Henrik, the podcast producer, Tanya, and to our listeners. Thanks for listening.