New Ethereum talks, every Monday. The week's conference uploads by event, in your inbox.

Loading player…

Advaita & Agnsih | EPF5 Office Hours

Ethereum Protocol FellowshipWed, Oct 9, 2024, 12:00 AM

Transcript

okay uh so uh thanks again for being here uh I think we are all ready and um today our two very special guests Advan ages I'm I'm very happy to have you here guys because you are uh you are a great example of uh how the fellowship Works uh uh so ad and agnish are currently working in Nimbus uh but as I hinted in the in the um in the description they started their work as EPF Fells they've been one of the one of the few lucky people who ended up getting their uh uh their position at Nimbus even during the fellowship itself so uh during the fellowship they work on the uh libraries for Nimbus for veral uh correct me from wron I think I remember it right um but yeah I'm I'm curious uh how the journey was for you and what are you working on right now today they uh grew to be mentors like from one Fellowship to another from follow to a mentor who now can mentor you on the work on Nimbus so I'm curious what kind of work uh is happening on Nimbus what the current follows might help with and uh yeah to share your journey so again thank you so much for being here I guess you have the presentation or something to share so uh the stage is yours yeah hi hi hi um so hi my name is AES go uh I'm from Kolkata India and currently I'm working um as software development members yeah call we call it ethereum C developer um yeah um we actually don't have any presentation because we were really very worked up um but I have some uh plans to walk you through the projects in detail and uh you can definitely DM me on Discord if you have any uh questions regarding um Nimbus uh e through projects in general but like uh um more more about it's like how would you want me to start like would you want me to start about the projects or the journey um which one would you guys prefer first because I really wanted to be a very open interactive discussion so that whatever I say is clear to you whatever I receive is clear to me um The Journey everybody wants to listen the journey yeah yeah yeah it sounds great yeah I was hoping that you have some space to present and we can ask anything but I guess yeah give us the context tell us about uh the whole journey and I think that makes sense to to to see your progress your journey up to the current current state of the things yeah okay okay we can we can divide the time yeah uh so um I was a permissionless participant um I would start with that I never got in formally so how it started is okay um so like before contributing to core development I was mostly like working with a lot of smart contracts related to Def um even did some work in daps but primarily I did some uh really good uh industry grade um machine learning research in large language models on NLP before uh I did it for about a year uh a year and a half almost and then um ad I met him like um at the end of 2022 and uh we actually like just caught up on LinkedIn very randomly and U uh yeah uh yeah just very randomly and um what happened is um we were like thinking of building a very very naive um ZK rollup layer to I know it's like kind of a bit read in ethereum L1 calls but yeah what we did is we we just wanted to understand how things work how ZK Works in general and for that we just wanted to hack out something like barely working okay and we enrolled in this um thing called build space I I don't know if you guys have heard build space uh nights and weekends yeah um did he want to speak oh okay we can take questions later so yeah so Al and I we went to build space nights and weekends and we were hacking out a project and they called us to Dubai uh yeah and that's like the first time I went to Dubai as well and um we were working on the project there also and that is the first time I heard of EPF and I heard like this is a way out where you can uh like join in uh work on protocol and you can basically solve ethereum's current L1 challenges and all these things um I totally underestimated myself okay like I I I knew I wouldn't get in okay like there was no more shity the first thing I heard about like I read about EPF and I told ad is that bro maybe next year not this year definitely not this year okay and AD had previously interned at nethermind so he had more experience he he really had more experience than me and um what happened is um I kind of like I kind of filled up the form at the very last moment because even I was thinking that definitely I'm not getting in and I didn't get any interview call because yeah I didn't have like a very uh Rich background in web 3 even uh nothing compared to what ad had and um but I was interested like I was really interested and I was really persistent that uh okay like these things are interesting and the best thing that I found out is U all the information it's maybe a bit hard to find when you're starting off with but they are really very very organized I I actually saw uh like there was a previous office hour from Timo and he actually like yeah he he was talking about the governance and uh if you grasp that properly you would realize that every piece of information is properly discussed with the community is properly cross checked and we do a lot of Dev Nets we do a lot of testing before uh we go to main net so like very systematic channelization of information I would say uh like in any organization or in any company in in comparison yeah so so I was I was getting like I was kind of going with the flows like what is PM like ethereum's PM or like execution specs Beacon API what happens how are these things working okay like how many passes are there what to do if somebody raises a PR if somebody raises a PR is that a new feature do you want to work on it is it an experimental feature how to come across these things and um I realized if you give it some time it would be really clear to you um the information too and uh I saw that um I was I was actually exploring a lot of projects initially for about um 3 weeks or so until I stumbled upon verle and and um I realized that this is one project which needs implementations almost for every client because the veral cryptography and the veral tree itself are very kind of fused together if you want to detach it and if you want to let's say your cryptography is in in another language and you want to ffi you would probably have to pay a boundary cost across the ffi and there there are more caveats to it uh but in itself what I realized is veral is something that needs to be implemented for most clients and Nimbus was one of them this is point number one point number two is I came across this uh repository called Constantine uh wait I can just share the links quickly uh yeah Constantine it's uh basically a general purpose cryptography Library uh that is written in Nim and we are still building it it's like there are still things that are not audited and buggy but um it benchmarks pretty well in comparison to a lot of rust cryptography libraries out there uh especially like if you look at let's say all the blob related cryptography all the kzg related cryptography not p d not the latest ones it's pretty much the fastest and constantly there is nothing uh there is no cryptographic engine that is faster than Constantine in terms of uh handling blob cryptography and kig commitments so um yeah so I came across this and um I was like I was basically just going around people that I'm interested in veral is your client working on veral I went to bzu and I into uh Nimbus and bezu had actually like they've been working on it so they were kind of in the process they had people like aligned to their team uh but Nimbus was completely fresh and they were like uh if you join if you work you have to write it from scratch you have to write the tree from scratch you have to write cryptography from scratch we didn't even have like the curves for workl so everything is implemented in them from scratch ad and I both of us we worked on it and uh it was kind of um I wouldn't say see I wouldn't say like uh ECC or let's say the cryptography that we using in veral or in general let's say what we use in ZK it isn't super difficult if you have like a math background in like high school or college uh polinomial interpetation all of these things uh yeah ad has a Blog um yeah we are we are actually kind of around 67% faster than any other veral cryptography library at this point uh recently there has been a rigorous audit and we actually kind of uh found out a bug but actually that's been fixed too so we are just kind of right now reworking on the tests uh with this new Fe like bug fix bug fixes yeah and yeah so um he has a he has a question I don't I don't to inter you sorry about that but I have a question uh you said you said you made optimizations like you made uh like the the Constantine library is like 61% faster than than any other Library um what would you say is like the uh is the killing shot for for that that big gap between other libraries like are there algorithmic uh optimizations or are there like some specific things why for it to be fast uh what is it okay um a few of it is let's say leverage because we are writing it Nim uh because uh Nim's code generator is C and if you're um compiling it using cang then and there you save a lot of time firstly there uh but this is not actually like most of the optimization I think ad would uh can take on yeah so for this much of a difference the main thing there are different layers of optimization that are implemented in concertin for which it is 67% faster uh at the base layer for x86 devices uh very optimized assembly is written for elliptic curve operations so it it gives us a huge leverage of other libraries it it is still slow in Arm based devices Constantin but uh we we are on the way to add those arm optimizations but for now in x86 it is the fastest so because of those assembly level optimizations that gives us a big boost the second layer that comes is the n language in itself so how name language works is uh if you write anything in name and then if you compile it it spits out uh a c language like a c code but then isn't it a transpiler no it is not a transpiler because the code the C code that it spits out is not human Lael it's very very highly optimized code so if you open that C file you won't be understanding anything it's it's just uh messy so because of this there's another level of optimizations and C in itself and it uses DCC or cang at the end of the day to done so it's very very fast and now coming to the cryptography uh if you want to dive deeper into all the optimizations that is done you can refer my blog post that I sent in the chat but but mainly uh there has been an optimization with pre-computed tables so if you do some square root operations in an elliptic curve Point uh It generally uses tonary Shanks which is the currently the standard but it is actually slow in veral or the curves that we are using we need to Des serialize the point as it will be getting sent over the network so we need to receive the serialized point and der deserialize it and use it in our system that becomes a huge bottleneck and especially when a lot a huge amount of point we want to deserialize so that was solved by a pre compute uh algorithm if you want to read about the pre Compu algorithm like discussing this in a uh meeting would be a huge long it's it's a paper it's linked there it uh it was by I'm not wrong Paul star in November 21 and there was also a tweeted discussion regarding this how to pull uh this implementation like this concept in an implementation approach that's also linked there let me share that too oh that would be helpful for you guys apart from that actually like um workl uses IPA and uh in IPA we are basically recursively breaking down the polinomial size uh so one thing like a very typical thing that every other implementation did is um I don't know why but um everyone has used kind of dynamically allocated vectors in our entire veral implementation I think we have like around two Dynamic areas only everything is static everything is defined at compile time uh we even for serialization der serial ization we exactly know the bite array links uh like and they're all like kind of defined at compile time so there is no like uh check as of like in itself um if you're talking about let's say uh round trip tests uh deserialized serialized comes in very handy yeah exactly exactly there is like exactly so let's say scaler field is 2 253 bits in bandwagon and if you if you try to like kind of deserialize something that is even 254 bit it gives you a compile time error so there is no way that you can get past the system so it actually helps for uh even for auditing actually yeah so um yeah coming back coming back um to the journey uh yeah and um we had about four months uh out of which now I have already like pretty much spent three weeks and like three month three months and yeah a few days um to basically like ship something that works and um we actually kind of took another month but if you ask us like in a total of five months we pretty much uh finished writing the tree like not the complete stateless tree but most of the important operations that were being used in the devet that time at that time ctin and uh we had finished a barebone pretty optimized version of um the cryptography Library as well if you see it right now you might see that a lot of things have been moved around because Constantine is actually pushing for its first release in the next few weeks and and uh yeah and like post the release we actually plan to get uh a few things formally audited so yeah if you'll see a few things moved around but the PC was uh written by us and looking at that at that time uh Nimbus is like team lead was zahari and zahari is no longer working at Nimbus or like he's kind of associated but he's directly not operating at Nimbus um he reached out to us and uh he wanted to hire us saying that okay you've worked well and U I think from our cohort like I guess another guy got into Lighthouse and I'm not sure uh about the others but as far as I know three of us actually ended up in uh as core contributors so my takeaway is from my my like my basic takeaway from EPF is kind of simple that is pick up projects that you can finish pick up projects that you won't finish too early now I'm not saying don't pick up those projects like you can utilize your time better you can do something more you can uh yeah um yeah uh that is one of the things uh the other thing may be a bit subtle but like say if there is something not in the project list you can definitely go ahead and contribute but you may not know its priority so it might be shipped 3 weeks later or two weeks later from now and maybe somebody who's working full-time is working on it and uh you want to contribute in between I'm not saying you don't go ahead if that person is asking you not to contribute maybe yeah you get it right so um plus the thing is see this thing is probably not in the project ideas definitely not in the project ideas so uh that is something you need to be careful about um because uh like there has been instances where U like people want to contribute but then they again go to some other project and then they back this out and this person is left hanging he doesn't really know if there is an external contributor or not so lot of um questions there uh yeah so so after that I I got like oops how much did okay um okay just few seconds okay thank you thank you uh yeah so what I was saying is yeah pick up pick up projects um from the project list first like that should be a first priority the second thing is if you want to work on something more um do check out the timeline I guess uh Timo or in general you would get an idea reading ethereum consensus specs or the latest releases of consensus specs that how prioritized are the things that you want to work on if the things are like at a two we deadline or at a 3E deadline let's say something is going at devet let's say 5 days 6 days later definitely you can't just go and ask the core contributor that can I contribute I mean you can if the person says yes only then otherwise um it'll be more like you're like having a conversation within five days you need to catch up you need to write you need to get it merged so uh yeah try to try to do some things like like try to work on projects that have a very realistic deadline even in terms of of EPF then you can actually like kind of maximize your hiring chances if you like wish to uh continue as a Cod developer so yeah I mean so around in October is not October actually November we went to Istanbul for Dev connect and post Dev connect I got like a text from zahari that he wants to hire and I sat for three more rounds of interview went for three more rounds of interview as well and then at around mid December I got my offer letter from Nimbus yeah so that is pretty much the story um I would say the biggest like the biggest blockers that come between you and you getting hired is maybe you want to end up working in a lot of projects but effectively don't end up contributing anywhere that is one issue uh that you can have and that is one most of like most of the times these things happen uh otherwise it's mostly a thing of persistence I have seen few people like lose momentum gain momentum back uh try to be very consistent with your work try to give in the hours that You' have committed for EPF at like mostly at any cost so yeah I mean those are pretty much the hacks it's kind of not very complicated it's a matter of luck too so you need to consider that as well um yeah that is most of the journey uh yeah yeah uh so he kind of like elaborated majority of that uh I just want to uh add maybe my part of the starting Journey so I was not uh generally from well I I started with web3 only uh typical smart contracts and all that uh stuff but from day one I always wanted to know how the protocol works but as majority of the people the issue was the resources what to study it was too complicated back then for me to understand and but I kept on working what I could what I understood uh and then yeah I heard about EPF so I thought okay uh maybe I can and but by before joining EPF I since I interned with nethermind I already had a better idea of how the get code Bas was how uh NE mind like how a client is structured Etc uh back there I also worked on some ZK projects so I kind of had a decent enough background in understanding uh zero knowledge proofs and maths uh uh and since EPF started uh like even before joining or even before I was accepted I saw that numers as a posting okay work and I kind of Googled every project ideas that there was uh and let okay do both of you know each other before joining APF yes yes we do know each other from before joining EPF so yeah where I was uh I was going through the project ideas and I realized uh like something uh that I already know uh is cryptography and something that I know a little of is the client architecture and veral would be kind of in between so uh I can leverage my I like knowledge in cryptography and contribute to the work whereas integrating with the client uh something I can figure out at least something which didn't seem very alienated so yeah I went with that and first month was completely uh studying about the cryptography and everything and one thing I realized and I want want to add for everyone's everyone who would be working in any kind of cryptography or something like that like the theoretical part is obviously needed uh you have to go through the theory how the math is and Etc but if you want to look at any kind of uh cryptographic protocol implementation then the implementation point of view is very different so you need to also understand uh everything like how some things might be very simple in theory but the implementation has to like uh is very different because there are a lot of optimizations and there are a lot of security considerations that we have to keep in mind for example constant in the library uh the name comes from constant time so all of the protocols that these in Constantine is resistant from uh timing attacks so these kind of considerations are very important when you are dealing with cryptography you cannot afford to uh compromise on the security on the implementations that you are doing uh thankfully during our time emim uh like emim is his GitHub handle his full name is mamy so he kind of was constantly ring our peers and guiding us with all the resources uh he was also one of our mentors during uh the EPF and that quite of helped a lot of bit because a writing code uh in a constant time manner is a bit hard it's it's uh uh bit messy sometimes also you have to think of the algorithm in such a manner that it always takes uh constant time there are no es cases there are no breaks in between so yeah uh that's there first month was all all studying and all this stuff then uh we had a call with zahari the ners team lead back then and we set up meetings that how we want to proceed ahead uh so there was weekly calls with EPF uh like you guys have where you share your weekly updates and we also had another call with uh nimbers where we shared or shared our update from what we did and cleared our doubts if we needed any kind of help all all that and that meeting mamy also joined so that kind of helped us scope out how to manage the cryptography what resources we need to study I guess in by the end of second or the starting of third month we kind of finished the basic implementations of cryptography like the bander wagon implementation was done uh and then uh we kind of divided the work agnish will be uh in the nimus meeting we divided the work that agnish will be doing all the stuff for IPA and the commitments I will be working on the tree uh a bit of the tree implementation and optimizing uh all the things that is currently slow so yeah this kind of division was there there were also two other fellows uh who were also contributing but not as as much as us uh but yeah there were two other fellows in the project uh God's power and namon God's power kind of contributed some Sage scripts to Constantine and Naman uh I guess wrote few purging uh algorithms in workl but yeah uh so yeah kind of one thing I want to add here is like if you are uh going for a big projects and a lot of fellows are there uh having a coordination in between the fellows is really important so kind of set up calls uh as much as possible uh be coordinated uh so that like there is no miscommunication and someone might be working on something your Works don't overlap and at the end of the at the end of the cohort your work has to come together to complete the project so yeah be coordinated uh taking big projects is like what worked for us like work was huge back then like we had to implement all the cryptography from the scratch then the tree implementation and then uh adding the cryptography to the tree uh then adding the tree to the Nimbus CLI so yeah uh it's it was like a I think one of the biggest project in in my view that got pulled off but yeah that was the journey for building and I guess after that we went for death connect the EPF day where we presented our uh developments but we it was not complete back then but after the cohort ended we kept on contributing we didn't stop like stop our contributions because we kind of felt like that oh we started this work like we started this from scratch so we were kind of attached to it so yeah we kept contributing and uh zahari then reached out to us that oh hey uh we would be happy to have you on the team and uh then the standard interview process and after that we joined so yeah that that was my journey uh how can someone get started with contributing to client repositories as most of them seem too overwhelming to start with yes so uh my suggestion would be don't try to understand the whole code base at once uh if you are working on a feature try try to understand the specific part that you would be working in isolate that first try to understand that if you want to understand the whole code base at one go you will be overwhelmed you will be uh like the tendency would be to okay I don't understand let's leave this but if you try to isolate the feature that you are working on okay for this feature I need to maybe understand the networking part so you go and uh Deep dive into the LI P2P part only so client has different uh segments you can isolate them kind of so you don't have to understand the code base at one go but rather take it on a feature by feature request like for my case also even I don't understand the complete Nimbus code Bas uh right now also it's been just few months we joined so the whole code B no I don't understand but yeah with time as as I working on the features I'm getting to know majority of theod parts of the code this yeah I would just add a is something which applies to the whole ethereum like people the core developers that we talk that you meet they are expert in their area of the code base or and ethereum in general so it's execution client and this part of the execution client sure like if you work longer in the client you have overview and you can solve issues in the various things but mostly the the work is divided there that's why we encourage you guys to focus on one part one one specific feature um guys do you want to do you want to continue do you have do you have more want to share or can we start with some questions yeah I want to just add a suggestion uh that would be for all the fellows uh like joining the ACD calls all Cod da calls because understanding the part of the governance is is the is one of the more major important things so yeah please do join that don't miss it even if you don't understand anything just be there listen to them uh and if you have some questions like it's don't maybe not ask in the ACD call but later in Discord or reach out to someone hey this was getting discussed what was it actually or maybe can I have some resources regarding this uh and like that would be like the greatest thing for you guys to do because you will be learning uh what's coming in the road map of ethereum what are the future upgrades and what exactly the current work is going on yeah I think that would be all for my side and I'm open to questions okay awesome thank you so much to both of you for sharing all of that it's it's amazing uh yeah thank you guys um I think it's a great journey I think it's it's it's great what you shared I just want to highlight a few things here again like um it's amazing that that these guys worked um uh together as a team uh they mentioned they've been multiple people at this team but it's I think it's one of the great examples of how collaboration of you know not not being onean project but being able to pull resources talk to each other can really help in in the EPF shipping so so that's that's one highlight that that I wanted to mention but also uh and like huge kudos for this but you guys learning freaking Nim like it's it's amazing you I think so so you haven't had experience with it before right I mean nobody has right like it's just a it's a very very Niche thing and you manag to just learn it from scratch you managed to implement cryptography from scratch so that's that shows a lot of dedication guys um yeah um yeah I wanted to I wanted to just highlight that like you know people even if you don't have like experience in a certain language like if you have education like you can you can definitely learn and and get up to speed um and uh yeah and what AG said in the beginning like even as peral as follows like if you keep going if you keep keep working uh people recognize your work um yeah um so folks any questions like write in the chat or raise your hands I I would always start with one question that I kind of started there like what was it like with the them specifically like uh what is what are some maybe tips for learning name what was the journey for you what are some nishes to know about when diving into nus and yeah meanwhile F raise your ask questions yeah well for Nim I would say what uh what our approach was initially we started to we tried to learn name like uh how anyone learns a language but it it was taking too long and we uh we realized okay it's not happening let's dive into the code whatever mistakes we will make we'll uh let the compiler guide us uh how the language works and and and one of the major things that worked in favor of us was Constantine is written in a very SE like syntax like it's written in N but uh it's kind of organized in a very SE like manner so since we like I am at least very comfortable in C so even it was even there was nties of name there were different aspects of name like macros and all that uh but majorly it kind of wasn't a pain and with time with compiler throwing errors everywhere we uh kind of learned we didn't take the conventional approach of learning from any tutorials or anything we just just dived into the code because like if you are good at any language picking up on another language uh I don't think it's very hard uh so yeah that's that's the approach that at least worked for me uh for me I basically found myself writing a different kind of name in every repository I came across uh it became very like weird at at the first but like then I realized that these are like kind of coding practices Centric to the repository so when I started working in Constantine as Al said it's fully C based it's like it's a lot of snake casing functions okay like it's completely looks completely like C and uh yeah I mean you don't get to use like imim didn't allow us to use even sequences which are like Dynamic vectors okay or like let's say if we want to do like something like slicing in python or in in any language you just take take like you just write it in square brackets and you just write the first index and the last index and dot dot less than or dot dot something like that all those things were like kind of banned in us like in constantly because he just didn't allow us uh to like these operations were Centric to vectors and dynamically allocated array and since we were always using static we like wrote C like complete C like n where we used to always do I and I and for J and then for K if you're writing a Ned Loop and it looks very it looks bad but it's fast because a lot of inferencing the compiler is not doing here and if you're writing assembly like if you have elliptic curve assembly like down there in the crypto system it becomes very easy to pick up uh for the assembly level it becomes very easy to pick up the tokens uh from the language and parse it accordingly otherwise like it'll kind of keep resolving keep resolving if you like kind of write for column in columns like you write like that you're like writing like a high level language it it take it's more difficult for the eliptic curve based assembler to pick up the tokens one by one like what are you talking about but if you write it in a complete C like manner they are very like easy to yeah then uh when I came came to like then I came to Nimbus E1 and Nimbus E1 was kind of mixed Nim so some people uh wrot wrote a lot of rust like Nim where they have options as return types where you say if this is some then this or none and you handle the error which is like a very very rust like Nim and U yeah uh you would have like very um equivalent stuff like as of structs and types uh in Rust like very coherent to each other types and type objects in them and structs and rust look very similar to each other um yeah but then when I came to nimas se 2 now I'm working in the consensus layer um I realized that they have their own types they have their own system everything is written by Nimbus itself so like so what they wanted to do is uh they wanted to have the power of options and they wanted exception handling at the same time so they built a library called Nim results where you say that if uh this is okay then I have handled the exception at the same time uh I have got a value how good are llms with relatively a new language like n um actually um snake Okay um I have seen a repository where a guy guy actually wrote llama too in them and uh it really benchmarks well and I think uh there is a GitHub repo where Andre karpati from open AI he basically tags all the llms uh that have been implemented like referencing his Lama C implementation and I think he even featured there like the Nim uh report and if you want to actually see um wait I have a I have a repo for you one second there's a repo called aray maner by m ratson again um this is basically numai Bon MIM yeah it has very fast Vector processing it has matrix multiplication in the fastest of time complexities so you can definitely play around with this one thing one cryptographic Milestone that even we have for Constantine is um having tensor processing uh plony 3 has it I guess or I think they're working on it but yeah having tensor processing is definitely one thing like yeah before that you need to write like a lot of assembly I guess yeah so nimas SE through maintains its own libraries okay so there is something called Nim Kronos that is Nimbus own proprietary not proprietary obviously is open sour asynchronous runtime which is like equivalent to I guess yeah you have Tokyo and those things at inv yeah um yeah so those things are very Nim specific and you won't find them in the Nim documentation and you will initially suffer a lot but uh eventually you will just get past all of that and you'll realize that they are pretty pretty pretty powerful and pretty fast yeah so there are like three stages of writing them I would say yeah like where you write C like then you write rust like and then you start using libraries from Nimbus yeah that's pretty much yeah for us like we didn't we didn't choose a language name uh we kind of wanted to contribute to workl and the only project that was available in VL was nimus so we went ahead and learned Nim it's not that we know Nim or we learned Nim to contribute like that's why we contributed to Nim it was the opposite we wanted wanted to contribute in workl or some kind of cryptography and the only cryptography related projects that we got interested in or we wanted to contribute was in Nim so we learned n it's that's that's the reason why n addressing addressing a few questions uh yeah pardon me for how safe error free is work implementation well um am I muted now okay um so in Constantine there is like a proper um framework of writing cryptography and uh you won't get merged if you don't follow that framework in most cases like like you'll you'll just be like reviewed and reviewed until your code improves um firstly that so there are specific types specific um things that you need to follow safe and error free is verle implementation well um it is cross checked with nethermind go and rust workl everything pretty much is cross checked uh we have cross checked commitments we have cross checked IPA there is one uh Edge case which came out very recently which uh throws a bug in the IP approver but I think that has been tackled too and uh that has been cross checked as well um how do you gauge your confidence level in the code well see the thing is uh we don't really have like a really nice debugger so we basically Eco or we basically print at at like checkpoints but the thing is um the good thing is when you print at checkpoints um like you're very confident at least about the debugging process because there here there are no caveats right you're just simply printing you know you see what you see and you can obviously like compare test vectors or vectors with other reference implementations so let's say there is a spec by in Python by the EF and they wrote the cryptography and after so and so line after so and so like crazy complicated operation you expect a proof the best thing would be to go ahead and cross check the proof uh is it consistent in your system or not while writing test feed uh and the best thing I would say is don't just write round trip tests like proving verification proving verification because this is a mistake I did um yeah so Nim had like a kind of a buffer overflow and it actually intrinsically overflowed the buffer uh while creating a proof so what happened that the proof was erroneous but at the same time the verifier was using the same overflowed buffer so it thought that okay the proof is right and the verifier used to pass the test and then until like I took test vectors from uh you might be knowing ignasio he's he works in EF he he has authored go IPA part of go IPA and he basically works at get and like the veral team for get yeah he was he was with us in EPF 3 and ignasio was that time very helpful he provided me like test vectors kind of line by line like first Loop these are the test vectors second these are the testors and that is how you cross check um at least in Constantine and I feel for writing cryptography um trust me you would want to cross check you might write excellent code yeah yeah you had a question yeah sorry to interrupt you again uh but I'm just wondering you know like uh test vectors and unit tests are fine enough but what about side Channel leak es and you know it's just not timing leak wages you have other implementational leakages in cryptographic libraries so is is like Constantine already sufficiently peer reviewed and uh audited or is it going through the process for it okay it is going through the process of auditing and fuzzing it's not uh yet audited but yes it is peer reviewed and about side Channel attacks uh like we with our implementations uh try our best to have everything in constant time so that it doesn't happen mamy also reviews each and every PR each and every there are four or five guys maintaining it uh including us me and ages so yeah and obviously other people from status is also reviewing it so yeah it is peer reviewed but about the audit process we we are on it uh but the audit process is still not completed yeah like uh another add I I would say is like a lot of very few basic operations elliptic curve operations we have a we have a constant time variant to all of those things even constant time msms and the thing is that like let's say when you uh before us you had constant time MSM implemented for let's say some other curve let's say you had it implemented for kg so like implementing constant time MSM wouldn't be too hard for bandwagon if you like kind of follow the constant time framework how to make it constant time and yeah um very very like lowlevel operations are actually all constant time um about auditing uh I think um the kzg portions are all audited it was audited last year and that's why right now we are actually pushing forward for a release uh so that we can basically start an audit and from there onwards we like actually have further plans for Constantine as well like in future we would be happy to implement like post Quantum stuff or uh Stark like all the stark track baby bear merine all of that stuff or F all of that stuff here uh what are what other questions Gemini 125 Pro [Music] benchmarks okay [Music] uh I do uh I do Nimbus uh E2 is sort of I would say a bit under stuffed if I compare uh to other seals but I still do it's um when you write everything on your own you do take a lot of code ownership a lot of nights you lose sleep but uh you would you would definitely enjoy there is like a lot of people to help you around if you get to know your peers like people other Cod developers like you will never feel out of place so yeah I mean there was a time when okay so right now at nimas through I'm the only one writing pias on nimas through and uh we actually kind of started late we started in May however like other clients they kind of started in February and I think it should take me around two more weeks to send it to devet and uh yeah I have been writing everything just on my own and I have just been getting reviews from TK and all of the other people like the senior people at nimas and you would enjoy it I I I don't think you won't uh see the thing about I I do agree and I do see the point of let's say even contributing to layer twos um I would I would probably bring this topic a bit yeah you will see in Twitter that so and so guy wrote so and so thing and it is so and so faster and everything looks cool but the thing is um in ethereum uh in as a code developer first first and foremost um it is you take time because you can't afford to be wrong Layer Two you can afford to be wrong uh yeah so if you are having some experimental ZK VM you can afford to be wrong um yeah but in ethereum you genuinely can't and I think you should like you should be like this entire sense of responsibility kind of gives a thrill to it that okay maybe I'm contributing to something that's so big yeah so I I do enjoy working as a code developer and I feel like yeah I'm pretty good like at this like pretty set at code development for now and I think I'll stick for I think I think I just want to add one more thing it's uh in codev it's more about uh the challenging problems that we can solve like the problems are really really interesting that we get to solve uh so it's like a place that no other can offer and another thing is like your opinions are like you are free to give your ideas to any place you want to so if you find that okay this is something that is that you think might be less secure or that you think that this can be more optimized or this might not be the right way you are free to give your ideas and if people think that your idea is good enough they're happy to accept it also so this is also like a great part of being a code developer and which I really enjoy the other like the other very beautiful thing about consensus and execution specs are a part of it is there a part of it is pure reviewed and it is common to every client and uh quite a bit of a part is completely creative you can come up with your own solutions for that so let's say when you are writing like when you're implementing consensus specs somewhere let's say for pias or pectra or anything there are types there are functions that are definitely there which are kind of unavoidable but let's say your RPC Handler or your gossip protocol or how your lib P2P works or let's say how your database works these things are all open challenges how do you want them and um would it work fine for the client that you are uh designing based on your your client's programming language so lot of things to be considered there so it it's a blend of specifications and creativity at the same time so yeah that is that is also good yeah that's awesome um guys thank you so much we are already past the the hour um maybe if you have any more last this is a great point to finish with by the way I think this was really nice really really uh really beautiful last last uh Point uh ADV maybe if you want to have some last comments or or agnish if you want to if you want to finish some some last thought before yeah I I guess uh we can take a brief uh five 10 minutes is I guess if that's okay to run through the projects I am we are already out of time I think we we can to be honest I mean I have to leave if you if you want to stay and follows we could do that um but I have to run to another call and uh also like you know guys ADV are available in Discord um you can you can you can open a thread there uh I will take you in a thread and you can uh you can do that yeah we can do that so if you have follow who feel like contributing to numbers can also uh DM us uh in in the nimbers you can join the nimbers Discord there's a specific Channel made for EPF right now so you can also talk there you can also ping or tag Us in the protocol Fellowship NF Discord so yeah just reach out to us we will be happy to have yeah and uh I've left my Discord on telegram anytime anybody any issue yeah awesome um yeah I I will create the thread and by the way like Kos like uh Nimbus is doing a great thing that like some of the clients including nimus have this contributor or even EPF specific uh specific Channel which is really great so yeah we got it up few days ago yeah we got it up because we were getting a lot of uh like people texting us and we okay it's it's getting difficult to manage let's have a channel oh that's awesome yeah that's really great guys yeah uh thank you so much for your time both of you I really appreciate it I mean this is like you guys are an example of not just like you know the successful follows but just you know year ago uh these two guys were exactly in your shoes uh all of these follows and I think what what it what it demonstrates is like all of these CFS all of the the people here the mentors like they are your peers they're your colleagues right like we always we always say like you know don't bother mentors too much they are busy and so on but not from the authority perspective but from like you know the respect to your colleagues to your uh to your peers so so uh it really really gives me this this Vibe of like yeah we we we work together as a uh as piers and uh yeah I think I think we can rrap it up here uh open the open the Discord uh yeah thank you so much man aish I hear the honking from the street all the time I have such an Indian Vibes after this I need to get some Indian food like get you need to come to India don't just stop at Indian food you need to come to India yeah yeah I need to get some proper one um yeah again uh thank you so much I really appreciate your time and it's especially because it's late there right uh yeah I appreciate it a lot and uh yeah wish you wish you all the luck with the great work on nimus keep it up guys and uh uh I hope to see you at some of these conferences where you can meet follows as well but uh soon as I'll see you on Discord so yeah see you there so yeah we we're definitely coming to Devcon uh yeah definitely see com it's easy not so sure but yeah yeah awesome so thank you guys again and have a great day have a good day everyone

Automatic transcript — names and jargon may be misspelled.