ZK Podcast: CryptoKitties, Dapper Labs and Flow with Dieter Shirley

30 Sept 2020 · 57:03

Anna Rose talks with Dieter Shirley, CTO of Dapper Labs and chief architect of the Flow blockchain, about the origin story of CryptoKitties and the NFT standard it helped popularize. They trace what pushed Dapper Labs to build its own chain in Flow, how the network functions, and where NFTs and on-chain gaming are headed next.

Speakers

Topics

Transcript

[Music] welcome to xero 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 frederick in this week's episode we chat with theater shirley cto of dapper labs chief architect of flow and co-creator of cryptokitties but before we start in i want to say thank you to this week's sponsor elio aelio is the first platform for fully private applications

it uses blockchain and zero knowledge cryptography to deliver a web experience that's both personal and private with alia developers can write private applications without a background in blockchains or any expertise in cryptography the world-class team of cryptographers engineers and designers at elio have released developer preview one which is an early peak at what the future of the web could look like the release introduces a programming language called leo a new community driven package manager for leo and a new development environment or ide called elio studio we recently had howard wu who is the co-founder of elio on the show for an interview if you haven't yet checked that episode

out i highly recommend giving it a listen i'll provide a link as well as a link to the developer preview in the show notes so you can learn more about elio and start contributing today so thank you again elio and now here's our conversation with dieter all about flow so today we're chatting with dieter shirley who's the cto of dapper labs and the chief architect of flow blockchain welcome to the show dieter it's great to be here um i'm fans of the podcast so it's a real pleasure to be here and chat with both of you thank you very much and yeah welcome dieter tell us a little bit about yourself what got you started what are you into and also your name is dieter do you happen to have any like

german ancestry or something indeed indeed it is the case my mother is german um i do not speak a word of german but uh her first language was german and so yes my name is dietrich but i am the only deiter i know which uh for people living in germany seems like a strange thing to say but uh it's very uncommon here in canada yeah so the story the story of how we got here is a is long and and circuitous but you know i think my whole life has been about making technology accessible to people back before apple was cool i was into apple because they were like the only computer company that seemed to care about making computers that people could use so when i started working for axioms in in 2013 and they were building all this

cool technology but but trying to find a consumer bent for it it was it was really like coming home and it was funny like i was 20 years into my career and i finally figured out you know where i wanted to be because actually working at apple which i thought was my lifelong dream ended up being quite quite terrible because it's quite corporate or at least the parts where i was working and so we did all sorts of interesting stuff we researched machine learning and natural language processing and we did lots of stuff with vr and you know google glass and all of that stuff but crypto was actually something that i was really excited about and so in 2017 when sort of the crypto world blew up it made sense for axioms in who's this sort of startup foundry where we're always you know trying out uh new technologies

and trying to create interesting new consumer-oriented products that surround them i got in my head that we needed to do something in crypto and so we spent a bunch of time uh looking into this and of course what came of that was cryptokitties and you know the the goal of cryptokitties is was to take this technology that was esoteric for most people it seemed entirely financial in nature and to say no that's not what this is about like yes finance is part of it finance is like the blood that flows through his veins but that's not what all of the the life about it has to be and so we wanted to create something that was personal and had a connection to people and that meant that it was something individual and so you know everyone kept talking about erc20 and like how do we make the

cryptokitties erc20 compatible i'm like you guys are crazy they're non-fungible we can't make them work with the erc20 and so of course we we uh we wrote uh i wrote erc 721 first draft of that um and of course to the community was the the you know that was ultimately a community uh product uh when it when it was finalized but so we put that out and then we released cryptokitties and it kind of blew up yeah we remember yes um frederick was just saying this i think our third and i don't recommend people listen to it but our third episode it's very bad episode but in that episode it was right around the time that i think cryptokitties was launching and we were talking about it for sure over in berlin everyone knew it was it was kind of clogging up the network i think right it was like

the the cute little kitty that broke ethereum for a moment well several million of them but yes yes yes it's funny because you know of all of all the work i've done in my life the thing i never expected to get cited in academic papers is crypto kitties but of course that is what i you know when i'm reading papers from various things they often use that as an example of of uh how this stuff can get out of hand so anyway so we built crypto kitties and we were just on top of the moon we spun out dapper labs as its own company uh we took investment with you know joint lead investment from union square ventures and andreessen horowitz and we were like ready to go and we were we were getting phone calls from ip

holders wow this was like 2018 right this is late 2017 december of 2017 was was when crypto kitties went nuts and that was when where did you actually build that where did it come from wasn't it from a hackathon we demoed it at a hackathon okay so it i always thought it came out of you the story is is that at waterloo we we built it but uh the reality is is that that what we what what people played with at east waterloo was actually many weeks of work uh anyway it would be very difficult to build that at a hackathon the project we did do for the hackathon was one of the winners but that that never became a product so yeah so we were very excited and so the business team was like lining up all these partnerships and they're like we're going to do you know

