ZKPodcast: Latest recursive SNARKitecture with Izaak Meckler from O(1)Labs

28 Jan 2020 · 51:50

Izaak Meckler of O(1) Labs returns to the Zero Knowledge Podcast to talk about launching a recursive SNARK-based incentivized testnet for the Coda project. He recaps how recursive SNARKs work, walks through updates to O(1) Labs's SNARKitecture, and discusses new use cases for zero knowledge proofs in making computer programs more accountable to their users.

Speakers

Topics

Transcript

[Music] welcome to zero knowledge a podcast where we talk about the latest in zero knowledge research and the decentralized web the show is hosted by me Anna and me Fredrik so this week we sit down with Isaac McClure from oh one Labs we are going to talk about recursive snarks and updates about the Cota protocol but before we start in I want to share a couple things so first off thank you to everyone who donated to our gate coin grant during

this CL are matching period that they had going on it was really cool to hear from all of you and to see like a lot of you come out in support and show us and tweeted us and that anyway it was really nice to to actually see that there's a little competition going and I think we fared fairly well in the end so that's good secondly not sure if you've heard about this yet but there is a new zero knowledge summit in the works it's happening in Berlin on March 31st you can stay tuned for the application form that we'll be sharing on Twitter but it's actually already posted in our telegram group so if you're in there please follow the link and get your application in as mentioned this is a

highly technical event and so will mainly cater to the researchers and engineers working in the field but still I recommend getting your application in soon for a better chance of securing a spot so the last thing I want to share is I just want to remind you about our listener feedback forum so a number of you have already given us some great feedback but if you haven't yet please do weigh in this feedback is incredibly helpful to inform what we should focus on what we're doing right and what we're doing wrong I've added the link in the show notes it's a short anonymous questionnaire so if you're a long-standing listener or if you're pretty new to the show we'd really like to hear from you of course you can always stay in touch with us on telegram on Twitter you can check out our very

small but growing YouTube channel where you can also find videos from the last CK summit if you haven't already seen those and yeah I guess subscribe where you get your podcasts I think I'm supposed to say something like that we share new episodes every week this is true okay so now here's our interview with Isaac McClure from a1 labs [Music] so this week were City with Isaac McClure from oh one labs he's one of the cofounders of that company and also one of the creators of coda so welcome back to the show Isaac thank you very much have you be here great to have you back so I think the first question is just

what's new what's been happening it's been over a year I checked it was December 5th so it's over a year since we talked last time what's new a lot I guess I can break it into a few categories one is test nut happenings it's not been quite a while maybe something like six months that we've been running regular test nuts and starting to have an active community people building things on top of coda people running your nodes and and that kind of thing so that's definitely one big thing another is on the technology front things have changed a lot well I mean I can get into the you know get into the

weeds of all the the dirty details of snark ology but suffice it to say that our our cryptography has has improved a lot the efficiency of all the things that we're using has improved a lot over the last year I'm sure we'll get into a little bit of that the other thing is that we've so far coda has been a simple cryptocurrency with just payments and so as we're sort of moving towards main that we're beginning to think about what is our community going to look like what is our governance going to look like what are the economics going to look like and also what kinds of applications are we going to support beyond beyond payments so that's that's been interesting to probably get into more of that later

cool so this is the second time I mean we sort of mentioned this just before this is the second time you're on for anyone who hasn't heard that episode we'll probably put a link to it in the show notes one thing you will notice in that episode and possibly in this 101 labs a new Isaac are one of the best creators of words with the word snark in it of anyone I know in this space I just snark ology that's awesome there was snark Oh fie there was like there was a bunch of things that I remember in the last episode you you added to my vocabulary yeah yeah I think somehow I shy away from it a little bit but maybe I should just embrace it they had a definite you know making up

words it's not a bad thing also what was your talk at the second CK summit or so it was called notes from the snark and Alma Khan and it was about all the you know dark magic required to program snark sufficiently have a good one one other thing that I would add between like the last centers on the podcast and this year is I spent a lot of time thinking about what are sort of the the most important applications for snarks not just in crypto currency land but you know for society at large and there's I think sort of a paucity of discourse around that unfortunately but would also be happy to get into that cool so I

