{"id":"KeqaEja3Bew","title":"Whiteboard Series with NEAR | Ep: 26 Holochain","description":"In this episode Illia from NEAR and Eric from Holochain discuss how Holochain uses scalable DHTs as the foundation of their platform.\n\n------ About Whiteboard Series --------\n\nThe Whiteboard Series with NEAR is a set of video interviews with Founders who are building scalable solutions for blockchain.  We deep dive into their story, what they're developing and how it is helping the blockchain ecosystem. \n\nFollow the latest from NEAR Protocol on, \n\nDiscord: https://near.ai/discord\nMedium: https://near.ai/medium\nTwitter: https://near.ai/twitter\nGitHub: https://near.ai/github","channel_name":"NEAR Protocol","published_at":"2019-08-05T00:00:00.000Z","thumbnail_url":"https://img.youtube.com/vi/KeqaEja3Bew/hqdefault.jpg","transcript_text":"hi everyone this is Ilya from near and this means Eric from hollow chain will talk about what is how a chain about do wanna introduce yourself yeah I'm Eric hairspray I'm one of the cofounders of Hall chain and hallo and it's a pleasure to be here thank you for having me great yeah so let's dig in what is called a chain and like why is it different so hollow chain we think of it as a distributed web application platform so you can think of things like aetherium as smart contract up layers but we like to think of hollow chain as the equivalent of something like rails a whole platform for developing web applications in the distributed context that run from the full gamut of what's possible in designing we say whether the locations but really it is a compute fabric for decentralized computing all right so how does like usually a an application build on a whole chain would look like okay so the thing that's interesting about hollow chain is that it doesn't especially if you've been living in the blockchain world and that's what's dear to you and that's what you know you have to shift your mindset because whole a chain is not a consensus mechanism it is not a way of having some data reality that everybody agrees on what whole chain is more like is what we actually know the world to be like everything comes from an agent centric perspective so what whole chain provides is a way of different agents who are playing a game ie an application or a little micro service to agree on a set of rules to begin with and then make plays inside those rules and have them be validated by the community so the agents declare moves in a rule and that would be the chain where you have the chain part where you have a hash chain that starts at the bottom with what we like to call the DNA or the rules of the game the second element in the chain and this is every agent has one of these chains is a record of the agents identity what their address is so there's an ID and then from there on out in the chain it would be the rules of the game as defined in the DNA and so you will have lots and lots of different agents that are doing the same thing DNA ID and then whatever it might be you know let's pretend this is a Twitter clone you might have a tweet that goes in or you may have a follow that goes in to the chain and then what ends up happening is that each one of these things that an individual says gets shared out to a distributed hash table when these get published to the distributed hash table which is made up of other agents around the node around in the in this particular network of this particular DNA that they will validate the move according to the rules that are in the DNA and they will they will then answer requests for those particular moves I'm using the game metaphor here if they validated according to the rules okay so so how does like if there's two agents right agent one and agent two will agent to actually see is this things kind of up there in their chain no see you just said that there's one chain that's that's what you just popped into that mindset there's not one chain this is an agent centric point of view where instead of data centric where you're saying there is a chain which is the reality of everyone there isn't that and this is true of the world okay we've known this anion Stein made this quite clear to us everything is from the perspective of an observer so you can think of agents as observers in the rules making declarations or making making seeing events and declaring events in the world and then what happens in the shared space is somebody seeing that they made a cryptographically signed set of its actions in that world and they can verify them so if it's something like a tweet the only thing you're checking for is is it the person who said they were right is that their identity according to their identity if it's a currency transaction you may be doing a bunch of things like checking history and checking transactions that other people did to make sure that that transaction is valid according to the rules so let's actually say this example of transferring money right how would let's say there's like there's three agents the agent one add/edit they you know send money to to okay this is beautiful because this is right where I want to get to in a data centric world yeah this is what people start to think in their head they create an ontology of there is a thing out there called money and I'm going to move that physical object from one place to the other right that is the idea that we do or at least we keep a record of that but what I'm saying is this is the important thing that if you think of the world as if you think of data as something that exists as opposed to claims and experiences of agents is the thing that exists we create a world in which what we need to do is the block diagram where we need to solve the double spend problem if you don't start with that ontology which is what we don't do in hollow chain if you start with this agent centric ontology what you do is you create this you solve the problem of money a different way you use mutual credit in which what you say is this is my ledger in my and and the transfer of money is not a coin that you have to see where it went and whether it was double spent or not instead what you're doing is you're just entering in the ledger I transacted my account went down by this amount and that person's account went up by that amount and according to the rules I have a credit limit of a certain amount and they can validate that my credit limit is the way it is by looking back at my change so yeah so that's why I'm like I'm just trying to understand so I'm I'm agent three right what what do a query to say how much what's the balance of agent one and two in in this particular case well what you would do is you would look at there you would look at their chain you would get a repentant it a function called balance and then you would be able to call that function balance on a particular agent or on yourself and report it depends how you implement it in the particular application you do so in hollow chain there's no to note messaging and then there's UI that you basically you can think of it as there's an internal communication mechanisms where nodes can talk to each other on that particular network and there's also the UI facing side where the the human user talks to the agent which is the device and and calls functions so you would end up in your application writing if you want to be able to called balance on any particular agent and that's one then you would be able to send a node message that node to node message in which you request the balance and the balance would be you get back there chain you see that it's a chain because it goes all the way back to the DNA and you calculate out their balance and you just see it because you can do that by either getting it directly from them or you can do other things that I haven't gotten into in the way this DHT and hollow chain has linking on top of it but now I jumped really fast and technical and I'm not sure if that's where we're gonna go I can get there if you would like yeah we'll probably get there yeah cool so but to recap yeah the big thing about halogen is that we're a way in which you can create arbitrary applications by specifying the rules of the game in this DNA everybody knows what the rule is of that particular game on one network each DNA the hash of the DNA itself is the network hash and so hollow chain is built on thousands and thousands of networks because you should think of each one of these if I got a micro service they can communicate with each other through what we call bridging and there's a bunch of other technical details in there that's so for people who are like in let's say coming from a theme world like I can actually say that DNA is actually a smart contract it's not very and then each kind of agent is an account and there's a smart contract which kind of tracks or like I mean it's not really an account but it's like you can buy this you can buy you could look at it that way yeah but in the theorem of course what you're trying to do is simulate one computer yeah so yeah I mean here it's like we're not trying to do that what we're trying to do is actually separate that out and understand that these computers actually are decentralized and are distributed and that there are different contract different sub levels yeah there's also different levels of security and different levels of validation that are needed in different context instead of the ultimate blockchain trustless context which carries with it a very high price so you can do you can tune the price of what you do to the context of the application that you're writing that's that's another differentiating and interesting thing it does mean that it pushes work to the developer but a lot of that work is going to end up inside of libraries where you choose the validation that's necessary to your context based on that context and it'll be inside of tons of different libraries for for doing different kinds of things around coalition management and all these other conflict type situations that show up all right this make sense yeah yeah no it makes sense cool so yeah let's talk about how these she's built I'm actually really interested in that part okay like how like how to maintain the DHT as well as how does this agency I communicated each other okay so let's see so when we started what we used I mean really you could use pretty much any DHT you want because distributed hash tables are a technology and you can use different ons when we started we used Kadhim Leah based and we just actually took ipfs is Lib p2p and we used that and got in our protovision that was written and go and we got that up and running but the thing that's slightly different about our DHT and the reason why we didn't stick with that is that we allow when you create one of those nodes and or one of the entries in the chain that's what we call them a chain entries and you publish it to the DHT basically what you've done is you've you have an entry which has some kind of hash and so you're publishing the content and the hash and the entry also has a header associated with it right because that's where the header is and it and and the entry is the content because this is because what the DHT is is the content addressable store what you do off of the DHT is you do gets on the hash the other thing that we do is we allow you to publish links between on to the DHT in which case what you do is you say I'm publishing the link between one hash and another hash of data on the DHT so that is how you would do because the thing that's hard about a DHT is finding data yeah because it's a discovery there is a sparse place so what we've allowed is this notion of creating a graph inside of a DHT where you say there's a base which is a which is some hash and and then a tag and a target which is another hash so you can do you can use the tag to semantically say what the graph relationship is between the base and then when you're doing a get request on the DHT you can get at the content of entry but you can also get a list of the links by tag so you can find out what things are related to other things example back to the Twitter clone example you may want to have follows so you may have a you may create a well-known entry that is related to your or you might let's see what would be a so there's a more complicated way of doing this that's a better way of doing it because you don't want to load tons and tons of actually here let's do this example so let's do the same thing with the Twitter so remember how the second entry on the chain so here's the DNA the second entry is your ID right so if you use the hash of this ID which is just your public key and any metadata associated with that public key if you use the hash of this entry which is well-known everybody can know it as the base then you can link you can as have followers as a tag and you can link to the identity of another agent on the DHT Pena it's like 1 to N or M to n what 11.1 right well it depends on what the content is right because the content could make it 1 to end you can you could do any kind of graph you want if you wanted to do stuff you could put crazy things in the tags we don't really recommend that but probably not the best design principle but that way we can have discovery of concepts in your application in the distributed hash table so that's one of the pieces that's added to our notion of a distributed hash table you can also buy hash of the content query halls about all the tags that are associated with it with that particular base exactly and just for me to understand this tag is associated like here or it's associated with any subsequent item as well the tags are always a base on a target on either end is the hash of an entry on the other end is a hash of another entry because what it's for is discovery of entries on the DHT because remember every particular agent is publishing to the DHT and you can modify this later that that's a question I guess half it goes like if I put like I create ID and then I follow here I want to modify yes very much we do have crud operations on what on links we have delete release we don't have update you can create I mean my main point that the link itself is like a separate item yes it's a separate item that's stored on that the other agent would store associated with the entry that it's also storing because remember what's going on here is that and I didn't say this in the beginning but one of the part of what makes this whole thing scalable and work as a scalable distributed computing this DHT only a subset of the nodes are holding a certain number of the knows yeah I mean if the entries that come in based on a nearness algorithm to between their agent hash and the hash of the entry that you're trying to store so but yes that's related to the to the linking where you can do a get operation on the base or on any entry hash but you can also do a get on the links on that hash to find the other stuff that's there SE and then so ions of known dread let's say I'm also like participating in the Twitter app yeah so I have a DNA I have my own ID I want to know everybody who follows me right so can I query you backwards for how could you do that well I mean you can't except you could do that so we can talk about how there's lots of different ways to manage indexing if it's a small community you could just create a directory and put everything on that well you could create like a hash whose key is directory I mean whose value is directory and then that will be a well-known thing and everybody could look at it that's if you're creating an app for a small community like Slackware you want me to have you know hundred thousand ten thousand people that would be fine that would be sustainable that's getting on the edge of that if you wanted to do much larger scale indexing where you're indexing content like if you're if it's a Wikipedia style app then we have a pattern where we have a separate a whole separate DNA on a separate Network where nodes volunteered to be indexers so you can have distributed indexing and then your app queries the other app the other DNA and and when you publish you also publish to into the indexer as well and then you can do index queries on that and you could use whatever database on the backend to be able to pull the indexing out that's if you need large-scale indexing right but that indexing is not like it doesn't provide is a cryptographic proof was data indexed know you would can you go back and you will find that in the DHT after you're done so they'll tell you like here's a hash that like or here's a bunch of headers you're looking for then we need to go yet check that this is actually like hashes that are inside you might get a bunch of hashes and then you go and you actually use the DHT to get the values back you don't think the content back and if you didn't get a value back then you knew that that entry that was indexed was falsely indexed right and then so when I get a hash like let's say I got this hash I actually need to replay right from the DNA to make sure that this is valid depending on the context yes but if it's a Twitter context does it really matter it's been signed by the provenance of the person who did it that's all you care about you might need to do that so for example in the currency transaction one you would do that every single transaction you replay back to the beginning to make sure or you replay back to a checkpoint or you replay back to some known entry where the somebody also co-signed an entry with a node or a notary there's lots of different solutions on how you could do that depending again on the application context for how you want to make it scalable or how many transactions per second you're expecting etc etc I see sincerely like you can either implement like a state channel where it's like just two people exchanging then they kind of have a record going between them or you can implement you can actually probably implement here on consensus of dozes absolutely I mean so we've got one of our core developers he's been dying to have the few spare hours to go reimplemented Bitcoin on top of college shame because he thinks it would be a fun project yeah and sometimes people do think of hollow chain as just only state channels that's one way of thinking about it and one of the things we've thought that would be fun is oh cool let's use hollow chain as a place to implement your state channels for etherium smart contract and and then we're interested to see how many things would start getting removed because in the end in our experience all you almost all use cases not all use cases but almost all use cases when you do the mine flip from the data-centric to the agent centric point of view you come up with a slightly different way of solving the same problem that doesn't require can consensus the way blockchain solutions do well I guess the question mainly is like getting to the same state between like you do at some point if specially if you're dealing with like money right you do want to make sure that kind of this is something that everybody would also agree on because if you want if you own a mana one if you want to keep moving this like let's say somebody sent you money before you can move this money into somebody else you kind of want to make sure that you know people would agree that you have this money in the first place right so this is kind of even if it's agent centric like you at the end care about yourself and that your payments will get accepted so and that's why I like the question is yeah depending on how you implement it it may take a while it kind of all the sources of where you got this money from yeah well and it depends on in your context how many sources you have to track back to believe that they the ledger accounts that you have are accurate or satisfactory yeah but there's something odd to me about the fact that if I want to have a cup of coffee somebody in China needs to know but it's a valid cup of coffee right instead somebody here in Simon if there's something really weird about this only zero membrane environment so the point here is that when you go in China and you want to buy a cup of coffee there you want to make sure you can do it as well right that's that's where it's like yeah it may be like at any single point when you're buying something like you don't really need world to know but the problem is when you are in that part of the world you also want to know that's the point so you do the validation then you don't do the validation ahead of time they can come back and check so that's a really different point of view then then let's make everything perfect now right this is the agent centric thing it's like oh you're an agent you did a bunch of things now let me go take a look and see if all the context of the people who did things with you well that matches up right that's that seems real to me right now rather than this other way of like let's have one hard-coded reality that exists and and I think the claim that we're making and this is it's really about when you have an architecture that's based on what reality really looks like they're much more likely to get decent solutions at different scales over time and we know that reality looks like lots of agents and lots of viewpoints playing this is wide it is so freakin awesome because you can branch and merge you didn't pretend that there was one code base to from the beginning that has to advance the thing is at the end we built github and we said this is one reality everybody should come here yeah and do you think that that's actually the right way it's supposed to go yeah I'm just can't wait until we watch that change because github is exactly like what al had you might be too young to remember this a o L before there was the web they were these rooms where there was content and it was all siloed inside of AOL and there was another silo inside of Jeannie along comes HTTP as a protocol that allows us to spread that out it's the same kind of thing with github when github turns into a protocol ie a set of DNA in a game that we can play together then we have a different space of what it means to do project management and yes there is this going back and forth between the the centralizing the large-scale the one place to go look at a reality and then back into the agent centric and that's the that's why we're not only agents entering in fact we're we we also might describe ourselves as socio centric because you say things according to your or cording to the rules what you did but then you publish it to the community in the community says yep that looks right to me so okay so then the question I have is if somebody publishes two alternative versions what happens then yeah so so like the or another thing they do is they publish something forward and they say okay I made this transaction then I cut this off my chain and do another one right well you both of these got published to the DHT right so somebody out there is going to see wait the same person and they check the chain and they're like there are two things that showed up inside that chain that should be at the same place and this is clearly a fraudulent player because I can see that that's the case so but but I mean we're you're indexing everything but hash right so here you know to one person I send this hash to another person else you don't you like its most published it's both on the HT but like as the purse as like another agent that observes this right I'm telling him hey here's your the data you looking for is that this - he doesn't send it this is you get this hash by doing a get on the DHT but like what what am I worrying by then so you're like I'm a different engine try it so you query by the house you get back the header well so what is the let's actually come up with a concrete use case because when you keep maybe pay for a coffee you pay for a coffee you know okay so I'm about to write down in my book - and you're about to write down a plus yeah right and so I go and I say give me your chain I know I I say so there's going to be a pre-negotiate there may be a pre negotiation phase where you tell me what the header of your chain is and I do a get and I look on the DHT I'm gonna find something different on the DHT then you just told me but I gave you a header right I gave you this you you will fetch it this just looks good yeah somebody else I mean I just I just went to a different coffee shop and and gave them this header they also said okay so no because what's gonna end up happening is that there's they're gonna find when they do a fetch they will also get the headers back and that they will they'll see that there is a conflicting publish on the network you mean show you somewhere have ID to list of headers index on the HT stored because this is not content addressable right well so here's one of the other things that we're doing for precisely this kind of this kind of situation is we're allowing apps to do header publishing so the header itself has a hash right and so you can know what you can hash the header and so you can know what the headers look like to but how do you index a header like I want pretty much I want to know for agent one two three right what is header without pretty much without asking them so if it's just published headers and it's indexed by the hash of this header which is I need to know that hash all right so I think the reason why I'm getting myself muddled here is because the use case isn't is exactly clear and I'm not describing it in a way that's that it's it's working here okay so let's see if we start again and let's draw this up and make it clear for the use case that you're asking for and let's also actually do it a little bit more carefully so that it shows correctly so let's see here so if let's say that I start out I've got my DNA and I've got my ID all right and so I have a balance of zero and I want to do a transaction with you and so you've got your DNA and you've got your ID and so I'm going to we're gonna have a negotiation phase where I say we're about to make a transaction and you say you're going to make a transaction and so we both sign the transaction ahead of time so we have that what the content of this thing is going to look like beforehand and then it's going to have a header in which you sign something and header in which I that the signature of this entry where you're - what - you know ten dollars for the coffee and I'm plus ten dollars for the expensive coffee all right so what's what is the signature so let's say this ID 1 this is ID - ok right and so then this is the content which shows this is the value of the transaction and of course every one of these entries has headers off of it which have in it the fact that it has my signature and it has the hash of the header in fact actually that's what's linked right you know in any chain and we always know that that's and this is a combination of both of those things right ok so we are preparing this this entry together where we knew that that was what was happening and so I signed this here let's do it like that and because that's the content okay so in this situation now this got published to the DHT so we know that and we know that the starting of the rules of the DNA said that the credit limit is 100 each of us have 100 credit limit so you can see my chain to the bottom and you can see that I'm not overspending I can see your chain to the bottom to know that you're not engaged in other things that I don't care about or that I'm that I don't like and this is fine now we're moving to the next scenario right where we publish know when somebody know there's a third guy yeah id3 so he oh that's fine so this this guy wants to and let's say credit limit is 10 yeah okay it's 10 right so now this this guy wants to pay him as well so he sends him he starts to negotiate from this state so he creates a new header doesn't fit actually this is fun you know I'm gonna do I'm gonna actually have you solve the problem because from this book this is a really interesting exercise so thinking from the agent perspective what do you need to publish to the DHT to actually make this work and what questions is that this is exactly what's great about whole chain is it makes you actually think about the real problem that's necessary for the exact situation you're in okay so basically this is a roll back situation where the credit limit was 10 now I shouldn't be able to go any further what do you need to publish to the DHT to be able to have queried to be able to see that this was a situation that was not according to the rules there's a bunch of different ways to solve this problem well they need to publish so so DHT is content addressable right content addressable and you can publish headers as content if you want to and when you get a hash you can see what header was associated with that hash but just you need to get a hash right yeah but but so you've got hashes we've got linked we've got a link to the HT what do we do with the link DHT to solve this problem yeah so I mean if you have links you're like that's doable pretty much you just publish the link saying this is my last header right and then if you can but you said you don't update links you know you don't update lease you delete links and then you can add another okay yeah so then you just your update you put a link from your ID to the latest to the header of of your chain so this guy on the accepted after he saw that so then there's other ways to if you don't like that if you think that there's problems with network partitioning you can also have notaries well-known notaries if you want in your particular well-known modernise is also network partitioning that's partly yeah that's right that so that hmm yeah that's interesting but you know sometimes one of the ways and we handle network partitioning is by having Sentinel nodes and the central nodes tell us what part of it that is certain percentage of Sentinel nodes open I'm inside a real network because in the true distributed world you don't really know it's always partitioned so it's just about whether probabilistically you think that's the case in context for your application so just from into the timeline here for publishing this link so is like who is waiting for this link to be actually published because this person is yeah so this person waits like he he queries actually a link remember what happens in the end is that this is gonna get published and this is gonna get published and you have the community observing this yes so they will also see that okay and they can validate it as we're saying that everybody else is actually should be like checking only the people who are responsible for storing this data all of the people who are restoring not everybody else but the but the shard of the network that's responsible for the start of the DHT that's responsible for storing that hash by its nearness algorithm all right so that Zen for yeah so this is not like a regular DHT that's that's why I'm like you actually have a lot of extra like oh it's a sort of the DHT I mean Sokka d'emilia you can think of it as shorted because only a subset what holds it but we have a different DHT that we're developing because that the but math is really hard for calculating neighborhoods when you're using a tree and things don't look like they're in the same neighborhood from different vantage points in the in the tree in academia DHT and we really wanted to be able to have a Euclidian geometry for figuring out what the night neighborhood is rather than a non-euclidean one which is really really weird so how do you do it Euclidean the way well we're we're developing something we're calling our DHT it's in development and it's pretty it's interesting we did some prototyping of it it's not completely developed but the basic idea works like this if you take all the hashes of the nodes and you put them on a circle and this is I might be getting this wrong because I'm not the main engineer on this but this is it's pretty close to what it is and you'll get the idea about how to do this so if you think about any particular agent and let's put that line there as an agent agents hash then you can draw an arc on this circle as actually it should be they should be equal in length they're pretend that's the same this is the arc of all of the hashes of the entries that this agent says it's responsible for right and then you have a second arc which is the arc of all of the agents who it indexes right so I know that there are other agents over here and I index their existence and they have their own arcs inside and their own index arcs yeah and so your neighborhood is just an art is these arcs that you're holding and that's how you can do that and then the other thing you do is you also put you index some random things out out to the other side so that you can get complete coverage of the circle if you if you can't find someone and that's that's the way you can get there it'll connect right around the other side and the thing that's really nice about this way of doing the DHT is that you can expand and contract the arcs dynamically according to what the population is on the in this space this is I think a 32-bit we compress the hash down to 32-bit so we can do the math even faster and collisions are fine okay so what is the like what is this hash of it this is the hash of the public key well this is the hash of the and this is not no it's not even a hash it is the public key it's just a public key of the node of the node so people can grind and like try to end up in the same neighborhood yeah you can do that but the problem with that is that it only takes one person to find out that you're a bad actor to then publish what we call a warrant and then get you block list from that particular network so yeah you can do grinding you can do there there are some particular places where it's some civil defects are are we're susceptible to that in most places but for the most part what we see is that that would be actually really hard because it just takes one good actor to show a bad actor yeah but you can Theory crawl the current state right and find like if there is a neighborhood which is what you're saying you will dynamically actually expand the circles and like trade reading like somewhat and then the other thing about this is that the way we're implementing this is that we have like a second layer of this where the where the hashes this is another interesting thing about this DHT where instead of the agent being so you think of the agent as one portion and then what it's the hash of the content these things is what's being referred to in arc you can do the same thing where with the nodes for discovery of nodes where the agent has this ring but what's in the hash is the transport address there's a transfer errors I see and so that's how we can actually also find nodes on the DHS it's a two-level you store in DHT store old thousand nodes just transferred addresses yeah so we use the same pattern of a DHT for finding other other agents on the node as we do for finding content it's just two layers so when you want to find something first of all you go and you find the the public key of the address and then you go and you look fit the next layer down to find the transport ask for that race and revenue query that interesting and then so then you said so how the validation how does the validation happen actually so well the validation happens is whenever you're doing a publish and you found out who was in your neighborhood who needs to store it you published to them directly because by it that's the the meta rules of the game then they go and they run the DNA on and run whatever the rules are locally on their node to see if the data that you're publishing follows and that may involve doing gets there's a there's another there that may involve doing gets on the network to find out whether things are true but there's another interesting thing we do is we have a validation package that gets sent or can be queried for during that during that validation phase so that you can because what is necessary to do validation is also contact specific so you can query back the original node you can get the full chain of the original node you could query and and see whether it fits into the rules of the game so how expensive that sounds like pretty I mean it's just chained been going on for a while right like and somebody publishes and other know them that it could get very expensive and for if and in in the context where it would get expensive then you would do other things to make it cheap that would be an applicant like I was saying there would be checkpoint nodes where you summarize the state and you know that you only have to go back that far because it's been validated by other nodes and you can validate that checkpoint things like that I mean and there's a theory can use some consensus to checkpoint everything you could no absolutely you could use you could use consensus and we're not against that at all I mean there are some there are some really reasonable use cases for for a block change I mean there are other there are other efforts out there that have the same kind of agent centric approach and one of the things that they end up doing is using things like a blockchain for finding notes just no discovery and because you publish that to that blockchain and you go find that that's one one case that is somewhat reasonable I mean that's I mean a state channel is pretty much that it's like you're used blockchain it's kind of your checkpoint and then you just state channels for like exchange of information between peers there's just this is more like generic way of exactly so it's turning it on its head it's saying we start from state channels and then if you need that maybe that's a special case where you use it where it's actually okay to spend that much power or that much whatever the proof of X is and whatever consequences come from that proof of X context-specific all right interesting had another question about DHT but I kind of skipped my mind what do you guys what's his DNA is like what's it's okay so now it's a new technology exactly so in our prototype the original prototype that I wrote what we did is we had two two interpreters in there because that's what I found easily in the Ingo libraries we had a lisp interpreter and we had a JavaScript interpreter and you could write your DNA in any one of those languages and then it would run because the whole point is it just needs to be hashable so everybody knows they're running starting from the same hash then what we decided is that we wanted to use we did the flip to rust for all the reasons that one flips to rust because of its speed and its quality and we hit the same thing that everybody hits with rust his learning curve which was a problem but the big deal was that we could use wasum we could use Waze me from parody to have a generic deterministic virtual virtual machine engine and then we could take advantage of all the new languages that would end up compiling to Wasson which we knew would be coming down the pike so we have a was an interpreter that we compile everything to currently people write their DNA's in rust there's an H DK for all the basic functions that are that you call it called hdk call the chain development kit exactly yeah I just spit this out so that's our hdk and and we're looking forward to HD case in other languages we have one of our one of our devs is real haskell enthusiast and so she's building an HD k4 haskell I just found out this weekend that the assembly script people have moved a long ways where we actually working was I'm very closely to Arya yeah cool yeah because we also have assembly right right and so we're excited about that and actually we're hoping that somebody in the community will build the web simulator case that's the way we wanted to go and that was the initial way that goes yeah yeah that's cool so we have a bunch of other stuff too you know we have a testing environment that allows you to describe scenarios and create like in virtual agents and then do do the scenario run the scenario see what happens so you bet you basically run through this process and you create tests for that watch if they fail or don't fail and so there's there's a whole bunch of tooling that we're building alongside everything to make it easy for folks to develop in this and it's been pretty fun to watch I mean we started out with our developer our dev camps that were online death camps and people really hit the wall of rust but then each time the tooling has come up and it's like oh it's actually not that hard because in the end what goes into your DNA is probably ten five two percent of your application exactly and so most of it is a front-end UI place where you're assembling bunches of these different DNA's together and into the user interface that you want so like we have a chat app for example where each one of these chains is a channel and that allows you to have really private real private channels and that's all that it is and there's another chain that's a comment chain and they're linked together by DP ki DNA which is the one that allows you to be doing replication and issuing of identity associated with I mean that that lets you actually create replication keys that you can then use if you need to revoke a key because key gets lost and so on and then where there's a personas app that does identity stuff that you can then use across different DNA's that you could you can say hey I need this little bit of persona data that's on that chain or I need a zero knowledge proof of that data that's on that on that particular chain and get a little value out of it so it's it's from the point of view of composability it's really fun platform yeah that's interesting yeah so pretty much the combination actually happens on the front end right mostly because like the DNA itself has just like describes data transition rule for specific kind of bit so that that is true and there is an H DK function which is bridge so you can you can have a DNA that requires the existence of other DNA is to be able to call across to it how would that work so there can be a function when you're running so it so what the DNA describes its validation rules and it also describes they can require a fetch other data well the other thing that it describes is what is the interface to for the user interface to call into this particular DNA right and so if you do a function that would that if you call a function what like post in your Twitter app that function may do a call to another DNA to get some value around your the name that's associated with that account because the name actually comes from the personas app the posting has doesn't even know who what name is it is there that comes from another app so we can do a bridge call to the personas app to get the name to put it into the text for example how does a validation happens on the DNA side right so if let's say this example where you have a let's say it's a chat right channel and then you have a personas so the validity of this message is the only one that has like something from persona some information provided from personas right that's what you're saying well what I'm saying is that if there is so if the DNA includes functions that are called that actually do the addition of an entry onto the chain right yeah so so the consequence yeah so post so that's a function that's available message etc so there would have in this particular app there would have been probably at initialization time there would have been a time when you went to personas and you got the name or some value or an avatar actually maybe this is not a good example because you probably end up doing that later but the validity of that well it depends on what you need to validate with so let's say you want to post a message and you want to make sure that whoever posted message has a persona in the personas app okay so like how does this validity function looks like for the post to actually validate that another app contains this information so can you inside the DNA can you fetch other items from do you validate and like how much can you do there in a way so that's a great question it's a complicated thing what what what's going on with that is that invalidation we have two different stages because it's in there there's two different types of validation essentially there's the preconditions of validation and then there's the deterministic aspect of validations so for example one of the things that you might want to validate is that a particular link exists right but that is a non-deterministic fact so you can't run the final validation rules until you have gathered all the information that you need that may be non-deterministic because the validation rules themself have to be deterministic and so there is there are two different phases of validation and so in one you can do fetches and you can do things like check to see if links exist and if they exist if the preconditions exist then you can actually do the final validation which we'll call it which will commit something into a chain so yes the answer your question is yes I'm just giving you a little bit more context because of what's true about the world there are preconditions in validity and those are complicated things and they may fail and then there are things that are absolutely it need to be absolutely true that are deterministic and both of those different parts of validation are encoded into the DNA so then if let's say this precondition fails later when somebody else wants to validate then just becomes a valid right well it becomes valid well they would stop validating it but I think that's a complicated case because I think what you in that case you would say no it was valid at the time because you could see that somebody else validated it yeah depending on the context you may or may not allow that so who who will be did who will be deciding the context because something we're going back to this example right like at some point there was a link that ends as guys but then I destroyed this link created a new link well you can't just destroy links they don't go away forever you can always look at the history and see if they were there so the the links are marked as deleted because it is an append-only log so you can always go back and reevaluate the context at the time that it was done so this would this would be a case like somebody stopped doing something and they're not even online you can still go and check where there are other people on the DHT or have that data and you can ask for the deleted links and see what they were at that time how do you store link's okay so now you're asking implementation questions we have a thing that we call we have two things we have a cast our content-addressable story that we use for storing most everything and on top of the store on top of the cast we have something called an EI VI which is an entity attribute value index store which kind of looks like a DHT with links it's the same kind of thing mirrored inside our storage and I mean I'm there EA V's are pretty typical data storage systems for sparse data they've been used for medical data for a long time and the index is the thing that allows you to find what was the latest one by history so that you can do like if you have a hash you put something in it yeah I mean it looks exactly like that thing that I did with the the post in the target but not again now I'm really jumping into a part that may be more than what you were asked know I'm actually I'm actually interested so you have links which connect like you say you have a pendant append on the ledger off links which connect pretty much to hashes right there's a tag so you can on each individual node we use a similar pattern inside a content addressable store for storing all the data that we need to store so we can store a link using the same pattern in our in our store but there's also an index on top of that that allows us to know what was the latest one and so you can basically I mean inside the store store previous link pretty much under the same like yeah you say you start a link to a previous link yeah I mean basically we have a let's see we were using tombstone sets I don't know if you're familiar with that so this is like so there's this whole other part of how you manage eventual consistency I didn't even mention that early on this is an eventually consistent DHT because different parts of the network are going to get it and it will propagate over time and so but in any event consistent state system you're going to need to have there are going to be complex and so we're building in this isn't implemented yet but we're planning for building in CRD t's content the conflict resolution data types and there are a bunch of different data and so you can actually say what the rules are for what how to resolve the conflict when the data shows up and so yeah I'm just jumping for it'll but indeed in our in our ABI content-addressable store and again I'm not the person who's coded all of this so at this part I may be getting slightly wrong but that we do stuff exactly like we have a hat we restore something whose hat whose content is the word deleted and then on deleted it points to all the links that were deleted and but it's base it has I think that's the way they do that no no because the problem is any of this is that you can have a double like double hat on on the on the links and like any upend on the index I it's the problem always is like having two of append-only because of either conflict or malicious attack so that's why I'm going there like I'm like we're distilling it from but but what you're seeing is the the thing we just did here you can do inside your content addressable store as well because you if you if you basically in your content addressable store on your local machine you can do the exact same thing that we did here you can store a link to what the current head is the thing that's current and from your experience but but you know we have two sets of nodes right which will have different hat and then they'll like update each other right and so then you have wait no right now I was talking about the a node within itself so that's not that situation this situation is the one where you figure out using the by by doing the link here right well I'm and like let's say you did this link here right and then you just like sent the different link to different like you created to like 1-10 and one zero and you created two links and you send it to different nodes but I guess yeah but remember these things are all published and then they get watched by the other nodes you can always do that but the thing is it's being validated by other nodes on the network what would be fun actually is to for you is to have a one of these sessions with the guy who's actually designing our new with credit currency who's gone through all of the different permutations of all the different failures on this because I just have a general knowledge of how that's done and I just always know that it's possible and so my trick was gonna get you to figure it out because I knew you could but but indeed but there's a lot of other there are actually there's this thing called the Finny attack and when you do neighborhood stuff there's a bunch of other use cases but what's interesting is from this approach of in the agent centric approach there always seems to be a solution that's appropriate for the context so I keep saying that appropriate for the context because that's what matters so much if we want to have any scalable decentralized solution has to be scalable according to the context I mean like it's just like I'm just deciding that for the purpose of our viewers right that's that's a key key thing for us to know and that's like a message that I want to keep getting across and and it's important because people will say well but what about blah yeah that's a great question fantastic questions now think about it from an agency point of view what about it how do we solve that because that's actually the way it were the world works yeah I mean I think like it's especially fits very well very specific like I mean a pretty big set of use cases and then I think like for something like payments it is something with generic consensus is just easy you create the world and you and you believe that things get transferred from one place to the next and you want that to exist in the digital world yep you need that go ahead that's fine if you've got a double spend problem and it's trust list there's no membranes and you've got double spie it's been go do that great yeah but yeah if you unlike Twitter style or something you know if you want apart everything everything else in the world and but and the other thing is the actual mechanics of doing a mutual credit instead of coins it's doable at scale with the same patterns it's just a different kind of validation that ends up happening and it's happening between the subsets of people so here's the difference there's a lot of validation to handle these header things there's a lot of different cases in edge cases you have to pay attention to but what does end up happening is you're still only doing it between a small subset of the nodes on the network in the blockchain world everybody has to agree for that block to get chained so you end up having that big long clock cycle that's in the basic pattern is that clock cycle would be appending up a blocks and creating one reality this doesn't do this it does the validation in the subset of the spaces that are needed I mean we're doing sharding so we are doing subset but yeah I I in general I agree with you actually so the question I had was you mentioned that Eve if somebody observes the conflict right let's say you do observe like two conflicting or simple get let's actually use a really benign case which is a network partition so somebody like I mean in the Twitter case you might have this where somebody says this is my my Twitter handle and they say this is my Twitter handle it was partitioned it comes back together you have two people have the same handles you want to have a rule that says you can't have the same handle okay yeah is that a use case that's I mean that's interesting yeah I'm more interested in like non benign not benign cases well it's a matter of fact all non benign I think they actually match yeah they're theoretically like they're theoretically visible yeah the faults are the same yeah well plus it's just the emotions are different well it's also I mean the question is do you have a different mechanism of punishing people who are actually actively trying to oh do you want you want me to get into that for a little bit sure yeah okay so when you detect things that are against the rules there's a whole layer of what we call warrants that can be issued so if you detect something that's it that's against the rules and you believe that it's maliciously against the rules according to the rules then you can issue a warrant which is you publish on your chain a warrant that so-and-so is a bad actor and according to the rules of the particular game there may be different consequences you may have three three chances and you're out and if the third publish of the warrant happens or if the warrant is the publish of the the evidence of the three bad actions yeah then what the other agents can do is you just block list that node from the network and that can get pushed pretty far down the stack in the implementation that we're working on where it can go it can get block list all the way down to the transport layer because we can pass that into the networking module which says okay anything coming from this node is likely to be bad because I the rules of the game so you use the same system and other people can verify and validate the warrant as well because you have to do that because the warrant you could publish that but this is an application per application pretty much yes it's per application but notice that if like if my node got hacked and I've got 10 applications it because it may end up getting multiplexed on the transport layer then it's likely that the other ones are hacked too and it depends again context wise you may say nope and also yeah do you see what I'm saying yeah so yeah I'm just trying to understand like if if one node is it has like 10 applications running right one is applications as malicious all but like all of the other users of this application ban it but then other applications like this does information between application propagate or not that's kind of a question like you said you have like an extra layer right of add address so there is an eraser oh there's an eraser so let's go - lets go - a little architectural design maybe is that useful sure yeah this is this the way we want things to go I mean you know it's it's the way you want it to go and I'll just ask questions but so we have this thing called a conductor okay and the conductor is a kind you can think of it as the virtual machine host like it's the it or the what is it the hypervisor you could think of it about that way and so it basically runs instances of different DNA's yeah right and it manages the any bridging that needs to happen between them and then the other thing that it does is it also spins up an instance of our networking code right and the networking code can therefore it can multiplex between different DNA's so that we don't have to throw up in a port for if you because you may have a hundred or more and right and so then it goes to another conductor with a networking side and that goes in like that and then that that communication can go to the different dnase right so your question is if one of these is a bad actor because this particular agent got compromised you probably do want to shut the whole thing down right and and it's this network that there's two layers of the IDs I'm monster than so this guy has so let's called DNA one DNA to DNA one DNA 2 and this has DNA too and it's kind of this guy so this one is malicious so this guy bands bands him will key propagate to this note 3 write the information that this note is malicious even though this guy they are connected right they connected about yeah so so basically these networks remember when I said there was two different layers of the transport so there's the idea of there's the node ID which is at this level there's the DNA ID that's at this level there's a transport ID that's at this level so per DNA you can make a decision about that do you want that to like is your warrant DNA specific or is your warrant node specific I'm pretty sure we're gonna have to do that I mean a lot of this part isn't complete and in the development of it because this is where the phase that all of us are in but but there are a bunch of there are cases where indeed right if this one is malicious you would you would propagate that this network has been compromised and that's a good thing because then this one is saved from whatever other malicious things that might be happening that way I mean it could be it could be denial of service attacks which are DNA independent yeah exactly I mean pretty much if I would be implementing this I would actually have just DNA zero which everybody runs which is kind of yeah well so the DP ki the distributed public key infrastructure DNA is similar to that because pretty much everybody's needs to have a way of revoking keys and getting keys back in and there's a bunch of other things that'll be like that there's there's the App Store where or the DNA store which which publishes other DNA s and most people will be likely running that most people will likely be running some version of a personas DNA there's a bunch of things that a lot of people will be running it's just like on your UNIX box how many processes show up that everybody's running similar all right handy has it part I should cover I mean it's this is just fine I we just ramble around inside the space of code I don't know what you're I mean you've got experience of what's been valuable to your viewers I'm happy to answer any questions and ramble into wherever I guess I mean one thing is like what's a incentives structure here in general well the incentive structure here in general is the most important incentive structure you host your data yet you have a very very high incentive to host your data plus a little bit more to be part of the game so your shard of the other space it's deeply communal in that sense like you have it you have all the incentive in the world to host your data so you have all your data it's on your chain so pretty much is the same because this is like it's a distributed storage you store your data in it and then you like what's what so ever held on like like I start one gigabyte how much of other people's data aftering depends on the game you're playing right so you choose the game and in that it's up to you to decide whether you want that or not if you're doing Wikipedia how much do you need to store like and we've actually somebody in our team did a little bit of math about how many if you store one page of the Wikipedia and what how was it you might I think you we we needed something like everybody needs to store three pages of the Wikipedia and then if there were a million users or five million users and then the Wikipedia stored so times five times ten overhead for almost every single app it's in its it is not even I mean so yeah let's even say it's two orders of magnitude you're pretty much done it and of course you know it'll depend on the on the application that you're running right and what how much of it I mean there are plenty of applications where everybody will store everything because the your your running of an application with a small team that's you want your calendar and your shared hacking DS and your shared spreadsheets everybody shares a copy of everything and that's fine and it's that's it yeah the question is like mostly around like if it is actually used for data storage like I mean the computer is a good example which is like it is it is a relatively large data set I mean that large it's difficult if it was the Internet Archive which I found out is in the petabytes that's big and also if you were doing trying to do a YouTube if you were trying to run a YouTube app well you know that everything you would do here you would do we actually had somebody sharding up video and writing a DHT in which the chunks of the video were were distributed around and then could be pulled down in and and reassembled just like any web torrent type thing I don't know how about how that we're going might scale actually really beautifully because you have micro channels instead of thinking that there's all of YouTube there there's micro channels of YouTube in people store the part that's important to them I think it's it's scale is actually really interesting way yeah and I mean like normally its overhead just like 5x anyway yeah like you know Google stores it in like three data centers and one day the center starts two more copies so right right so here you may have even higher you may have even higher over a higher redundancy yeah I mean here you have a higher that's more question of higher overhead like Madonna City Councils overhead yeah alright yeah it's really cool interesting yeah I think we good all right yeah thanks a lot nice to meet you check out call a chain I guess what's the best resources to learn well you can always go to whole chain org you can go to the github repo github slash hollow chain there's hundreds of repos in there of different parts of the project I think hollow chain rust is the main repo where core is being built out of right now and you can always go to hollowed-out host which is the big app space that we're the premier use of hollow chain that is what launched the hollow token and in in the idea behind that is to connect the current web to a world where all of us are doing only this and so it's a hosting app built on top of hollow chain you can look at that at hollowed out hosts enjoy yeah thanks","transcript_synced_at":"2026-11-04T04:28:56.235Z","segments":[{"start_seconds":3,"text":"hi everyone this is Ilya from near and this means Eric from hollow chain will talk about what is how a chain about do","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3s"},{"start_seconds":11,"text":"wanna introduce yourself yeah I'm Eric hairspray I'm one of the cofounders of Hall chain and hallo and it's a pleasure","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=11s"},{"start_seconds":20,"text":"to be here thank you for having me great yeah so let's dig in what is called a chain and like why is it different so hollow chain we think of","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=20s"},{"start_seconds":29,"text":"it as a distributed web application platform so you can think of things like","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=29s"},{"start_seconds":37,"text":"aetherium as smart contract up layers but we like to think of hollow chain as the equivalent of something like rails a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=37s"},{"start_seconds":45,"text":"whole platform for developing web applications in the distributed context that run from the full gamut of what's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=45s"},{"start_seconds":52,"text":"possible in designing we say whether the locations but really it is a compute fabric for decentralized computing all","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=52s"},{"start_seconds":61,"text":"right so how does like usually a an application build on a whole chain would look like okay so the thing that's interesting about hollow chain is that","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=61s"},{"start_seconds":69,"text":"it doesn't especially if you've been living in the blockchain world and that's what's dear to you and that's what you know you have to shift your mindset because whole a chain is not a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=69s"},{"start_seconds":79,"text":"consensus mechanism it is not a way of having some data reality that everybody agrees on what whole chain is more like","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=79s"},{"start_seconds":86,"text":"is what we actually know the world to be like everything comes from an agent centric perspective so what whole chain","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=86s"},{"start_seconds":93,"text":"provides is a way of different agents who are playing a game ie an application or a little micro service to agree on a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=93s"},{"start_seconds":101,"text":"set of rules to begin with and then make plays inside those rules and have them be validated by the community so the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=101s"},{"start_seconds":108,"text":"agents declare moves in a rule and that would be the chain where you have the chain part where you have a hash chain","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=108s"},{"start_seconds":115,"text":"that starts at the bottom with what we like to call the DNA or the rules of the game the second element in the chain and","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=115s"},{"start_seconds":124,"text":"this is every agent has one of these chains is a record of the agents identity what their address is so","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=124s"},{"start_seconds":131,"text":"there's an ID and then from there on out in the chain it would be the rules of the game as defined in the DNA and so you will have lots and","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=131s"},{"start_seconds":139,"text":"lots of different agents that are doing the same thing DNA ID and then whatever it might be you know let's pretend this is a Twitter","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=139s"},{"start_seconds":147,"text":"clone you might have a tweet that goes in or you may have a follow that goes in to the chain and then what ends up","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=147s"},{"start_seconds":155,"text":"happening is that each one of these things that an individual says gets shared out to a distributed hash table","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=155s"},{"start_seconds":163,"text":"when these get published to the distributed hash table which is made up of other agents around the node around","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=163s"},{"start_seconds":171,"text":"in the in this particular network of this particular DNA that they will validate the move according to the rules that are in the DNA and they will they","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=171s"},{"start_seconds":180,"text":"will then answer requests for those particular moves I'm using the game metaphor here if they validated according to the rules okay so so how","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=180s"},{"start_seconds":189,"text":"does like if there's two agents right agent one and agent two will agent to actually see is this things kind of up","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=189s"},{"start_seconds":198,"text":"there in their chain no see you just said that there's one chain that's that's what you just popped into that mindset there's not one chain this is an agent","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=198s"},{"start_seconds":206,"text":"centric point of view where instead of data centric where you're saying there is a chain which is the reality of everyone there isn't that and this is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=206s"},{"start_seconds":214,"text":"true of the world okay we've known this anion Stein made this quite clear to us everything is from the perspective of an observer so you can think of agents as","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=214s"},{"start_seconds":221,"text":"observers in the rules making declarations or making making seeing events and declaring events in the world and then what happens in the shared","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=221s"},{"start_seconds":230,"text":"space is somebody seeing that they made a cryptographically signed set of its actions in that world and they can","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=230s"},{"start_seconds":238,"text":"verify them so if it's something like a tweet the only thing you're checking for is is it the person who said they were right is that their identity according","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=238s"},{"start_seconds":245,"text":"to their identity if it's a currency transaction you may be doing a bunch of things like checking history and checking transactions that other people did to make sure that that transaction","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=245s"},{"start_seconds":254,"text":"is valid according to the rules so let's actually say this example of transferring money right how would let's say there's like there's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=254s"},{"start_seconds":263,"text":"three agents the agent one add/edit they you know send money to to","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=263s"},{"start_seconds":271,"text":"okay this is beautiful because this is right where I want to get to in a data centric world yeah this is what people start to think in their head they create","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=271s"},{"start_seconds":279,"text":"an ontology of there is a thing out there called money and I'm going to move that physical object from one place to the other right that is the idea that we","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=279s"},{"start_seconds":287,"text":"do or at least we keep a record of that but what I'm saying is this is the important thing that if you think of the world as if you think of data as","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=287s"},{"start_seconds":295,"text":"something that exists as opposed to claims and experiences of agents is the thing that exists we create a world in which what we need to do is the block","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=295s"},{"start_seconds":303,"text":"diagram where we need to solve the double spend problem if you don't start with that ontology which is what we don't do in hollow chain if you start","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=303s"},{"start_seconds":311,"text":"with this agent centric ontology what you do is you create this you solve the problem of money a different way you use mutual credit in which what you say is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=311s"},{"start_seconds":320,"text":"this is my ledger in my and and the transfer of money is not a coin that you have to see where it went and whether it was double spent or not instead what","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=320s"},{"start_seconds":328,"text":"you're doing is you're just entering in the ledger I transacted my account went down by this amount and that person's account went up by that amount and","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=328s"},{"start_seconds":334,"text":"according to the rules I have a credit limit of a certain amount and they can","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=334s"},{"start_seconds":341,"text":"validate that my credit limit is the way it is by looking back at my change so yeah so that's why I'm like I'm just trying to understand so I'm I'm agent","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=341s"},{"start_seconds":349,"text":"three right what what do a query to say how much what's the balance of agent one and two in in this particular case well","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=349s"},{"start_seconds":358,"text":"what you would do is you would look at there you would look at their chain you would get a repentant it a function","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=358s"},{"start_seconds":368,"text":"called balance and then you would be able to call that function balance on a particular agent or on yourself and report it depends how you implement it","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=368s"},{"start_seconds":376,"text":"in the particular application you do so in hollow chain there's no to note messaging and then there's UI that you basically you can think of it as there's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=376s"},{"start_seconds":384,"text":"an internal communication mechanisms where nodes can talk to each other on that particular network and there's also the UI facing side where the the human","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=384s"},{"start_seconds":393,"text":"user talks to the agent which is the device and and calls functions so you would end up in your application writing if you want to be able to","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=393s"},{"start_seconds":400,"text":"called balance on any particular agent and that's one then you would be able to send a node message that node to node message in which you request the balance and the balance would be you get back","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=400s"},{"start_seconds":409,"text":"there chain you see that it's a chain because it goes all the way back to the DNA and you calculate out their balance and you just see it because you can do that by either getting it directly from","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=409s"},{"start_seconds":416,"text":"them or you can do other things that I haven't gotten into in the way this DHT and hollow chain has linking on top of","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=416s"},{"start_seconds":425,"text":"it but now I jumped really fast and technical and I'm not sure if that's where we're gonna go I can get there if you would like yeah we'll probably get there yeah cool","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=425s"},{"start_seconds":433,"text":"so but to recap yeah the big thing about halogen is that we're a way in which you can create arbitrary applications by","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=433s"},{"start_seconds":440,"text":"specifying the rules of the game in this DNA everybody knows what the rule is of that particular game on one network each","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=440s"},{"start_seconds":448,"text":"DNA the hash of the DNA itself is the network hash and so hollow chain is built on thousands and thousands of networks because you should think of","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=448s"},{"start_seconds":457,"text":"each one of these if I got a micro service they can communicate with each other through what we call bridging and there's a bunch of other technical","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=457s"},{"start_seconds":465,"text":"details in there that's so for people who are like in let's say coming from a theme world like I can actually say that DNA is actually a smart contract it's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=465s"},{"start_seconds":474,"text":"not very and then each kind of agent is an account and there's a smart contract","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=474s"},{"start_seconds":481,"text":"which kind of tracks or like I mean it's not really an account but it's like you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=481s"},{"start_seconds":486,"text":"can buy this you can buy you could look at it that way yeah but in the theorem","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=486s"},{"start_seconds":494,"text":"of course what you're trying to do is simulate one computer yeah so yeah I mean here it's like we're not trying to do that what we're trying to do is actually separate that out and understand that these computers actually","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=494s"},{"start_seconds":502,"text":"are decentralized and are distributed and that there are different contract different sub levels yeah there's also","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=502s"},{"start_seconds":510,"text":"different levels of security and different levels of validation that are needed in different context instead of the ultimate blockchain trustless context which carries with it a very","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=510s"},{"start_seconds":518,"text":"high price so you can do you can tune the price of what you do to the context of the application that you're writing that's that's another differentiating","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=518s"},{"start_seconds":527,"text":"and interesting thing it does mean that it pushes work to the developer but a lot of that work is going to end up inside of libraries where you choose the validation that's necessary to your","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=527s"},{"start_seconds":535,"text":"context based on that context and it'll be inside of tons of different libraries for for doing different kinds of things around coalition management and all","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=535s"},{"start_seconds":543,"text":"these other conflict type situations that show up all right this make sense yeah yeah no it makes sense cool so yeah","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=543s"},{"start_seconds":552,"text":"let's talk about how these she's built I'm actually really interested in that part okay like how like how to maintain","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=552s"},{"start_seconds":561,"text":"the DHT as well as how does this agency I communicated each other okay so let's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=561s"},{"start_seconds":569,"text":"see so when we started what we used I mean really you could use pretty much any DHT you want because distributed","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=569s"},{"start_seconds":577,"text":"hash tables are a technology and you can use different ons when we started we used Kadhim Leah based and we just actually took ipfs is Lib p2p and we","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=577s"},{"start_seconds":584,"text":"used that and got in our protovision that was written and go and we got that up and running but the thing that's slightly different about our DHT and the reason why we didn't stick with that is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=584s"},{"start_seconds":593,"text":"that we allow when you create one of those nodes and or one of the entries in the chain that's what we call them a chain entries and you publish it to the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=593s"},{"start_seconds":601,"text":"DHT basically what you've done is you've you have an entry which has some kind of hash and so you're publishing the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=601s"},{"start_seconds":609,"text":"content and the hash and the entry also has a header associated with it right because that's where the header is and it and and the entry is the content","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=609s"},{"start_seconds":617,"text":"because this is because what the DHT is is the content addressable store what you do off of the DHT is you do gets on the hash the other thing that we do is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=617s"},{"start_seconds":626,"text":"we allow you to publish links between on to the DHT in which case what you do is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=626s"},{"start_seconds":633,"text":"you say I'm publishing the link between one hash and another hash of data on the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=633s"},{"start_seconds":640,"text":"DHT so that is how you would do because the thing that's hard about a DHT is finding data yeah because it's a discovery there is a sparse place so","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=640s"},{"start_seconds":649,"text":"what we've allowed is this notion of creating a graph inside of a DHT where you say there's a base which is a which","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=649s"},{"start_seconds":654,"text":"is some hash and and then a tag and a target which is another hash so you can","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=654s"},{"start_seconds":664,"text":"do you can use the tag to semantically say what the graph relationship is between the base and then when you're doing a get request on the DHT you can","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=664s"},{"start_seconds":672,"text":"get at the content of entry but you can also get a list of the links by tag so you can find out what things are related to other things example back to the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=672s"},{"start_seconds":681,"text":"Twitter clone example you may want to have follows so you may have a you may create a well-known entry that is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=681s"},{"start_seconds":690,"text":"related to your or you might let's see what would be a so there's a more","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=690s"},{"start_seconds":699,"text":"complicated way of doing this that's a better way of doing it because you don't want to load tons and tons of actually here let's do this example so let's do","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=699s"},{"start_seconds":708,"text":"the same thing with the Twitter so remember how the second entry on the chain so here's the DNA the second entry is your ID right so if you use the hash","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=708s"},{"start_seconds":715,"text":"of this ID which is just your public key and any metadata associated with that public key if you use the hash of this entry which is well-known everybody can","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=715s"},{"start_seconds":724,"text":"know it as the base then you can link you can as have followers as a tag and","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=724s"},{"start_seconds":731,"text":"you can link to the identity of another agent on the DHT Pena it's like 1 to N or M to n what 11.1 right well it","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=731s"},{"start_seconds":740,"text":"depends on what the content is right because the content could make it 1 to end you can you could do any kind of graph you want if you wanted to do stuff you could put crazy things in the tags","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=740s"},{"start_seconds":748,"text":"we don't really recommend that but probably not the best design principle but that way we can have discovery of concepts in your application in the distributed hash table so that's one of","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=748s"},{"start_seconds":757,"text":"the pieces that's added to our notion of a distributed hash table you can also buy hash of the content query halls about all the tags that are associated","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=757s"},{"start_seconds":765,"text":"with it with that particular base exactly and just for me to understand this tag is associated like here or it's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=765s"},{"start_seconds":774,"text":"associated with any subsequent item as well the tags are always a base on a target on either end is the hash of an","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=774s"},{"start_seconds":782,"text":"entry on the other end is a hash of another entry because what it's for is discovery of entries on the DHT because remember every particular agent is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=782s"},{"start_seconds":790,"text":"publishing to the DHT and you can modify this later that that's a question I guess half it goes like if I put like I create ID and then I follow here I want","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=790s"},{"start_seconds":798,"text":"to modify yes very much we do have crud operations on what on links we have delete release","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=798s"},{"start_seconds":807,"text":"we don't have update you can create I mean my main point that the link itself is like a separate item yes it's a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=807s"},{"start_seconds":814,"text":"separate item that's stored on that the other agent would store associated with the entry that it's also storing because remember what's going on here is that","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=814s"},{"start_seconds":823,"text":"and I didn't say this in the beginning but one of the part of what makes this whole thing scalable and work as a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=823s"},{"start_seconds":829,"text":"scalable distributed computing this DHT only a subset of the nodes are holding a certain number of the knows yeah I mean","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=829s"},{"start_seconds":839,"text":"if the entries that come in based on a nearness algorithm to between their agent hash and the hash of the entry","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=839s"},{"start_seconds":846,"text":"that you're trying to store so but yes that's related to the to the linking where you can do a get operation on the base or on any entry hash but you can","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=846s"},{"start_seconds":854,"text":"also do a get on the links on that hash to find the other stuff that's there SE and then so ions of known dread let's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=854s"},{"start_seconds":862,"text":"say I'm also like participating in the Twitter app yeah so I have a DNA I have","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=862s"},{"start_seconds":868,"text":"my own ID I want to know everybody who follows me right so can I query you backwards for how","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=868s"},{"start_seconds":878,"text":"could you do that well I mean you can't except you could do that so we can talk about how there's lots of different ways to manage indexing if it's a small","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=878s"},{"start_seconds":886,"text":"community you could just create a directory and put everything on that well you could create like a hash whose key is directory I mean whose value is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=886s"},{"start_seconds":894,"text":"directory and then that will be a well-known thing and everybody could look at it that's if you're creating an app for a small community like Slackware you want me to have you know hundred thousand ten thousand people that would","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=894s"},{"start_seconds":902,"text":"be fine that would be sustainable that's getting on the edge of that if you wanted to do much larger scale indexing where you're indexing content like if","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=902s"},{"start_seconds":910,"text":"you're if it's a Wikipedia style app then we have a pattern where we have a separate a whole separate DNA on a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=910s"},{"start_seconds":917,"text":"separate Network where nodes volunteered to be indexers so you can have distributed indexing and then your app queries the other app the other DNA and","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=917s"},{"start_seconds":926,"text":"and when you publish you also publish to into the indexer as well and then you can do index queries on that and you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=926s"},{"start_seconds":934,"text":"could use whatever database on the backend to be able to pull the indexing out that's if you need large-scale indexing right but that","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=934s"},{"start_seconds":942,"text":"indexing is not like it doesn't provide is a cryptographic proof was data indexed know you would can you go back","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=942s"},{"start_seconds":950,"text":"and you will find that in the DHT after you're done so they'll tell you like here's a hash that like or here's a bunch of headers you're looking for then we need to go yet check that this is actually like","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=950s"},{"start_seconds":959,"text":"hashes that are inside you might get a bunch of hashes and then you go and you actually use the DHT to get the values back you don't think the content back and if you didn't get a value back then","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=959s"},{"start_seconds":968,"text":"you knew that that entry that was indexed was falsely indexed right and then so when I get a hash like let's say","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=968s"},{"start_seconds":976,"text":"I got this hash I actually need to replay right from the DNA to make sure that this is valid depending on the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=976s"},{"start_seconds":984,"text":"context yes but if it's a Twitter context does it really matter it's been signed by the provenance of the person who did it that's all you care about you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=984s"},{"start_seconds":992,"text":"might need to do that so for example in the currency transaction one you would do that every single transaction you replay back to the beginning to make","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=992s"},{"start_seconds":1000,"text":"sure or you replay back to a checkpoint or you replay back to some known entry","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1000s"},{"start_seconds":1007,"text":"where the somebody also co-signed an entry with a node or a notary there's lots of different solutions on how you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1007s"},{"start_seconds":1015,"text":"could do that depending again on the application context for how you want to make it scalable or how many transactions per second you're expecting","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1015s"},{"start_seconds":1022,"text":"etc etc I see sincerely like you can either implement like a state channel where it's like just two people","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1022s"},{"start_seconds":1030,"text":"exchanging then they kind of have a record going between them or you can implement you can actually probably implement here on consensus of dozes","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1030s"},{"start_seconds":1037,"text":"absolutely I mean so we've got one of our core developers he's been dying to have the few spare hours to go reimplemented","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1037s"},{"start_seconds":1045,"text":"Bitcoin on top of college shame because he thinks it would be a fun project yeah and sometimes people do think of hollow","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1045s"},{"start_seconds":1052,"text":"chain as just only state channels that's one way of thinking about it and one of the things we've thought that would be fun is oh cool let's use hollow chain as","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1052s"},{"start_seconds":1060,"text":"a place to implement your state channels for etherium smart contract and and then we're","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1060s"},{"start_seconds":1068,"text":"interested to see how many things would start getting removed because in the end in our experience all you almost all use","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1068s"},{"start_seconds":1075,"text":"cases not all use cases but almost all use cases when you do the mine flip from the data-centric to the agent centric point of view you come up with a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1075s"},{"start_seconds":1083,"text":"slightly different way of solving the same problem that doesn't require can consensus the way blockchain solutions do well I guess the question mainly is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1083s"},{"start_seconds":1091,"text":"like getting to the same state between like you do at some point if specially if you're dealing with like money right","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1091s"},{"start_seconds":1099,"text":"you do want to make sure that kind of this is something that everybody would also agree on because if you want if you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1099s"},{"start_seconds":1107,"text":"own a mana one if you want to keep moving this like let's say somebody sent you money before you can move this money into somebody else you kind of want to make sure that you know people would","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1107s"},{"start_seconds":1115,"text":"agree that you have this money in the first place right so this is kind of even if it's agent centric like you at the end care about yourself and that","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1115s"},{"start_seconds":1124,"text":"your payments will get accepted so and that's why I like the question is yeah depending on how you implement it it may","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1124s"},{"start_seconds":1131,"text":"take a while it kind of all the sources of where you got this money from yeah well and it depends on in your context","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1131s"},{"start_seconds":1139,"text":"how many sources you have to track back to believe that they the ledger accounts that you have are accurate or","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1139s"},{"start_seconds":1147,"text":"satisfactory yeah but there's something odd to me about the fact that if I want to have a cup of coffee somebody in China needs to know but it's a valid cup","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1147s"},{"start_seconds":1155,"text":"of coffee right instead somebody here in Simon if there's something really weird about this only zero membrane environment so","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1155s"},{"start_seconds":1164,"text":"the point here is that when you go in China and you want to buy a cup of coffee there you want to make sure you can do it as well right that's that's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1164s"},{"start_seconds":1171,"text":"where it's like yeah it may be like at any single point when you're buying something like you don't really need world to know but the problem is when","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1171s"},{"start_seconds":1180,"text":"you are in that part of the world you also want to know that's the point so you do the validation then you don't do the validation ahead of time they can","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1180s"},{"start_seconds":1187,"text":"come back and check so that's a really different point of view then then let's make everything perfect now right this","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1187s"},{"start_seconds":1195,"text":"is the agent centric thing it's like oh you're an agent you did a bunch of things now let me go take a look and see if all the context of the people who did things with you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1195s"},{"start_seconds":1202,"text":"well that matches up right that's that seems real to me right now rather than this other way of like let's have one hard-coded reality that exists and and I","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1202s"},{"start_seconds":1211,"text":"think the claim that we're making and this is it's really about when you have an architecture that's based on what reality really looks like they're much","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1211s"},{"start_seconds":1219,"text":"more likely to get decent solutions at different scales over time and we know that reality looks like lots of agents","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1219s"},{"start_seconds":1226,"text":"and lots of viewpoints playing this is wide it is so freakin awesome because you can branch and merge you didn't pretend that there was one code base to","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1226s"},{"start_seconds":1234,"text":"from the beginning that has to advance the thing is at the end we built github and we said this is one reality everybody should come here yeah and do you think that that's actually the right","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1234s"},{"start_seconds":1243,"text":"way it's supposed to go yeah I'm just can't wait until we watch that change because github is exactly like what al had you might be too young to remember this a o L before there was","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1243s"},{"start_seconds":1252,"text":"the web they were these rooms where there was content and it was all siloed inside of AOL and there was another silo inside of Jeannie along comes HTTP as a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1252s"},{"start_seconds":1259,"text":"protocol that allows us to spread that out it's the same kind of thing with github when github turns into a protocol ie a set of DNA in a game that we can","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1259s"},{"start_seconds":1267,"text":"play together then we have a different space of what it means to do project management and yes there is this going back and forth between the the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1267s"},{"start_seconds":1275,"text":"centralizing the large-scale the one place to go look at a reality and then back into the agent centric and that's the that's why we're not only agents","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1275s"},{"start_seconds":1282,"text":"entering in fact we're we we also might describe ourselves as socio centric because you say things according to your or cording to the rules what you did but","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1282s"},{"start_seconds":1290,"text":"then you publish it to the community in the community says yep that looks right to me so okay so then the question I have is if somebody publishes two","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1290s"},{"start_seconds":1299,"text":"alternative versions what happens then yeah so so like the or another thing they do is they publish something forward and they say okay I made this","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1299s"},{"start_seconds":1307,"text":"transaction then I cut this off my chain and do another one right well you both of these got published to the DHT right","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1307s"},{"start_seconds":1314,"text":"so somebody out there is going to see wait the same person and they check the chain and they're like there are two things that showed up inside that chain","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1314s"},{"start_seconds":1322,"text":"that should be at the same place and this is clearly a fraudulent player because I can see that that's the case so but but I mean we're you're indexing","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1322s"},{"start_seconds":1330,"text":"everything but hash right so here you know to one person I send this hash to another person else you don't you like its most published it's both on","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1330s"},{"start_seconds":1338,"text":"the HT but like as the purse as like another agent that observes this right I'm telling him hey here's your the data","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1338s"},{"start_seconds":1347,"text":"you looking for is that this - he doesn't send it this is you get this hash by doing a get on the DHT but like","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1347s"},{"start_seconds":1356,"text":"what what am I worrying by then so you're like I'm a different engine try it so you query by the house you get","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1356s"},{"start_seconds":1364,"text":"back the header well so what is the let's actually come up with a concrete use case because when you keep maybe pay for a coffee you pay for a coffee","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1364s"},{"start_seconds":1373,"text":"you know okay so I'm about to write down in my book - and you're about to write down a plus yeah right and so I go and I","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1373s"},{"start_seconds":1381,"text":"say give me your chain I know I I say so there's going to be a pre-negotiate","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1381s"},{"start_seconds":1388,"text":"there may be a pre negotiation phase where you tell me what the header of your chain is and I do a get and I look on the DHT I'm gonna find something different on the DHT then you just told","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1388s"},{"start_seconds":1397,"text":"me but I gave you a header right I gave you this you you will fetch it this just","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1397s"},{"start_seconds":1405,"text":"looks good yeah somebody else I mean I just I just went to a different coffee shop and and gave them this header","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1405s"},{"start_seconds":1413,"text":"they also said okay so no because what's gonna end up happening is that","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1413s"},{"start_seconds":1421,"text":"there's they're gonna find when they do a fetch they will also get the headers back and that they will they'll see that there is a conflicting publish on the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1421s"},{"start_seconds":1429,"text":"network you mean show you somewhere have ID to list of headers index on the HT","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1429s"},{"start_seconds":1438,"text":"stored because this is not content addressable right well so here's one of the other things that we're doing for","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1438s"},{"start_seconds":1445,"text":"precisely this kind of this kind of situation is we're allowing apps to do header publishing so the header itself","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1445s"},{"start_seconds":1453,"text":"has a hash right and so you can know what you can hash the header and so you can know what the headers look like to","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1453s"},{"start_seconds":1460,"text":"but how do you index a header like I want pretty much I want to know for agent one two three right what is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1460s"},{"start_seconds":1469,"text":"header without pretty much without asking them so if it's just published","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1469s"},{"start_seconds":1476,"text":"headers and it's indexed by the hash of this header which is I need to know that","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1476s"},{"start_seconds":1480,"text":"hash all right so I think the reason why","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1480s"},{"start_seconds":1488,"text":"I'm getting myself muddled here is because the use case isn't is exactly clear and I'm not describing it in a way","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1488s"},{"start_seconds":1493,"text":"that's that it's it's working here okay","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1493s"},{"start_seconds":1500,"text":"so let's see if we start again and let's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1500s"},{"start_seconds":1508,"text":"draw this up and make it clear for the use case that you're asking for and let's also actually do it a little bit","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1508s"},{"start_seconds":1515,"text":"more carefully so that it shows correctly so let's see here so if let's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1515s"},{"start_seconds":1522,"text":"say that I start out I've got my DNA and I've got my ID all right and so I have a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1522s"},{"start_seconds":1530,"text":"balance of zero and I want to do a transaction with you and so you've got your DNA and you've got your ID and so","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1530s"},{"start_seconds":1537,"text":"I'm going to we're gonna have a negotiation phase where I say we're about to make a transaction and you say","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1537s"},{"start_seconds":1546,"text":"you're going to make a transaction and so we both sign the transaction ahead of time so we have that what the content of this thing is going to look like","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1546s"},{"start_seconds":1554,"text":"beforehand and then it's going to have a header in which you sign something and header in which I that the signature of this entry where you're - what - you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1554s"},{"start_seconds":1563,"text":"know ten dollars for the coffee and I'm plus ten dollars for the expensive coffee all right so what's what is the signature so let's say this ID 1 this is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1563s"},{"start_seconds":1571,"text":"ID - ok right and so then this is the content which shows this is the value of the transaction and of course every one of these entries has headers off of it","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1571s"},{"start_seconds":1579,"text":"which have in it the fact that it has my signature and it has the hash of the header in fact actually that's what's linked right you know in any chain and","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1579s"},{"start_seconds":1587,"text":"we always know that that's and this is a combination of both of those things right ok so we are preparing this this","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1587s"},{"start_seconds":1595,"text":"entry together where we knew that that was what was happening and so I signed this here","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1595s"},{"start_seconds":1602,"text":"let's do it like that and because that's the content okay so in this situation","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1602s"},{"start_seconds":1610,"text":"now this got published to the DHT so we know that and we know that the starting of the rules of the DNA said that the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1610s"},{"start_seconds":1619,"text":"credit limit is 100 each of us have 100 credit limit so you can see my chain to","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1619s"},{"start_seconds":1628,"text":"the bottom and you can see that I'm not overspending I can see your chain to the bottom to know that you're not engaged in other things that I don't care about or that I'm that I don't like and this","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1628s"},{"start_seconds":1637,"text":"is fine now we're moving to the next scenario right where we publish know when somebody know there's a third guy","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1637s"},{"start_seconds":1645,"text":"yeah id3 so he oh that's fine so this","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1645s"},{"start_seconds":1661,"text":"this guy wants to and let's say credit limit is 10 yeah okay it's 10 right so now this this guy wants to pay him as","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1661s"},{"start_seconds":1669,"text":"well so he sends him he starts to negotiate from this state so he creates","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1669s"},{"start_seconds":1676,"text":"a new header doesn't fit actually this is fun you know I'm gonna do I'm gonna actually have you solve the problem","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1676s"},{"start_seconds":1684,"text":"because from this book this is a really interesting exercise so thinking from the agent perspective what do you need to publish to the DHT to actually make","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1684s"},{"start_seconds":1693,"text":"this work and what questions is that this is exactly what's great about whole chain is it makes you actually think about the real problem that's necessary","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1693s"},{"start_seconds":1701,"text":"for the exact situation you're in okay so basically this is a roll back situation where the credit limit was 10 now I shouldn't be able to go any further what do you need to publish to","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1701s"},{"start_seconds":1708,"text":"the DHT to be able to have queried to be able to see that this was a situation that was not according to the rules there's a bunch of different ways to","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1708s"},{"start_seconds":1717,"text":"solve this problem well they need to publish so so DHT is content addressable right content addressable and you can","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1717s"},{"start_seconds":1725,"text":"publish headers as content if you want to and when you get a hash you can see what header was associated with that hash but just you need to get a hash","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1725s"},{"start_seconds":1731,"text":"right yeah but but so you've got hashes we've got linked we've got a link to the HT what do we do with the link DHT to solve this problem","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1731s"},{"start_seconds":1740,"text":"yeah so I mean if you have links you're like that's doable pretty much you just publish the link saying this is my last header right and","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1740s"},{"start_seconds":1748,"text":"then if you can but you said you don't update links you know you don't update lease you delete links and then you can add another okay yeah so then you just","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1748s"},{"start_seconds":1756,"text":"your update you put a link from your ID to the latest to the header of of your chain so this guy on the accepted after","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1756s"},{"start_seconds":1765,"text":"he saw that so then there's other ways to if you don't like that if you think that there's problems with network partitioning you can also have notaries","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1765s"},{"start_seconds":1772,"text":"well-known notaries if you want in your particular well-known modernise is also network partitioning that's partly yeah","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1772s"},{"start_seconds":1779,"text":"that's right that so that hmm yeah that's interesting but you know sometimes one of the ways and we handle network partitioning is by having Sentinel nodes and the central nodes","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1779s"},{"start_seconds":1788,"text":"tell us what part of it that is certain percentage of Sentinel nodes open I'm inside a real network because in the true distributed world you don't really know it's always partitioned so it's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1788s"},{"start_seconds":1797,"text":"just about whether probabilistically you think that's the case in context for your application so just from into the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1797s"},{"start_seconds":1804,"text":"timeline here for publishing this link so is like who is waiting for this link","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1804s"},{"start_seconds":1816,"text":"to be actually published because this person is yeah so this person waits like","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1816s"},{"start_seconds":1824,"text":"he he queries actually a link remember what happens in the end is that this is gonna get published and this is gonna get published and you have the community","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1824s"},{"start_seconds":1831,"text":"observing this yes so they will also see that okay and they can validate it as we're saying that everybody else is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1831s"},{"start_seconds":1838,"text":"actually should be like checking only the people who are responsible for storing this data all of the people who are restoring not everybody else but the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1838s"},{"start_seconds":1846,"text":"but the shard of the network that's responsible for the start of the DHT that's responsible for storing that hash by its nearness algorithm all right so","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1846s"},{"start_seconds":1854,"text":"that Zen for yeah so this is not like a regular DHT that's that's why I'm like you actually have a lot of extra like oh","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1854s"},{"start_seconds":1862,"text":"it's a sort of the DHT I mean Sokka d'emilia you can think of it as shorted because only a subset what holds it but we","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1862s"},{"start_seconds":1870,"text":"have a different DHT that we're developing because that the but math is really hard for calculating neighborhoods when you're using a tree","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1870s"},{"start_seconds":1878,"text":"and things don't look like they're in the same neighborhood from different vantage points in the in the tree in academia DHT and we really wanted to be","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1878s"},{"start_seconds":1885,"text":"able to have a Euclidian geometry for figuring out what the night neighborhood is rather than a non-euclidean one which is really really weird so how do you do","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1885s"},{"start_seconds":1893,"text":"it Euclidean the way well we're we're developing something we're calling our DHT it's in development and it's pretty","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1893s"},{"start_seconds":1900,"text":"it's interesting we did some prototyping of it it's not completely developed but the basic idea works like this if you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1900s"},{"start_seconds":1908,"text":"take all the hashes of the nodes and you put them on a circle and this is I might be getting this wrong because I'm not","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1908s"},{"start_seconds":1916,"text":"the main engineer on this but this is it's pretty close to what it is and you'll get the idea about how to do this so if you think about any particular","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1916s"},{"start_seconds":1925,"text":"agent and let's put that line there as an agent agents hash then you can draw an arc on","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1925s"},{"start_seconds":1932,"text":"this circle as actually it should be they should be equal in length they're","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1932s"},{"start_seconds":1938,"text":"pretend that's the same this is the arc of all of the hashes of the entries that this agent says it's responsible for","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1938s"},{"start_seconds":1946,"text":"right and then you have a second arc which is the arc of all of the agents","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1946s"},{"start_seconds":1954,"text":"who it indexes right so I know that there are other agents over here and I","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1954s"},{"start_seconds":1962,"text":"index their existence and they have their own arcs inside and their own","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1962s"},{"start_seconds":1973,"text":"index arcs yeah and so your neighborhood is just an art is these arcs that you're","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1973s"},{"start_seconds":1980,"text":"holding and that's how you can do that and then the other thing you do is you also put you index some random things","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1980s"},{"start_seconds":1987,"text":"out out to the other side so that you can get complete coverage of the circle if you if you can't find someone and that's that's the way you can get there","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1987s"},{"start_seconds":1995,"text":"it'll connect right around the other side and the thing that's really nice about this way of doing the DHT is that you can expand and contract the arcs dynamically","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=1995s"},{"start_seconds":2003,"text":"according to what the population is on the in this space this is I think a 32-bit we compress the hash down to","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2003s"},{"start_seconds":2011,"text":"32-bit so we can do the math even faster and collisions are fine okay so what is the like what is this","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2011s"},{"start_seconds":2018,"text":"hash of it this is the hash of the public key well this is the hash of the and this is not no it's not even a hash it is the public key it's just a public","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2018s"},{"start_seconds":2027,"text":"key of the node of the node so people can grind and like try to end up in the same neighborhood yeah you can do that","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2027s"},{"start_seconds":2034,"text":"but the problem with that is that it only takes one person to find out that you're a bad actor to then publish what","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2034s"},{"start_seconds":2041,"text":"we call a warrant and then get you block list from that particular network so yeah you can do grinding you can do there there are some particular places","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2041s"},{"start_seconds":2048,"text":"where it's some civil defects are are we're susceptible to that in most places but for the most part what we see is that that would be actually really hard","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2048s"},{"start_seconds":2057,"text":"because it just takes one good actor to show a bad actor yeah but you can Theory crawl the current state right and find","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2057s"},{"start_seconds":2064,"text":"like if there is a neighborhood which is what you're saying you will dynamically actually expand the circles and like trade reading like somewhat and then the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2064s"},{"start_seconds":2073,"text":"other thing about this is that the way we're implementing this is that we have like a second layer of this where the where the hashes this is another","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2073s"},{"start_seconds":2083,"text":"interesting thing about this DHT where instead of the agent being so you think of the agent as one portion and then","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2083s"},{"start_seconds":2090,"text":"what it's the hash of the content these things is what's being referred to in arc you can do the same thing where with","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2090s"},{"start_seconds":2099,"text":"the nodes for discovery of nodes where the agent has this ring but what's in the hash is the transport address there's a transfer errors I see and so","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2099s"},{"start_seconds":2106,"text":"that's how we can actually also find nodes on the DHS it's a two-level you store in DHT store old thousand nodes","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2106s"},{"start_seconds":2113,"text":"just transferred addresses yeah so we use the same pattern of a DHT for finding other other agents on the node as we do for finding content it's just","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2113s"},{"start_seconds":2121,"text":"two layers so when you want to find something first of all you go and you find the the public key of the address and then you go and you look fit the next layer down to find the transport","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2121s"},{"start_seconds":2129,"text":"ask for that race and revenue query that interesting and then so then you said so how the validation","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2129s"},{"start_seconds":2137,"text":"how does the validation happen actually so well the validation happens is whenever you're doing a publish and you found out who was in your neighborhood","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2137s"},{"start_seconds":2144,"text":"who needs to store it you published to them directly because by it that's the the meta rules of the game then they go","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2144s"},{"start_seconds":2151,"text":"and they run the DNA on and run whatever the rules are locally on their node to see if the data that you're publishing","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2151s"},{"start_seconds":2158,"text":"follows and that may involve doing gets there's a there's another there that may involve doing gets on the network to find out whether things are true but","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2158s"},{"start_seconds":2166,"text":"there's another interesting thing we do is we have a validation package that gets sent or can be queried for during","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2166s"},{"start_seconds":2173,"text":"that during that validation phase so that you can because what is necessary to do validation is also contact","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2173s"},{"start_seconds":2181,"text":"specific so you can query back the original node you can get the full chain of the original node you could query and and see whether it fits into the rules","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2181s"},{"start_seconds":2189,"text":"of the game so how expensive that sounds like pretty I mean it's just chained been going on for a while right like and","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2189s"},{"start_seconds":2197,"text":"somebody publishes and other know them that it could get very expensive and for if and in in the context where it would get expensive then you would do other","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2197s"},{"start_seconds":2205,"text":"things to make it cheap that would be an applicant like I was saying there would be checkpoint nodes where you summarize the state and you know that you only have to go back that far because it's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2205s"},{"start_seconds":2214,"text":"been validated by other nodes and you can validate that checkpoint things like that I mean and there's a theory can use some consensus to checkpoint everything","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2214s"},{"start_seconds":2222,"text":"you could no absolutely you could use you could use consensus and we're not against that at all I mean there are some there are some really reasonable use cases for for a block change I mean","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2222s"},{"start_seconds":2230,"text":"there are other there are other efforts out there that have the same kind of agent centric approach and one of the things that they end up doing is using things like a blockchain for finding","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2230s"},{"start_seconds":2239,"text":"notes just no discovery and because you publish that to that blockchain and you go find that that's one one case that is somewhat reasonable I mean that's I mean","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2239s"},{"start_seconds":2247,"text":"a state channel is pretty much that it's like you're used blockchain it's kind of your checkpoint and then you just state channels for like exchange of information between peers there's just","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2247s"},{"start_seconds":2255,"text":"this is more like generic way of exactly so it's turning it on its head it's saying we start from state channels and then if you need that maybe that's a special case where you use it where it's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2255s"},{"start_seconds":2264,"text":"actually okay to spend that much power or that much whatever the proof of X is and whatever consequences come from that proof of X","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2264s"},{"start_seconds":2271,"text":"context-specific all right interesting had another question about DHT but I","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2271s"},{"start_seconds":2280,"text":"kind of skipped my mind what do you guys what's his DNA is like what's it's okay","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2280s"},{"start_seconds":2288,"text":"so now it's a new technology exactly so in our prototype the original prototype that I wrote what we did is we had two","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2288s"},{"start_seconds":2296,"text":"two interpreters in there because that's what I found easily in the Ingo libraries we had a lisp interpreter and we had a JavaScript interpreter and you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2296s"},{"start_seconds":2304,"text":"could write your DNA in any one of those languages and then it would run because the whole point is it just needs to be hashable so everybody knows they're running starting from the same hash then","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2304s"},{"start_seconds":2313,"text":"what we decided is that we wanted to use we did the flip to rust for all the reasons that one flips to rust because","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2313s"},{"start_seconds":2322,"text":"of its speed and its quality and we hit the same thing that everybody hits with rust his learning curve which was a problem but the big deal was that we","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2322s"},{"start_seconds":2329,"text":"could use wasum we could use Waze me from parody to have a generic","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2329s"},{"start_seconds":2337,"text":"deterministic virtual virtual machine engine and then we could take advantage of all the new languages that would end up compiling to Wasson which we knew","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2337s"},{"start_seconds":2344,"text":"would be coming down the pike so we have a was an interpreter that we compile everything to currently people write their DNA's in rust there's an H DK for","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2344s"},{"start_seconds":2352,"text":"all the basic functions that are that you call it called hdk call the chain development kit exactly yeah","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2352s"},{"start_seconds":2359,"text":"I just spit this out so that's our hdk and and we're looking forward to HD case","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2359s"},{"start_seconds":2367,"text":"in other languages we have one of our one of our devs is real haskell enthusiast and so she's building an HD k4 haskell I just found out this weekend","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2367s"},{"start_seconds":2376,"text":"that the assembly script people have moved a long ways where we actually working was I'm very closely to Arya yeah cool yeah because we also have","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2376s"},{"start_seconds":2383,"text":"assembly right right and so we're excited about that and actually we're hoping that somebody in the community","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2383s"},{"start_seconds":2389,"text":"will build the web simulator case that's the way we wanted to go and that was the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2389s"},{"start_seconds":2397,"text":"initial way that goes yeah yeah that's cool so we have a bunch of other stuff too you know we have","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2397s"},{"start_seconds":2404,"text":"a testing environment that allows you to describe scenarios and create like in virtual agents and then do do the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2404s"},{"start_seconds":2412,"text":"scenario run the scenario see what happens so you bet you basically run through this process and you create tests for that watch if they fail or","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2412s"},{"start_seconds":2419,"text":"don't fail and so there's there's a whole bunch of tooling that we're building alongside everything to make it easy for folks to develop in this and","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2419s"},{"start_seconds":2428,"text":"it's been pretty fun to watch I mean we started out with our developer our dev camps that were online death camps and","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2428s"},{"start_seconds":2435,"text":"people really hit the wall of rust but then each time the tooling has come up and it's like oh it's actually not that hard because in the end what goes into","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2435s"},{"start_seconds":2443,"text":"your DNA is probably ten five two percent of your application exactly and","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2443s"},{"start_seconds":2452,"text":"so most of it is a front-end UI place where you're assembling bunches of these different DNA's together and into the user interface that you want so like we","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2452s"},{"start_seconds":2460,"text":"have a chat app for example where each one of these chains is a channel and that allows you to have really private real private channels and that's all","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2460s"},{"start_seconds":2468,"text":"that it is and there's another chain that's a comment chain and they're linked together by DP ki DNA which is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2468s"},{"start_seconds":2476,"text":"the one that allows you to be doing replication and issuing of identity associated with I mean that that lets","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2476s"},{"start_seconds":2486,"text":"you actually create replication keys that you can then use if you need to revoke a key because key gets lost and so on and then where there's a personas","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2486s"},{"start_seconds":2494,"text":"app that does identity stuff that you can then use across different DNA's that you could you can say hey I need this little bit of persona data that's on","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2494s"},{"start_seconds":2502,"text":"that chain or I need a zero knowledge proof of that data that's on that on that particular chain and get a little value out of it so it's it's from the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2502s"},{"start_seconds":2510,"text":"point of view of composability it's really fun platform yeah that's interesting yeah so pretty much the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2510s"},{"start_seconds":2519,"text":"combination actually happens on the front end right mostly because like the DNA itself has just like describes data","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2519s"},{"start_seconds":2526,"text":"transition rule for specific kind of bit so that that is true and there is an H DK function which is bridge so you can","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2526s"},{"start_seconds":2535,"text":"you can have a DNA that requires the existence of other DNA is to be able to call across to it how would that work so there can be a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2535s"},{"start_seconds":2542,"text":"function when you're running so it so what the DNA describes its validation","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2542s"},{"start_seconds":2548,"text":"rules and it also describes they can require a fetch other data well the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2548s"},{"start_seconds":2556,"text":"other thing that it describes is what is the interface to for the user interface to call into this particular DNA right","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2556s"},{"start_seconds":2563,"text":"and so if you do a function that would that if you call a function what like post in your Twitter app that function","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2563s"},{"start_seconds":2572,"text":"may do a call to another DNA to get some value around your the name that's associated with that account because the name actually comes from the personas","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2572s"},{"start_seconds":2581,"text":"app the posting has doesn't even know who what name is it is there that comes from another app so we can do a bridge call to the personas app to get the name","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2581s"},{"start_seconds":2589,"text":"to put it into the text for example how does a validation happens on the DNA side right so if let's say this example","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2589s"},{"start_seconds":2595,"text":"where you have a let's say it's a chat right channel and then you have a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2595s"},{"start_seconds":2601,"text":"personas so the validity of this message is the only one that has like something","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2601s"},{"start_seconds":2610,"text":"from persona some information provided from personas right that's what you're saying well what I'm saying is that if there is so if the DNA includes","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2610s"},{"start_seconds":2618,"text":"functions that are called that actually do the addition of an entry onto the chain right yeah so so the consequence","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2618s"},{"start_seconds":2625,"text":"yeah so post so that's a function that's available message etc so there would have in this particular app there would","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2625s"},{"start_seconds":2632,"text":"have been probably at initialization time there would have been a time when you went to personas and you got the name or some value or an avatar actually","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2632s"},{"start_seconds":2641,"text":"maybe this is not a good example because you probably end up doing that later but the validity of that well it depends on what you need to validate with so let's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2641s"},{"start_seconds":2649,"text":"say you want to post a message and you want to make sure that whoever posted message has a persona in the personas","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2649s"},{"start_seconds":2655,"text":"app okay so like how does this validity function looks like for the post to actually validate that another app","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2655s"},{"start_seconds":2664,"text":"contains this information so can you inside the DNA can you fetch other items from","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2664s"},{"start_seconds":2672,"text":"do you validate and like how much can you do there in a way so that's a great question it's a complicated thing","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2672s"},{"start_seconds":2680,"text":"what what what's going on with that is that invalidation we have two different stages because it's in there there's two different types of validation","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2680s"},{"start_seconds":2689,"text":"essentially there's the preconditions of validation and then there's the deterministic aspect of validations so for example one of the things that you might want to validate is that a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2689s"},{"start_seconds":2697,"text":"particular link exists right but that is a non-deterministic fact so you can't","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2697s"},{"start_seconds":2704,"text":"run the final validation rules until you have gathered all the information that you need that may be non-deterministic because the validation rules themself","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2704s"},{"start_seconds":2711,"text":"have to be deterministic and so there is there are two different phases of validation and so in one you can do fetches and you can do things like check","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2711s"},{"start_seconds":2719,"text":"to see if links exist and if they exist if the preconditions exist then you can actually do the final validation which we'll call it which will commit something into a chain so yes the answer","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2719s"},{"start_seconds":2727,"text":"your question is yes I'm just giving you a little bit more context because of what's true about the world there are preconditions in validity and those are complicated things and they may fail and","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2727s"},{"start_seconds":2735,"text":"then there are things that are absolutely it need to be absolutely true that are deterministic and both of those different parts of validation are encoded into the DNA so then if let's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2735s"},{"start_seconds":2744,"text":"say this precondition fails later when somebody else wants to validate then just becomes a valid right well it","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2744s"},{"start_seconds":2752,"text":"becomes valid well they would stop validating it but I think that's a complicated case because I think what you in that case you would say no it was","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2752s"},{"start_seconds":2760,"text":"valid at the time because you could see that somebody else validated it yeah depending on the context you may or may not allow that so who who will be did","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2760s"},{"start_seconds":2768,"text":"who will be deciding the context because something we're going back to this example right like at some point there was a link that ends as guys but then I","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2768s"},{"start_seconds":2776,"text":"destroyed this link created a new link well you can't just destroy links they don't go away forever you can always look at the history and see if they were","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2776s"},{"start_seconds":2784,"text":"there so the the links are marked as deleted because it is an append-only log so you can always go back and reevaluate the context at the time that it was done","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2784s"},{"start_seconds":2792,"text":"so this would this would be a case like somebody stopped doing something and they're not even online you can still go and check where there are other people on the DHT or have that data and you can","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2792s"},{"start_seconds":2801,"text":"ask for the deleted links and see what they were at that time how do you store link's okay so now you're asking","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2801s"},{"start_seconds":2811,"text":"implementation questions we have a thing that we call we have two things we have a cast our content-addressable story that we use for storing most everything and on top of the store on top of the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2811s"},{"start_seconds":2819,"text":"cast we have something called an EI VI which is an entity attribute value index store which kind of looks like a DHT with links it's the same kind of thing","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2819s"},{"start_seconds":2828,"text":"mirrored inside our storage and I mean I'm there EA V's are pretty typical data storage systems for sparse data they've","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2828s"},{"start_seconds":2836,"text":"been used for medical data for a long time and the index is the thing that allows you to find what was the latest one by history so that you can do like","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2836s"},{"start_seconds":2843,"text":"if you have a hash you put something in it yeah I mean it looks exactly like that thing that I did with the the post in the target but not again now I'm","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2843s"},{"start_seconds":2851,"text":"really jumping into a part that may be more than what you were asked know I'm actually I'm actually interested so you have links which connect like you say","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2851s"},{"start_seconds":2858,"text":"you have a pendant append on the ledger off links which connect pretty much to hashes right there's a tag so you can on","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2858s"},{"start_seconds":2866,"text":"each individual node we use a similar pattern inside a content addressable store for storing all the data that we need to store so we can store a link","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2866s"},{"start_seconds":2875,"text":"using the same pattern in our in our store but there's also an index on top of that that allows us to know what was","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2875s"},{"start_seconds":2883,"text":"the latest one and so you can basically I mean inside the store store previous link pretty much under the same like yeah you say you start a link to a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2883s"},{"start_seconds":2891,"text":"previous link yeah I mean basically we have a let's see we were using tombstone sets I don't know if you're familiar with that so this is like so there's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2891s"},{"start_seconds":2900,"text":"this whole other part of how you manage eventual consistency I didn't even mention that early on this is an eventually consistent DHT because","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2900s"},{"start_seconds":2909,"text":"different parts of the network are going to get it and it will propagate over time and so but in any event consistent state system you're going to need to","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2909s"},{"start_seconds":2917,"text":"have there are going to be complex and so we're building in this isn't implemented yet but we're planning for","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2917s"},{"start_seconds":2923,"text":"building in CRD t's content the conflict resolution data types and there are a bunch of different data and so you can","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2923s"},{"start_seconds":2930,"text":"actually say what the rules are for what how to resolve the conflict when the data shows up and so yeah I'm just","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2930s"},{"start_seconds":2938,"text":"jumping for it'll but indeed in our in our ABI content-addressable store and again I'm","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2938s"},{"start_seconds":2946,"text":"not the person who's coded all of this so at this part I may be getting slightly wrong but that we do stuff exactly like we have a hat we restore","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2946s"},{"start_seconds":2953,"text":"something whose hat whose content is the word deleted and then on deleted it points to all the links that were","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2953s"},{"start_seconds":2959,"text":"deleted and but it's base it has I think that's the way they do that","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2959s"},{"start_seconds":2966,"text":"no no because the problem is any of this is that you can have a double like","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2966s"},{"start_seconds":2974,"text":"double hat on on the on the links and like any upend on the index I it's the problem always is like having two of","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2974s"},{"start_seconds":2982,"text":"append-only because of either conflict or malicious attack so that's why I'm going there like I'm like we're","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2982s"},{"start_seconds":2989,"text":"distilling it from but but what you're seeing is the the thing we just did here you can do inside your content addressable store as well because you if","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2989s"},{"start_seconds":2998,"text":"you if you basically in your content addressable store on your local machine you can do the exact same thing that we did here you can store a link to what","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=2998s"},{"start_seconds":3006,"text":"the current head is the thing that's current and from your experience but but","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3006s"},{"start_seconds":3013,"text":"you know we have two sets of nodes right which will have different hat and then","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3013s"},{"start_seconds":3019,"text":"they'll like update each other right and so then you have wait no right now I was","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3019s"},{"start_seconds":3027,"text":"talking about the a node within itself so that's not that situation this situation is the one where you figure","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3027s"},{"start_seconds":3034,"text":"out using the by by doing the link here right well I'm and like let's say you did this link here right and then you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3034s"},{"start_seconds":3043,"text":"just like sent the different link to different like you created to like 1-10","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3043s"},{"start_seconds":3049,"text":"and one zero and you created two links and you send it to different nodes but I guess yeah but remember these things are","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3049s"},{"start_seconds":3057,"text":"all published and then they get watched by the other nodes you can always do that but the thing is it's being validated by other nodes on the network","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3057s"},{"start_seconds":3064,"text":"what would be fun actually is to for you is to have a one of these sessions with","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3064s"},{"start_seconds":3071,"text":"the guy who's actually designing our new with credit currency who's gone through all of the different permutations of all the different failures on this because I","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3071s"},{"start_seconds":3079,"text":"just have a general knowledge of how that's done and I just always know that it's possible and so my trick was gonna get you to figure it out because I knew you could but but indeed but there's a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3079s"},{"start_seconds":3089,"text":"lot of other there are actually there's this thing called the Finny attack and when you do neighborhood stuff there's a bunch of other use cases but what's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3089s"},{"start_seconds":3096,"text":"interesting is from this approach of in the agent centric approach there always seems to be a solution that's appropriate for the context so I keep","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3096s"},{"start_seconds":3103,"text":"saying that appropriate for the context because that's what matters so much if we want to have any scalable decentralized solution has to be","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3103s"},{"start_seconds":3111,"text":"scalable according to the context I mean like it's just like I'm just deciding that for the purpose of our viewers","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3111s"},{"start_seconds":3118,"text":"right that's that's a key key thing for us to know and that's like a message that I want to keep getting across and and it's important because people will","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3118s"},{"start_seconds":3125,"text":"say well but what about blah yeah that's a great question fantastic questions now think about it from an agency point of view what about it how do we solve that","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3125s"},{"start_seconds":3133,"text":"because that's actually the way it were the world works yeah I mean I think like it's especially fits very well very","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3133s"},{"start_seconds":3140,"text":"specific like I mean a pretty big set of use cases and then I think like for something like payments it is something","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3140s"},{"start_seconds":3150,"text":"with generic consensus is just easy you create the world and you and you believe that things get transferred from one place to the next and you want that to exist in the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3150s"},{"start_seconds":3158,"text":"digital world yep you need that go ahead that's fine if you've got a double spend problem and it's trust list there's no membranes and you've got double spie it's been go do that","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3158s"},{"start_seconds":3166,"text":"great yeah but yeah if you unlike Twitter style or something you know if you want apart everything everything else in the world and but and the other","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3166s"},{"start_seconds":3174,"text":"thing is the actual mechanics of doing a mutual credit instead of coins it's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3174s"},{"start_seconds":3182,"text":"doable at scale with the same patterns it's just a different kind of validation that ends up happening and it's happening between the subsets of people","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3182s"},{"start_seconds":3189,"text":"so here's the difference there's a lot of validation to handle these header things there's a lot of different cases in edge cases you have to pay attention to but what does end up happening is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3189s"},{"start_seconds":3198,"text":"you're still only doing it between a small subset of the nodes on the network in the blockchain world everybody has to agree for that block to get chained so","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3198s"},{"start_seconds":3206,"text":"you end up having that big long clock cycle that's in the basic pattern is that clock cycle would be appending up a blocks and creating one reality this","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3206s"},{"start_seconds":3215,"text":"doesn't do this it does the validation in the subset of the spaces that are needed I mean we're doing sharding so we","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3215s"},{"start_seconds":3222,"text":"are doing subset but yeah I I in general I agree with you actually so the question I had was you mentioned that Eve if somebody observes the conflict","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3222s"},{"start_seconds":3231,"text":"right let's say you do observe like two conflicting or simple get let's actually use a really benign case which is a network partition so somebody like I","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3231s"},{"start_seconds":3240,"text":"mean in the Twitter case you might have this where somebody says this is my my Twitter handle and they say this is my Twitter handle it was partitioned it comes back together you have two people","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3240s"},{"start_seconds":3248,"text":"have the same handles you want to have a rule that says you can't have the same handle okay yeah is that a use case that's I mean that's interesting yeah I'm more interested in like non benign","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3248s"},{"start_seconds":3257,"text":"not benign cases well it's a matter of fact all non benign I think they actually match yeah they're theoretically like they're theoretically","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3257s"},{"start_seconds":3264,"text":"visible yeah the faults are the same yeah well plus it's just the emotions are different well it's also I mean the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3264s"},{"start_seconds":3272,"text":"question is do you have a different mechanism of punishing people who are actually actively trying to oh do you want you want me to get into that for a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3272s"},{"start_seconds":3279,"text":"little bit sure yeah okay so when you detect things that are against the rules there's a whole layer of what we call","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3279s"},{"start_seconds":3288,"text":"warrants that can be issued so if you detect something that's it that's against the rules and you believe that it's maliciously against the rules according to the rules then you can","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3288s"},{"start_seconds":3295,"text":"issue a warrant which is you publish on your chain a warrant that so-and-so is a bad actor and according to the rules of the particular game there may be","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3295s"},{"start_seconds":3304,"text":"different consequences you may have three three chances and you're out and if the third publish of the warrant happens or if the warrant is the publish","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3304s"},{"start_seconds":3311,"text":"of the the evidence of the three bad actions yeah then what the other agents","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3311s"},{"start_seconds":3318,"text":"can do is you just block list that node from the network and that can get pushed pretty far down the stack in the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3318s"},{"start_seconds":3326,"text":"implementation that we're working on where it can go it can get block list all the way down to the transport layer because we can pass that into the networking module which says okay","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3326s"},{"start_seconds":3335,"text":"anything coming from this node is likely to be bad because I the rules of the game so you use the same system and other people can verify and validate the warrant as","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3335s"},{"start_seconds":3343,"text":"well because you have to do that because the warrant you could publish that but this is an application per application pretty much yes it's per application but","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3343s"},{"start_seconds":3352,"text":"notice that if like if my node got hacked and I've got 10 applications it because it may end up getting multiplexed on the transport layer then","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3352s"},{"start_seconds":3360,"text":"it's likely that the other ones are hacked too and it depends again context wise you may say nope and also yeah do","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3360s"},{"start_seconds":3367,"text":"you see what I'm saying yeah so yeah I'm just trying to understand like if if one node is it has like 10 applications running right one is applications as","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3367s"},{"start_seconds":3375,"text":"malicious all but like all of the other users of this application ban it but","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3375s"},{"start_seconds":3381,"text":"then other applications like this does information between application propagate or not that's kind of a question like you said you have like an","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3381s"},{"start_seconds":3390,"text":"extra layer right of add address so there is an eraser oh there's an eraser so let's go - lets go - a little","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3390s"},{"start_seconds":3399,"text":"architectural design maybe is that useful sure yeah this is this the way we want things to go I mean you know it's it's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3399s"},{"start_seconds":3407,"text":"the way you want it to go and I'll just ask questions but so we have this thing","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3407s"},{"start_seconds":3415,"text":"called a conductor okay and the conductor is a kind you can think of it","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3415s"},{"start_seconds":3424,"text":"as the virtual machine host like it's the it or the what is it the hypervisor you could think of it about that way and so it basically runs instances of","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3424s"},{"start_seconds":3432,"text":"different DNA's yeah right and it manages the any bridging that needs to happen between them and then the other","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3432s"},{"start_seconds":3439,"text":"thing that it does is it also spins up an instance of our networking code right","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3439s"},{"start_seconds":3447,"text":"and the networking code can therefore it","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3447s"},{"start_seconds":3453,"text":"can multiplex between different DNA's so that we don't have to throw up in a port for if you because you may have a","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3453s"},{"start_seconds":3460,"text":"hundred or more and right and so then it goes to another conductor with a networking side and that goes in like","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3460s"},{"start_seconds":3469,"text":"that and then that that communication can go to the different dnase right so your question is if one","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3469s"},{"start_seconds":3476,"text":"of these is a bad actor because this particular agent got compromised you probably do want to shut the whole thing down right and and it's this network","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3476s"},{"start_seconds":3484,"text":"that there's two layers of the IDs I'm monster than so this guy has so let's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3484s"},{"start_seconds":3491,"text":"called DNA one DNA to DNA one DNA 2 and this has DNA too and it's kind of this","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3491s"},{"start_seconds":3498,"text":"guy so this one is malicious so this guy bands bands him will key propagate to","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3498s"},{"start_seconds":3506,"text":"this note 3 write the information that this note is malicious even though this","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3506s"},{"start_seconds":3513,"text":"guy they are connected right they connected about yeah so so basically these networks remember when I said there was two different layers of the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3513s"},{"start_seconds":3521,"text":"transport so there's the idea of there's the node ID which is at this level there's the DNA ID that's at this level there's a transport ID that's at this","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3521s"},{"start_seconds":3529,"text":"level so per DNA you can make a decision about that do you want that to like is your warrant DNA specific or is your warrant node","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3529s"},{"start_seconds":3538,"text":"specific I'm pretty sure we're gonna have to do that I mean a lot of this part isn't complete and in the development of it because this is where","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3538s"},{"start_seconds":3545,"text":"the phase that all of us are in but but there are a bunch of there are cases where indeed right if this one is malicious you would you would propagate","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3545s"},{"start_seconds":3552,"text":"that this network has been compromised and that's a good thing because then this one is saved from whatever other malicious things that might be happening that way I mean it could be it could be","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3552s"},{"start_seconds":3561,"text":"denial of service attacks which are DNA independent yeah exactly I mean pretty much if I would be implementing this I would actually have","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3561s"},{"start_seconds":3569,"text":"just DNA zero which everybody runs which is kind of yeah well so the DP ki the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3569s"},{"start_seconds":3577,"text":"distributed public key infrastructure DNA is similar to that because pretty much everybody's needs to have a way of revoking keys and getting keys back in and there's a bunch of other things","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3577s"},{"start_seconds":3585,"text":"that'll be like that there's there's the App Store where or the DNA store which which publishes other DNA s and most","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3585s"},{"start_seconds":3594,"text":"people will be likely running that most people will likely be running some version of a personas DNA there's a bunch of things that a lot of people will be running it's just like on your","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3594s"},{"start_seconds":3601,"text":"UNIX box how many processes show up that everybody's running similar all right handy has it part I should","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3601s"},{"start_seconds":3610,"text":"cover I mean it's this is just fine I we just ramble around inside the space of code I don't know what you're I mean you've got experience of what's been","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3610s"},{"start_seconds":3618,"text":"valuable to your viewers I'm happy to answer any questions and ramble into wherever I guess I mean one thing is","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3618s"},{"start_seconds":3626,"text":"like what's a incentives structure here in general well the incentive structure here in general is the most important incentive structure you host your data yet you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3626s"},{"start_seconds":3635,"text":"have a very very high incentive to host your data plus a little bit more to be part of the game so your shard of the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3635s"},{"start_seconds":3643,"text":"other space it's deeply communal in that sense like you have it you have all the incentive in the world to host your data so you have all your data it's on your","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3643s"},{"start_seconds":3651,"text":"chain so pretty much is the same because this is like it's a distributed storage you store your data in it and then you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3651s"},{"start_seconds":3659,"text":"like what's what so ever held on like like I start one gigabyte how much of","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3659s"},{"start_seconds":3666,"text":"other people's data aftering depends on the game you're playing right so you choose the game and in that it's up to you to decide whether you want that or","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3666s"},{"start_seconds":3673,"text":"not if you're doing Wikipedia how much do you need to store like and we've actually somebody in our team did a little bit of math about how many if you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3673s"},{"start_seconds":3681,"text":"store one page of the Wikipedia and what how was it you might I think you we we needed something like everybody needs to","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3681s"},{"start_seconds":3689,"text":"store three pages of the Wikipedia and then if there were a million users or five million users and then the","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3689s"},{"start_seconds":3696,"text":"Wikipedia stored so times five times ten overhead for almost every single app it's in its it is not even I mean so","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3696s"},{"start_seconds":3705,"text":"yeah let's even say it's two orders of magnitude you're pretty much done it and of course you know it'll depend on the on the application that you're running","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3705s"},{"start_seconds":3714,"text":"right and what how much of it I mean there are plenty of applications where everybody will store everything because the your your running of an application","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3714s"},{"start_seconds":3723,"text":"with a small team that's you want your calendar and your shared hacking DS and your shared spreadsheets everybody shares a copy of everything and that's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3723s"},{"start_seconds":3730,"text":"fine and it's that's it yeah the question is like mostly around like if it is actually used for data storage","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3730s"},{"start_seconds":3740,"text":"like I mean the computer is a good example which is like it is it is a relatively large data set I mean that","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3740s"},{"start_seconds":3747,"text":"large it's difficult if it was the Internet Archive which I found out is in the petabytes that's big and also if you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3747s"},{"start_seconds":3755,"text":"were doing trying to do a YouTube if you were trying to run a YouTube app well you know that everything you would do here you would do we actually had","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3755s"},{"start_seconds":3763,"text":"somebody sharding up video and writing a DHT in which the chunks of the video were were distributed around and then","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3763s"},{"start_seconds":3771,"text":"could be pulled down in and and reassembled just like any web torrent type thing I don't know how about how","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3771s"},{"start_seconds":3779,"text":"that we're going might scale actually really beautifully because you have micro channels instead of thinking that there's all of YouTube there there's micro channels of YouTube in people","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3779s"},{"start_seconds":3787,"text":"store the part that's important to them I think it's it's scale is actually really interesting way yeah and I mean like normally its overhead just like 5x","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3787s"},{"start_seconds":3795,"text":"anyway yeah like you know Google stores it in like three data centers and one day the center starts two more copies so","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3795s"},{"start_seconds":3802,"text":"right right so here you may have even higher you may have even higher over a higher redundancy yeah I mean here you","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3802s"},{"start_seconds":3809,"text":"have a higher that's more question of higher overhead like Madonna City Councils overhead yeah alright yeah it's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3809s"},{"start_seconds":3817,"text":"really cool interesting yeah I think we good all right yeah thanks a lot nice to meet you check out call a chain","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3817s"},{"start_seconds":3826,"text":"I guess what's the best resources to learn well you can always go to whole chain org you can go to the github repo github slash hollow chain there's","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3826s"},{"start_seconds":3834,"text":"hundreds of repos in there of different parts of the project I think hollow chain rust is the main repo where core is being built out of","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3834s"},{"start_seconds":3843,"text":"right now and you can always go to hollowed-out host which is the big app","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3843s"},{"start_seconds":3849,"text":"space that we're the premier use of hollow chain that is what launched the hollow token and in in the idea behind","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3849s"},{"start_seconds":3858,"text":"that is to connect the current web to a world where all of us are doing only this and so it's a hosting app built on","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3858s"},{"start_seconds":3866,"text":"top of hollow chain you can look at that at hollowed out hosts enjoy yeah thanks","url":"https://www.youtube.com/watch?v=KeqaEja3Bew&t=3866s"}],"youtube_url":"https://youtube.com/watch?v=KeqaEja3Bew","url":"https://near-pedia.xyz/videos/KeqaEja3Bew"}