jurassic park with crypt like for cryptokitties or like crypto park right crypto dinosaurs and i had to stand like stand in front of the like hordes of business people and say no we can't like why do we want to use these ips because that's a way of attracting more users we don't need more users we already broke the network we need to figure out how we can scale this stuff you know we we had a whole team that was building dapper wallet smart first you know first and largest now smart contract wallet for ethereum and uh we were looking at other game ideas that could run on ethereum and you know we had cheese wizards come out last year but what i did was i took a group of engineers and i said well let's go find another blockchain let's let's find a

blockchain you know it's clear that ethereum as it stands today is not going to be the future of this technology so let's go find what the future is going to be and of course we started with ethereum 2 saw that it was dependent on sharding i was like that doesn't seem right to me sharding doesn't seem right to me it seems like it's going to make building smart contracts way harder and it's already hard enough thank you very much and so we went and we just we like you know at that time like it was the ico fever in 2017 everybody and their dog had an idea for a blockchain and i swear we read all their white papers it must have been 100 and we talked to sort of 20 different teams as you can imagine it wasn't difficult to get a phone call with when you when

you drop the cryptokitties name and all of the projects either fell into i mean some of them were just bad but they either fell into like depending heavily on sharding or depending heavily on limiting participation in some way and we just felt like that neither of those things felt like the answer to us and so you know i sort of locked all the people who'd read all those white papers in a room together and said like do we just have to put up with this we just have to put up with sharding because that seems like it's going to be hard but it's better than not letting people participate and it's better than you know not letting this stuff scale and we took inspiration from cpu design and pipelining and that was the

origin of the what became the flow architecture was this idea that we don't have to make every node in the network do the same work we can have them specialize we can have them do different pieces of the work and by doing so we can actually optimize different parts you know sort of on the the scalability trilemma right like you have those three three sides of the triangle each part of the network doesn't have to be in the same place on the triangle and so what we can do is in the places where where the security matters we can be highly secure and we can pull the complexity out of that so that scaling is less of an issue and on the places where the work is hard where the computations are expensive

we can make sure that they're only tasked with doing deterministic operations and so security is no longer important because as long as we can check their work we don't need to have like a million people all doing the same computation that actually like one of the questions i had was why did you decide to build this like as a standalone chain but i kind of before we go completely into that i want to just kind of go back to like you had created cryptokitties cryptokitties still exists right like cryptokitties as a nft still exists on the ethereum network but i always understood that the cryptokitty erc2721 that you used actually was slightly different from the standard that was finally delivered

did you change the cryptokitties after the fact to reflect that or is it the same thing from 2000 you can't oh yeah fair well can't you you like aren't there smart contracts that are upgradable somehow or you could redeploy it i suppose but because it has to live forever you can or something so we we do have some options we could put out a smart contract that sort of wraps it um so that you could put your nfts assign the ownership of the original cryptokitty to this other smart contract and then it could sort of forward through uh we haven't done that although i you know it does seem like it's a pretty good idea now is not a good time it's just redeploying new smart contracts fairly expensive not a lot of people are doing much with crypto kitties right now but i do think

that that's that that's one possibility is to sort of create that wrapper contract the problem with that is it just increases the gas price of everything right so you have to end up calling a thing that calls a thing and everything gets more expensive and i guess basically you're still struggling on that front with the same issue you were struggling with to some degree as you were in 2017. like it's not like the network has evolved that much since then so no it really hasn't and you know and and i mean look it's a testament to how bloody useful this stuff is that people are willing to use it when it's when it's this quote-unquote bad and it's in a lot of ways it's not bad right it's just it's not up to the scale that that the number of people who want to use it which again is

a sign of how successful it's been but yeah so the story with the 721 was that we put together a draft we published it we asked for feedback i sent some emails to some people who you know seemed to be doing something you know sort of on similar directions but there weren't very many so we had hardly any feedback and so no one was like saying much about it and we're like okay so we published cryptokitties and of course then everyone had you know all the all the energy in the world to nitpick uh ideas and provide suggestions for how 721 should be and and i do think the standard definitely improved with that attention but of course by that point in time it was too late for us to sort of for you to use it

meet the exact we actually we did an episode all about the erc process um i'll link to it in the show notes and in that we definitely cite this as an example and the erc721 is like the focus and how that developed after the fact so that might be interesting for people if they want to see kind of where that went um but we hadn't had a chance to speak to you yet and so this is cool to kind of finally finally wrap that story up i think that's always the case with standards though is that it requires that attention to really get to a good level right where i mean you have the same case and i was watching this video yesterday about the standards of eevee like electric vehicle plugs and tesla was the first to

come out with a good plug and then the industry standardized around them so now standard like tesla is the only one that doesn't follow the standard anymore but they pushed the standardization effort i guess yeah because they popularized electric vehicles and yeah now there's huge pressure on tesla to like hey what the is up guys just follow the standard cool so you described a fascinating story and how you got to like okay we just got to do this ourselves uh you looked at a bunch of options but what was your what was your design space really i understand the desire to not shard like the e2

model of sharding while still unclear potentially like especially around 2018 they were talking about automatically rebalancing shards and all this stuff and that obviously makes it's making smart contracts incredibly hard um but what was your other design constraints what was the scale that you were actually looking for and what were you looking to to push i'm a i'm a huge believer in state channels i think that that's a technology that i mean i i imagine a day when blockchain games are like normal games like the normal games that we play today except their net code is state channels and i i don't think that's an impossible dream like i think that fundamentally