think we should do a little bit of a recap on just what coda is you know it's a balk Chains we've gotten that far but what what did what is it for what kind of blockchain is it and you know jumping ahead a little bit it involves recursive snark so maybe we do a bit of a recap on that as well but what you know in essence is coda so coda is a fully six inked blockchain and the whole project there's an emphasis on having a super low friction developer experience and also trying to make it a very accessible platform both in terms of from a technological point of view anyone being able to run a full node and also from an

economics point of view which I'm not sure how much I can say about now but there will be some interesting news forthcoming on that what does it mean to be a sixteenth blockchain it means that unlike with something like aetherium or Bitcoin where in order to fully verify the state of the world one has to replay the entire history you just need to download a very small constant sized in fact amount of data about you know maybe some some kilobytes and spend a few milliseconds maybe up to a second performing some computation to sort of check that data and it's in essence just as good as if you had seen the entire blockchain and checked the whole thing from the beginning and made sure there was no funny business all along the way yeah

and so I I think that's really important for a number of reasons they're sort of like I think an important developer experience and user experience component of it but I think just sort of on a more fundamental level I think if you really take seriously the idea of a lot of information and a lot of let's say economic value of being in people's lives and so on being bound up with the bits on some blockchain I think if it's not fully six inked if it's not something that anyone really can in principle verify it's it's not going to look much different from the sort of opaque information you know recording systems that we have at the moment so that's that's good in a nutshell cool I sort of don't remember this but is coda

a proof of stake yes yes yes it's also yes it's it's a proof of sake blockchain it uses a protocol that's that's based on Boris but custom you know tailored to work in the 16th setting it's actually the the protocol that we've developed mostly due to the hard work of von trier out who's a cryptographer who works with us yeah it's it's really interesting because it's it's sort of not it's not an obvious problem how to to get a proof of sake protocol to work in a world where you can only look at sort of a constant slice of history I can imagine that is very hard because the typical proof of stake you can verify that this this amount of stake is locked up in these accounts and you do these

authorities that changes and they kind of have to have that history to see how the authority set has changed over time so that you don't have long-range attacks and all these other things so yeah I can imagine there's a lot of challenges and in doing that yeah so I for anyone who's interested to learn more if you if you google coda Boros which i guess it's one of my stupid words 60 minute yeah goofy memorable words yeah that's my shying away from it so if you if you google coda Boris eodi ro you can find a lot more information about it you know it's it's pretty including I guess a photo of me wearing

a memorabilia jacket from the TV show Silicon Valley were you on it no my sister used to work for HBO and she was able to somehow finagle one of these you know Pied Piper jackets that I wore while giving a talk about making up words or speaking about making up words babe is also originally based on Ouroboros obey twist lock production algorithm used for polkadot and we previously had hora and was actually going to be used in polkadot now it's like a combo baby Norah and because Ora Boris was in there as well parodies terrible names in general or

like or good depending on how you define it like if you like invented terms and acronyms then for good but this combination of babe or Boris Andorra became baby Soros but we decided to not actually talk about that yeah I don't know people I think if there's some hesitancy to embrace the goofy names but anyway that said we just had plunk on like two weeks ago so oh yeah so we were talking a little bit about code on how it works how it says things but I mean something that at least from me clarifies like how the system works as a

whole is looking at a transaction and if we're saying we're doing a simple payment transaction I have some account balance and I'm making a transaction to you I give you my account balance and I give you the transaction how are you actually convinced that I've made this payment yeah so okay so I guess what it's useful to think about it's kind of you think about you think about a block Janus like a state machine right and just think about all of the state transitions that are resulting in the current state so one of them will be your transaction right and we want that transaction to sort of leave it to mark on

say in such a way that later you can go back and convince someone that really that that transaction you know is included in the current state I think about it like that transaction needs to somehow leave its footprints in the snow of time or something I'm if it's kind of another maybe over the automatic image but some something like that so actually what happens is when you submit a transaction the sender of the transaction has you know each account has inside of it like a little hash which is basically a Merkel list of all the transactions which were sent from that account so one one you sent a transaction it basically gets you know cons dawn or prepended to this this Merkel list and then later if you want

to convince someone that you know you really sent them a particular transaction you can dig it out of the Merkel list and send them a Merkel proof but you know crucially that's something that's on the the sender of the transaction to sort of have to be able to provide that receipt it's not something that every node in the network is storing these these Merkel lists they just have it a hash and that's you know part of the current state so the the state route is visible to everyone along with the proof that this state route is correct and then I I send you not only my balance in the transaction but my balance the transaction and a miracle proof that it's actually in this state route yeah that's exactly right yeah cool I want to kind of go back to the POS sort of setup and I want to ask you

