{"id":"0lcFW5FWMdQ","title":"[Protocol technical on-boarding series] Block producers and validators (February 22nd, 2023)","description":"Join NEAR's community:\nWebsite: https://near.org/\nReddit:   / nearprotocol  \nDiscord: https://near.chat/\nMedium:   / nearprotocol  \nBlog: https://near.org/blog/\nTwitter:   / nearprotocol  \nGitHub: https://github.com/near  https://github.com/nearprotocol\nDev Docs: https://docs.near.org/\nCreate a wallet: https://wallet.near.org/create\nApps on NEAR: https://awesomenear.com/\nLearn to Build On NEAR: https://www.near.university/\nGrants & Funding: https://near.org/grants/\n#Blockchain #FutureisNEAR #NEAR #nearprotocol\n#nft #dao","channel_name":"NEAR Protocol","published_at":"2024-03-04T00:00:00.000Z","thumbnail_url":"https://img.youtube.com/vi/0lcFW5FWMdQ/hqdefault.jpg","transcript_text":"um guess I'll share my screen um so yeah I don't really know where to start I'll just start with the debok pages um so basically if you look at the last blocks so this is a this is a main night node that we run um and by the way there's um there there there's a new debug pages that are in development and it's not it's not not yet deployed in a public place but they can be run locally so I'll I'll use that um it doesn't have all of the information it has like some of the pages but um anyway so um so this is the most recent block of the blockchain and um as we can see right now the chain is just a it's just a linear chain pain uh like in in weird cases there could be Forks um but uh currently there isn't any Forks because the chain is just going very well um so the whenever we have um a new block that is being produced we would just add it on top of the chain with one more height um and sometimes like if there if if if the if a block is skipped for whatever reason then um the next block would um be of a higher height so so like every time we produce a block it it will always be a higher height so let's say um this page this this page refreshes sometimes and then it messes up the those drawings um so let's say this like let's say this is n um and then um let see if I can do a whiteboard maybe uh whiteboard whiteboard okay so if we have like a block n and then so in the normal case it would be there's a block height n+ one um but if something wrong happens then someone else is going to produce another block n plus two based on the previous parent and that would create a fork um so let's talk about how that works um so every every height there is a block producer so say for height n the block the the block producer um block producer is this validator a um it it it knows it is the block producer based on some criteria that we'll talk about later but but it looks at it looks at the current Epoch and then the epoch decides who should produce each height um there's a map from height to producer and it's deterministic everybody can compute that so everybody knows who should be the block producer for Block n or any block um so the block producer produces the block and then it sends the block to everyone um um and then when you have um can I make a new pavior oh yeah I could okay so the uh the block producer a produces the block and then it sends it to all of the other validators um and then all these validators will look at that block so it it sends the block n to everyone and then everyone will look at that block and verify that the block is good um so that means like it is validly formatted it has valid chunks and um it it will like each validator will simulate the chunks they're able to simulate and make sure that these these transactions and receipts make sense um and everything is agreeable and then I have a question so is the like you said the validate dats will verify the chunks and simulate the chunks so is this the same thing as sending approvals or it's different so I'll yeah that's that's what I was gonna say right okay right now um so as soon as they verify that they're valid they will send an approval for the block and um they they will send the approval to the next block producer so instead of back to a they will send the approval to B so let's say this is B and then they will all send it to B so this is the approval so when you have an approval it has two parameters um does it have two parameters maybe it's just one doesn't matter so we just basically say um approve this block um and we tell B that it is allowed now to produce block n plus1 um so then block producer B will produce M plus one um and then it does the similar thing so let's say um let me just uh I can't copy this F that's okay um so let's say this is B and um it produces a block um and that's n plus one oh and by the way B only starts producing this block if it receives more than 2/3 approval um otherwise it it just doesn't have enough votes so let's say B produces n+ one but something wrong happens like either B is a malicious validator or um like the network just isn't good enough that like the block just doesn't get heard by all of the validators or there there's some like something goes wrong there could be a bunch of things that goes wrong but um typically it's either there's network issues or B just wasn't able to produce a block um for some reason and we can talk about why exactly later um and then the next block producer doesn't produce um doesn't get enough vots so let's say the next one is C who is supposed to produce M plus 2 um and C only gets this um less than 2/3 of approval um then C cannot produce a block um so what happens is um sorry this is this is um this actually this is actually not not the case I wanted to talk about so let's let's just say b um let's just say B did not have the chance to produce a valid block so so I just say B didn't didn't produce a block because if he produced the block it would um it would not be this case um so so B did not produce a block and then all these validators they're they're wondering where that block is um and they don't see it so after a timeout of about six seconds I think um maybe less than that um after a timeout they would realize that this block is not there and then they will send a approval to see but this approval is not the same approval as the previous case it they will send a skip um and it will say skip from height n to n plus 2 um so previously this approval is actually called an Endor an endorsement I I just kind of said approval because it's what we just normally say um the endorsement means that the block is valid skip means uh we we didn't see that block or the block is not valid um so then when C sees that uh when C sees uh 2/3 of skip messages like this um C is going to produce a new block based on the the the base block that people have voted for in their skip messages um and then there's going to be a fork and basically when there's a fork like um uh generally we would take the the highest height as the canonical chain and then um base off further Productions from there generally like hand waving um so that's so that's that part about four some question question yeah you because in the drawing you mentioned that uh let's assume that b did not produce a block but so if if B did not uh manage to produce the block then there shouldn't be a fork right because like yeah that's right so yeah so so so I typical the more typical case is that um there isn't a fork it's just that there's a skip oh okay uh yeah another question I have is let's say uh for example I'm a validator but uh like I failed to uh receive a uh receive uh the block at n uh but like most other validators they did receive and and they did send the approval so what will happen to me the valid L who didn't receive n would I like would I would I be able to continue adding like uh the blog at n minus two to my chain or am I just missing out on all future like blocks forever yeah so let's see um so that that was the case that I was talking about earlier but then I I I I erased so so so yeah let's say like um there is this block n and then you are supposed to produce n+ one um and you heard some approvals for n but you didn't hear all of them like you didn't hear enough of them right yeah then you wouldn't be able to produce n plus one oh I see but if I'm just a validator I'm not a I'm not a block I'm not assigned as block producer for n or n minus one oh or n or n n plus one or n n plus two I just didn't receive the block for n like what's the effect for that for example some something happened with network I didn't receive the block at end uh and but but I like would like would I be able to continue receiving blocks for uh like n plus1 and n plus2 or am I just stopped there forever uh yeah you would still receive things um like so yeah like say you didn't receive n right and then um n plus one gets produced um you will still get n plus one and and then there's a problem um because you don't have block n right yeah yeah um but the the the the protocol that is not super related to validator um like the the more basic part part of the protocol says that if you receive what is called an orphan block so block parent you don't know it will automatically go fetch the parent oh okay so so pretty soon you will have n and then you'll be able to validate n plus one oh okay okay and then back to the case where uh if you if you didn't if you didn't hear of n um and like you are at here you just didn't hear of n um and then you didn't send the vote right yeah let's say enough people didn't send the vote then block producer n plus1 or the block producer for n plus1 doesn't have enough vots and so it cannot produce a block um and then so so so then it looks like um just erase this um it looks like some validators are on N minus one and some validators are on N right yeah um and so then let's think about what happens next um so I think so n plus1 definitely gets skipped because it just NE was never produced yeah um so then after some time every validator would try to send a skip for2 um and these validators the these validators that have n minus one would try to send a skip from n minus one to n plus2 and these validators who have n would try to send a skip from n to n plus two uh so the so do they do do Val send basically if they are at at a height they would send approval or skip for for any for all the height that's like greater than it or it's just just sending like plus one because it because like what you said all is greater than yeah oh okay yeah um yeah this is this is where my knowledge kind of gets a little fuzzy I'm not exactly sure yeah I think I think our documentation was like a little bit vague like it says like send approvals to like con itive like heights but they didn't say how many like you know afterwards but yeah it's fine thank you it will it will keep sending will never stop oh okay this I see um but the hope is that like at some point somebody would have enough of these skip votes so that they can they can resume and start oh okay so I I think in this case case I I I I think you're able to combine skips that are not based on the same height I'm not exactly sure yeah um yeah yeah I I think that should be okay yeah I have to check that but um we can we can see where that logic roughly is um so let's see maybe um can search for endorsement Doom slug Doom slog would sound like the thing that is responsible for doing that so Doom slab is the our consensus algorithm so let's see um consensus collect block approval um this is a helper function that just finds all of the approvals for a block um skip parent height parent hash yeah I I I think this is probably too much detail for now yeah yeah no worries I don't want take take too much time here yeah um so I think we should also talk about uh how we select block producers so in this eocky info page um we can see that basically every uh number of blocks we will have a new Epoch um on Main net it looks like this is typically like 14 hours um and uh this is this is like this is configured as the number of blocks that um that are supposed to be within an Epoch um it doesn't mean that exactly this Epoch would be that many blocks um it is more like we need to have at least this many blocks but the epoch has to end on a certain kind of block um like I think I think it has to be like a final block so final block means that um so in in this kind of normal case um a final block would be this n minus 2 block um so so it's defined as a block that has two more blocks on top of it that has consecutive Heights so if you have a block n and then a block n plus1 and n plus2 on top of it then that's a final block like N is a final block not n plus two um and basically once we have a final block then uh unless something really really bad happens then this final block is always in the canonical chain so so like we know that a fork cannot kind of bypass the final block yeah a question so I I see many many weere in our discussions uh that says something called accepted is is a block being accepted the same thing as being final uh I think I would have to ask you what the context there is um yeah like I think it's yeah okay we can I I I I can ask this question later okay yeah because I I don't think that's a standard term okay got it okay so back to the um back to these epochs um the epoch ID is actually just the the last block of the previous previous Epoch um so we just use the that block ID as the eoch ID um so if we then look at the validators um so each block we elect the block producers and the chunk producers U for the epoch and then this stays the same for the epoch um so we see here that um in the current Epoch um this validator here has so far been expected to produce 3,255 blocks and it has produced all of them um and it has also been expected to produce this many um or it has produced this many chunks but missed this many chunks so so like whenever like we said earlier the validator is supposed to produce a certain height but it couldn't then it would be missing that block um and then for chunks it's similar but the the chunk is for um Like A Single Shard in the block um but chunks don't use this kind of um approval logic chunk just means if you have the parent block and you're supposed to produce this chunk you can produce the chunk um so I talk about how how the block and chunk prod uh production work um right after this but I just want to um talk about like the the election so so each producer has sorry each validator has a bunch of stake that's the just the amount of near that it has staked um and and then we we basically just rank the stake um and take the top certain number of validators I think it's 100 and make them block producers so so you see here like BP means block producer um everything above here would be a block producer and then everything below here we select some more validators to be chunk only producers they are only allowed to produce chunks allowed and expected to produce chunks but not blocks um and we do this um we do this election like every Epoch um and uh if a validator doesn't do what it's supposed to do U they can get kicked out so like this this validator for example they were supposed to produce 27 chunks but they produced zero um so they were basically kicked out and they're no longer a chunk producer you can see there were previously chunk producers for the previous two Epoch but now they are not um okay so um yeah a question so uh what does the the column shards mean like I thought all validators should track all all shards yeah so uh right now we're running in this uh phase one um of sharding which means that even though each validator is assigned The Shard it still it still tracks all shards um but see but um but tracking doesn't mean that it it is assigned all shards um so say this this validator here is assigned Shard zero for this Epoch um but um yeah so so so it attracts all shards but it's only aign shart zero which means that the chunk the the chunks it produces are only for shard zero oh I see oh I see so oh does that mean for this block there will be some other validator that are producing the chunks on other charts yes oh so let's talk about chunk and block production then cool because that's going to be relevant and by the way these chars may change from Epoch to Epoch so um I think we we can find yeah like here zero would be the next chart that attracts but three is the current chart um so it could switch shards like that in phase two of sharding Not only would they only produce chunk for that Shard they will only track trunk uh uh track that Shard so it it won't have stay for any of the other shards okay um so let's go back to this so the way chunk production and block production works is um so for every height um there will be a chunk producer for every Shard so let's say this is Shard zero this is Shard one Shard two and Shard three and these are the chunk producers so they could be block producers who also are chunk producers or they could be chunk only producers um but the the the role of being block producer is independent from the role of being a chunk producer um so just because you're producing block for that height doesn't mean anything about whether you're producing chunk for that height um so there four validators producing uh the chunks for each height and then there is the block producer for that height so this is all for for a specific height n um so the chunk producers they will each produce a chunk and the chunk includes the transactions the receipts and uh some metadata like the previous block um and so they will send the chunk that they produce to the block producer that is designated for this height and then the block producer will produce a block that contains each of these chunks so so they take these four chunks as input and um output this block that contains these chunks um yeah so what happens if if some chunks are missing let's say The Shard three chunk is missing is this block production gonna go through yeah it will just be missing that trunk which is allowed oh I see so so that's why we we can see um a bunch of chunks missing but most of the blocks are not missing um so when they produce chunks they they uh like the these chunks are not being voted on it's only the block that is being voted on um and so so there needs to be some kind of security Assurance on the chunks um because uh the the the the block actually contains only the chunk headers um and the chunk itself is like bigger so when when when validators vote on the Block they they don't necessarily need to download all of the chunk contents um they they only need to download some things and and this is for scalability because if you have like a, shards then each block would have a thousand chunks and you wouldn't want to download the body of every chunk that would be very expensive you also don't want to validate the body of every chunk so then only validators who track that Shard would download that specific chunk and then check the contents of that um but that also means um if you don't track the contents of a chunk you still need to kind of contribute to the security of that chunk because otherwise um only the validators who track that Shard would be able to vote for that chunk um I'm I'm being pretty handwavy here but but but there's this there's this additional mechanism where um a chunk producer when it makes a chunk uh when it makes a chunk it will slice the chunk into a bunch of parts um and it will give each validator or each block producer actually um some part of that chunk so I need to draw this like split this into Parts um and then the these parts are um are are read Solomon encoded so that like if you have um if you have I think like a third thir of the chunks I mean a third of the parts you would be able to con reconstruct the whole chunk um so so we distribute these parts to each of the validators and then um when the validators vote for the block um they check that they have the part that they're supposed to have for every chunk so so so that basically means like say you are this validator here then um and and you track Shard zero um so your this validator here um you track chart zero then that means you need to download the entire chunk zero that's the the chunk Zero's body um and then validate um the tunk content so that means like executing the transactions the receipts um then for the other shs the other chunks um make sure you have the part um that you own for that chunk so for for chunk one two and three you need to have your corresponding part of that chunk um and then when when both are um are successful then you endorse the block um so that's it's just kind of it adds a bit of security um to the chunk to the chunks because we're only voting on blocks any questions here this is kind of confusing yeah I have a question so um basically you like uh every valador should track uh currently should track one Shard and then for the other three three shards they should they should have received three parts and then uh they should check that so that let's say they they didn't receive one of the parts like that let's say they download their chunk for their Shard and then they had two other parts will that create a problem for them to endorse the block yeah if they're missing a part that they're supposed to own and they should not vote on the Block okay got it what would happen so so the scenario that we're trying to prevent here is is that a chunk producer produces the chunk it distributes the chunk headers um but then doesn't actually distribute the chunk content or the chunk content might just be malicious um but it doesn't distribute the chunk body so nobody has the chunk body nobody is able to validate the chunk body right and then you have these validators on 25% of which can actually Track Your Chart these 25% are going to basically not approve your block but the remaining 75% will because they don't know anything about your chunk and then based on the 75% of vote the block exceeds two3 approval so then it just keeps going but the chunk is invalid um and so so that's why everybody needs to kind of have a part of every chunk so that if we do get enough votes then that means we have at least two3 of the parts which means that collectively we're able to reconstruct every chunk if we wanted to and to be able to reconstruct every chunk is important so that if we need to prove that that a particular chunk producer was lying about that chunk um we need to have the data to prove that so so in this case like if if the chunk producer produce a malicious chunk but only distributes the header then people will not have the parts and they will not vote on the Block if they if if if the trunk producer produces in invalid uh a a malicious chunk and distributed the chunk entirely then the validators would be able to reconstruct that chunk and um and we will they would be able to prove that the chunk is indeed invalid do do do validators send anything if they find a chunk is invalid or they just V they they actually do they send a thing called challenge um but that's not a thing that only validators can send anybody could send a challenge a challenge is basically a proof that uh somebody prod produced something invalid so in this case if you want to send a challenge that a chunk is invalid you will need to include the chunks uh like either the chunk header or the chunk body like something about the chunk that is invalid and then attach a proof why why it's invalid got it um so like for example let's say the the chunk producer produces a malicious trunk that that that that says that um if you execute these transactions you get uh you get an outgoing receipt that that that basically means a billion year um then challenge can prove this is invalid by attaching a proof of like the state before the execution like the the relevant parts of the state before the execution and then um the transaction that ex or or the receipt that executes and then the resulting State and show that it doesn't match the the receipt that was coming out um yeah so so if if there is a challenge then um then we then the the next block is going to include the challenge and then like maybe slash the validator re revert the blockchain state and so on oh so we we we we do have the logic to revert the blockchain state uh it's not implemented okay okay um so we also had the Valor info page which is not migrated here so I go back to the old UI um and here um this um what's going on here it's not showing anything I guess this is a very small validator oh this this must be a chunk only producer um there's a there's a page that is specifically for um blog producers trying to see if I can find someone who actually has an open port I guess they don't um so I'm going to go to one of our datet instances see if this one has a De Page not even work trying to see if I can find the validator so we can look at that page maybe the market try that okay um and I don't know where to find an instance where I have a validator but um if it is a box producer this this this table would basically show um for each block that is supposed to produce which validator gave it votes and when um it's is kind of a de debug page for that um okay I I think we also need to um talk about the the structure of a Blog header I think that's what what was mentioned in the onboarding topic um so walk through what's in the block header close that um so so just look at the V3 block header um so the block has the previous hash um that's just the previous block hash there's a signature of the block producer um that's the block producer that signs the block after they produce it and then there's the inner which is split into light and rest um but these two together are the block header so there's the height which is the height that we talked about um the epoch ID that this block is in um and then the next Epoch ID which is just the next Epoch ID like we calculate that for whatever reason um and then we have a bunch of roots so uh this basically kind of um ensures that the block is produced based on this the the the right um the right assumptions so like the state root would be um a hash the the root of the merco tree of the entire state of the blockchain and then outcome Pro I'm not exactly sure what all these roots are um there's a time stamp and then there's the hash of the uh the next EPO block producers so that just kind of verifies that everybody agrees on who the block producers should be in the next Epoch um for the rest uh a bunch of more Roots these are these are for the chunks to verify that the chunks we include are indeed the chunks that are going to be included in the block um because we we include the chunk headers but then there's the body of the chunks so like we we just hash everything to make sure um everything is what we include um there's the challenges route that's that's for the list of challenges um and the actual list of challenges is in the block body and this is just the header random value this is for uh the verifiable random function um whether proposals this is this is um if a block contains proposals like um proposals for uh how how much stake the this particular validator should have in the next OT or maybe two EO after not sure chunk mask is um just which chunks are included so if a chunk is is missing then it that entry will be false gas price total supply of near in the system challenges result I don't really know what that is and then the last final block and last DS Final block the last final block would just be the um the final block that we talked about so the the the the last block in this chain that has two more blocks sitting on top of it that has consecutive Heights and then last DS Final block is just a weaker it not notion that that it's just you have one block stacked on top that has consecutive height the block ordinal is the the number of blocks that are in this chain so if you skip the height um the ordinal is still n+ one um and then the previous height which is the previous block height because that might not be n minus one if you have a skip uh Epoch synced I don't know what that is approvals um so this is the approvals that you've received in order to produce block uh produce this block so so like typically it would be a bunch of endorsements for the previous block and it's encoded as a vector instead of a a map because we know what the order of validators are for this e talk so we just include a signature for each um for each validator in that order U if if a signature is missing it would be none on the product version um yeah and then we can we can get the latest block Header by just like sending an RPC um the block method and then it it shows us everything so so you see here the um oh this is not the block header this is the this is the actual block so um it it includes the the chunks so these are the chunk headers four chunks one two three four and the the block header um the approvals all of these signatures one for each Val um and stuff um the challenges route is just all these ones because we we don't we don't enable challenges yet um yeah um any questions yeah one question I have is uh currently is it like if uh if a if a chunk producer or block producer produces a malicious block or chunk the only way that they like their content will not be included in the chain is like people don't like other validators don't vote uh so I think there's several different cases so um if it's a block producer producing in invalid block then it should be kind of obvious because everyone else is able to validate that um if a chunk producer prod this is an invalid chunk then if we go to phase two of charting where not every validator tracks every Shard then only the validators who track that Shard would be able to know that the chunk is invalid unless it's some like very obvious issue like the chunk header is invalid um then everybody would know that but um if it's the chunk of contents that are invalid then only the the people tracking that shard would know that and assuming there are more than four shards then or if there're at least four shards then um the mechanism preventing that from continuing would be challenges um because we would have more than two3 votes from the people who don't track that Shar I see I see there were some discussions a while back um about whether we can do better than that um because challenges is a bit is a bit heavyweight um but um I don't think there were concrete action items coming out of that like some some other ideas were like if if we have some sort of proof that oh like one one more and one one kind of simple idea would just be Not only would you require two3 volt from all validators you would require two3 volt for from each set of validators that track each Shard so you need two two3 volts for every Shard um but then the problem is also that uh you sacrifice availability because what if there's one chart that just happens to not have two3 VT So currently there is no issue of like invalidating these like invalid chunks because because all validat track all Shard so like they okay yeah so for phase two we would need to solve this issue somehow um we need to figure out how to enable challenges I I see thank you oh uh one last question I have like uh what are the situations that would um like make the whole like Network stop producing blocks or there's no situation that should that that should happen it certainly happens and uh there there are various different situations that we run into um like by Design it's not supposed to do that uh but uh I think that the the latest one we had was something like uh there there was some invalid trunk going around because uh of the network upgrade and um and I think some validators thought it was valid and other validators thought it was invalid and um you know what I I I can't really recall what was going on but but there were there were several implementation issues um that just made the network stock um there there there's some validators who were supposed to produce blocks but they were behind and they were somehow not able to sync up to the to the most recent block um yeah I think that that that was one major reason got it and the network was so heavily forked that was um like the fork was so long there were more than hundreds of blocks and our syncing algorithm just didn't work in that scenario oh okay is that why we are like we are trying to redo the like not redo but have a new state sync or no State sync is separate from that state sync is for uh syncing the state not the blocks okay um the block sync is is uh is implemented with header sync and body sync header sync is to download the headers and body sync is download the block bodies and so specifically like one issue that we had last time was that because the forks were so long um there was a gap in Heights of more than 512 and when we do header sync we only ask for the next 512 Heights so that we don't get the next block oh we fix that we fix that by instead of asking for Heights we ask for ordinals okay I think that's how we fixed it that I I was the one fixing it but I don't exactly remember which solution we took anyway um thanks for the detail yeah thanks for attending thank you thanks Robin that was great thanks all right see you guys later see you","transcript_synced_at":"2026-11-03T06:07:59.755Z","segments":[{"start_seconds":0,"text":"um guess I'll share my screen um so yeah I don't really know where to","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=0s"},{"start_seconds":8,"text":"start I'll just start with the debok pages um so basically if you look at the last","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=8s"},{"start_seconds":16,"text":"blocks so this is a this is a main night node that we run um and by the way there's um there there there's a new","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=16s"},{"start_seconds":25,"text":"debug pages that are in development and it's not it's not not yet deployed in a public place but they can be run locally","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=25s"},{"start_seconds":33,"text":"so I'll I'll use that um it doesn't have all of the information it has like some of the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=33s"},{"start_seconds":42,"text":"pages but um anyway so um so this is the most recent block of","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=42s"},{"start_seconds":52,"text":"the blockchain and um as we can see right now the chain is just a it's just a linear chain","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=52s"},{"start_seconds":60,"text":"pain uh like in in weird cases there could be Forks um but uh currently there isn't","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=60s"},{"start_seconds":70,"text":"any Forks because the chain is just going very well um so","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=70s"},{"start_seconds":77,"text":"the whenever we have um a new block that is being produced we would just add it on top of the chain with","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=77s"},{"start_seconds":85,"text":"one more height um and sometimes like if","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=85s"},{"start_seconds":92,"text":"there if if if the if a block is skipped for whatever reason then um the next","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=92s"},{"start_seconds":98,"text":"block would um be of a higher height so so like every time we produce a block it","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=98s"},{"start_seconds":105,"text":"it will always be a higher height so let's say um this page this this page","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=105s"},{"start_seconds":113,"text":"refreshes sometimes and then it messes up the those drawings um so let's say this like let's say this is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=113s"},{"start_seconds":120,"text":"n um and then um let see if I can do a whiteboard maybe","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=120s"},{"start_seconds":128,"text":"uh whiteboard whiteboard","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=128s"},{"start_seconds":140,"text":"okay so if we have like a block n and then so in the normal case it","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=140s"},{"start_seconds":150,"text":"would be there's a block height n+ one","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=150s"},{"start_seconds":157,"text":"um but if something wrong happens then someone else is going to produce","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=157s"},{"start_seconds":166,"text":"another block n plus two based on the previous parent and that would create a","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=166s"},{"start_seconds":173,"text":"fork um so let's talk about how that works um so every every","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=173s"},{"start_seconds":182,"text":"height there is a block producer so say for height n the block","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=182s"},{"start_seconds":190,"text":"the the block producer um block producer is this validator","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=190s"},{"start_seconds":198,"text":"a um it it it knows it is the block producer based","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=198s"},{"start_seconds":206,"text":"on some criteria that we'll talk about later but but it looks at it looks at the current Epoch and then the epoch","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=206s"},{"start_seconds":214,"text":"decides who should produce each height um there's a map from height to producer and it's deterministic everybody can","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=214s"},{"start_seconds":222,"text":"compute that so everybody knows who should be the block producer for Block n or any","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=222s"},{"start_seconds":229,"text":"block um so the block producer produces the block and then it sends the block to","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=229s"},{"start_seconds":238,"text":"everyone um um and then when you have","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=238s"},{"start_seconds":245,"text":"um can I make a new pavior oh yeah I could okay so the uh","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=245s"},{"start_seconds":255,"text":"the block producer a produces the block and then it sends it to all of the other","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=255s"},{"start_seconds":267,"text":"validators um and then all these validators will look at that block so it it sends the block","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=267s"},{"start_seconds":276,"text":"n to everyone and then everyone will look at that block and verify that the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=276s"},{"start_seconds":284,"text":"block is good um so that means like it is validly formatted it has valid chunks","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=284s"},{"start_seconds":293,"text":"and um it it will like each validator will simulate the chunks they're able to simulate and make sure that these these","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=293s"},{"start_seconds":301,"text":"transactions and receipts make sense um and everything is agreeable and","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=301s"},{"start_seconds":310,"text":"then I have a question so is the like you said the validate dats will verify","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=310s"},{"start_seconds":317,"text":"the chunks and simulate the chunks so is this the same thing as sending approvals or it's different so I'll yeah that's that's","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=317s"},{"start_seconds":325,"text":"what I was gonna say right okay right now um so as soon as they verify that they're","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=325s"},{"start_seconds":332,"text":"valid they will send an approval for the block and um they they will send the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=332s"},{"start_seconds":340,"text":"approval to the next block producer so instead of back to a they will send the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=340s"},{"start_seconds":347,"text":"approval to B so let's say this is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=347s"},{"start_seconds":353,"text":"B and then they will all send it to B","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=353s"},{"start_seconds":361,"text":"so this is the approval so when you have an approval it","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=361s"},{"start_seconds":369,"text":"has two parameters um does it have two parameters maybe","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=369s"},{"start_seconds":376,"text":"it's just one doesn't matter so we just basically say um approve this","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=376s"},{"start_seconds":384,"text":"block um and we tell B that it","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=384s"},{"start_seconds":390,"text":"is allowed now to produce block n plus1","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=390s"},{"start_seconds":397,"text":"um so then block producer B will produce M plus","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=397s"},{"start_seconds":404,"text":"one um and then it does the similar thing so let's say um let me just uh I","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=404s"},{"start_seconds":412,"text":"can't copy this F that's okay um so let's say this is B and um it produces a","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=412s"},{"start_seconds":420,"text":"block um and that's n plus one oh and by the way B only starts","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=420s"},{"start_seconds":427,"text":"producing this block if it receives more than 2/3","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=427s"},{"start_seconds":434,"text":"approval um otherwise it it just doesn't have enough votes so let's say B","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=434s"},{"start_seconds":441,"text":"produces n+ one but something wrong happens like either B is a malicious validator or um like the network just","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=441s"},{"start_seconds":451,"text":"isn't good enough that like the block just doesn't get heard by all of the validators or there there's some like","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=451s"},{"start_seconds":460,"text":"something goes wrong there could be a bunch of things that goes wrong but um typically it's either there's network","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=460s"},{"start_seconds":468,"text":"issues or B just wasn't able to produce a block um for some reason and we can","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=468s"},{"start_seconds":475,"text":"talk about why exactly later um and then the next block","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=475s"},{"start_seconds":482,"text":"producer doesn't produce um doesn't get enough vots so let's say the next one is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=482s"},{"start_seconds":488,"text":"C who is supposed to produce M plus","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=488s"},{"start_seconds":498,"text":"2 um and C only gets this um less than 2/3 of","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=498s"},{"start_seconds":508,"text":"approval um then C cannot produce a block","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=508s"},{"start_seconds":516,"text":"um so what happens is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=516s"},{"start_seconds":525,"text":"um sorry this is this is um this actually this is actually not not the case I wanted to talk about so let's","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=525s"},{"start_seconds":533,"text":"let's just say b um let's just say B did not have the chance to produce a valid block so so I just say B didn't didn't","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=533s"},{"start_seconds":542,"text":"produce a block because if he produced the block it would um it would not be this case um so so B did not produce a","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=542s"},{"start_seconds":549,"text":"block and then all these validators they're they're wondering where that block is um and they don't","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=549s"},{"start_seconds":558,"text":"see it so after a timeout of about six seconds I think um maybe less than that um after a","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=558s"},{"start_seconds":567,"text":"timeout they would realize that this block is not there and then they will send a approval to see but this approval","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=567s"},{"start_seconds":577,"text":"is not the same approval as the previous case it they will send a","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=577s"},{"start_seconds":584,"text":"skip um and it will say skip from height n to n plus","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=584s"},{"start_seconds":594,"text":"2 um so previously this approval is actually called an Endor an endorsement I I just kind of said approval because","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=594s"},{"start_seconds":602,"text":"it's what we just normally say um the endorsement means that the block is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=602s"},{"start_seconds":608,"text":"valid skip means uh we we didn't see that block or the block is not","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=608s"},{"start_seconds":614,"text":"valid um so then when C sees that uh when C sees uh 2/3 of skip messages like","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=614s"},{"start_seconds":622,"text":"this um C is going to produce a new block based on the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=622s"},{"start_seconds":630,"text":"the the base block that people have voted for in their skip messages um and then there's going to be a","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=630s"},{"start_seconds":637,"text":"fork and basically when there's a fork like um uh","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=637s"},{"start_seconds":643,"text":"generally we would take the the highest height as the canonical chain and then","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=643s"},{"start_seconds":650,"text":"um base off further Productions from there generally like hand","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=650s"},{"start_seconds":657,"text":"waving um so that's so that's that part about four","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=657s"},{"start_seconds":666,"text":"some question question yeah you because in the drawing you mentioned that uh let's assume that b did not produce a","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=666s"},{"start_seconds":675,"text":"block but so if if B did not uh manage to produce the block then there shouldn't be a fork right because like","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=675s"},{"start_seconds":684,"text":"yeah that's right so yeah so so so I typical the more typical case is that um","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=684s"},{"start_seconds":693,"text":"there isn't a fork it's just that there's a skip oh okay uh yeah another","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=693s"},{"start_seconds":699,"text":"question I have is let's say uh for example I'm a validator but uh like I failed to uh receive a uh receive uh the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=699s"},{"start_seconds":709,"text":"block at n uh but like most other validators they did receive and and they did send the approval so what will","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=709s"},{"start_seconds":717,"text":"happen to me the valid L who didn't receive n would I like would I would I be able to continue adding like uh the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=717s"},{"start_seconds":726,"text":"blog at n minus two to my chain or am I just missing out on all future like blocks","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=726s"},{"start_seconds":734,"text":"forever yeah so let's see um so that that was the case that I was talking","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=734s"},{"start_seconds":742,"text":"about earlier but then I I I I erased so so so yeah let's say like um there is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=742s"},{"start_seconds":750,"text":"this block n and then you are supposed to produce n+ one","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=750s"},{"start_seconds":758,"text":"um and you heard some approvals for n but you didn't hear all of them like you didn't hear enough of them right yeah","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=758s"},{"start_seconds":767,"text":"then you wouldn't be able to produce n plus one oh I see but if I'm just a validator I'm not a I'm not a block I'm","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=767s"},{"start_seconds":776,"text":"not assigned as block producer for n or n minus one oh or n or n n plus one or n n plus two I just didn't receive the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=776s"},{"start_seconds":784,"text":"block for n like what's the effect for that for example some something happened with network I didn't receive the block","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=784s"},{"start_seconds":791,"text":"at end uh and but but I like would like would I be able to continue receiving blocks for uh like n plus1 and n plus2","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=791s"},{"start_seconds":801,"text":"or am I just stopped there forever uh yeah you would still receive things um like so yeah like say you","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=801s"},{"start_seconds":809,"text":"didn't receive n right and then um n plus one gets produced um you will still get n plus one and and then","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=809s"},{"start_seconds":819,"text":"there's a problem um because you don't have block n right yeah yeah um but the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=819s"},{"start_seconds":826,"text":"the the the protocol that is not super related to validator um like the the more basic part part of the protocol","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=826s"},{"start_seconds":835,"text":"says that if you receive what is called an orphan block so block parent you don't know it will automatically go","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=835s"},{"start_seconds":843,"text":"fetch the parent oh okay so so pretty soon you will have n and then you'll be","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=843s"},{"start_seconds":848,"text":"able to validate n plus one oh okay okay and then back to the case where uh","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=848s"},{"start_seconds":857,"text":"if you if you didn't if you didn't hear of n um and like you are at here you","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=857s"},{"start_seconds":866,"text":"just didn't hear of n um and then you didn't send the vote right yeah let's say enough people","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=866s"},{"start_seconds":874,"text":"didn't send the vote then block producer n plus1 or the block producer for n plus1 doesn't have enough vots and so it","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=874s"},{"start_seconds":882,"text":"cannot produce a block um and then so so so then it looks like","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=882s"},{"start_seconds":891,"text":"um just erase this um it looks like some validators are on","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=891s"},{"start_seconds":898,"text":"N minus one and some validators are on N right yeah","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=898s"},{"start_seconds":906,"text":"um and so then let's think about what happens next","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=906s"},{"start_seconds":913,"text":"um so I think so n plus1 definitely gets skipped because it just NE was never","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=913s"},{"start_seconds":919,"text":"produced yeah um so then after some time","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=919s"},{"start_seconds":925,"text":"every validator would try to send a skip for2","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=925s"},{"start_seconds":933,"text":"um and these validators the these validators that have n minus one would try to send a skip from n minus one to n","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=933s"},{"start_seconds":941,"text":"plus2 and these validators who have n would try to send a skip from n to n plus","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=941s"},{"start_seconds":948,"text":"two uh so the so do they do do Val send basically if they are at at a height","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=948s"},{"start_seconds":955,"text":"they would send approval or skip for for any for all the height that's like greater than it or it's just just","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=955s"},{"start_seconds":963,"text":"sending like plus one because it because like what you said all is greater than yeah oh okay","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=963s"},{"start_seconds":971,"text":"yeah um yeah this is this is where my knowledge kind of gets a little fuzzy","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=971s"},{"start_seconds":979,"text":"I'm not exactly sure yeah I think I think our documentation was like a little bit vague like it says like send approvals","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=979s"},{"start_seconds":987,"text":"to like con itive like heights but they didn't say how many like you know afterwards but","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=987s"},{"start_seconds":995,"text":"yeah it's fine thank you it will it will keep sending will never stop oh okay this I","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=995s"},{"start_seconds":1003,"text":"see um but the hope is that like at some point somebody would have enough of these skip votes so that they can they","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1003s"},{"start_seconds":1012,"text":"can resume and start oh okay so I I think in this case","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1012s"},{"start_seconds":1019,"text":"case I I I I think you're able to combine skips that are not based on the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1019s"},{"start_seconds":1025,"text":"same height I'm not exactly sure","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1025s"},{"start_seconds":1031,"text":"yeah um yeah yeah I I think that should be","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1031s"},{"start_seconds":1037,"text":"okay yeah I have to check that but um we can we can see where that logic roughly","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1037s"},{"start_seconds":1046,"text":"is um so let's see maybe um can search for","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1046s"},{"start_seconds":1053,"text":"endorsement Doom slug Doom slog would sound like the thing that is responsible","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1053s"},{"start_seconds":1059,"text":"for doing that so Doom slab is the our consensus algorithm","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1059s"},{"start_seconds":1068,"text":"so let's see um","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1068s"},{"start_seconds":1077,"text":"consensus collect block approval","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1077s"},{"start_seconds":1088,"text":"um this is a helper function that just finds all of the approvals for a","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1088s"},{"start_seconds":1096,"text":"block um skip parent height parent","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1096s"},{"start_seconds":1107,"text":"hash yeah I I I think this is probably too much detail for now yeah yeah no worries I don't want take take too much time here","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1107s"},{"start_seconds":1115,"text":"yeah um so I think we should also talk about uh how we select block","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1115s"},{"start_seconds":1125,"text":"producers so in this eocky info page um we can see that basically","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1125s"},{"start_seconds":1135,"text":"every uh number of blocks we will have a new Epoch um on Main net it looks like this","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1135s"},{"start_seconds":1143,"text":"is typically like 14 hours um and uh this is this is like this is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1143s"},{"start_seconds":1150,"text":"configured as the number of blocks that um that are supposed to be within an Epoch um it doesn't mean that exactly","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1150s"},{"start_seconds":1158,"text":"this Epoch would be that many blocks um it is more like we need to have at least this many blocks but the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1158s"},{"start_seconds":1167,"text":"epoch has to end on a certain kind of block um like I think I think it has to","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1167s"},{"start_seconds":1176,"text":"be like a final block so final block means that um so in in this kind of","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1176s"},{"start_seconds":1183,"text":"normal case um a final block would be this n minus 2 block um so so it's","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1183s"},{"start_seconds":1191,"text":"defined as a block that has two more blocks on top of it that has consecutive","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1191s"},{"start_seconds":1200,"text":"Heights so if you have a block n and then a block n plus1 and n plus2 on top of it then that's a final block like N","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1200s"},{"start_seconds":1209,"text":"is a final block not n plus two um and basically once we have a","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1209s"},{"start_seconds":1216,"text":"final block then uh unless something really really bad happens then this final block is always","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1216s"},{"start_seconds":1226,"text":"in the canonical chain so so like we know that a fork cannot kind of bypass the final","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1226s"},{"start_seconds":1233,"text":"block yeah a question so I I see many many weere in our discussions uh that says something called accepted is is a","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1233s"},{"start_seconds":1242,"text":"block being accepted the same thing as being final uh I think I would have to ask you","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1242s"},{"start_seconds":1251,"text":"what the context there is um yeah like I think it's yeah okay we can I I I I can ask this question later","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1251s"},{"start_seconds":1260,"text":"okay yeah because I I don't think that's a standard term okay got it okay so back to the um back to these","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1260s"},{"start_seconds":1269,"text":"epochs um the epoch ID is actually just the the last block of the previous","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1269s"},{"start_seconds":1277,"text":"previous Epoch um so we just use the that block ID as the eoch ID um so if we then look","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1277s"},{"start_seconds":1286,"text":"at the validators um so each block we elect the block producers and the chunk","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1286s"},{"start_seconds":1295,"text":"producers U for the epoch and then this stays the same for the epoch um so we","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1295s"},{"start_seconds":1304,"text":"see here that um in the current Epoch um this validator here has so far","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1304s"},{"start_seconds":1312,"text":"been expected to produce 3,255 blocks and it has produced all of them um and it has also been expected to","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1312s"},{"start_seconds":1321,"text":"produce this many um or it has produced this many chunks but missed this many chunks","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1321s"},{"start_seconds":1327,"text":"so so like whenever like we said earlier the validator is supposed to produce a","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1327s"},{"start_seconds":1336,"text":"certain height but it couldn't then it would be missing that block um and then for","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1336s"},{"start_seconds":1343,"text":"chunks it's similar but the the chunk is for um Like A Single Shard in the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1343s"},{"start_seconds":1352,"text":"block um but chunks don't use this kind of um approval logic chunk just means if","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1352s"},{"start_seconds":1362,"text":"you have the parent block and you're supposed to produce this chunk you can produce the chunk um so I talk about how","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1362s"},{"start_seconds":1371,"text":"how the block and chunk prod uh production work um right after this but I just want to","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1371s"},{"start_seconds":1378,"text":"um talk about like the the election so so each producer has sorry each","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1378s"},{"start_seconds":1385,"text":"validator has a bunch of stake that's the just the amount of near that it has","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1385s"},{"start_seconds":1392,"text":"staked um and and then we we basically just rank the stake um and take the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1392s"},{"start_seconds":1400,"text":"top certain number of validators I think it's 100 and make them block producers so so you see here like BP means block","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1400s"},{"start_seconds":1408,"text":"producer um everything above here would be a block producer and then everything below here we select some more","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1408s"},{"start_seconds":1417,"text":"validators to be chunk only producers they are only allowed to produce chunks allowed and expected to produce chunks","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1417s"},{"start_seconds":1425,"text":"but not blocks um and we do this um we do this election like every","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1425s"},{"start_seconds":1433,"text":"Epoch um and uh if a validator doesn't do what","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1433s"},{"start_seconds":1442,"text":"it's supposed to do U they can get kicked out so like this this validator for example they were supposed to produce 27 chunks but they produced","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1442s"},{"start_seconds":1450,"text":"zero um so they were basically kicked out and they're no longer a chunk producer you can see there were previously chunk producers for the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1450s"},{"start_seconds":1457,"text":"previous two Epoch but now they are not um okay","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1457s"},{"start_seconds":1465,"text":"so um yeah a question so uh what does the the column shards mean like I","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1465s"},{"start_seconds":1473,"text":"thought all validators should track all all shards yeah so uh right now we're","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1473s"},{"start_seconds":1480,"text":"running in this uh phase one um of sharding which means that even though","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1480s"},{"start_seconds":1488,"text":"each validator is assigned The Shard it still it still tracks all shards um but","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1488s"},{"start_seconds":1496,"text":"see but um but tracking doesn't mean","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1496s"},{"start_seconds":1506,"text":"that it it is assigned all shards um so say this this validator here is assigned","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1506s"},{"start_seconds":1513,"text":"Shard zero for this Epoch um but um yeah so so so it attracts all","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1513s"},{"start_seconds":1522,"text":"shards but it's only aign shart zero which means that the chunk the the chunks it produces are only for shard","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1522s"},{"start_seconds":1531,"text":"zero oh I see oh I see so oh does that mean for this block there will be some other validator that are producing the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1531s"},{"start_seconds":1540,"text":"chunks on other charts yes oh so let's talk about chunk and block production then cool because","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1540s"},{"start_seconds":1548,"text":"that's going to be relevant and by the way these chars may change from Epoch to Epoch so","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1548s"},{"start_seconds":1555,"text":"um I think we we can find yeah like here zero would be the next chart that attracts but three is the current","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1555s"},{"start_seconds":1563,"text":"chart um so it could switch shards like that in phase two of sharding Not only would they only produce chunk for that","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1563s"},{"start_seconds":1572,"text":"Shard they will only track trunk uh uh track that Shard so it it won't have stay for any of the other","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1572s"},{"start_seconds":1582,"text":"shards okay um so let's go back to this so the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1582s"},{"start_seconds":1590,"text":"way chunk production and block production works is um so for","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1590s"},{"start_seconds":1598,"text":"every height um there will be a chunk producer","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1598s"},{"start_seconds":1605,"text":"for every Shard so let's say this is Shard zero this is Shard one Shard two and Shard three and these are the chunk","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1605s"},{"start_seconds":1614,"text":"producers so they could be block producers who also are chunk producers or they could be chunk only","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1614s"},{"start_seconds":1622,"text":"producers um but the the the role of being block producer is independent from the role of being a chunk","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1622s"},{"start_seconds":1630,"text":"producer um so just because you're producing block for that height doesn't mean anything about whether you're producing chunk for that","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1630s"},{"start_seconds":1639,"text":"height um so there four validators producing uh the chunks for each height","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1639s"},{"start_seconds":1647,"text":"and then there is the block producer for that height so this is all","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1647s"},{"start_seconds":1653,"text":"for for a specific height n um so the chunk producers they will","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1653s"},{"start_seconds":1661,"text":"each produce a chunk and the chunk includes the transactions the receipts and uh some","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1661s"},{"start_seconds":1671,"text":"metadata like the previous block um and so they will send the chunk that","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1671s"},{"start_seconds":1679,"text":"they produce to the block producer that is designated for this","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1679s"},{"start_seconds":1685,"text":"height and then the block producer will produce a block that","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1685s"},{"start_seconds":1692,"text":"contains each of these chunks so so they take these four chunks","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1692s"},{"start_seconds":1701,"text":"as input and um output this block that contains these chunks","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1701s"},{"start_seconds":1713,"text":"um yeah so what happens if if some chunks are missing let's say The Shard three chunk is missing is this block","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1713s"},{"start_seconds":1721,"text":"production gonna go through yeah it will just be missing that trunk which is allowed oh I see so so that's why we we","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1721s"},{"start_seconds":1732,"text":"can see um a bunch of chunks missing but most of the blocks are not missing","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1732s"},{"start_seconds":1743,"text":"um so when they produce chunks they they uh like the these chunks are not being","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1743s"},{"start_seconds":1752,"text":"voted on it's only the block that is being voted on um and so so there needs to be some kind","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1752s"},{"start_seconds":1761,"text":"of security Assurance on the chunks um because uh the the the the block","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1761s"},{"start_seconds":1767,"text":"actually contains only the chunk headers um and the chunk itself is like","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1767s"},{"start_seconds":1778,"text":"bigger so when when when validators vote on the Block they they don't necessarily need","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1778s"},{"start_seconds":1786,"text":"to download all of the chunk contents um they they only need to download some things and and this is for","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1786s"},{"start_seconds":1795,"text":"scalability because if you have like a, shards then each block would have a thousand chunks and you wouldn't want to download the body of every chunk that","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1795s"},{"start_seconds":1804,"text":"would be very expensive you also don't want to validate the body of every chunk so then only validators who track that","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1804s"},{"start_seconds":1813,"text":"Shard would download that specific chunk and then check the contents of that","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1813s"},{"start_seconds":1822,"text":"um but that also means um if you don't track the contents of a chunk you","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1822s"},{"start_seconds":1830,"text":"still need to kind of contribute to the security of that chunk because otherwise um only the validators who","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1830s"},{"start_seconds":1839,"text":"track that Shard would be able to vote for that chunk um I'm I'm being pretty","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1839s"},{"start_seconds":1846,"text":"handwavy here but but but there's this there's this additional mechanism where um a chunk","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1846s"},{"start_seconds":1855,"text":"producer when it makes a chunk uh when it makes","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1855s"},{"start_seconds":1865,"text":"a chunk it will slice the chunk into a bunch of","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1865s"},{"start_seconds":1873,"text":"parts um and it will give each validator or each block producer","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1873s"},{"start_seconds":1881,"text":"actually um some part of that chunk","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1881s"},{"start_seconds":1890,"text":"so I need to draw this like split this into","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1890s"},{"start_seconds":1899,"text":"Parts um and then the these parts are","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1899s"},{"start_seconds":1908,"text":"um are are read Solomon encoded so that like if you have um if you have I think","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1908s"},{"start_seconds":1916,"text":"like a third thir of the chunks I mean a third of the parts you would be able to con reconstruct the whole chunk um so so","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1916s"},{"start_seconds":1925,"text":"we distribute these parts to each of the validators and","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1925s"},{"start_seconds":1932,"text":"then um when the validators vote for the block","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1932s"},{"start_seconds":1940,"text":"um they check that they have the part that they're supposed to have","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1940s"},{"start_seconds":1947,"text":"for every chunk so so so that basically means like say","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1947s"},{"start_seconds":1955,"text":"you are this validator here then um and and you track Shard","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1955s"},{"start_seconds":1964,"text":"zero um so your this validator here um you track chart","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1964s"},{"start_seconds":1973,"text":"zero then that means you need to download the entire chunk zero that's","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1973s"},{"start_seconds":1981,"text":"the the chunk Zero's body um and then validate um the tunk","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1981s"},{"start_seconds":1989,"text":"content so that means like executing the transactions the receipts","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1989s"},{"start_seconds":1997,"text":"um then for the other shs the other chunks um make sure you","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=1997s"},{"start_seconds":2005,"text":"have the part um that you own for that chunk so for for chunk one two and three","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2005s"},{"start_seconds":2015,"text":"you need to have your corresponding part of that chunk um and then when when both","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2015s"},{"start_seconds":2024,"text":"are um are successful then you endorse the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2024s"},{"start_seconds":2035,"text":"block um so that's it's just kind of it adds a bit of security um to the chunk to the chunks","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2035s"},{"start_seconds":2044,"text":"because we're only voting on blocks any questions here this is kind","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2044s"},{"start_seconds":2054,"text":"of confusing yeah I have a question so um basically you like uh every valador should track uh currently should track","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2054s"},{"start_seconds":2062,"text":"one Shard and then for the other three three shards they should they should have received three parts and then uh","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2062s"},{"start_seconds":2070,"text":"they should check that so that let's say they they didn't receive one of the parts like that let's say they download their chunk for their Shard and then","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2070s"},{"start_seconds":2078,"text":"they had two other parts will that create a problem for them to endorse the block yeah if they're missing a part","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2078s"},{"start_seconds":2086,"text":"that they're supposed to own and they should not vote on the Block okay got it what would happen so so the scenario","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2086s"},{"start_seconds":2094,"text":"that we're trying to prevent here is is that a chunk producer produces the chunk","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2094s"},{"start_seconds":2101,"text":"it distributes the chunk headers um but then doesn't actually distribute the chunk content or the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2101s"},{"start_seconds":2109,"text":"chunk content might just be malicious um but it doesn't distribute the chunk body so nobody has the chunk","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2109s"},{"start_seconds":2117,"text":"body nobody is able to validate the chunk body right and then you have these","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2117s"},{"start_seconds":2124,"text":"validators on 25% of which can actually Track Your Chart these 25% are going to basically","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2124s"},{"start_seconds":2132,"text":"not approve your block but the remaining 75% will because they don't know anything about your","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2132s"},{"start_seconds":2139,"text":"chunk and then based on the 75% of vote the block exceeds two3 approval so then","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2139s"},{"start_seconds":2146,"text":"it just keeps going but the chunk is invalid um and so so that's why","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2146s"},{"start_seconds":2155,"text":"everybody needs to kind of have a part of every chunk so that if we do get","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2155s"},{"start_seconds":2162,"text":"enough votes then that means we have at least two3 of the parts which means that","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2162s"},{"start_seconds":2170,"text":"collectively we're able to reconstruct every chunk if we wanted to and to be able to reconstruct every","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2170s"},{"start_seconds":2177,"text":"chunk is important so that if we need to prove that that a","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2177s"},{"start_seconds":2184,"text":"particular chunk producer was lying about that chunk um we need to have the data to","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2184s"},{"start_seconds":2192,"text":"prove that so so in this case like if if the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2192s"},{"start_seconds":2198,"text":"chunk producer produce a malicious chunk but only distributes the header then","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2198s"},{"start_seconds":2205,"text":"people will not have the parts and they will not vote on the Block if they if if if the trunk","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2205s"},{"start_seconds":2212,"text":"producer produces in invalid uh a a malicious chunk and distributed the chunk","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2212s"},{"start_seconds":2219,"text":"entirely then the validators would be able to reconstruct that chunk and um","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2219s"},{"start_seconds":2227,"text":"and we will they would be able to prove that the chunk is indeed","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2227s"},{"start_seconds":2240,"text":"invalid do do do validators send anything if they find a chunk is invalid or they just","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2240s"},{"start_seconds":2247,"text":"V they they actually do they send a thing called challenge um but that's not a thing that only validators can send","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2247s"},{"start_seconds":2254,"text":"anybody could send a challenge a challenge is basically a proof that uh somebody prod produced something invalid","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2254s"},{"start_seconds":2261,"text":"so in this case if you want to send a challenge that a chunk is invalid you will need to include the chunks","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2261s"},{"start_seconds":2270,"text":"uh like either the chunk header or the chunk body like something about the chunk that is invalid","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2270s"},{"start_seconds":2277,"text":"and then attach a proof why why it's invalid got","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2277s"},{"start_seconds":2283,"text":"it um so like for example let's say the the chunk producer produces a malicious","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2283s"},{"start_seconds":2290,"text":"trunk that that that that says that um if you execute these","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2290s"},{"start_seconds":2297,"text":"transactions you get uh you get an outgoing receipt that that that basically means a billion","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2297s"},{"start_seconds":2304,"text":"year um then challenge can prove this is invalid by attaching a proof of like the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2304s"},{"start_seconds":2313,"text":"state before the execution like the the relevant parts of the state before the execution and then um the transaction","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2313s"},{"start_seconds":2322,"text":"that ex or or the receipt that executes and then the resulting State and show that it doesn't match the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2322s"},{"start_seconds":2330,"text":"the receipt that was coming out um yeah so so if if there is a challenge","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2330s"},{"start_seconds":2339,"text":"then um then we then the the next block is going to include the challenge and then like maybe slash the validator re","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2339s"},{"start_seconds":2348,"text":"revert the blockchain state and so on oh so we we we we do have the logic to revert the blockchain","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2348s"},{"start_seconds":2356,"text":"state uh it's not implemented","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2356s"},{"start_seconds":2365,"text":"okay okay um so we also had the Valor info page which is not migrated here so","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2365s"},{"start_seconds":2372,"text":"I go back to the old UI um and here","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2372s"},{"start_seconds":2378,"text":"um this um what's going on","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2378s"},{"start_seconds":2388,"text":"here it's not showing anything I guess this is a very small validator oh this this must be a chunk only producer","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2388s"},{"start_seconds":2397,"text":"um there's a there's a page that is specifically for","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2397s"},{"start_seconds":2404,"text":"um blog producers trying to see if I can find someone who actually has an open port I guess they","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2404s"},{"start_seconds":2411,"text":"don't um so I'm going to go to one of our datet","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2411s"},{"start_seconds":2424,"text":"instances see if this one has a De","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2424s"},{"start_seconds":2435,"text":"Page not even work trying to see if I can find the validator so we can look at that","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2435s"},{"start_seconds":2444,"text":"page maybe the market try","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2444s"},{"start_seconds":2455,"text":"that okay","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2455s"},{"start_seconds":2466,"text":"um and I don't know where to find an instance where I have a validator but um","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2466s"},{"start_seconds":2473,"text":"if it is a box producer this this this table would basically show","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2473s"},{"start_seconds":2480,"text":"um for each block that is supposed to produce which validator gave it votes and","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2480s"},{"start_seconds":2487,"text":"when um it's is kind of a de debug page for","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2487s"},{"start_seconds":2495,"text":"that um okay I I think we also need to um talk about","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2495s"},{"start_seconds":2503,"text":"the the structure of a Blog header I think that's what what was mentioned in the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2503s"},{"start_seconds":2510,"text":"onboarding topic um so","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2510s"},{"start_seconds":2518,"text":"walk through what's in the block header close","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2518s"},{"start_seconds":2524,"text":"that um so so just look at the V3 block header um so the block has the previous hash um that's just the previous block","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2524s"},{"start_seconds":2533,"text":"hash there's a signature of the block producer um that's the block producer","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2533s"},{"start_seconds":2540,"text":"that signs the block after they produce it and then there's the inner which is split into light and","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2540s"},{"start_seconds":2549,"text":"rest um but these two together are the block header so there's the height which is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2549s"},{"start_seconds":2556,"text":"the height that we talked about um the epoch ID that this block is in um and then the next Epoch ID which is just the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2556s"},{"start_seconds":2565,"text":"next Epoch ID like we calculate that for whatever reason um and then we have a bunch of","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2565s"},{"start_seconds":2571,"text":"roots so uh this basically kind of um ensures that the block is produced based","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2571s"},{"start_seconds":2580,"text":"on this the the the right um the right assumptions so like the state root would","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2580s"},{"start_seconds":2588,"text":"be um a hash the the root of the merco tree of the entire state of the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2588s"},{"start_seconds":2594,"text":"blockchain and then outcome Pro I'm not exactly sure what all these roots are um","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2594s"},{"start_seconds":2602,"text":"there's a time stamp and then there's the hash of the uh the next EPO block producers so that just kind of verifies","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2602s"},{"start_seconds":2610,"text":"that everybody agrees on who the block producers should be in the next Epoch um for the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2610s"},{"start_seconds":2620,"text":"rest uh a bunch of more Roots these are these are for the chunks to verify that the chunks we include are indeed the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2620s"},{"start_seconds":2628,"text":"chunks that are going to be included in the block um because we we include the chunk headers but then there's the body","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2628s"},{"start_seconds":2637,"text":"of the chunks so like we we just hash everything to make sure um everything is what we","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2637s"},{"start_seconds":2647,"text":"include um there's the challenges route that's that's for the list of challenges um and the actual list of challenges is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2647s"},{"start_seconds":2654,"text":"in the block body and this is just the header random value this is for uh the verifiable random","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2654s"},{"start_seconds":2662,"text":"function um whether proposals this is this is um if a block","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2662s"},{"start_seconds":2670,"text":"contains proposals like um proposals for uh how how much stake the this","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2670s"},{"start_seconds":2679,"text":"particular validator should have in the next OT or maybe two EO after not sure chunk mask is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2679s"},{"start_seconds":2687,"text":"um just which chunks are included so if a chunk is is missing then it that entry will be false gas price","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2687s"},{"start_seconds":2697,"text":"total supply of near in the system challenges result I don't really know what that is and then the last final block and last DS Final block the last","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2697s"},{"start_seconds":2704,"text":"final block would just be the um the final block that we talked about so","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2704s"},{"start_seconds":2712,"text":"the the the the last block in this chain that has two more blocks sitting on top","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2712s"},{"start_seconds":2719,"text":"of it that has consecutive Heights and then last DS Final block is just a weaker it not notion that that it's just","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2719s"},{"start_seconds":2728,"text":"you have one block stacked on top that has consecutive height the block ordinal is the the number of blocks that","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2728s"},{"start_seconds":2738,"text":"are in this chain so if you skip the height um the ordinal is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2738s"},{"start_seconds":2744,"text":"still n+ one um and then the previous height","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2744s"},{"start_seconds":2751,"text":"which is the previous block height because that might not be n minus one if you have a skip uh Epoch synced I don't","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2751s"},{"start_seconds":2759,"text":"know what that is approvals um so this is the approvals that you've","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2759s"},{"start_seconds":2767,"text":"received in order to produce block uh produce this block so so like typically it would be a bunch of endorsements for","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2767s"},{"start_seconds":2774,"text":"the previous block and it's encoded as a vector instead of a a map because we","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2774s"},{"start_seconds":2781,"text":"know what the order of validators are for this e talk so we just include a","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2781s"},{"start_seconds":2788,"text":"signature for each um for each validator in that order U if if a signature is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2788s"},{"start_seconds":2796,"text":"missing it would be none on the product version","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2796s"},{"start_seconds":2804,"text":"um yeah and then we can we can get the latest block Header by just like sending an","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2804s"},{"start_seconds":2813,"text":"RPC um the block method and then it it shows us everything so so you see here","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2813s"},{"start_seconds":2822,"text":"the um oh this is not the block header this is the this is the actual block so um it it includes the the chunks so","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2822s"},{"start_seconds":2831,"text":"these are the chunk headers four chunks one two three four and the the block header um the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2831s"},{"start_seconds":2840,"text":"approvals all of these signatures one for each Val um","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2840s"},{"start_seconds":2849,"text":"and stuff um the challenges route is just all these ones because we we don't we don't enable challenges","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2849s"},{"start_seconds":2857,"text":"yet um","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2857s"},{"start_seconds":2865,"text":"yeah um any","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2865s"},{"start_seconds":2874,"text":"questions","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2874s"},{"start_seconds":2888,"text":"yeah one question I have is uh currently is it like if uh if a if a chunk","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2888s"},{"start_seconds":2896,"text":"producer or block producer produces a malicious block or chunk the only way","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2896s"},{"start_seconds":2903,"text":"that they like their content will not be included in the chain is like people","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2903s"},{"start_seconds":2910,"text":"don't like other validators don't vote","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2910s"},{"start_seconds":2917,"text":"uh so I think there's several different cases","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2917s"},{"start_seconds":2923,"text":"so um if it's a block producer producing in invalid block then it should be kind","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2923s"},{"start_seconds":2930,"text":"of obvious because everyone else is able to validate that um if a chunk producer prod this is an invalid chunk then if we","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2930s"},{"start_seconds":2938,"text":"go to phase two of charting where not every validator tracks every Shard then only the validators who track that Shard","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2938s"},{"start_seconds":2947,"text":"would be able to know that the chunk is invalid unless it's some like very obvious issue like the chunk header is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2947s"},{"start_seconds":2955,"text":"invalid um then everybody would know that but um if it's the chunk of contents that are invalid then only the","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2955s"},{"start_seconds":2963,"text":"the people tracking that shard would know that and assuming there are more than four shards then or if there're at","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2963s"},{"start_seconds":2971,"text":"least four shards then um the mechanism preventing that from","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2971s"},{"start_seconds":2978,"text":"continuing would be challenges um because we would have more","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2978s"},{"start_seconds":2985,"text":"than two3 votes from the people who don't track that","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2985s"},{"start_seconds":2994,"text":"Shar I see I see there were some discussions a","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=2994s"},{"start_seconds":3000,"text":"while back um about whether we can do better than that um because challenges","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3000s"},{"start_seconds":3007,"text":"is a bit is a bit heavyweight um but um I don't think there were","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3007s"},{"start_seconds":3015,"text":"concrete action items coming out of that like some some other ideas were","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3015s"},{"start_seconds":3021,"text":"like if if we have some sort of proof","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3021s"},{"start_seconds":3028,"text":"that oh like one one more and one one kind of simple idea would just be Not","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3028s"},{"start_seconds":3036,"text":"only would you require two3 volt from all validators you would require two3 volt for from each set of","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3036s"},{"start_seconds":3045,"text":"validators that track each Shard so you need two two3 volts for every Shard um but then the problem is also","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3045s"},{"start_seconds":3054,"text":"that uh you sacrifice availability because what if there's one chart that just happens to not have two3","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3054s"},{"start_seconds":3062,"text":"VT So currently there is no issue of like invalidating these like invalid chunks because because all validat track","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3062s"},{"start_seconds":3071,"text":"all Shard so like they okay yeah so for phase two we would need to solve this","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3071s"},{"start_seconds":3078,"text":"issue somehow um we need to figure out how to enable challenges","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3078s"},{"start_seconds":3086,"text":"I I see thank","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3086s"},{"start_seconds":3096,"text":"you oh uh one last question I have like uh what are the situations that would","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3096s"},{"start_seconds":3103,"text":"um like make the whole like Network stop producing blocks or there's no situation","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3103s"},{"start_seconds":3112,"text":"that should that that should happen it certainly happens and","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3112s"},{"start_seconds":3119,"text":"uh there there are various different situations that we run into um like by Design it's not supposed to do","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3119s"},{"start_seconds":3128,"text":"that uh but uh I think that the the latest one","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3128s"},{"start_seconds":3134,"text":"we had was something like","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3134s"},{"start_seconds":3142,"text":"uh there there was some invalid trunk going around","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3142s"},{"start_seconds":3149,"text":"because uh of the network upgrade and um and I think some validators thought","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3149s"},{"start_seconds":3158,"text":"it was valid and other validators thought it was invalid and","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3158s"},{"start_seconds":3166,"text":"um you know what I I I can't really recall what was going on but but there were there were several implementation","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3166s"},{"start_seconds":3174,"text":"issues um that just made the network stock um there there there's some validators who","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3174s"},{"start_seconds":3182,"text":"were supposed to produce blocks but they were behind and they were somehow not able to sync up to the to the most recent","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3182s"},{"start_seconds":3190,"text":"block um yeah I think that that that was one major","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3190s"},{"start_seconds":3197,"text":"reason got it and the network was so heavily forked that was um like the fork","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3197s"},{"start_seconds":3205,"text":"was so long there were more than hundreds of blocks and our syncing algorithm just didn't work in that","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3205s"},{"start_seconds":3213,"text":"scenario oh okay is that why we are like we are trying to redo the like not redo","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3213s"},{"start_seconds":3219,"text":"but have a new state sync or no State sync is separate from that state sync is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3219s"},{"start_seconds":3227,"text":"for uh syncing the state not the blocks okay um the block sync is is uh is","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3227s"},{"start_seconds":3235,"text":"implemented with header sync and body sync header sync is to download the headers and body sync is download the block","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3235s"},{"start_seconds":3243,"text":"bodies and so specifically like one issue that we had last time was that because the forks were so long um there","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3243s"},{"start_seconds":3252,"text":"was a gap in Heights of more than 512 and when we do header sync we only ask for the next 512 Heights so that we","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3252s"},{"start_seconds":3261,"text":"don't get the next block oh we fix that we fix that by instead of asking for Heights we ask for","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3261s"},{"start_seconds":3270,"text":"ordinals okay I think that's how we fixed it that I I was the one fixing it but I don't","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3270s"},{"start_seconds":3277,"text":"exactly remember which solution we took anyway um thanks for the detail yeah thanks for","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3277s"},{"start_seconds":3286,"text":"attending thank you thanks Robin that was great","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3286s"},{"start_seconds":3294,"text":"thanks all right see you guys later see","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3294s"},{"start_seconds":3318,"text":"you","url":"https://www.youtube.com/watch?v=0lcFW5FWMdQ&t=3318s"}],"youtube_url":"https://youtube.com/watch?v=0lcFW5FWMdQ","url":"https://near-pedia.xyz/videos/0lcFW5FWMdQ"}