that's we could get to that point where we're using state channels to play video games and no one even thinks twice about the fact that every single video game is completely fair um and provably so because both sides are signing every single action that's happening and and you know confirming that the actions that the other side is taking are valid so i i think that state channels are really important plasma always was something that a lot of people said that we should look into um but it always it always seemed to be be a bit too hacky but when we thought about layer 2 solutions the security of every layer 2 solution depends on the ability for people to sort of quote unquote escape to the main chain and the ceiling on what can be done on

mainnet ethereum was so low that even a i don't even think it has the capacity to handle consumer scale just as a base chain with with layer twos now you could say well we'll have lots of layer twos right well then you're just starting again um and so the idea of saying well let's use ethereum sort of as you know what we would call the consensus layer right because i said we're splitting the functionality right so we have a group of nodes who are building a chain uh through consensus and you know one statement is well couldn't that be ethereum or i suppose bitcoin or something else and the answer is i don't think it could because it in order to handle like i said consumer scale that base layer needs to be able to handle i think

at least an order of magnitude or two more than what ethereum can do today just for that control channel and so so that was that was a a big concern we also wanted to go to proof of stake we didn't want to have anything to do with proof-of-work i know lots of people have you know sort of a an affinity i don't know sort of a like a visceral feeling of the value of proof of work but um i i've always felt that that was a little bit more uh philosophical than practical and so we definitely wanted to move to proof of stake but we needed to have a higher capacity base chain in order to to really hit the targets we had what year like what time frame did you make that decision to shift to your own chain 2018 yeah it was the spring of 2018

the beginning okay because like since then there are now a lot of bass chains l ones that now have like the capacity to either build on top of them in a very different way have you ever looked around since then and been like oh shame that wasn't there when when we were building it or do you feel like do you think you will end up connecting up with another ecosystem that exists or do you really want to build your own i guess it's this is the l1 l2 or like interoperability question that comes up a lot yeah so so there is financial interoperability through these chains you know through like binance and coinbase if nothing else right yeah and so then the real interesting question is is well what can we do in terms of like trustlessly moving stuff

between chains and what can we do about actually moving you know like uh sort of like smart objects like like a crypto kitty right like yeah i can lock up a crypto kitty on ethereum and i can create a copy of it on another chain um but it can't breed over there um because the breeding algorithm has to you know it has their shared state there and so you can't you can't move that thing away um because it can't have actions because the actions that it takes depend on the shared state and the shared state is somewhere else because it actually mutates like it changes it doesn't it's not like tokens you can kind of like lock on one side go do stuff with it and then the same tokens or the fungible tokens will come back and you can they don't do anything right

they're they're passive yeah whereas cryptokitties are active and i think lots of interesting things can happen on blockchains that are active so do i think that that's going to happen of course it's going to happen it's too valuable it's too it's too useful but i also think that that's going to be incredibly limiting and so like yes it will happen yes it will be useful but i don't think that you'll be able to have i don't yet know of any mechanism by which you can move an object with its code and then feel like you can trust that that code is going to be properly respected on the system when it comes back and certainly not any shared state like that's to me the state is the thing right and that's why sharding is problematic um and that's why by cross-chain communication is problematic

this goes to you frederick but like in the in the polka dot system would you if you had something like an nft on one of the chains do you know if you could actually use the relay chain to like move it over yeah of course you can yeah because status is kept somehow through that this the status would still be kept on one of the chains but the other chains can read that state and this kind of shared code thing that that theater is talking about and like can you move the object with its code that's still very much a topic that's up for debate right but the way we think about it is you have some shared code unlike the relay chain that you know in what we call spree and shared protected or on time

and that code is what defines like your breeding breeding algorithm for instance and then you can have your state on one chain your code on the relay chain and then the nfts can all be spread out and on chain x that no one has ever heard about they can still breed because they can read this state through this pre-module on on the cryptokitties chain so that i mean that there is a vision for that right i i think you can solve all of these problems in a shortage like it depends on sharding is such a weird thing because like if you look at it hard enough everything ends up being sharding like even when you when you talk about the the

structures that you've come up with where you have certain responsibilities within sub sub networks kind of right that's kind of sharding too it's just that that you have domain specific shards yeah and that's i mean i think that's the essence of why flow is different than other block changes that we sort of chopped it the other direction right like if you think of shards it's sort of these vertical slices we have these horizontal slices where there's there's different layers uh instead but yeah it's certainly the case that there is no way for everyone to do all the work and for you to scale like that's just that that is simply not possible yeah so that so you've created this purpose-built blockchain for nft specifically but i'm thinking it

might make sense for us to talk a little bit about like what are the properties like what are these nfts that are supposed to live on this because are they all i guess a question for me is how purpose-built is it actually uh i mean we've talked about it in the context of of cryptokitties and where this spawned from but to me you haven't described anything that makes it specific to nfts or or games or any particular application just sounds like you've yeah you've done this horizontal split of responsibilities but you could really that could still be a generic chain yeah it is a generic chain it is intended to be a general purpose blockchain with the benefit of being very high capacity and not