a little bit about how given that coda is built with snarks at its core I don't know if actually I I realize that the way that you're using Starks here and using it recursively it is more for the purpose of scaling but there has been sort of talk or suggestions of doing private validator sets somehow is this at all like interesting to you guys do you pay attention to it or is it separate no yet totally so it's pretty straight for like once you understand how Ouroboros works where basically you know block winners are selected via vrf you know they're vrf evaluation being beneath a certain threshold it's pretty

straightforward to see how that could made private using snarks that said there are some fundamental conflicts oh and I should say there are a few papers that you know right out how this could be done but yeah it's it's nothing too complicated probably the papers are more scary than the actual idea but yeah that said there there is a fundamental tension between privacy and proof of stake in the sense that for example if you want to have delegation you need to at least let your delegate errs know how much stake you have so there is maybe a tension between delegation improve a stake and privacy which makes sense right I mean how can the person you're delegating to for example give you the

right amount well maybe it could be done I I'm not saying I'm not saying it couldn't be done but anyway it's not totally uh clear is this something you're just sort of like paying attention to but it's not at all built into what you're doing right now or is it on your roadmap or yeah so that's not currently on the roadmap it is something that I think it's in certain ways in certain ways is nice but in in certain ways also you know maybe it's a good thing to know who is winning blocks because that's kind of the part of the power structure which is governing than the network and maybe there is something good about that being public being transparent I hear you so in the previous episode we did we actually

talked a lot about this concept of recursion we've just mentioned it a few times in passing I'm thinking it would be useful for us to do a very short definition of what recursive snarks is again just to give everyone a context of the space in which you're working and like maybe some of the challenges that you're facing in in building this way yeah for sure so I I guess I would put it like this recursion is an important technique for snark Oh fiying a computation which is unfolding over time so one can snark a phi a computation what does it mean to snark fi computation well I just mean produce

a snark of the correctness of that computation that's what snarks are for after all is convincing other people that Ransome computation correctly on some potentially hidden data but if that computation is sort of unfolding over time like say the verification of a blockchain then it's appropriate to use the technique of recursion or the technique of recursion is very useful and what is the technique of recursion it's basically making a snark which certifies a computation which includes the verification of another snark so in the context of coda every time someone produces a block well at every moment in time there is a proof which says a snark which says there is a blockchain

terminating you know which if you had executed the whole thing you would be convinced that the current state is S or whatever and then when someone wants to produce a new block what they do is they make a snark which says okay first of all there was a snark which I ran it through the snark verifier algorithm and it said yep there was a blockchain going up to state s and if I apply one new block to state s I get into a new state s prime and so you then you take that whole computation that whole statement that I just said need to occupy it you get a snark saying there is a blockchain that ends an S Prime yeah so that's kind of what I what I was getting at with saying that it's a technique for snark affine computations which are folding

over time where at any given moment in time you want a snark which certifies you know the execution of the computation up to that point yeah I think so one of the things that I've sort of started to hear in tandem with recursion or maybe some there might be some overlap in definitions is when you talk about batching of something and then putting a snark on that does snark it does recursive snarks are they is it also a form of batching or is it different like this is this is interesting because I actually hear people referring to both of those things like batching and recursive snarks sometimes in the same context and I think it might be good to really define that yeah so there is a relationship

between batching and and recursion let me try and explain and it comes back sort of to this this concept of a computation which is unfolding over time sort of and it's the following so what is a batch snark verification algorithm it's an algorithm which takes takes us input a bunch of snarks and checks them all simultaneously in an amount of time which is faster than if you had just checked each one individually so somehow it's a way of taking you know a thousand snarks and checking them faster than a thousand times you know the amount of time that it takes to check one snark and the way these algorithms tend to be structured is that there is some sort of accumulated state and goes one by one

iterates one by one over each of the snarks and somehow accumulates them into that that that accumulated State and at the end there's like a final check that takes the accumulated state and and does some expensive thing on that accumulated state to finalize the the checking and check that it's correct and so that that expensive thing is amortized over you know the thousand proofs or whatever in a batch whereas normally you would have to do that expensive thing once per snark it with batching techniques you can do that expensive table once for this accumulated proof or it give me a little bit of state and and the the sort of the marginal cost of accumulating each individual proof into the accumulator is intended to be small I mean that would be a good batching

