All Core Devs - Consensus #107
All Core Devs - Consensus · 20 Apr 2023 · 1:08:21
Consensus client teams look back on the Capella fork and cover Deneb, including potential blockers for the 4844 devnet-5 and a change to merge for the getPayloadV3 and getBlobsBundleV1 engine methods.
Speakers
- Danny Ryan
- Péter Szilágyi
- Tim Beiko
- Dankrad Feist
- Adrian Manning
- Etan Kissling
- Gajinder Singh
- Guillaume Ballet
- Alex Stokes
Topics
From All Core Devs - Consensus, hosted by Ethereum Foundation.
Transcript
foreign [Music] [Applause]
thank you welcome to awkward
Danny Ryan: devs consensus layer
call one zero seven this is Sue 756 in the PM repo okay uh the first agenda item is a bit ceremonial I think that we don't have much to discuss uh the capella Fork was last week and we did have the execution layer call soon after and did a bit of a retro there um just in case there are additional discussion points on capella before we move on now is the time anything else on
Capilla can do
computer okay utahn has a an Al art Speck
Etan Kissling: um it's more about the documentation thing just we displayed the owl on the merchant on the on the capella transition and also displayed whenever someone converts a credential it's just a spec to document the actual Behavior was nice
thank you okay
Danny Ryan: uh yeah vanity art specs take a look if you feel strongly about it uh maybe we can put that in there um okay anything else in Capella before
we close this off okay congratulations
great work okay moving on to deneb um there's a couple discussion points from Tim before we get into uh discussing a few features that are under consideration in addition to 4844 and a couple of engine API points um Tim can you kick it off on you had a link to some potential blockers for the query before devnet 5.
Tim Beiko: yeah so actually that yes there's three things they're just things that came out in the call um so the potential blockers it's not that there was a blocker but we said that we would just check in with the
client teams um today to make sure that if there are any issues as we're trying to stand this up we can bring them up on the call um and then hopefully have the devnet up sometime next week um so yeah I guess if anyone has I guess or I guess you know if anyone can give an update maybe I'm like setting up the
definite and any potential issues you're running to that might be uh um maybe I can speak a bit to this uh Raphael is sitting next to me right now and trying to run off the test not so that
the Lord star and ethereum JS are the two that said they want to be involved in the diagram but if other fans want to please give us your images and we'll add you to the trailer but the current plan is to have devnet 5 next week
Tim Beiko: anyone else have comments or thoughts on that okay um okay and then the next one Mikhail I believe you've put up the pr that was mentioned but it was yeah do you want to
chat about that engine API calls
and to try and get this uh live on the devnets as soon as possible and so if people want to review the specific PR so we can get it merged in the next couple days that would be um that would be ideal um and then the last item from the 444 call Danny was the new payload and reorg stuff um yeah do you want to get some context on that I think Peter is also on the call so yeah I can give quick
Danny Ryan: context and certainly Peter can chime in um yeah so I think what one of the things that came out of mempool discussions at Edelweiss was how to handle and reinsert blob transactions into the mempool upon reorgs
um which is a facility we can provide to users today because all the transactions the full nature of the transaction is in the block uh given the decoupled nature of the blobs um you might only have blobs available to do these reinsertions from what you've seen on the mempool but plenty of things do bypass the mempool so you may not have the blobs um I think the two potential paths here are to have new payload insert the blobs and the consensus layer such that the execution layer can have them and choose to do what they want with them like cache them until finality um or anything like that the alternative is to not provide not be able to provide this quality service to users that
bypass them pool and just leave them payload as is and if you want to handle your transactions only handle what you've seen in the mid pool and can locally do I think this is two paths on that Peter you've been thinking about this a lot
Péter Szilágyi: yeah well sorry I have a sort of thought that it's a bit harder to talk um yeah so uh I guess you kind of summarize it kind of correctly um in my my opinion it's kind of nicer to to provide that service for everybody so if their consensus client has the blobs anyway I mean the blobs aren't that big so uh the the new paid I mean
currently the limit is set to two to four blobs per block so that's a 500 kilobytes I don't think that's such a big overhead as to be prohibitively expensive to just give that to the execution client my two cents would be to just um just send it over and if for some reason we think it's main maybe it is kind of a bit excessive then we can always make it a bit um we could create a ping pong API where you just tell us that hey this block contains these blobs and if I don't have them then I can return some specific error message and then you can reissue
the new payload it gets a bit messy so I I will try to keep it simple first and if for whatever reason isn't sufficient maybe then complicated so and the exit so um the whole overhead of execution clients maintaining these blobs until finalities pretty much insignificant so yeah the only thing you need to do is maybe create either in memory or on disk just a small key value store where you map block numbers to blobs and then if there's a reord you just resurrect
the blouse back into your buff pool if there's a finality event you just delete everything that's below some threshold there might be some very very weird quirks or even that um sorry some of the execution layer block numbers might not correspond to the finality so I mean in a very very weird situation can happen that you have New Yorks with Vera in depth and finality belonging to varying block numbers but I think protecting against that kind of weird behavior isn't really relevant
so I mean we don't really expect reworks to happen at all and if they happen and we can handle requests for it that's fine if something really wonky happens and we lose to block transactions then yeah they can just resubmit it so my my two senses uh the simplest solution would be for consensus clients to give the blobs to execution clients when essentially when they send a new payload and even now the new payload you can't really say that this would maybe make it a lot more expensive because the the maximum permitted transaction size in a in a block in a new payload can be quite significant even now so it's not
like uh we all of a sudden permit some wild big numbers to be passed there anyway it's a bit random what kind of those are my thoughts
yeah
Danny Ryan: yeah and I think there's probably two primary counter arguments one would be the and I know we've hashed these out before one is this just kind of further breaks the abstraction between these two layers uh from so from kind of like an abstraction cleanliness standpoint maybe not to go down that path the other one is more future looking is that a on average a consensus layer node in the event of data availability sampling wouldn't actually have all the
blobs um and would have sampled and might have a subset and so we're then creating a facility and maybe a user expectation that is not coherent with what we believe to be our most likely future um and I know we can push back on that and say I don't want to design for what we think is going to happen in two years um but that's that's definitely the primary counter here
but
Péter Szilágyi: there's uh maybe so I have no idea what the what that future will bring but the quick question uh is this so this whole data available is something is this relevant for the
next executable block so so is the expectation that in the future consensus clients will not even have the blobs for the block just produced by the network
Danny Ryan: correct yes the network as a whole has the blocks as has all of the blobs whereas individual pull nodes Super Bowl nodes people that want to download them certainly will uh but it's more distributed across the P2P and you've sampled to prove to yourself that they're available but not have all of them
Péter Szilágyi: that's kind of interesting however
um I so currently the the expected flow apart from Mev bundles is that essentially the transactions including the blobs kind of originate from the execution layer my guess is that the general expectation is that most blobs will Traverse your machine because they will pop into your executables
Danny Ryan: um yeah I mean in in such a design um if you build locally you're likely building smaller than the potential maximum blobs and otherwise you're asking higher powered specialized nodes that you pay to package blobs
um you know if you move into a regime in which you have 10 megabyte or 20 megabyte um total blobs then the average node is not going to be touching them all that's I mean it that is the in theory the design of extending data availability beyond the capacity of a single full node or a consumer machine is that you have to bypass touching all the blobs on the normal case
Péter Szilágyi: I see yeah so my my gut response to that would be that uh maybe we should try to cross
that bridge when we get there so if we if we want to allow that to happen then my guess is that it would require a bit of redesigns on the Block pools too and on on the so we would need to change the expectations on what happens with these blobs over the network in general across entire network so I don't think it would be too big of an expectation to say that okay Until Now it worked like this from now on it will work like that
Danny Ryan: a crazy thing to make such a shift I just
designing the apis such that we don't even have to necessarily think about components of that shift would be nice in my opinion but this is not like a major sticking point I don't think I I would like to hear if other people have opinions about the API and about this you know handling
reords sort
Gajinder Singh: of discussing this in the uh data Channel and uh so one of the points was that uh since the transactions that
will sort of bypass mempool will most likely be Mev transactions which are directed at a particular State uh so so they won't actually actually be in mind they won't mind being dropped if there is a reorg because that state won't be valid for them another thing that Mikhail product was that uh uh so in in case of if CLS wants to optimize and wants to sort of send our uh sendover transactions new payloads to uh evaluate even before they get all the blobs uh so to do some sort of a parallel optimization uh even in that case uh this assumption breaks down that the cl
will be able to pass all the blobs to the El I think it is very it would be very clean uh if basically we make the assumption that the blobs that bypass that block transactions that bypass the mempool they won't be included in the
the
Danny Ryan: other strong thoughts or hands on this I do
think that the execution layer folks who are not vastly represented on this call might have more to say
Péter Szilágyi: in general it's um it feels a bit uh a bit strange to have this use case where certain transactions that can appear in blocks cannot be Resurrected so that's definitely what would be a new behavior on on ethereum Mana since that currently the expectation is that if your transaction was included in a block then okay you if a reorg happens there's always a very slight chance that it gets
lost for whatever reason but in general or you can rely on the transactions not getting lost now with regard to Mev saying that well if if you submitted your transaction via Mev that you then you don't really mind if it gets lost on a New York uh that seems like a double-edged sword I mean I I don't really want to prom so I think if you submit a transaction and and maybe where you try to take advantage of a situation and then the situation changes and you the network even helps you undo so that you don't have to pay your initial fees that seems like a bad thing it's just
I know
it doesn't
Dankrad Feist: so I mean I I want to push back on that I think in reality as long as your transaction is economically valuable which basically just means it has a tip like um even if like normal nodes don't push it back on the Chain someone will right even if it's just for Mev like they like there's an incentive to Simply like say as a block Builder to take that transaction if it was reorked and put it in my blob in my blog sorry so it I think it will still happen there's no reason why it shouldn't happen like people are definitely sophisticated enough to do that now
Péter Szilágyi: yeah but then it means that essentially
people are running a custom build or custom flag which just forces these blobs back into the execution layer will actually have the potential for more fees so essentially again we as essentially with designing by we're creating a mechanism by Design where it's it's Mev potent it's worthwhile custom code versus the stock code because the stock code by Design discards the data it could not discard and or retain
right
Dankrad Feist: but I mean like I I feel like we're talking about very minute amounts like that that already exists right like that that discrepancy is already pretty huge due to existing
me be on chain and now you're saying in the case where like someone relax a Blog then in that in those rare cases like you can make a little bit more money by including that pop transaction I my my bet would be that this is less than 0.1 or so of
Meb
Danny Ryan: yeah I I guess where I stand is the by making type transaction three be very specific and not even be able to carry non -zero blobs you know we've tuned this and tailored this to a highly sophisticated user at least an expectation uh roll-up operators and so these highly of these highly
sophisticated users are bypassing the pool they're also probably sophisticated enough to resend and and with their transactions in I think one thing that uh gojinder mentioned was uh Mev transactions um often are tailored to a particular State meaning you know they're sophisticated enough that they have or should uh have particular slots that they can be executed and they might have particular conditionals on upon state in which otherwise they would fail um and so these transactions um often replayed in other contexts do throw
Péter Szilágyi: but they do need to pay the block fees
so essentially once it gets propagated through the network the idea is that once you uh you cast the network to Bear the bandwidth requirements of getting your transaction all over the place you should actually be more or less forced to cover those costs
Danny Ryan: yeah which I get especially in the mempool um you know because the mempool even by like you can put that cost without uh ever getting into consensus if things are tuned poorly um whereas in this reorg situation uh you did put the class but you put the costs in the context of blocks which were reorged which in the normal case don't and so
all right I think the argument's a little bit less strong than if you actually were in the
mid pool
Péter Szilágyi: I mean um you're still broadcasting or propagating that block through the entire network at least in the current design so you're still
yeah
Danny Ryan: but if it's picked up in a reorgan another Block it's going to be broadcast again so it doesn't matter what was picked up in that reorg because it it's going to represent blob load
Péter Szilágyi: yeah but if it gets lost then you just broadcast it for free anyway yeah it's kind of very subtle so it's not like
yeah I know um I kind of as I think about it if I I guess it's kind of um if the generally the general long term direction is to is to try to only have a sample of these I don't know maybe in that world it might make sense to do this limitation now I don't have to think about it
Danny Ryan: yeah why don't you shoot on this week and we'll also ask the Executioner folks to consider this and we can try to make a decision on the
execution layer call in one week time
reasonable
Danny Ryan: cool thank you Peter for joining us um any other just final comments in this before we move on we have a pretty packed schedule today great um Kim do we cover everything in your the devnet of potential blockers
Tim Beiko: yeah that's all the stuff that was from the
foreign
Danny Ryan: great so I want to spend some time um at least looking at some of the features that are sitting in the future
directories on the consensus layer specs that could be uh under discussion for danab or at least we can start figuring out if not deneb um where they fit in the priorities for potential future quirks um my feeling uh is that there might be room for one or two small things that are not cross-layer other than maybe four seven eight eight but that the opportunity for additional cross layer things beyond that is probably low and for example like the uh deposit in protocol deposit processing
um but let's take a look at some of these uh so 4788 is cross layer that is beacon block route into the evm and that was discussed on the execution layer call last week I do not believe the decision was made but Alex can you give us uh the quick on that and then an opportunity for people to signal if this is um you know coherent and simple and fine enough to get into the neb assuming that El also agrees
Alex Stokes: sure yeah uh so at a high level the idea is we want to expose some cryptographic
accumulator from the consistence layer into the execution layer so this could be like a state route or a block route the way the feature is written now is passing the previous block route into you know the current block which is then just you know passed along to the evm uh where it's exposed there so if you want to look at the El details you can look at the EIP otherwise this feature is pretty lightweight at the consensus layer basically you just need to get the block route and then you send it through the engine API
Danny Ryan: cool and just is the general appealing on the
execution layer call it this is has a High chance of inclusion or is this on the contentious Zone on the execution are very unsure
Alex Stokes: so it's super valuable for staking pools and many other use cases uh for the CL it's like I think a pretty lightweight lift you really just have to send over this route and uh maybe like one slot number but that's it
Danny Ryan: I guess assuming there's an appetite for
the complexity of the springs in the El um does anyone strongly against uh the additional overhead this is going to take to get in in addition to 4844 which is our primary cool yeah this is about as simple of an EIP that can exist on the consensus player um okay so let's continue the conversation on the execution layer with respect to this one um and we would if there's a green light over there we'll do a Sandy check again
on this side but generally a good feeling here
um dap lion did write a consensus layer spec and we associated with a new EIP eip6914 to reuse indices on the full Suite um this we brought up a couple a call ago and asked if anyone can take additional look in here it seems like there's some design discussion points that we can still have and should have um but I wanted to get a feel for a lot of this the intention here is to you know reduce the unbounded growth of the validator imbalances lists uh I
wanted to get a feel for whether this is urgent whether this is something we should consider a couple of forks later like does anybody have strong opinions about if and where this should be placed and when we should take on this complexity if we do
Alex Stokes: I personally would rather see 48 4844 just like ship days up and it seems like this thing is complex enough that it would delay that maybe not but that's just kind of my feeling so in that case you know I think this is something that's promising and we can keep developing it uh but yeah I don't really see it going to the next hard Fork myself
Danny Ryan: yeah we'll say there were enough
discussion points on the original PR you know it doesn't feel like we can click the button today that this would be multiple you know at least a couple if not three four weeks of discussion and back and forth and refinement to get it to a good place um so under that lens it also I think that reinforces your opinion but do others have opinions here I guess in the abstract like does do all the consensual clients think that this is this or something like this is um must go in eventually or is this a
just a nice to have even in the long term so by not
commenting
I'm just gonna say that I think we will need something like um but a sort of feel like maybe not in this current Fork
Danny Ryan: we will continue to refine this and continue to have discussions around it but no one thinks that this is pressing
enough to get into the next work correct speak now
Dankrad Feist: um yeah I also want to ask here like is um uh I mean theoretically it should be possible to get the same uh gains by simply forgetting about old validators if they haven't been tattooed for a long time right it's just like is is that just way too complicated to implement in practice or um like
Danny Ryan: so one one issue here is that even if you're fully withdrawn if you make even a 1 8 deposit uh it goes into there and then it would
be part of the
withdrawals
Dankrad Feist: again so that that would be a very like forget yeah not fully I agree but there's like an ancient database of like all validators that you almost never have to touch
yeah
Danny Ryan: and you need to at least know their Pub keys or some sort of mapping there uh for the deposit um yeah I think like one of the arguments is to potentially trade some consensus complexity for the reduction of uh client complexity here you know there are probably management strategies in terms of caching um for State Route calculations there's
probably some management strategies in terms of like shifting things around in and out of memory uh if they're old um to to keep the state the active State size or the active out there State size bound um my my intuition is the same is that it's probably possible to get the gains um through engineering complexity instead of consensus complexity but then that's has to happen five times
Dankrad Feist: well I mean the EIP also has to be implemented five times
Danny Ryan: right right um I guess it's a but it's a complexity Trail and where it goes um this feels simpler but I do not have
good eyes on that but I think that's a very important
Dankrad Feist: yeah I mean that's what I would like to understand why why does this feel simpler because I don't understand to me they are very close with complexity um but like but having less complexes consensus complexity um at the same increase in client complexity it seems strictly better
Danny Ryan: yeah I guess it would depend on the magnitude of complexity if they were equal
Dankrad Feist: yeah exactly
Danny Ryan: I agree um if they're not equal and actually client complexity can lead to consensus
failures you know for example if this historic you know these inactive validators that you kind of like keep out of memory and you know and you you mess up like your your Pub Key hit and then you make a new validator instead of adding a new deposit like that's a consensus failure um and so by having Machinery that you don't even necessarily utilize much um that represents consensus risk as well um on the on the consensus edge cases and those are even hard to these caches and uh I'll abuse that term they're kind of hard to test in consensus tests because creating a state that actually would use the historic
flows and store it caches and test it in not like very stateful manner um it's not obvious on how to do it like our consensus test against the execution Machinery so I I I can't make a full claim I my intuition is that this is simpler than some of the machinery and less error-prone um but I would have to have some engineers speak to that if anybody does anybody have additional discussion points here otherwise um I think this is not going to go into deneb will continue to
refine and certainly have to have the conversation on the complexity trade-off here but can have that a little bit further down the line
um another thing that we do not have a spec for but we would like to presumably would like to do uh it was kind of a follow-on on the historic summaries the creation of the new historic summaries was to backfill on a fork boundary essentially with a static list um to have them be complete from Genesis uh this can happen whenever the sooner
it happens the sooner we can standardize things like epoch uh or era file distribution in a simple way and other things like that um I think yasik's probably one of the main proponents here and is not here and nor do we have a spec yet um but I wanted to get a sense of if this is an urgent item silence means I do not think it is urgent speaking up means I think it's urgent okay I'm gonna Circle back with the odd
stick and see if we can actually just get a pictures back up um so that we can have the conversation but this does not seem urgent okay another item that's sitting in a feature is to not allow slash validators to become a proposer um essentially if you're slash you no longer can attest you still get put into committees but you can't attest uh but there's a bit of a degenerate flow in that if you have a very large slashing um these validators get put into the exit queue but they're still active and they can still be proposers so if you had a 50 slashing you'd actually have a 50 proposal rate at that point
um the get proposer can be modified to not select slash validators this is likely a relatively simple change and it it does have a spec um this is something Mikhail would like to at least open up for consideration for the NAB and if not to highlight it as something valuable to get into the next port sense of urgency in relation to danab um this is again it's like on the simple side of implementation but it is um no protection under you know a pretty high failure mode
any client teams feel like this should be prioritized for the next work
uh this one seems pretty important to me and yeah the diff looks pretty big but the change seems like it should be relatively more simple
Danny Ryan: yeah let me take a look at it why is the diff big oh because it's because getting the proposer within the context of the block because a proposer could be slashed
within the block um you have to get it from the I think the inserted block header I have to take a look at that yeah so essentially the call to get proposer index um because the proser could this depositor could self slash or anyone could be slashed during the execution of the block you can't just repeatedly call get reposer you need to get it from a more static place which is latest block header and so anytime the proposer is gotten in any of these functions those functions are copied over and used you get the proposal from the latest block header instead
um an easy solution is too just forbid self-flashing right
Danny Ryan: no I don't know if it's only self slashing
Dankrad Feist: would it
Danny Ryan: no I no you're right you're right but this is also this is a very this is I would argue an easier solution it's just that it makes the diff look big because all these functions are copied over to use the new git proposer and so get latest block browser index uh is inserted in each of these functions and so it's essentially a single line change that's pretty much not changing the functionality of anything
so I yeah I agree I think Sean the diff looks bigger than the actual because of that and we might be able to get clever and make the diff look smaller
yeah this one seems worth doing to me
Danny Ryan: any other input yeah I agree I'm in favor of it
um Mikhail will
Danny Ryan: will clean this up and
get tests built for it um and maybe keep it in a separate feature Branch uh with tests and in two weeks time we can do the full thumbs up or thumbs down on it's a it's about as simple as you can get because it doesn't even touch the engine API and I personally I think we you know we're gonna always have a few pretty minor things that we want to get in and so it's worth getting an A Minor thing uh great any other items that people want to
Bubble Up for consideration under them there is the atnet revamp although that can happen independent of denev so we will discuss that a bit further down um it's on snc signature format can you make
things
Etan Kissling: sure I mean we we are still looking for the minimal changes to to um end up in this SSC world and right now with um blob TX type having changed to
0x3 technically we have this problem that there used to be this I think Stark net thing where transaction type 3 was used for different kinds of signatures um so having something that makes sure that there can never be a conflict um that the same hash is signed with different meanings depending on the could still be something that should go into the net I mean it's mostly a conceptual thing not an engineering thing to develop one of these I think it was six four ninety three yeah 6493 EIP
don't need to discuss it right now in detail but just keep it in mind
Danny Ryan: this is for transactions specifically
um specifically
Etan Kissling: for the blob transaction type um the rest is already fixed right I mean those are signed the same across all the networks but the blob transaction type because it's based on SSC means that the chain ID is serialized at the different offset So in theory um if there is an rlp transaction that materializes the chain idea doc said zero I think or or offset one and then there is the SSC type that serializes it
at a different Offset you could craft the message that is valid in both schemes and maybe trick someone into signing it I'm not sure if this is possible for the blob transaction type but it should not even be necessary to think about it with a proper signature scheme
Danny Ryan: does this affect the consensus layer or if this is adopted on the execution layers end up being opaque to the consensus
player
Etan Kissling: this is only execution layer
Danny Ryan: so good for us to be informed about but maybe something that happens on the call next week yeah thanks for bringing that up any
other any comments on that before we
anything else uh discussion points for deneb okay we have uh one engine API another engine API Point brought up by Mikhail this is uh to state the palette payload ID should be unique for each payload attributes instance um I believe there was an edge case
triggered an issue that emerged here does anybody have like the tldr on what drove bringing this into the spec sitting maybe I always had this up for a week um I believe at least some of the parties relevant parties have taken a look um if you are the engine API guy on your team please take a look I think this is
likely to be merged before at the Executioner call in one week's time okay anything else on deneb before we great I had a placeholder from last week for the consideration for an RPC to validate the beacon header to help with certain flows uh is this we wanted to have a bit more thought and
discussion on it between last week or last call and now um is there any update on whether we do want that RPC and whether there's a likelihood of that being specked and put in um I'm in support of it
I think on the last call I said I would write up a spec but I haven't had time yet um I can if other people are similarly in support it seems like something that like at
least a few clients will have to implement and it'd be nice to have a standardized but the other hand is like we're sort of expanding the scope of like what is the beacon API like what sort of things do we support
so yeah
Danny Ryan: yeah and I think the the argument was if this isn't supported then people are going to work clients to support it and if one client supports it then they will become a monoculture in uh some of the building relay I don't think there's been any strong
arguments against other than the the expansion of scope I would recommend we write the spec um and get some final thumbs up from
thanks Sean this is something I've been excited about for a while Adrian age can you speak to pr3312 the atnet revamp and the
I guess a quick on what's going on here uh and how the strategy can be rolled out is this something that we need High coordination on or can it be done iteratively I'm
not sure if age is on the call
Danny Ryan: I see his name he has not spoken or unmuted but I do see his name I don't know can't unmute the motivation is right now uh the atmos
field uh one is honesty based so you add the member of that and that's random admits in relation to the number of validators you're running um it also leaks a lot of information um obviously we make a lot of information in all sorts of ways but reducing information like um and not adding additional information leak is valuable important to further secure validating nodes and the assumption that our subnets are probably much higher density than we necessarily need the what happens here in the atmos revamp is
we take the prid and some that given a constant which is the uh required number of adnets per full node uh gives us as a function of probably the epoch gives us which at nets a peer should be subscribed to the nice thing is if they're not we can call them dishonest and stop listening to them so we get a little bit of like enforcement here where we don't currently um and uh gives us the ability to kind of like tune the density based off of all full nodes it also allows for every full node and I think like half the DHT right now because this
layer does not contribute to adnets so distributes that a bit more across all of nodes I need to take a look I believe that this is specified in a oh hey well Adrian now that you can unmute I believe uh can you tell us about how we can roll this out is this done in a backwards compatible way does this need to be done in a hard Fork Etc
Adrian Manning: yeah so in principle we can just do it I was compatible if everyone agrees that this is something we want to do so uh we can just do it in stage releases as well like lighthouse could release it tomorrow if we wanted to
um I guess mainly it's because it's not enforceable at the moment anyone can kind of subscribe to whatever they like uh ideally yeah we can just um have client teams as they build it just to slowly release it and then the network will slowly shift to kind of the new regime
Danny Ryan: would Lighthouse be downscoring peers that don't do this or would they would you turn that on later
Adrian Manning: yeah you would turn that on after a hard four um because then like once all the client teams have it and all of the you know that all the nodes are on a particular version after a hard Fork then you can start in psoring and changing the way you do Discovery but in the meantime you can just you can just kind of
add up
Danny Ryan: and what's your confidence level and Analysis and whatever that this is going to be you know give us the stability that we need did you all end up running simulations or is it generally pen and paper on density and number of nodes
yeah it's
Adrian Manning: generally pen and paper um so the the main factor is uh the number of nodes sorry the number of subnets you subscribe to node so we're trying to be somewhat conservative by setting into two uh it will mean that like client teams are probably going to have to because it'll be like a started upgrade
as as people upgrade their nodes but client teams will probably have to have higher P accounts and probably monitor a little bit closely how they how they choose their peers to make sure that you have a stable set of subnets save as it appears per subnet but I imagine it's it's tunable and it's not going to destroy the world
Danny Ryan: okay I've generally not heard much dissent on uh moving forward into this strategy and regime is that correct is there anyone that feels like we should not be opening this can of worms we shouldn't be doing this
um are there further discussion points that are not being highlighted on that PR oud okay not that we have the status but let's call it in last call and that we're going to merge this by the next consensus layer call unless there are additional concerns in moving forward
Adrian Manning: yeah it's worth highlighting that it's somewhat controversial as to how it's going to affect the network so if people I guess Doing Network stuff on the
consensus line it's worth having a look if you haven't already and getting yourself in
Danny Ryan: okay anything else on this one
cool thanks age uh for keeping this moving okay we have a discussion point from Guillaume on the verge specification around the usage of a number field Json om yep
Guillaume Ballet: uh right yes so exactly
um in the in the spec for uh for the Verge like when we put the the proofs in the blocks um there's basically a structure that that is very nested with a lot of arrays and the same structure is repeated over and over again and uh like this structure that is repeated is basically just representing a diff so it says this last byte which is the suffix of the key is uh used to be this value before and now it's this value and uh because this value this type of structure is repeated a lot in the in the structure it feels a bit
wasteful to encode it as a string and from what I understand currently in the in the CL specs everything is supposed to every number is supposed to be encoded as a hex string and I understand the origin of this uh of this requirement was that there is some js library that does not handle uh sorry some uh yeah exactly some some GIS Library does not handle like big numbers but this is a byte so it will always be a value between 0 and 255 and I don't know it felt a bit wasteful so I wanted to know if there was a possibility to to change
um the specs so that uh only only large value our values are encoded as strings but smaller values that are always bytes could be encoded as numbers
pretending
Danny Ryan: the Kyle would probably have the most input here he did say we can use Json integer type of this field implementation complexity should be trivial and I can't remember the exact history of uh the libraries that were causing the issues here what are what are a couple examples of the number fields that we're putting in
HEX that are a bit strange right now like all of the base fee and that kind of stuff
Guillaume Ballet: uh so I um from when I understood that came from a discussion with Mac uh my understanding is that everything should be uh in the current spec everything should be uh should be encoded as a as a headstring and so um yeah that's true of uh that's true of every of the of the base fee for example but uh yeah even smaller numbers should they should exist like the like the the block number that could perfectly fit in an integer uh is also included as a hex string
Danny Ryan: is that
the case because I I'm looking at the like execution payload V1 under the specs and I'm seeing things labeled as quantity what is that type
I mean yeah does
Danny Ryan: anybody have
the familiarity with how quantity is encoded and that's a that's like a Json common Json type that we're leveraging there not something we made up
Guillaume Ballet: no it's a string
Danny Ryan: yeah but I meant the the parsing and
encoding and definition of that string is a common like um I don't have a strong opinion here I I would imagine if you make the the pr to the engine API would get a bit more discussion um I also I guess during just to point out like this API is you know optimizing a byte or optimizing a number of bytes is probably not going to like make or break this other than just like the aesthetic nature of what we wanted out of it right
because this isn't doesn't broadcast the network this isn't like something that
um we're going to get a lot of optimizing bites down right agreed here it's mostly
Guillaume Ballet: uh it's mostly cosmetic there's there's I mean it also depends how the underlying OS you know what like if you start feeling buffer sizes you get more I mean it's it's not gonna make things way slower for sure and noticeably slower even I'm just uh yeah it's just a feeling that this is wasteful uh just to build an uh I was looking uh block number so if you say it's a quantity it is included as a string so yeah just wanted to right I just I just checked um no yeah okay I'll create the pr then
and uh yeah see and see if there's some pushback um yeah if no one else has anything to say uh that's enough for me thanks
Danny Ryan: yeah anything else in that um okay yeah so that is the end of the agenda are there any other discussion points or closing remarks for today yeah and thanks uh Mario for linking
directly the the encoding I didn't see that initially okay cool um good call appreciate your coming uh good luck on devnet5 and talk to you all very soon
take care thanks bye bye
Speaker names adapted from ethereum/pm, CC BY-SA 3.0.