resorting to sharding and and still being amenable to wide participation i it's sort of easy to cast us as the nft people and obviously we care a lot about that um that's how i thought about you obviously um and and look like it's the the mission of the upper labs is to bring the power of decentralized technology to regular folks and the means by which we're going to do that is not by explaining byzantine fault tolerance to them it's going to be creating experiences that are fun and interesting but that nonetheless unlock capabilities that you can't have in centralized systems right around true ownership and and unbounded uh longevity where like the experiences can outlive the companies that created them um which has never been true for social

software before and so yeah of course we're we're a games company we're an entertainment company that's how we're going to get people interested interested in this stuff but when we were looking at blockchains and people came to us and said hey you should build on our blockchain it's the games blockchain i always like i would come out of those meetings and i would like throw my hands up and i would say who wants to be stuck on a blockchain that's only for one thing right like who wants to build a computer that's only good for one thing if we're building this giant global shared computer let's make sure it can do all the things and so yeah so the flow has always been about that now having said that right our products are nft products the products that we're working with most of our partners on

have nft as a strong component to them because that is the thing that most consumers have an easier time uh latching on to but i don't think that's where it ends and you know it's not where it started and it's definitely not where it ends and so i think that that's a really important lens for getting people into this there's nothing about flow that was designed with the oh but how do we make this better for nfts okay so but then what does flow look like is it is it an account based blockchain similar to ethereum in that you build smart contracts on top of it that just interact with these different sort of zones for different purposes yeah i mean i think i can't remember if

you guys have done i haven't listened to it if you have but have you ever done a blog podcast on uh optimistic roll up no but we've done like zk roll up a lot right so we might have mentioned optimistic couple times because and we didn't know about optimistic roll up i don't think if anyone had been talking about it in 2018 but now that people are talking about optimistic roll-up what we've realized is that flow is actually just optimistic roll-up taken to its logical extension and so if you think about optimistic roll-up how does it work well you go and you register a bunch of transactions on the base chain you know so that there's a public record of of who wants what done and what order it should be executed in then you have this guy with a really powerful computer burn through all of

that stuff and then publish a result and if they're right they get paid and if they're wrong they get slashed and so you assume that there are like sort of multiple people who are doing this computation so that if somebody tries to you know pull a fast one and and publish an invalid state transition that someone else will point it out and say hey that's wrong and because the set of transactions in their order is defined in this public place the output is objective uh there's an objectively correct output state transition because everything is deterministic and so if you start with that right that was that was the the sort of the insight we had early on then you then ask yourself well what are the problems with that system right so

the advantage of that system is is that you can imagine that scaling to just an insane level you know you can say well if we only have a very small number of nodes doing this execution the transaction execution why do we have to store merkle trees in a database let's just store it in ram right you can get multi-terabyte ram instances in data centers we only need a half a dozen of these machines around the world doing this stuff so suddenly like the ability your throughput can go through the roof why does it have to be one computer right well forget multiple cpus like why not multiple computers why not do like optimistic concurrency where you're like executing you know a thousand transactions in parallel looking at what registers they're reading and writing to and then going through and saying oh well these two

don't conflict so i can just take those two results oh this one conflicts this that one i'll rerun it right but 90 of them probably don't conflict and so you can just run them in parallel and then only have to rerun the few that that had conflicts and so you can end up extracting parallelism from something that is inherently uh serial um that looks serial from the outside right that's serializable from the outside and so when you look at that idea you're like wow that's amazing right like the throughput limits on what optimus roller can be are immense so what are the weaknesses well the first roadblock you're going to run into is that the number of transactions that you can record on ethereum even if you're just using call data

you're going to hit a limit pretty quickly because all of the consensus nodes and even if you change like the gas limits and i know that i don't know if it's happened yet but the the they're talking about decreasing the cost of call data for exactly this reason eventually you hit a point where the blocks byte size starts to get really big right the amount of data just representing the transactions gets really big so what do you do about that well the consensus doesn't really need to have the text of the transactions it just needs to have like some sort of representation of what those transactions are right so why not just put a merkle proof in there why put all of the transaction text on the blockchain let's have another set of people oh we could call them collectors right and ethereum is toyed with this idea through

something called co-laters which was uh being discussed in i think 2017 and 2018. and it co-laters actually show up in the polka dot infrastructure as far as i know well it's slightly different role i mean so you're you're talking about a set of people who provide data availability well it it's actually specifically the collectors and and as i understood collators in ethereum it was just the input data right so the way it works in flow is is that you send your transactions to the collectors they create these things called collections and then they stay send a collection guarantee to the consensus nodes and that collection guarantee is just a hash of the collection plus their their signatures

and then the collection itself goes directly to the execution notes and so the consensus nodes right in the in you know so in our optimistic roll up analogy that would be the base chain they're just getting these collection guarantees here's a set of signatures from a group of nodes that say they have this data and if they don't have this data they'll get slashed and here is the hash of that data and then the consensus process can assign an order to those collections instead of assigning order to the individual transactions and so now you have these consensus nodes that are able to you know indirectly uh include million transactions in a block why not right it's just hashes of hashes of hashes right so you can imagine a very lightweight computer being able to participate in