technique if the marginal cost was small so whenever you have a batching algorithm you can use it in tandem with recursion to make your recursion more efficient and basically the idea is as you're doing the recursion as you're saying there was a an old snark which verified and you know that was the old save and this is a new stable Oh Bob you don't verify it completely you just say there was an old snark and if you do that marginal check that that accumulates it into the accumulator this is the new accumulator as part of your recursive computation you fold in the marginal batch verification you know updating and at the end you'll have

you'll have this narc which says ice you know I saw an entire history of snarks and this is the accumulator value that you get from doing that that whole history of snarks and then outside you would verify that final start and you would also perform that final verification on that accumulated state which is then kind of like amortized over the entire history of that chain of recursion do you disco de do both of those things then yeah is this something or is cuz I always understood Koda is like purely recursive snarks but are you also doing this batching yeah and like actually one other thing on that is if you on any top-level snark how many snarks are underneath it how many yes narcs deuce narco five yeah

so I'll transfer both those so we are doing that kind of amortization over the entire history we've always been doing that I guess some form of that and it was recently you know Shawn Dara and Jax work on haloed they recently sort of deployed this technique from Z cache right from from from electric whatever electric Boogaloo in company yeah they they recently applied this technique to build halo which is a proof system which you know has some nice properties and I should tell you like in our Newson architecture this isn't this is another one of my stock words we're applying even more of these batching fourplus recursion techniques a la halo to get a

very efficient overall Sun architecture in response to your second question about how many snarks does the you know top-level snark or would ever stand in for it they're like how many are sort of inside of it yeah it's like I contain multitudes they have it basically there's like several there's basically like one snark for every transaction you could say and then those are arranged in a tree so it's like on average there's kind of two Starks per transaction it's like a binary tree then there's also snarks one snark per block so yeah it a lot so our current test that is up to like I don't know like some number of thousands of blocks I'd I don't know so you know that's like it's kind of crazy

it's like there's this one snark that has inside of it like hours and hours of computation right now on on our Testament kind of cool it's probably the you know the the fattest snark that ever had ever existed could fit your tagline fat Starks yes one day I hope to see many more fat snarks fatter cutter okay so when we're talking about recursion there's an immediate question for me at least especially as we like recap it what is the trade-off of recursing because there has to be some trade-off that you have to make or or are all snarks recursive and you can recurse in any of them and it's fine oh

no so you need to like set up the cryptography just right to make recursion possible or at least efficient you could always do recursion with any it's mark it's just the unless you you know sort of set it up to be efficient it's gonna be insanely inefficient I I want to just kind of call it in particular the work of fractal and and Marlin in clarifying well especially fractal but I guess Marlin was sort of how they got there in clarifying what it is that makes recursion possible or what it is that makes a certain kind of very efficient recursion possible it's basically this idea of pre-processing they called holography which is sort of

just a scary way of saying pre-processing which is just the concept of taking a circuit or you know a computer program and performing some expensive pre-processing to turn it into a small representation you know like a sort of a verification key or whatever so you know if you're interested in I think understanding maybe I'm like a structural level how recursion works when can you do recursion in a proof system the work of the fractal paper is really great for understanding that yeah we actually we plan on having them on pretty soon so we'll definitely dig in on that that's awesome you've already mentioned that you have a test nets but I'm curious to hear if you plan on doing any sort of incentivized test nets I mean that is certainly the

trends and especially in proof of stake blockchain since since game of stakes was the thing yes so up to now our test Nets have been using well just sort of points basically which are I guess you could say just for bragging rights but we are very soon going to be announcing what we're calling our Genesis program and that's going to be a token touken Grants Program with tie-ins to participating in in our test net if you're interested in that please check it out on our website go to protocol comm or on Twitter it's a great way to you know get involved in the test network and make some coins so yeah check it out are you doing other

community things to get people actually participating in this what is launching a test net like for you guys we've we've been running our test net for some months now we have about 150 participants at this point and there's been a lot of exciting activity with people you know using our graph QL API to like build a block Explorer and we have now a very active discord chat with with people who are running notes on the on the test net people making issues people submitting bug fixes so it's already you know even without having this token grant program been a pretty active community it's really cool to see because you know you're sort of spending months and months and months like developing this thing and to actually have it out there and have people running the software and you know

