Protocol Berg Workshop: Parithosh, Barnabas Busa - Testnet or Not, Here We Come
ETHBerlin·Wed, Oct 9, 2024, 12:00 AM
Speaker
Post-Merge testnets are a beast to run, this workshop would give you an overview into all the tooling that exists to make this job easier. We would also setup a small testnet during this workshop to help familiarize with the tools. Parithosh - I am an Ethereum enthusiast with a deep love for all things servers. I incorporated Ethereum into my Master’s thesis and loved the experience so much as to make it my full time job. I currently work in the DevOps team of the Ethereum Foundation and I mainly focus on the Ethereum protocol upgrades. I’m also an avid photographer with a specific interest in Landscape and Travel photography. Barnabas Busa - Devops at Ethereum Foundation https://protocol.berlin
Transcript
everyone thank you so much for joining us today um so we're going to be talking about test Nets but before we do that there's a couple of resources and Because the Internet might be a bit sketchy we want to get you started early on downloading the there's a bunch of people from CES around you can some at comper um they can help you download the images f i USB in is the idea is honestly get a laptop you want to show you how you can go from I have ANP till I have something that is tested and I can get running yeah you want show you the entire entire protyping box as well as all the different components in the testet and what what happens um yeah please make sure to download Docker if if you order and uh that is going to be pre requirement for everything that we run right now so you should be able to run do possibly without stud yeah and in case you're looking for any quick commands Etc you can go to noes. e.org so URL um e panda off/ and that should give you all the L and not that you U besides that one there also GI reposit with some bre information um we will be going through everything step by step but I just want to showcase some things first so that you can already trigger the downloads and then by the time we actually add that step we want to okay that being said um [Music] welcome require so uh before we start let so I'm and this is foundation and most of our daily life is working with uh T and we mainly focus on the next update so right now our day today is uh and we actually probably towards the end going to also get a part of our life uh we have M support in Cancun starting from yesterday evening we tested it so just T it live show you how the work um you can follow us both on or Twitter whichever you prer and our overall arching organization uh so you can find every tool every repository talk about uh just to show you what you guys are going to expect today uh little bit of background we will talk you the we used T hands on on it and then we focus all the testing tools that we use all inds and then we have questions answers and so hopefully if you're at you already know anything this but there is a [Music] chance um so is this is this [Music] okay so what ethereum is the core protocol itself has specifications there's different parts the decentralized network you can arbit computation on it what it isn't it's not a singular used V application it's not the NF aggregator it's not programming language it's not just C tools etherum is a super set of all of the things mentioned before and how it looks like U I didn't want to make a slide for Tre canun because canun does change some things Cancun is the next upgrate for eum so we're going to pretend as if for today's purpose was already in um so eum has two major parts you have the execution and you have the consensus layer okay so the consensus layer is what takes care of what is right what is truth on E and the execution layer takes care of okay what can I do with eum the two layers communicate with each other via the engine apia and you can individually interact with each of these layers via the RPC end points um so from the regular users perspective you're almost never thinking about the consensus Le so whenever you get a balance whenever you submit a transaction Etc you almost always execution so the execution lay the state the transaction ABM and the consensus lay the beacon chain the beacon St who voted for what what is the canonical head of the chain both of these two systems have their own individual p uh so you have two times Discovery two times um from the perspective of a year two when you want to bundle up and submit your blogs so that's the bundled up roll up uh new transaction introducing with you would do so with the execution a new transaction type so you would just send the new transaction and they will show up in the these blocks however live on the consensus layer side and for now that's pretty much all you realistically need to know about Cancun and so what files are important so now you kind of have an idea of the three other two layers we have to configure these two layers weite so I'm going to go relatively quickly over the next two three slides but I do want to mention them because they can get 5 um and we want to keep the introduction to the f are only within 30 minutes um so the side um unfortunately the El world has multiple standards in everything uh same with Genesis fil so we support essentially three types of this file and this is J uh one for B one forine one for yeah uh the Genesis Json refers to the get one uh if you see something with the chain spec it refers to the ne one and the basic one is usually just gen again but they have some tiny differences between if you provide the get Genesis file to Basil one work if you provide the get Genesis file to one work we have wrapped all of these into nice toing such that you don't have to care but if you do want to care for something that's you uh the Genesis file essentially defines what network want so chain ID for the consensus layer to even start it a deposit contract and a deposit so what we do is we just take the uh storage code of the deposit contract and we put it in the so when you start the network the deposit contract already exists you don't have to wait to start the network Dey Tove deposits now that stuff requir in uh we add a PR so we have money to spend we add when the network starts and when the network falls into different um the fors itself are defined differently on the different files uh so have a have an IA so if you're using get or mil uh they would have something along the lines of canun hand and that would enable all the eips that going to can if you go to Netherland you have to enable or disable each individual EIP so that's a it's a fun thing to keep track of um I mentioned the two layers and they communicate with the engineer here they use the they use the JW token forication and um so you essentially just somewhere where both these two components can the same open um we disc in C you see that um here a simple one that will work for every single plan out there uh we did have some early problems with oh one client fails for a new L doesn't exist or one client expect in the beginning Etc just make a little easier but in the end [Music] have now on the C side of [Music] things stand things um so we have a conf number every single C need the conf and that tells them what the number is supposed to look like so that Source can be found in the consensus T this one is updated regularly so you will always be able to find the latest um config file that all the clients Support over there and this would include all the new parameters that allowing to be configured so for example yesterday we were at ACD we have a new parameter that will be that would limit the number of valid that can enter and that enter the um and that value will be configurable at this location the config name um you do actually have to set it because prism for example doesn't like it uh if you don't set it because by default they will always assume that you're overriding main net values but you're doing you don't actually want to override um and that would lead to some Ed Cas so just better to Define conf and they all import as c um M Genesis active validator account so that's the minimum number of deposits that need to be there before the network connection start foret 16,800 for all the tests we decide how many validat test to have this value is basically that then you will Define when the network is technically earliest allow to start so even if you have enough deposits you would still wait until this value the network starts and then you will add a delay um and this delay is essentially when all the apis would definitely work uh when ping is mostly happening on on sometimes so this delay period we normally just keep it as 1 minute biger than I thought will probably High um the Genesis for version is is the same as the chain ID so this value is what identifies a BAC uh it ideally needs to be unique because if you this is also deposits and a lot of locations so you ideally want it to be um whatever for you're looking at that also gets for vering and when that for verion happens the the nodes essentially change their peing to only appear with people who are on the same for otherwise you're sharing message with the other who and similar that we have the for E so that's when the for is supposed to happen terminal qual difficulty we needed this for the merge for every Network we're talking about we just do merge checks so the merge has already happened in the past right now we're testing out and we probably be moving to Genesis so that means withdrawals are enabled at Genesis and you don't need to posts they so this one go really fast through it so you can mess with how quickly the chain progresses so by default I mean that exp prob but we don't want to wait 12 seconds on tests we just drop it down all the way to three sometimes don't like it um we I think 9 is usually the same value so um a couple of these values are relics of the One World so block is ETC we don't really do that hard a now um and what else is important is the deposit chain ID so the deposit chain ID is the same as the E chain you're talking about so this is essentially what makes the link between the and the C so you you know where um and then we have some blog related fields as well so we're going to be playing around more often right now so we can do some Str testing we BLS on and and that was just the config you so that affects how the network works but we still have a bunch of other files that exist in F and this folder we you can pass the entire folder as as a as a flag to a lot of plans and they just pick and choose which which file they need this isn't clearly standardized because you can see you have deposit contract block and then you have to deposit contact block hash because n expects the hash someone El expects the block so that part still isn't standardized but again we have overing cooling you don't really have to care about this the other one that's kind of IND is the S so the starting state of the V what we essentially do is we take the conf Y um you triend as if all the deposits have been done and then you generate a starting SK so you don't actually have to do the deposits anymore if you want to have a network with to Med validators regularly you would have had to start the you would have had to do deposits wait for all of them to SW but here we just kind of pre Computing everything and then passing that to the CL as hey why don't you just start buiness easy and FAS for us and there's a bun of pooling to go from s which is notable to fast value so you can actually what Val every client has again a different requirement best just have all of these and useful tools for configuring all the things so we have the HM Genesis generator uh essentially it's a Docker file that wraps all the tools you need and it gives you a single values. n file which just allows you to configure what we think are things people might want to be messing with so you can change what for happen you can change how quickly blocks are things like that and then everything as just has the same VI and we have three different uh release lines so you have one that supports B Genesis one that supports capella Genesis by default and one that supports V Genesis and work is a bit trickier because you have to change which Library version you use they different CS um and then there's also an optional API useful if you're only the holding kubernetes so generate your fil kubernetes fch the conf files from the API and it's really useful this is what we use every single and the way we structured it is this is the root uh source of Tru for Genesis and then a lot of pooling that we use just inhabits this root source of Tru so when there's a change for example mer need to be added we make sure it goes here first and then once it's here all the dependent from this upate have to upate the number and then all without um the tools that are in this exide one people have used it is for example the inst that's chis one that's from progam we've been using it since forever um it supports all types of network ches um that are available and you can see kind of how that confes um we also added support Shadow Fus that so actually a shadow for all the files required for a shadow for will just be generated by this generator as long as you add an RPC to get some data uh that's that's largely our bread and butter we have E2 Val tools which is great in case you guys want to generate a lot of validator please um on I think if you were to use the deposit CLI we did a test with 2.1 million validators it will probably take a couple days to generate all of those keys but each two supports a insecure flag which basically doesn't L any hatches and through that you can cost it in a really fast machine and generate 2 plus million keys in under half an hour which works beautifully yeah and it's supp Ming so we had like this one fing machine that6 C so you would hashing and generating keys on all um and Z is really really useful when you need to go between SZ and um Jon um this is kind of our first check so once we uh have a definition for what the SS is supposed to look for look like in a network um if the Gen state is unable there's no F starting Network so we just pass it through zcl and the reason zcl is again a source of Truth is because this inherits all of it types from z zyp um and zyp is just sour of TR for definition of what a network is supposed what what the network is supposed to support support for um so if this one doesn't work you can be sure PL won't work in terms of the testing stack uh how are we actually doing onine okay cool so uh entire test is that everything basically inherits what you've seen earlier and everything basically just configures what see so all the tests because we want to make sure that c teams are able to s in and I'm able to make whatever changes that they need we use fible so we have a bunch of notes with paron and for those not familiar with an think of it like fancy scripting that's essentially what it does c very scalable we've run it on 400 networks and it works great um if you want to have something that reach out for us we will show you what for values you might to make it a more performance but by default works great um we suggest using it for how uh 20 to 50 node what um we do also support hel for everything um so we have hel charts even for the latest P so you can also run bre on and heav um also our collections include not just ethereal noes we also have things that are just to have where you can Define Genesis as an variables and it just works great um and then the approach we've chosen is a template so if you want to go to GI uh to the template template test this is PR configure with the folder structure we expect with the secret Styles we expect the tool Styles we expect every use ASDF for Tool management so you can just run ASDF and then or you can actually just run set up message it will download all the you make sure that you're using the right tool versions it make sure that your environment is basically set up eventually I guess we look into mix for this but for now yes great um it will also pre give you terraform that you can use on digital o as well as heads um it will give you the anible structure we need and then anible generates the T structure you so everything is just automatically working all you have to do is configure it and GitHub templates allow you to just instead of having a fork it you can just create new uh Repository using this temp and this is exactly what we do for every single customer so for example uh there's a new for uh it's being prototyped right now it's called whisk and whis enables validy so you don't essentially know who supposed to propose a block until after the plan is passed so you can't take off over simplifying but that's essentially what's happening um and what we did was we just P template um we modify the image versions We modify where genis is supposed to happen there like a list of 10 things you have to change and then you just run anible and you have a test it takes roughly 30 minutes to and it's dropped down our oil in insanely um and we make sure that the template testet is up to date with the l so any changes that happens we make sure it and in case you guys don't like the Cent Team images we have a each Cent do image Builder um if you're someone from the testing team or if you're someone from the security team or if you're someone who often wants to build stuff um let us know we're happy to add you there um mainly because there's there's what five six consensus layer plans five six execution layer plans each of them has a different CI process some of them images for branches some of them only do chunk based development so you have to wait for Stuff account before it um U before the image is built some of them don't like having a shell which is hard if you want to do kubernetes init commands um rather than dealing with 25 different things we just thought okay why don't build them ourselves um and then we can also build um arm as well as EX images with we like um and to be performance I guess um so we just do a lot of things that feel fre to add your own one thing that is nice to mention and maybe this we have a toly this um feel fre to contribute to it or if you see something there that you think you can build is pick it off uh we did actually have someone not too long ago um take out the LI V chain Explorer we I think have two or three versions of it out in the W right now because we wanted to have it for testing and St um there's a peer-to-peer monitoring tool that we're building um this is extremely actively used for um for figuring out what log size that the network can have figuring out um is are the latency is increasing figuring out oh there's a mental transaction load increase does that mean the block sizes are changing and what you can do a lot of analysis and this C monitor Pro Z connects all of the data and then shs it off into a click house database and click house database is connected to jup notbook so you can write any sort of analyses you can so if you've noticed Stu from from from the r team um especially along maxb he might have a few research posts a lot of that data is generated from outp uh and I think the mega Labs guys presentation week or two ago and they also use if not some components of they off simar infrastru to GA the data they need to so the idea is that we also going to support a data analytics back and with basically testing this on test and Main and the idea is that we have this on every single testet and we actually do for the big block test Where We R 2.
1 million validators uh we land up and that was our best insight into knowing okay how many validator messages are there what sort of delays are we seeing what sort of latency increases we see and so on so we want to use this more and more in test but towards the end stage of the test so that you know that the network is stable you know that it's stable against fing you know that it's in general good and we're thinking of pulling the tri for that's when you would use this to figure out okay what optimization does we have Explorer from um and Beacon chain Explorer it's supposed to support a bunch of FS right in Genesis and it doesn't cat any sort of validator objects which is perfect we don't really care if a validator ether 2 years ago for a test all we want to know is who was supposed to propose did they do their job why not and doing some basic Insight uh he also has a proof of work foret which so far I think has been our only success for that's that does not get insanely SP empty uh was big and Mario maybe um he has a transaction F transaction F also suppos block fing right now so by default we um spin that up EAS and we have a met because if you guys are in the and you run one of every client you would have realized no client has the same metrics um and it's awful so that we we actually tried getting them on the table and fixing that but at some point we thought it's F so this what see the client um it'll use the RPC to collect data that we think Mak sense and if you want to add data fields there if Fe um we then have our own that us very nice on our so join the public discussions uh Discord is a great um the Privacy SK Discord page there's another one is research you can check out a lot of the talks and protocol a really good place to all this so so far I've just spoken about a lot of disparaging tooling and no way on how to coherently put it together um other than the template that so so there's two or three parts that we now [Music] um so this one just sping your background and at this point um you kind of know what the network Parts up kind of have an idea what sort of tools we use and you kind of have an idea how they get together uh but now we want to actually get you guys using stuff and before we get you guys using stuff are there any questions at this so I promise all the tools will fit together um and we'll show you how how they fit together and we make sure that you can run it fit them together um but if you have questions at this stage just raise your hand and we can talk about it that sounds good [Music] um just a show of hands who knows what doct is and who doesn't care okay uh who knows and or has used kubernetes okay that's perfect so we're going to do this in two ways um so the first one is I'm to tell you what the next two steps are next three steps are um all the tooling that you've seen we will be having a video probably next week or the week after that implements the um template t repository and shows you all the changes that need to happen um T Dr all the changes can be found in really nice reading it tells you adjust this variable change this variable and so on it's like 10 20 different commands steps it's not too bad itself as long as you kind of uh so we're going to do that off scen mainly because when we attempted to do it ourselves and we were explaining each and every single thing we realize we have to explain kind of all of this so we kind of had to show people what is STS we had to explain secret management we to explain tform how do you manage infrastructures code what is esdf what are all the different tools we have to get you guys pgp Keys we had to get you tokens so that you can spin up the notes yourself it honestly it is is documenting it took way too long um I think it's not the format for an 80 minute um Workshop it's probably a format for a video and you guys can comment on that video but that's only something we use on test there's another tool that we use that's a really nice local testing Tool uh the way we work uh for all of Bo is you have Cent teams you have Cent teams that have uh follow the spe and they build a branch or an image that they think should be compatible with the so what we essentially recommend is cool there's the ham and the testing team and they have hi which is a local test simulator so you will put that image in there and the local test simulator will say hey and I following the spe he we try this Edge case your experience Sol we essentially want the client teams to get that step down first or get so many positive results there that we're comfortable moving however most of the high tests are not necessarily interop related they're more related to edes so then comes the question okay how do we this you have 5 years 5 C let's say all of them are actually ready um I don't want to spend even half an hour setting up a test net also test net SP money um we don't want to do that we just want to have something quick that we can run locally that will spin up all these combinations and is this going to break um and that's where koses come the big J so there's [Music] a yeah I the Comm um so ptosis is is from a mental perspective you can think like a middle R um so kosers would take ad Json file it will pass it through the engine coordinator and that engine coordinator will spit out information that either the docker engine or the kubernetes engine can use to spin out okay uh they have a beautiful do page so you can just [Music] go was it's okay Tak can interact with it in a bunch of ways uh from your perspective it's just simple Json file and that Json file will end up as a testing which is Magic right uh so this is an approach we use early on and we were able to get a lot of bugs fixed so the bugs that I'm kind of explaining are um prism expects this version hash in this format uh under this condition that nether mind did not or NE mind was not even to with guest because they both had different expectations the F ID supposed to be or um the moment that you try to produce a block you're not able to because some part of that flow is broken um so there's a lot of things there that relate to interrupt testing that would wasted a lot of time for us but we were just able to get through it over and then we also added a transaction fuz there so all the basic sort of fuzzing issues that you would normally notice like hey submit a transaction that has the wrong field Network already fails because somehow it propagated as an invalid drop on the network only catch is great um and proposes what the concept willly dump so it would just take everything related the and dump it into CLE folder and then you can take the JS file D file and they everything need toce that what can you use it for um it's written in sty so you would interface with protos largely either by the SDK or by the implementation which is I'll show you what that looks like so you can use it for anything you realistically want to build um one example where we're seeing a lot of upd right now is people that want to try me um you might have a builder and you might not know how to test if that Builder was with the network so what you will do is spin up the process and then you would use the me mode as full and then just override the default image with your image and sudden you're able toest test it you're able to get requests that every single time is going to be sent to and you know that you can handle it um and I'll let Barabas take over from here for how go under and then we're going to um do a bit of uh interactive work but for that we need to make sure that you guys have installed please make sure that you start the process you can and please make sure that CL this okay so that's kind of three things we need to have for sure um there are thatt then um there are a couple of again one that ref in the beginning of the talk um if you're not able to download them fast enough we are quite a lot of people as a conference and we trying to them all um but the team here has darker images in uh USB drives and I think there's also a way to P it of Hotpot um so we should be able to get some [Music] so because is under is basically running either a doer engine or a convert engine so you can scale it up or scale it down as much as you want and this allows you to uh run a local test or run a uh in any one and uh that will be Theo I guess is everyone ready uh if everyone has install Okay I I was this way who doesn't have we can help out [Music] anybody you uh you want [Music] I everyone [Music] myone so if everyone has installed and they can verify that they R verion [Music] 0.824 and run aoup engine and they can verify that their engine is also version raise your hand if you can yes [Music] so the first uh first demo that we're going to do is the very basic um very basic demo which is running a uh standard network uh package which doesn't include any of our cluing it only includes a lighthouse and the Gap node single node with 64 relator running uh just right now so if you run I will uh explain what here you where you want to grab the this to be and package and then hopefully this will uh have a new Enclave which is the structure that is using all the Imes that it needs and it will [Music] run [Music] much so how is it's using the combination of the previous F that part has explained and uh here we can Define how a participant looks like so we have an Cent type which can be any of the E clients we have defined it even for we can specify new image by default we use latest stable image and then we can specify uh the C it can be any of the or and and then you can Define any of the images then you can pass extra arguments or just make everything default we have a few extra fields that we didn't list here like uh Resource Management it it's very good for uh if you plan to run like a larger cluster and you want automatic scaling in cuber then it's it's quite recommended to set your uh resource request and resource limits to a higher than what you said as default because the defaults are meant for 64 valat only yeah yeah so we just going to because yeah the internet is not but everyone should be able to run this command and hopefully eventually it will yeah so here we can see the process of uh the Genesis generator generating the Genesis F Force it's using this uh deposit contract address number of relators is 64 using Theon that is [Music] predefined and and you can override the number of uh seconds per slot slots per EPO there are some minimum values that you have to respect where client is just not going to work but uh the defaults here are the default so once uh once we decare that what kind of network parameters we want to use then we can start generating the validator keys uh this is also not possible to do parel so in C is when you want to spin up I know 100,000 keys with 10 notes then you can spin up uh 10 key generation for the 10 different noes and then each of them is going to generate 10,000 keys in of one process generating 100,000 so this is this is going to make everything a lot quicker and uh let's keep going and here you can see the key stores uh as I said the default is a single Lighthouse and not we if if we Define more in the if we Define more pairs then you will see a lot more uh not here later [Music] on there's a extra ofation happening and then here's the Gen file and the trust setup uh that is required for the D testing here you can see the Genesis files what mentioned the the AR the G fil and the under Genesis file they all written into their respective directories the and here we have the CL Genesis file so the C Genesis file is set to the local time this is our local time uh and 2 minutes to it so we have some time to actually set up the first this 2 minutes might be a bit too short right now because of the internet connection but generally 2 minutes is that you not spend up uh maybe four or five no and and and you can override this you cannot override [Music] this so here is just uh the Gen file actually being generated and the first uh e is being spin up so this is uh we we do it in an order of putting up an El then possibly a snooper then a CL so snooper would be just a uh middleware software which releas all the uh engine API PS from the C to the and we also do a and we do a head check so if any of these fail the whole Pro is going to fill so this is to ensure that every single time you run this command is going to be 100% ref and uh you will get the same results every single time even from different machine so once the up then we go to the and the in this Cas li no we also do a we pass all the default flags that n house requires and here you can see the maximum CPU CPU these are the default that we decided on for using this configuration but everything is you can configure everything [Music] also you might have noticed we have a lot of uh testing debug specific uh environments already buil in for example make sure is there because if [Music] something yeah and uh once we SP up this one pair then uh we will get a output of all the configuration and a a page where it will show that we have created an LL which is a random name but this could be also pretty fine but by default doer spins up name and then you will get the CL Lighthouse gas and the E get Lighthouse and validator in a different process and all of these boards will be automatically Port forwarded to your Global machine to a randomized port so what you can do is you can actually see the random port and if you do [Music] a you do that so let's say we want to get the eode or the enr information from uh Lighthouse then what you could do is you per your local host on this specific P which is Port forwarded from the doer container Port 4,000 to 6392 and then you can do a local hold curve with the API call that you want to me this will output everything that you need what you can also do is see you can check the logs using the C this command so that's going to be a yeah uh these are the open logs which this it has in appears because there's only one note on the it would probably make sense to actually change the default at least two notes you will be able to he each other and if you were to just go to Dos you can of course also get the logs by copying this command but as you no enough you so it's easier to deal with it but there's nothing overly fancy everything is still interactable by the do to everything as yeah so exactly so you can use do logs if you're more comfortable with that and if you use CU then you can interact with the enlip using C so uh when you use cryto in set it will spin up new name space or cryto it will create a The Enclave name as Nam space and then it will place all the parts into that new space and this way it's not going to interfere with any other work that you plan to do oh yeah and C you basically wipe everything CIS is not persistent so whatever you run inside The Enclave will be wiped from your Des once usually done so this is really meant for local testing and local development for now uh I know that they are planning to add persistence uh into the in a future release we it more production ready but for now this is trly meant for local testing and yeah um now I'm just going to switch and show you this example of how a day today workflow looks like with this so we have the right house as well as the load Star team and Tech um both of them since yesterday night support me with um flbs have has a alpha release for me boost that also penol and the testing team Mario built a build up that implements the me Builder APS so we have all of these disparaging different tools and we got to make sure that they work right so I'm going to just show you how we would do that um and I've made some local changes so I'm going to show you how that works when you're not from [Music] from question at this point was everyone able to spin up the basic enclave and see a test make a local curve to the API so before we go into that part can you keep that up yeah so here uh let me go through quickly again this Jon F and youit so here we can see it's very straightforward Jon file where we uh Define participants so in this case it's going to use again guess we very specific image so in this case it's going to use uh like lli uh one for of8 with this speciic hash and we we build an image every hour for that uh from from the branch for n house we just use D which is an AG built by their te and uh here we yeah and count one that means it's going to have one pair of that and the next one is going to be again same gas image with h star uh but for those star uh obviously a different image with count of three so this count of three means that we would like three instances of get through start so when you sping this up you will have a total of no pairs four pairs sorry and in the N parameters you can uh specify the override so by default it can use 32 slots per Apple but uh we're going to keep using that but what we want to do is reduce the second per spot because for for this kind we don't want to wait 12 seconds for thought but 6 seconds we do and we want to for in apple to so that's also over our default and for M configuration we can also specify the M boost image that we would like to use in this case it's a very specific one again for uh this test and uh launch additional services so this is something we have not back into just yet but this is basically up all the tooling that we need like transaction spammer uh blob spammer uh the light rate Explorer which we decided to call Dora for the explor and have and in this so it's not a full long so just to again elaborate on map type we support two map types so the first one is mock which will use the earlier mentioned mock implementation API but essentially no real happening but because it's a mock service we can add some faults there so we can say return invalid P for 25% return uh with a latency of 30 seconds after slot number 5,000 whatever we can do a lot of things with the mock mode that's why we have it and it's very fast um there's another mod we part though which is for M and that would spin up Builder that SP up relay the relay API the relay website literally everything that you would expect from m in inet and it adds this tool called M FL you might have also heard the mention all so what MTH does is it seeds the Builder with Juicy me that the Builder can then trade so if someone wants to test out their Builder um implementations for their strategies locally tested um and the reason we have that is because M right now is a critical part of the network 80 something of the network is there earlier we used to state which is the contesting which is we make sure that the network will be healthy when we did that was fine we're still going to do that but at this point we also don't want the network to just not feel we also want to be head for so we're testing the entire M workow early on so we also don't get the feeling that hey we kind of have to wait another month cu the reles are relayed or whatever on the en [Music] F Mario from the testing team uh from the EF who maintains um it's publicly available [Music] on called but uh it doesn't and really we don't have a fun but we will eventually come back but yeah this is a mock and you can mess with all of these correct fields and you can mess with potential invalidation types so you can mess with types or the attribut of the types can be invalid as well and it's also a really cool project because for I think this the first time we've really done that it's technically something that used be in high beforehand but Mario put in the work to convert it into its own individual library and then we justed with a nice and nice data workflow uh so now rather than it being a standalone tool and high it can be a standable tool that we use every um so we're kind of growing with that approach more and more so we have a standard tool that um has it own do file that has its own library and we can import that in high we can use it in proposes we can use it in you can have in kubernetes and few rather than just rather than two teams have the [Music] same so is going to run this uh M so so fresh that the image have to be buil right before the event uh because the previous one was not yet up to dat so here you can see our entire workflow basically from the e uh Cent do we where we trigger a new workflow for a specific branch which will then push an image uh so here we can say that we want to uh can use end it this so here we can run workflow where we want to use a source uh repository in this case it's going to be Upstream and then is the brch and it will automatically doesn't matter but here can also overr the tag if you want but in the end it will push everything to D and it will create a four or five images one with uh everything in it with no hash included for am and arm then with a hash so you can specify a specific build then it will release an AMD image specifically for AMD is that for some reason your system Cann detect what P system you're running you can specify that also and for and also so we would like to not demot this here because it will pull a bunch of images and it's probably going to be very heavy on the internet if we try to run the uh the additional tooling but we will do a l demo to run everything in kuber where we can provide you a back end where you can get whatever you want and it's going to be a lot quicker because a just ack thing so just a quick thing um in case I wanted to tget uh so I've essentially CL the each package and I've made I think one or two changes yesterday because I wanted to and we didn't want to anything for the presentation today so I don't want to Target the remote repository I want to Target my and since it has the same structure yeah I think so so instead of using the remote repository you just use a DOT basically from the repository that you are and then I'm specifying the Jon file that you mentioned earlier and then that way I'm that's exactly what I want to and once I know it works I can potentially push it on uh and yeah like said we're going to be doing this with the 29s version later on but for now we're just going [Music] to so let's see truth we haven't [Music] probably going to take a so uh maybe we [Music] can um maybe you guys can take a look into the C that in the metime your local setup we have some instructions in the not page [Music] uh [Music] open [Music] thank [Music] you so has everyone been able to uh take a quick look in all the [Music] we going to be able to provide you a you ready for [Music] Back [Music] you guys going [Music] in page to the using you will see a S3 pocket where we have a y file which is basically a config file for cuber back if you download that and you set that as your uh coupon text then you should be able to start spinning anything up in this uh cler in this kuber cluster using uh the K configuration so maybe can ask you being up to speed with how to config your hand for but basically this is it so you have to navigate to your uh cryptosis config file and you have to change your uh cry cluster to uh cuber or add your kubernetes cluster to it so just call it anything like uh Cloud type kues and then add the config like uh whatever you want to call your cluster and just leave everything as the default and once you do that then you should be able to change the cluster and spin everything up [Music] there so uh if we do that then I can also do a more of [Music] [Music] this so in my case my cluster is called DEC [Music] cluster [Music] so [Music] if we have install uh on their machine and have access to the uh is anyone here that cannot see they if you can't see then you're not going be able to follow the rest of [Music] the no question okay that's [Music] good so what you can what you can do now is set your cry cluster to this uh whatever you set your name to be so in my case this is just called chaos because I thought that this demo would be CH you can see that the cluster is now being [Music] set and now I probably need to restart the engine [Music] and [Music] so you can now see that the engine is running a cuber [Music] cluster uh the F show that the cluster is now configured and the uh engine uh can be accessed with a new Comm V so this will open a newway service between the uh kuber the CU engine and the local [Music] machine so now that the Gateway is running on the top I can run the uh run set and2 package so this2 package incl all the tooling that we have mentioned before and this is going to be a lot more heavy so hopefully this will uh spin up all these parts now instead of in my local machine in in the cloud it will still just by default use a single gas light Lighthouse client but it will add all the tooling that might as you can see the St this is being generated right now it will take a bit longer because it's actually talking to the C engine so every single C is being made to be cloud and because of the small Hing that we have here going be a lot longer actually but shouldn't be that P IM the IM are being P my but they being quot the um kuber nodes [Music] it's everyone able to follow what's happening yeah I any question anyone comment that is nice to have [Music] question question by by default by default by default you can always change them and also just a small note we try to keep the smallest Network 64 validators because uh there's one for of assignments and then you already know your assignments one in the past if you have 32 slots you need to have 64 validators you don't need to uh but it's just it covers and CU that not realistic happen on Main when interest TR to start if you reduce your number of slots per Apple then you can also reduce your number of valat so I think it's more do more so then decrease it to 16 which it doesn't really matter there's also one more part that we kind of lost over when we talk the so everything we're doing is with the conf but if you go to the consensus X there's another version of everything called y so the minim Y was initially meant to be testing uh tested but so it allows it takes a lot of shortcuts uh there's a there's a few spec parts that it doesn't actually Implement and with that the C are to do much SL shorter slot time much shorter second you can do like one two second slots and you can [Music] Network and things like that but when we try testing it out not every time uses it that so it ended up being messier than needed uh for benefit that we ended up not really getting uh I think it's more useful for the spec test that we don't use it Network here and the network here you kind of [Music] want Al we working right now in a way to put set different number of letters per note cuz currently what it's being us when you create more noes then each of them will just up 64 so but ideally you want to be able to set some nodes not run any validators or to run a lot more than another specific ones so that way you can actually do uh a lot better distribution of should [Music] be okay so it looks like my ready so now we have again three we have a cryto engine running uh in kuber and we still have the port forwarding benefits thanks to the Gateway so the Gateway allows us to have pretty much Unlimited Port Port forward it but technically this could break sometimes when you have too many ports so there's some uh some some that might we have lots of notes but you can see that we have a lot more extra cooling now so we have the one that you might have seen already the so if we navigate to this [Music] uh701 you can see that we have want get liouse no with the forone uh for one and the other one that's very nice is like explor that will actually show that you have all these M and slots and everything has been proposed nicely and the first is uh getting there you can see you have 64 vors but again if you figure more maybe I can I can show another test test where we more clients we have an example of this [Music] also [Music] Okay so we've kind of spoken about two approaches for uh using proposes and also I just realized while talking about source for so long I didn't mention it is open source feel free to around with it any you want um we are just using it in one way not the only way to use it you use it if you just want regular ESS database or anything local um there's a third way to actually interact with Theos engine itself and that's bya go SDK um so the go SDK can you the the SDK benefits because you can just run test and you can Define the test as a background instance and you're importing the process as a l um so this allows us to do a lot of cool things so you can say okay name this onization use this as the package that's the source of what the network is going to look like use these arguments to start the network so you can say run one time get long time one time whatever and you can make sure and you can Define everything you can f all the way down and with this you can actually just wait until a while and check for finality the same way you would in every single goest and in the background the network is just and gives you a CH context that has all the information to interact with the it has all the information for uh yeah for the for the underlying instances so the way we're kind of looking at this particular tool is you can in the CI you canly have upd images Pro in CI and rely so you can actually ensure that inter between all AR for [Music] um so this is just one small video us inage it's of course insanely powerful cuz you can do anything you can with prot tests um and you can also choose if you wanted to this with the background or you could have a on the background and always R your test of yeah and we will definitely be doing a video and and there is a Lo video it should be linked in this repository already um sorry I think we're close to the end of time so we might not be able to watch it but [Music] uh um yeah other ways we make sure that the link for the videos on our presentation as well so you can see like minute as how make sure that you know video how that actually I'm just going to show you one more thing um so I'm just going to show you one more thing and in case someone's already kind of feeling hungry or there is some food over there have to run away to grab your lunch we do have [Music] some in case do so this uh again another Contex change uh we're going back to the m example that I was mentioning earlier so it's completely done so you can see you have star validator you have Cloud spammer included you have have all the me boost containers you have Lo me you have Snoop that's basically manual midle you have everything that you kind of need and okay a recent bunch of proposal but that doesn't mean anything [Music] so we're going to just look at and we're going and you can actually see over here the service is actually getting request be blocks and it'sing the be blocks um so if we look [Music] at I'm probably um [Music] but okay definitely too too much information here but uh the requests are actually sh up on uh if you use the INF level you can actually see a bit more easily um but yeah so this is essentially how we would end up [Music] testing so we we now have a network we have Boost Set up we have set up and once we we can actually Asser that enough slots buting the proposal and make sure that that works before [Music] you that's about our presentation if there's any questions please let us know or let the know join the disc team join our Discord team it's [Music] uh VK
Automatic transcript — names and jargon may be misspelled.