consensus because all it's doing is signing these very small blocks no reason why they ever need to be more than a megabyte in size even if they they do represent tens of thousands or hundreds of thousands of transactions um and and so they can have a very very fast block time and very fast propagation speeds so then the next question is is well how do we know that the execution nodes are actually watching each other right so the validator's dilemma uh or the verifier's dilemma i can't remember i always get it wrong so how do you how do you solve the verifiers dilemma because in optimistic roll-up you know sort of the version that we talk about most often there's this idea that like oh well there's gonna be five or six people who are all you know at least right there's gonna be a bunch of people that are all

doing this execution if someone makes a mistake someone else is gonna immediately jump in and give an error but we know from the verifiers dilemma that if the leader is too good at solving the problem that the incentive for the followers goes away and so if i have a really fast computer so that you know whenever frederick wants to post an answer i'm always just a little bit faster than him and i don't have to be much faster than him i can be two percent faster than him and i will win that race 90 of the time and so now he's running a computer that's just as expensive as mine except he's only getting paid 10 of the time and i'm getting paid 90 of the time and his only hope to make money

is to catch me in a mistake well how long is he going to run that computer right because remember we're imagining a data center with you know terabytes of ram and multiple cpus and like this like huge collection of ssds that's how we're getting this amazing scaling but that's expensive and so now you have to say well maybe we just have to like build a system where we pay for multiple executors at all times right where executors aren't just people who come in propose answers and we hope that someone else also did the execution we actually say no everybody has to do it right we're gonna have five or six or ten of them let's say 10 we're gonna have 10 of these guys and they'll be staked and they'll all you know be expected to produce

a result and if they don't produce a result then they don't get paid and so everybody's producing a result how do you verify that they did the work though we'll get to that in a minute we'll get to that in a minute so the next question is well but that's still pretty darn centralized right even if you have five you have ten yeah how how much is decentralized enough right i said earlier that like you know i felt like something like 20 or 100 probably isn't enough and now i'm talking about 10. surely that's not decentralized enough um and it isn't right that's not decentralized enough that's too easy to capture uh it's too easy to to stake for all of those or stake for enough of those and then ddos the other ones so that you can get a an answer in and so then you have that's where our

verification notes come in and so our verification nodes what they do is they check part of the computation and this part's subtle and actually um vitalik's talk at devcon in osaka which seems like a million years ago but was actually just like 12 months ago not even yeah yeah was was uh about exactly this and it was very gratifying to see him talking about it because we'd been we were already at that point building uh exactly those systems but it's this idea that if you have a linear computation it is the case that to create that computation you do have to have all the data you do have to have all the state and you do have to run all those computations in order but if the person who is proposing the

solution takes snapshots at part way through that anyone can come along and they can they can inductively check that the milestones the between two milestones is correct and you can have dozens of different people in in our case we're planning for for hundreds if not thousands of these verifier nodes that they will each check just just a few of between these two milestones these checkpoints but collectively they will check the entire block dozens of times then you need to use some system whereby the executors don't know who the verifiers are going to be to check the thing because if i know that you know frederick's going to check my answer then i'm going to be honest

but if i know that anna's going to check my answer and anna and i have a little special deal on the side that's when i can slip the error in and so i can't know when i publish my answer who's going to be checking me and so that's built into flow as well so now we come to the other part of the verifiers dilemma which is not just that i go away but then i just start rubber stamping right and so the verifiers dilemma you know one problem is is that people just don't bother to participate and the other is is that they get lazy and they just say yes that's correct you know the incentives are such that this person would only rationally produce the correct result so why would i even check it i'll just rubber stamp it and so we have these different execution

nodes how do we know that each of them is doing the work themselves we have these verifiers they're being asked to confirm that the state between you know checkpoint a and checkpoint b that state transition is correct why don't they just say yes right and so we looked at a bunch of different ways for doing this so arbitram is a team of chain labs they have a system where they uh what is their thing it's like it's almost like a lottery where if you if you compute the result they hide the result and then you compute the result and then you hash the result with your public key and if it's you know has a particular ending then you know sort of like a proof of work you know if it has if it starts with a bunch of zeros then you win a lottery and so i'm

computing the result before it's released and then you know i can win the lottery and of course that incentivizes me to compute the result problem with that is is that you have to wait to release the result until after everyone's checked the work um truebit of course solves this problem by forcing errors and so someone publishes a result um and they have sort of like a random die roll again based on deterministic hashing etc that with some small probability they produce an erroneous result and it has to get caught kind of and it has to get caught and then and then have this whole circular game where like well the person who produced the erroneous result knows that it's an erroneous result so of course they're going to flag the error and so you can't

just say that the first person who flags the error is going to get it etcetera etcetera and so we came up with a system that we call spocs which is for a specialized proof of confidential knowledge and the way it works is you imagine that every computation produces as a side effect some amount of data that doesn't appear in the output so for example it could be just which registers are being read and written to it could be randomly you know hashing the program counter into an accumulator you know every 10 instructions or something like that something that when you're actually doing the computation is trivial to compute but when you only see the input in the