really living its you know it really being real and this and having this out in the world this has been really equal and really exciting and I would say if any of the listeners are interested in participating in this unfolding computation this this giant snark I don't want to sound too grandiose but I I think they are sort of fundamental technology for society in the sense that they allow us to build computer systems that are accountable to their users if you want to participate in this sort of new capability of our society a great way is to run a node on our test net on producing snarks you know compressing the history of the watching and making it so there is this tiny change that anyone can check on any device including

mobile browser etc yeah check it out code a protocol back home Wow yeah do you think what most of your like talking a little bit about your community do you think they're there mostly because they're snarks enthusiasts like is have you tapped into the ZK community in a big way or is it more like engineers that are more I don't know coming from blockchain yeah it's it's a mix there's definitely people who are arson Ark enthusiasts and especially like I can't even remember when it was now I think it was like over the summer we had this snark challenge which was basically a competition to speed up snarks there were like a hundred thousand dollars in prizes for you know people who made the fastest implementations and

modifications to proof systems and so on and so that was one way that we built a lot of that part of our community that's sort of enthusiastic about snarks speaking about those speed ups I'm curious to hear a little bit about you know we touched on this right at the beginning like what it what is new what's been happening and you this is presumably one of those things are what are the innovations what are the things that came out of this and how have you sped up the processing in general over this past year so there have been two categories of improvements which have unfolded one is kind of implementation level of improvements and that includes stuff like the GP approver that we've

been working on and you know stuff like that and then there's also algorithmic and proof system improvements and and both of those have improved a lot so on the implementation side we have been working with someone who you know we found through this in our challenge through that you know we have a GPU implementation of a snark prover that's it's about I think it's a bit over four times faster than like and then like a 16 core machine or something like that so quite performant especially if you have a computer that already you know is just sitting there with the GPU it's a good way to get a very significant speed up but there have been like a lot a lot of improvements algorithmically so that includes things like this new snark instruction that I mentioned that

includes things like the new arithmetic circuit friendly hash functions that have been coming out and also sort of subsequent improvements on that that we and others have made new snark what is it mostly resemble so we've had on the show plunk we've talked about Sonic's we're gonna do episodes as mentioned on fractal and some other of these like kind of constructions are you creating your own are you using existing ones that have come out what's what's it look like so this new construction that we're currently in the process of of implementing it combines basically the a HP or a modified version of the a HP the algebraic holographic proof whatever from Marlin a modified version of it one

that's a bit different from what's described in the paper just to be sort of maximally efficient in this particular setting with partially the batching technique from Halo and partially the batching technique that applies to pairing based snarks so it's a it's a you know it's a it's a Frank and snark come on you yeah it's it's kind of a frame a Franken start but they all are so yeah so are you coming up with a new name for yours well I kind of wanted to call it pickles just because I love pickles and it's kind of I've been flooding pickles as like a there is some

hullabaloo about the coded name and I was floating pickles as like a joke a joke name because I really I really love it it's sort of so to me it's very cute and goofy but so I mean I the directory on my computer that that has the library of the implementation of the snark is called pickles so maybe it will still be named pickles so what what do you mean like you just mentioned sort of new name what do you mean by new name what's this all about so it's a matter of public record but there was some kind of legal interaction with r3 who has a project called kurta that well maybe that's all

I'll say about that and if you're interested in learning more about it you can pull it but so that's you're just sort of like thinking about maybe in the future changing the name that yeah that that's right and you know I'm I'm still gunning for pickles I don't know if the pickles will ever make it out of the office or this conversation but you heard it here first pickles pickles point I had asked just in that previous question I actually asked where you started from in terms of snarks you kind of mentioned where you ended up but where were you before yeah yeah yeah yeah it's been a hold it's in a whole journeys through um you know snark onea so like yeah first we were using just grad 16 with the MIT cycles and then at some point we

needed simulation extract ability and we were using like half grout 16 and a half sort of a version of gras Mahler 2017 and then for efficiency reasons we switched to using instead of growth Mahler we said we ended up using this like bow Gaveston modification of Graz 16 to make a simulation extractable and then I think that's probably what's running on earth yeah that is what's running on our chestnut now but now we're in the process of switching to this this new pickle snark what does it mean to upgrade between these different snarks because like let's say you have this test net and you come up with a new snark and that's what you want to use there do you have to restart the whole

chain you have to survive can you actually migrate stuff that's a great that's a great question and it's what is one that there's been a lot of discussion about in over the the past few months in our test that's we have just been like killing the network and restarting it when we make that kind of a change and we preserve balances across iterations but otherwise let me say it is possible it's generally possible as long as say the fields that you're using remain the same or compatible in some way it is possible to preserve this snark and have kind of like this like new snark with the old one kind of grafted on to it and that's most likely the direction that will go when the one coda is actually live running running

main that but for the test notes we've just been killing you know well let me not use such violent language but we've just been deprecating and and just replacing the old snark quit with the new one how do you preserve the balance system is it just like moving the state moving over and putting that in the genesis park of the new one exactly exactly how many I mean how many test nets have you had oh that's a good question we have them on a pretty regular Kadence like once every two weeks or so we will run a new test net with like new goals so every time we have we run a test that we have like some particular goals in mind some particular features we want to exercise or things that we want people to try out

at this point I don't know like an like a dozen or something something like that do you also like what's your plan in terms of like how much testing do you still see having to happen before you can actually launch I know it's hard sometimes to predict the date or maybe you have I don't know but yeah you know it's it's really just a matter of when things are ready rather than having like maybe some some exact amount of testing and in mind or whatever but would you say you're like half done or like a quarter done I don't know maybe that'd be helpful yes there has been sort of a tension between like okay how many features do we want to make sure make it in before main net and first is like you know how early do we want to launch and so on I I will say

with confidence we will definitely be launching sometime later this year and they're not in the not-too-distant future exact date for commenting and if you want to know a one great way to know is by participating in our test net and seeing how beautiful and and polished the software is or not as you might find something that was interesting to me and what you talked about like what's been going on is the implementation side so I think if I remember correctly you've earned everything in a camel and I wonder if that's still the case but particularly this GPU thing I wasn't under the impression that snarks were particularly parallelizable like it was pretty hard to paralyze and that's why

physic exists and it like explicitly tends to paralyze to some degree maybe that's making it distributed and more than paralyzed I don't know so I'm curious just like what does this GPU construction actually look like why is there such a speed-up in this world right so the the coded demon itself is written in oh camel but some of the crypto code is written in C++ and rust and in the case of the GPU Krugerrand cuda or CUDA C or whatever you want to call it in fact like snark provers are extremely parallelizable producing a snark has maybe let me say three steps one is going from the kind of raw witness to the witness vector

which represents like the satisfying assignment of the constraint system that's usually a pretty serial computation so but it but also it's pretty fast and a minor part of the overall proving time you know that you just do on CPU and that's fine whatever you produce this witness vector but once you have that and once you want to take this win win this vector and compress it down into a snark typically that computation involves two things two kinds of core computations one is FFTs fast Fourier transforms over a finite field and and essentially what this is is like interpolation of polynomials so you know if you have a bunch of points you say if you have D points you can make a degree D minus 1 polynomial that that goes through all of

those points and that's an important part of pretty much every snart construction is performing this kind of polynomial interpolation that algorithm is itself yeah quite quite well parallelizable but then there's this other component which is multi exponentiation or in additive notation for the real cryptography has out there multi scalar multiple of people say so awkward multi scalar multiplication and and that is an extremely parallelizable algorithm well that is to say there are algorithms for performing multi scalar multiplication which are embarrassingly parallel interests and it's the sort of thing which is very well-suited to execution on a GPU that last step yeah

the FFTs are two but they represent a smaller proportion of the overall computation time so the biggest win is by putting them all the exponentiations on the GPU you just you just sort of start at this paragraph with there's three parts I just want to check if I got them it was the first part witness to vector second part FFT third part multi scalar multiplication yeah yeah okay and you know depending on the start construction like sometimes you like doing some F of T is and then like you do some multi scalar multiplications and like you do some F of T is then you just a mother so it kind of goes back in for us but those are sort of the three three components the first part where this generation is usually so small that it's not really even people don't even really talk about it very much because it's

usually just a very small component of the overall serving time cool that's actually super helpful don't know if I've ever heard yes yeah I've never had a breakdown of the computational steps like that yeah explains it perfectly one cut here a lot of sort of block chains that are very focused on just on like token transfer what I've seen at least in proposals is a lot of them are kind of contemplating trying to incorporate some sort of computation are you guys exploring that at all are you thinking of like adding more to this whole comes construction so that it's more than just transferring yeah or that more than just transferring is possible yeah so I think