output is more or less unknowable so then anybody who's actually done the computation they have that that's just free data that they've got on the side and so then the part is how do you publish the proof that you have that data in a form that someone can't just then copy the proof and say oh yeah i've got that data see i've got this proof and so that's where the specialized proof comes from and so we originally had a construction that used ecdsa our cryptographic engineer working actually with dan bennett one of dan bennett's grad students was able to adapt it to the bilinear mapping i can't remember pairing i can't remember the exact term but the thing that bls uses the cool bilinear

pairing thing that the bls uses you can actually set it up and unfortunately i don't know it off the top of my head enough to explain it um and and i'll be honest even if the paper in front of me i'm not sure i could explain it send us the link to the paper though we'll add it in the show notes in case anyone wants to read in yeah i don't know if it's been published yet oh okay the the new formulation that uses bls but more or less the the the essence is is that i combine my private key with this secret data in a way that you can confirm that like so let's say frederick is the one who's getting the result anna produces her spock i produce my spock they're different spocks anna can't

produce her spock from my spock but frederick do use bls you know use the elliptic curve with the bilinear mapping to confirm that both anna and i must have started with the same data even though that data hasn't been leaked and so what we can do is we can prove that we have this value whatever this is some some hash of something and the only way that we can produce our spock is by having that data and as i said that data is not possible to guess from the result to it's a side effect of actually doing the computation so it's a way of making sure that everyone whose job it is to verify this stuff actually verifies it um because that's

the only way that they can create that spock cool so to sort of recap a little bit you have a blockchain in which there's a core consensus layer where you're just recording essentially the merkle root of a block the transactions and the transaction data is maintained and made available by a set of collectors i think you called it correct and you have a third set of entities who well a third and a fourth a third set of entities who execute those transactions and then publish their sort of intermediate snapshots and then a fourth set of entities who take those snapshots

and recon like verify parts of that execution one question with that structure that i have is how do you reach consensus among the people who execute those parts of the block because if you have hundreds of these people executing or like re-executing parts of those box it feels like they would have to then like results have to be registered in some way they have to vote yes this is correct or this is not correct which starts looking like a second layer of consensus yeah so i thought you were asking a different question i'll answer that really quick which is how do we even decide who's checking which bits and and that's done because we built um a dfinity style random beacon into the chain and so every block has a

deterministic randomness uh associated with it i sort of assumed that that was the case because i couldn't imagine any other ways to do it um and so the the this question actually comes up a lot because we're so used to this idea of like voting and oh well if you know if six people say it's true and four people say it's false then it must be true right but that's not how it works at all um what happens is that a block is not sealed and that's the term we use for a block that has been executed and verified and should be considered the result should be considered unrewindable a block is not considered sealed until we have positive confirmation from a sufficient uh weight of verifiers that are all putting their stake behind the statement that this is correct right so it's not

just a oh no one said there's a problem therefore it must be correct right we actually wait for them to say yes i check this and it's correct who who are we who are getting those the consensus nodes again right so we're going back to the base layer again okay okay and so that base layer if any a single execution node or verification node or even any other staked node detects an error they flag that and they they send it to the consensus nodes and they say hey here's a signed execution receipt from that execution note over there and they claim that this state transition from here to here starts with this merkle root and ends with this merkle root but the third

transaction in i found an error and they can point exactly all of that right right down to the single transaction and say this is where the first transaction happens in this chunk you go check it and the consensus nodes themselves they just execute that one transaction they can see all of the merkle proofs up to surrounding that and they just execute that one transaction and they can say yep you're absolutely right you you caught it and so a single honest execution node is all that's needed in order for the network to main uh live and correct and a single honest verifier um that happens to be a sign who happens to check that block right so certain number are assigned to it but

they can check other ones if they want i don't know if they we should expect that in that in the live system but uh we require that that dozens of them are checking each one and so you know you can prove probabilistically that even if you know a very large fraction but still under the one-third assumption are willing to lie that somebody somewhere is going to find it and so it doesn't it doesn't depend on a sort of majority makes right thing yeah it's a very interesting architecture taking sort of the computational model of of truebit combined with some sharding aspects of data availability and and how you split out the responsibilities and yeah it sounds pretty cool i wanted to just end on a sort of more

philosophical note because when you started talking about the problems of the existing systems one of the problems that you mentioned was limiting participation and you still limit participation right like you can't not anyone can be an execution node maybe like protocol wise if you have a computer that's this powerful you can be but in reality most people can't be and if you talk to like bitcoin people about limiting participation while having a block size larger than one megabyte is limiting participation because not everyone has a fast internet connection and there's obviously extremes on both ends where do you see that how do you see limiting participation and how do you did you take that into

account in the design of the system and like what do you mean by it yeah so the collection nodes and the execution nodes have virtually no determination over what happens in the blockchain the consensus nodes are the ones that are building the blocks are the ones that are conducting all of the slashing operations the verification nodes are the ones that are you know making sure that the execution nodes stay honest and so yeah not everyone can run an execution node but almost anyone should be able to run a verification node we imagine these chunks that they're checking being very small so to say that like in a sharded blockchain um say like e2 where you're like oh well i'm

checking every single transaction in this shard yeah but there's still a bunch of other shards that you're not checking and so you know at the end of the day it all comes down to well i have to trust that that enough other honest people exist in this network to check the parts of the the network that i'm not checking but at least i'm participating i'm checking something i'm a part of the system that keeps it safe and those consensus nodes and those verification nodes are the ones that keep it safe and what's more is is that they by design they represent the vast majority of the stake and therefore the vast majority of the rewards now the rewards for running an individual execution note will be very high because we imagine that there's going to

be sort of on the order of 10 of those and there's probably going to be we hope hundreds of consensus notes and we hope thousands of verification notes fundamentally we felt that that was a reasonable trade-off because those big huge data centers that are doing all of this hard computation are like just big dumb auxes right they have to go where we tell them they have to do the job that the consensus nodes have laid out or else they don't get paid they have to produce a correct result otherwise they're going to get slashed by those verifiers and so yeah it's a little bit like having a machine that does the work for you and yes there's a small number of them but the sort of the worst thing that the the execution notes can do is halt the

network uh by just refusing to work but then they're they're pretty they're they're pretty fairly irreplaceable so that's exactly the mindset yeah so you did say earlier that you're not purely an nft project and i did hear you on that but you also said that a lot of the kind of deals and work that you're doing are using nft like construction so i i kind of want to bring it back to what you're actually doing as a business so yeah i heard announcements about a number of big partnerships with kind of known brands are most of those nfts yeah so they're they almost all have nfts as part of them right so so we're right now we're in uh we're in early access with nba top shots so

that's a nba licensed um collectible where the collectible itself includes a a video highlight of an actual play in an actual game by you know actual nba stars and so you know in the same way that you you know you might buy a a baseball card that has a picture of a baseball player on it you get these these nfts and they have they have a video in them and and you know all the stats about the game and whatnot and so that so far has been received incredibly well um we have a relatively small uh early access group that's coming in there but in terms of people we have probably about one third crypto people that you know knew us from crypto kitties and whatnot and came over

about two-thirds of people who are coming in either never done crypto before or or you know never been engaged in the nft ecosystem on crypto and what we're seeing is is that you know the crypto people spend about as much money collectively as the non-crypto people but everyone's loving it um everyone's really enjoying the collectible experience we are currently um investigating putting together a mobile game where you can use those collectibles as game pieces in a mobile game um so you sign in with your adapter account all of those assets that you own on the blockchain are there and you can use those in your game to you know enhance your game play and and to sort of show off your your uh your cred right so when we look at what

other the other projects right so dr seuss is probably going to be sort of a more uh sticker book style project where it's it's more of a like playground creative outlet where you can create scenes and you can put your your various dr seuss stickers in into into a scene and and maybe we'll have like community voting on you know people who've created the most creative panoramas and whatnot um and so that's sort of the focus there the ufc product uh project that we're working on we've looked at actually building like like an actual live like wrestling game like uh like an actual fighting game where you go in and again you're using nfts but potentially other you know fungible assets are on chain as well in order to sort of train and and set up your your fighter

or your group of fighters it's pretty early um some pretty early ideas there i wonder though like when we go back to that cryptokitties example where it evolves so these nfts evolve so far what you've described sounds like they're nfts as like they're an a single entity that can be traded or something but do these also evolve do they like is there mutations in these right now the base and nba moments do not but one of the interesting things that we've that we're planning on building into flow is not done yet is the ability to sort of add attachments to nfts so one of the ideas is for this mobile game is is that the nft

you could sort of attach like a stats card to it that is specific to that game and so that the nft can involve inside the game without the base nft which is that collectible being changed so it stays the same but it exactly it's is this a bit we talked about this on that episode the erc 721 episode where we actually talked about like adding in-game specifically where you'd have a character and you're like you get a sword or you get a hat or something and it attaches to the nft but here you're saying it only would happen within the game the the base nft isn't affected uh so it would be like an attachment it would be an on-chain attachment so the the nft would have an additional attachment the line we're trying to draw here uh there's two

really important things that we're trying to do here and and maybe if i explain the the philosophy behind it it'll be more obvious what i'm i'm saying how it works one we do not want to put our cells dapper labs in a position where we can add functionality to these nfts that other people could not add right so we don't want to say oh we're building a mobile game and so we're going to add these stats to the base nft and we can update those stats right and if someone else wants to build a game then oh well right so we wanted to make sure that any mechanism we had for enhancing this experience by adding a game was something other people could do as well that was really important to us the other thing is that some collectors are just collectors right if i want to

collect that lebron moment because i love lebron james i don't necessarily want somebody's stats from having played the game i might go buy them you know buy that thing from them but then i might just wipe the game stats and say yeah i'm not interested in that part of it right i i'm not interested in the gameplay part of it i'm interested in the collectible part of it and so it's important to keep those things separate but for example cryptokitties 2 which we're planning to put on to flow 100 uh will will have you know like the genetics and and and the breeding and and all of that stuff yeah exactly do you end up being though so like you've just you've kind of in this episode we started from like the team that built this dap basically that ran on ethereum to the protocol builders so like the

layer one builders but are you in the company itself still kind of act like you must have to hand hold a little bit with some of these larger partners i'm imagining like you still have to act a bit as like the agency to help them understand what is possible like is that how your company is kind of structured a little bit it depends right um the nba was incredibly forward thinking we were talking to nba and they were ready for a cryptocurrency they wanted they wanted a thing now they were open to all sorts of different ideas and they loved our pitch and and they're really happy with the product but they they knew that they wanted something like this ubisoft for example is somebody else we've been working with they have an internal team that reports