one false narrative that has persisted for a while is that it's it's sort of it you can't do general computation using inside of snarks or something like that and that's totally not true at all especially when you're pairing them with the recursion so we have been discussing how to support general computation on coda to support applications like escrow and voting and you know defy stuff and other kinds of applications that we get into later and in particular we currently have an RFC up that's you know where devs are working through which is on our github it's like pull request for one nine one which has a proposal for how to do general computation on coda it follows the same kind of idea of

something like sort of something like Zee exe which uses recursion and snarks to have a system for doing general computation in an optionally privacy protecting kind of way and so that would mean it's not a full smart contract platform when we're saying that it's like you can do some kinds of computation so yeah depending on how that RFC shakes out what kind of computation will be supported at launch it's a little bit up in the air but it will be possible to do pretty much anything I I think for some reason I want to call it smart contracts because I feel like that implies like this particular programming style where like you have these it's kind of like like an actor kind of model and I don't know

that it will look exactly like that but the you know you will be able to sort of set up applications that you know have their own internal state transition logic that you know is totally customizable by programmer I mean I think anyone who understands the see or is exeed depending on how sexist do you want to be in calling it I remember the first time I think it was somebody said it and I was like what but now I don't even notice but I think anyone familiar with that system will understand what you mean like it is it does look very different it doesn't look like aetherium smart contracts but I think we should as an industry broaden the term of smart contracts to mean

things like this as well because I think they are liked by the original kind of definition of my country okay sounds good it's smart contracts check it out all right we'll request for one ninety one cool so I think one thing that I'd be curious to hear from you about is what inspires you really to work on this stuff on snarks on zero dollar stuff is it like I think we might have covered this in the last episode about your background but were you getting into this because of the blockchain were you getting into it because of the Starks and what do you think could actually come out of that you know and initially I I was somehow I just kind of captivated by the idea of you know

having a computation that could run for a thousand years and then being able to produce this tiny little proof and convince someone of the correctness of that computation and I think at first that was somehow was it was very inspiring to me since then I would say this is sort of like in tandem with like my general political radicalization I've become more interested in it say Liberatore potential of this kind of cryptography and you're talking about snarks you're not talking about like general blockchain technology not fluxions yeah I mean snarks yeah blockchain sure but but like some in particular snarks I I think somehow like snarks are at their most useful when you pair them with like a verifiable public state machine but but I think snarks in

general have a lot of Liberatore potential if I may say that or one kind of framing I think that makes it very clear is right now you know we interact with computer systems that we just have no no oversight over at all we have really no idea what what they're doing they're complete black boxes they can abuse us and in whatever way I mean to give a a tangible concrete example you know there there are a lot of lenders you know creditors or lenders who make you know racist or sexist loan determinations that's that's a problem in society and you know it's it's it's an injustice that we should seek to address one thing that we could say is for example well all right you know they shouldn't be allowed to do that and we should have some kind of oversight maybe there should be some

public process through which we vet the algorithms that they're using to make these these loan determinations or whatever because right now it's just some black box you know in goldman sachs basement or whatever that's that's spinning out you know you get this much at this rate and that that's wrong and you know there's real damage and violence done as a result of that and one way out is as i said we could have this public vetting process whereby you know we somehow come to a consensus about what sort of algorithm is is sort of acceptable acceptable biased whatever that means and you know that's of course that's like a complicated political question about how can we actually have a process to come to that kind of

decision but once once we've come to a kind of decision that all right this is the sort of algorithm that we're comfortable with using as a society then you get into the the question of actually enforcing that lenders are going to use that algorithm because in our current system there's no reason for them even if they publicly commit to using a particular algorithm there's no reason for them to actually use it I think for example that the Volkswagen scandal where they were you know during inspections they were using this this this this fuel-efficient mode or whatever this like no smog mode but then you know that they had their their car have software which detected like oh we're probably in the inspectors office right now so we should like like pretend

to like be clean or whatever I'm and then on the on the road you know it operated in this this sort of smog smog producing way so to make chart the parallel with with Starks you know let's say we all get together and we agree okay this is the good algorithm this is an acceptable algorithm for making a loan determinations here's what we're gonna stick with that is not necessarily super meaningful in terms of actually enforcing that the lender uses that algorithm unless each time it actually makes a loan determination it provides some evidence that it's using that algorithm and that's a perfect application for snarks because that's that's precisely what's marx let you do you know we can imagine a world where lenders are are mandated by law or community consensus or you