directly to the ceo that has the mandate figure out how to make crypto interesting in our games right at that at the ubisoft scale and so a lot of a lot of companies that we're talking to you know and it's not every single company but a lot we do talk to a lot of companies that are like oh yes we've been thinking about this this we want to do this right we've got and you know sometimes it's very small sometimes it's it's a little bit more expensive but they're actually thinking about this and you know i'm not going to name the name of the company because we don't have any sort of deal signed with them but there are a lot of entertainment companies right now who need a new income stream theaters are not operating and you know certain you know

any sort of live entertainment or destination entertainment is like it's a it's a dead business right now and so companies that had previously you know we had talked to and they've been a little bit skeptical about this like digital ownership thing are now like going hmm digital ownership sounds pretty good this is an income stream we can have when everyone's in lockdown and so it is obviously it's a really unfortunate circumstance but it does it is one of those things that's sort of pulling these companies forward into sort of the reality that so many of us are living our lives digitally and so many of us have been pushed into a more digital life but i don't think that's going away right like when the lockdowns go away we're still gonna have a lot of these digital experiences that are gonna become familiar and

a common place for us just to play off anna's question something i'm curious about is is how you balance those priorities and like anna said like you went from building adapt to building a layer one to to now a bunch of other how do you internally organize to like do you have your core dev layer one team also build apps are they different divisions is there biz dev like in a normal company or like how do you actually split those concerns or do you even do that oh no of course yeah it you know we have about 100 employees uh we have a dedicated biz dev team as you implied we have uh developers here we have game designers um who

you know worked in the gaming industry for years who have come and joined us our our core protocol team is you know a bunch of phds and masters theses um uh you know and some just like some really seasoned excellent engineers and so yeah i mean we have the flow team and it's you know got x number of people and we've got the cryptokitties 2 team and it's got x number of people in nba and and dapper wallet which we haven't talked about much but is actually really critical to the experience of people coming in and like you can come and buy an nba top shot on our blockchain with nothing but an email address and a credit card and you you get to feel that true ownership you get to go and participate in the peer-to-peer marketplace but you don't

ever have to feel like you're being forced to learn about crypto and so each of those those groups is working separately and how do you balance it it's entirely around creating value for our end users right so how many of these features did we have to build in the blockchain before we you know we released it publicly versus things that we can incrementally add over time well what do we need for mba to work well what do we need for have enough partners working on it so that we feel confident that this thing is going to be secure and decentralized and so it's not fully dependent on us how many features do we have to build into dapper wallet well how is that onboarding experience for an end user and so

it really is just like how do we create this experience and then you know so so up until this point right up until about july ish the entire focus of the company was how do we get this flagship experience working correctly we have nba top shot we have dapper wallet with its amazing onboarding experience you know backed by circle um so that people can come in and out with usdc and credit card get the core blockchain running get enough partners on board who who are going to be running these nodes are going to be you know who are going to do so professionally and be responsive to us because this is still early software and there's going to be there's going to be iteration in the early days and then you know somewhere around in july we had to

like you know we we like actively made the flip over we're like okay nba is really good that team can optimize it right now you know we've got a team that knows how to take that thing to market now so they're going to keep going through their early access and then you know on unlock the the sign up gate um and just let anyone come in and play there they've got that right dapper is now far enough along that it can build this so now the question is is how do we support the third parties how do we make sure that these other companies can come in how can we make sure that individual long tail developers you know like whether it's you know the guy in his garage or another team like you know the team that which was a quite a small team within axioms and that

built cryptokitties right how do those people come and build something because they're not ubisoft they're not um you know warner music group and make sure that they have the tools that they need make sure that there is a facility for them to integrate with dapper and maybe they don't get credit card payments right because we can't just you know we don't want people to go through kyc and so we can't let them get into crypto but how can we like set it up so that they can at least use it as a normal wallet software that they can buy some sort of uh you know stabilized coin or currency uh that they can use in these experiences and then once they've got that built and we've seen that what they built is cool then maybe we can strike an agreement with them to to let

their their users use credit cards um without you know having to be like a a major rewrite of their of their stuff and so that's the phase we're in right now is how do we make sure that we think of it as a lighthouse right like we we've got this this flagship experience so that people know what's possible so that people know that you know i think the biggest fear for us when we were looking at other blockchains to build on was well what if we picked the wrong one and so a big part of the strategy of making sure that we have these amazing experiences and this great onboarding experience is that yeah there might be lots of successful blockchains but at least ours is gonna have users right um and so if you come and build on our blockchain you're you're gonna have

access to users guaranteed right and so that is just like a huge de-risk for anyone who wants to build on a on a new chain um and it was absolutely critical that we we get to that point it was just interesting i never i hadn't thought about this but the idea of kyc for nfts like the fact that you you maybe aren't allowed to buy the the baseball card or something unless you've done it i know that there's got to be some sort of separation there but that was just an interesting idea well thank you so much for coming on the show it was a real pleasure thanks so much yeah thank you very much and to our listeners thanks for listening thanks for listening [Music]

you