know public opinion to every time that they make a loan determination someone provide additionally a proof which says this loan determination was made on this input data you know your your personal information whatever using this agreed-upon algorithm snarks could actually you know be used in that way to enforce the use of a given approved algorithm it's the rocky it's not going to it's not going to help solve the problem of what is a good algorithm what is like a non racist or non texas algorithm or whatever but it at least gives you the tools to enforce that decision at scale across the society although and i don't want to be the pessimist yeah but the other side of that is what if there was a really corrupt Algar there like some corrupt

decision then it would also be enforceable i guess through this but it would be transparent to what algorithm you're using so if racist loan provider publishes their algorithm says this is racist then i'm just not going to use that provider all right i mean it's it's no worse than the situation that we're in now where it's just a black a black box yeah what's going on so in this case i think it's sort of the type of use case that you're describing there I would say falls a little bit into this like verification category for sort of use cases of seer knowledge proof technologies where it's like verification or certification of some sort and there's I've heard a few examples of that I gave a few examples

in this article that I published over that like over the holidays but actually this is a space that's super fascinating the ways that you can replace that third party kind of checking body or provide a third party certifier than if they in the case where there doesn't exist one but be but that's certifier be math i like that example yeah right it's like we built we build this little uh this little monk ulis who is homunculus regulator who's watching every every computation and making sure it's following the rules and at the same time could actually also keep certain things private in the case that that are there are some like I

don't know if some other properties of these algorithms that are proprietary or you know something that wouldn't want to be shared publicly you could potentially include that as well yeah totally I mean I think especially it could be interesting and in this in this you know just just to stick with this example maybe the lender for whatever reason you know they want their lending algorithm to be private well that's fine they they can still prove you know via this algorithm that I committed to if you run it with your this input this is the result that you get [Music] so before we sign off is there anything else that you that you'd like to share there is one there is one thing that I

wanted to communicate that that I'd feel like I didn't quite communicate what is that it's it's not clear well I I want to kind of make the case for like why it's it's actually extremely important well it sort of it sort of dovetails with what you're saying about this like checker or whatever about why it's why it's important for blockchains or cryptocurrencies in particular to have this kind of verification totally sick Cinque Terre fication with using snart it's I think it's I mean it's something we touch upon tons of times and especially talking about like stateless clients so it's it's it's a recurring theme and I think it's it's worth reinforcing so basically being able to say like you know if you look at a theorem or a bit going today people

don't run notes they just rely on some centralized infrastructure to tell them what the state is and the reason they don't run notes is because it's too heavy so yeah if we actually want technology to be decentralized it needs to be way way lighter than what a Bitcoin for yeah currently I mean and yeah and like I you know if you really kind of think out what happens in a world where you know right now if someone lied it did a bad state transition on Bitcoin or theorem not very many people's lives would be dramatically affected by it there is not the you know the fates of not too many lives are bound up with the bits of those functions but you know if you were in in a world where there were

millions of lives of people's lives and you know at stake with with regards to what happens on a particular cryptocurrency system personally I think it's pretty clear that someone would just make an invalid state transition if there were no sort of actual widespread oversight over over over what what what's happening you know there's just not really enough kind of at stake to sort of do the collusion required but I but I I believe very strongly that it would happen if these things were sort of existing at the scale of an entire world or an entire society so what do you recommend well I mean that that's why you know we do need to have this this we six inked architecture because it

makes it possible for any device like a browser phone whatever literally everyone to have the the kind of complete oversight to have this little uh this little regulator whose you know enforcing the rules of the system the socially agreed-upon rules of the system at every at every point I I think it's important not to be naive you know technological utopianism is there is very popular in the crypto space and in technology industry in general that's not at all my position I don't believe the technology in you know inherently solves any kind of problems or whatever but it is a tool with which we can you know come to a political consensus a social consensus as to what sort of behavior or what sort of

operations are acceptable in our money system in our in computations in general and then we can use these tools to enforce them at at the kind of scale that it's not possible to today well listen I want to say thank you so much for coming on the show and sharing with us this update sharing with us some of your thoughts on the latest your knowledge stuff the work that you guys have been doing and also these ideas of like real world applications and I think you went past that actually in what you just said it's not just application it's like the reason this matters so thanks for sharing that oh yeah my pleasure I think it's something it's really important and that people don't think

about enough I think for explainable reasons but nonetheless I think it's an important thing to spend time talking about and thanks again for having me on the show it's a lot of fun thank you very much and to our listeners thanks for listening thanks for listening [Music] you