Toni Wahrstaetter:Welcome, everyone! Today, we have the fourth EAP7928 breakout call.
Transcript
Toni Wahrstaetter:It's October the 8th.
Toni Wahrstaetter:And we have a rather lightweight agenda today. So, first, we wanted to talk about
Toni Wahrstaetter:What we couldn't finish, or what we couldn't, take a decision on, two weeks ago, namely the topic of block-level access list hash versus block-level access list root.
Toni Wahrstaetter:Then…
Toni Wahrstaetter:I'm hoping we can get some updates from clients about progress, about, yeah, testing, and how everything is going. And finally, we can talk about,
Toni Wahrstaetter:Yeah, definite, and how we get to a first block access list definite as soon as possible.
Toni Wahrstaetter:Great, let's start into the discussion with BlockHub Access List Hash versus BlockHub Access List Route, and I would be curious, if clients have, like, changed their opinion or updated their opinion last week. The default was, more on the
Toni Wahrstaetter:keep it as is site, so that we keep the block lab access list as it is, and consider moving to a block lab access list route in the future, when partial stateless nodes become a more important thing.
Toni Wahrstaetter:But, yeah, the pre-confirmation team shared their work with everyone here, so I'm curious what clients think about this topic.
Toni Wahrstaetter:If there is no update, then I would just assume that…
Toni Wahrstaetter:We just stick with the block lab access list hash.
Toni Wahrstaetter:And don't change it at this point.
Toni Wahrstaetter:Great.
Toni Wahrstaetter:Then let's keep it as is.
Toni Wahrstaetter:Before we get into, client updates, I wanted to bring up this point by March Hill in the Discord.
Toni Wahrstaetter:Namely, he wanted to… open the discussion around precompiles. We already discussed, how we treat precompiles.
Toni Wahrstaetter:A few calls ago.
Toni Wahrstaetter:But I would still want to give Marshall the opportunity.
Toni Wahrstaetter:To voice this opinion here.
Marc:Yeah, I just wanted to quickly bring this up. So yeah, most people were against it last time, but,
Marc:I just kind of had a look into the code to see
Marc:sort of what it'd be like to implement this way. And it just seems cleaner to me to not include the precompiles if they're… they're just called, or if you take, like, the code size.
Marc:or copy code, then in all these cases, or certainly never mind code, like, this doesn't access the state at all.
Marc:So whereas for all of the other block accessor stuff, like, you can quite neatly do it by just…
Marc:sort of, you know, noting the change whenever you kind of go into the state. This goes down, like, a different code path, so… I mean, it's doable, but it just seems a bit more, like.
Marc:ugly to me. But yeah, I'm not sure if anyone else agrees with that, but I'm happy to go either way, really.
Toni Wahrstaetter:Yeah, I can definitely see the rational behind this.
Toni Wahrstaetter:Essentially.
Toni Wahrstaetter:we would never have a precompile included in the block live access list with empty changes, where nothing changes. Things like balance changes are still possible, and that would then essentially be the only way a precompile could ever be included in the Block Live Access List, if I… if I'm not wrong here.
Toni Wahrstaetter:And we would then just remove all pre-compiled addresses from the block of access list if there are no changes,
Toni Wahrstaetter:Related to it. So this would be, just a description to look from it, from a different angle.
Jared Wasinger:I feel like, And I need to look into this, but I feel like if the…
Jared Wasinger:If, the target account of this operation, of whatever one of these operations is.
Jared Wasinger:A precompile, and these fall under the… EIP2929, cold…
Jared Wasinger:account, like, load, cost model, if that makes sense. I feel like it might make sense to…
Jared Wasinger:to do what Mark is saying here.
Jared Wasinger:Yeah.
Toni Wahrstaetter:Yeah, just… just to add what I just said, because I think, Rokita, correct?
Toni Wahrstaetter:Dragon corrected me correctly there, because…
Toni Wahrstaetter:Also, if we call, like, balance on a precompile, we still want the…
Toni Wahrstaetter:we still want, the balance… we still want the precompile in the blocker access list, right? So, essentially, we are now talking about differentiating between certain opcodes when it comes to precompiles.
Jared Wasinger:Yeah, we definitely shouldn't do that.
draganrakita:Yeah.
draganrakita:On one hand, I understand that the compiler should be formed, and we should have those accounts available, but on the hand, I would like to be… for block level X, to be, like.
draganrakita:covering everything. If we touch account, it should be inside block access list.
Marc:Yeah, I mean, the point that I'm making here is, like, in these cases, you're not actually, like.
Marc:touching the state or any accounts. So let's say, like, in Nevermind, it goes down, like, a completely different, code path.
Marc:And it's nothing that you would… Need when executing, either.
Marc:But that wouldn't be the case for, like, balance or, you know, anything else except for those specific ones where it doesn't touch the state.
draganrakita:Yeah, I think… External cord size, external cord is…
draganrakita:those up codes are not that great, but they are needed. So yeah, I would stick to… Having, like.
draganrakita:Let's include everything, just to not make… Different rules around it.
draganrakita:But, yeah.
Toni Wahrstaetter:I'm… just echoing what…
Toni Wahrstaetter:Karim is also saying in the chat, agreeing with Jagan, for the sake of, yeah, lower complexity.
Marc:Yeah, I mean, I'm happy to go with that. It's just, like, as it depends on the codebase. For us, it's like…
Marc:Slightly more complexity to actually add them, but, like, still negligible, so it's just…
Marc:Whatever works best for everyone, I guess.
Toni Wahrstaetter:Awesome, then just to… to summarize that, regarding precompiles, we will include the precompiles if they are called in any upcode.
Toni Wahrstaetter:No matter what, which means that we will have precompiles in the block lab access list with completely empty.
Toni Wahrstaetter:changes. For example, if you call the balance opcode on a precompile.
Toni Wahrstaetter:Great.
Toni Wahrstaetter:Perfect. Is there anything else that you wanted to bring up… to bring up regarding this, point, or regarding the changes you, proposed for the EOP?
Marc:Yeah, I can quickly mention, so there's this other change that I suggested, around an edge case with balance changes.
Marc:So, specifically in the case that we have, a transaction, and an account's balance changes in that transaction, but goes back to what it was before the transaction.
Marc:I think in this case, we shouldn't record in the, block-level access list.
Marc:And to me, this just seems a bit more consistent with how we handle zero-value transfers and also self-destruct.
Marc:Because if we don't do it this way, like, we have these other special cases where if we… if we kind of change it, then it all just falls under this rule, which seems kind of nice.
Toni Wahrstaetter:Yeah, yeah, I totally agree with this, and this is actually how it should have been handled from the beginning. So, in the specs, it was always correct, but you are right that in the EAP, it was kind of poorly formulated, where it was not 100% clear.
Toni Wahrstaetter:So… I would assume the clients already handled that correctly, and we also had tests for that.
Toni Wahrstaetter:So what I would propose is that we just, merge your pull requester, and maybe we can…
Toni Wahrstaetter:slightly changed the wording there. I, proposed some, some small changes there.
Toni Wahrstaetter:But yeah, curious, what clients are actually doing in such cases for transactions where the initial balance is the same as the post balance in the specs, those were already excluded.
Jared Wasinger:You're in Geth, we exclude them.
Marc:It would also be good to cover this in the test, because I think… at the moment.
Marc:Nethermine doesn't actually do it this way, but I can't see any test that it's failing, so I think…
Marc:We should, add something for that.
Toni Wahrstaetter:Yeah, let me ask Rahul and Felipe, and I see they're both on the call, maybe some one of you can give us an update, would also work async if you…
Toni Wahrstaetter:Don't want to put you on the spot here.
raxhvl:I'll review that and update on… update in the channel.
Toni Wahrstaetter:Okay, great. Yeah, would be great if we… if we get a test case for that, just to make sure that…
Toni Wahrstaetter:We're handling that correctly.
draganrakita:Sorry, I'm… I didn't follow at the beginning. This is about setting, for example, Balance the…
draganrakita:Zero balance to some target.
draganrakita:This is the kid.
Toni Wahrstaetter:This is, for example, a zero-value transfer.
Toni Wahrstaetter:But it's also the case if you have a transaction.
Toni Wahrstaetter:and you send one EV somewhere else.
Toni Wahrstaetter:Or you call a contract, the contract sends one ETH out, and then receives one ETH in the same transaction.
draganrakita:Okay, in this case.
Toni Wahrstaetter:There was a balance change, but they zero each other out, and that's why we don't include them.
draganrakita:Okay, that makes sense. It's not included in the write set, but it's included as the read.
draganrakita:Exactly, yeah. Yeah, okay, cool, that makes sense.
Toni Wahrstaetter:Awesome. Yeah, I see Kareem also confirms that…
Toni Wahrstaetter:For peace, it's also read perfect.
Toni Wahrstaetter:Yeah, we have many of those, cases also around, reverted transactions, 7702,
Toni Wahrstaetter:What else was there? System contract stuff, if I remember correctly, where we sometimes have to convert changes to reads?
Toni Wahrstaetter:At least in the specs.
Toni Wahrstaetter:But yeah, for most of those edge cases, we have tests already, and this is one that we will definitely add.
Toni Wahrstaetter:Great.
Toni Wahrstaetter:Is there any other open topic that we should discuss before we get to client updates?
felipe:I wanted to just mention the 7702 changes in the spec.
felipe:Tony, I think you have a PR up for my branch that's open in the spec side.
felipe:And I made a couple small changes there for some new tests that I added, if you could take a look.
felipe:And we can chat async.
Toni Wahrstaetter:Perfect, yeah, I will take a look.
Toni Wahrstaetter:Thank you very much.
felipe:Awesome, yeah.
Toni Wahrstaetter:Yeah, Katya?
Katya:Hi everyone, I'm Katya, I'm working on metric specs, so I also opened an issue regarding biometric specs, so…
Katya:I would like to hear from you later in the…
Katya:channel, so your ideas, maybe, so I put some metrics, which can be standardized.
Katya:And if some of the clients are ready to build them, so we can have them, the dashboards and Cortosis, and for dev notes as well, so please let me know. I will share it also in the
Katya:Discord channel. Thank you.
Toni Wahrstaetter:Awesome, thank you very much.
Toni Wahrstaetter:Sounds good.
Toni Wahrstaetter:Great, is there any other topic?
Toni Wahrstaetter:Someone wants to race.
Toni Wahrstaetter:If not, we can also start, going through the clients and… Checking client updates.
Toni Wahrstaetter:And then, yeah, we can already start discussing when we want to do a first definet, maybe.
Toni Wahrstaetter:Maybe we start with you, Charit?
Jared Wasinger:Yeah, sure. Not too much to report on the get side,
Jared Wasinger:In the sense that it's relevant to people outside the Geth team. Basically, the last, week and a half or two have been consumed by refactoring our,
Jared Wasinger:Implementation to be more clean and to get it into a mergeable state.
Jared Wasinger:I've been working a lot on making sure that this new refactored implementation is going to work in a local DevNets setup.
Jared Wasinger:so yeah, that's it.
Toni Wahrstaetter:Awesome. When would you say, would you be ready for, first FDAT?
Jared Wasinger:soon? It's at the point where, I mean, it…
Jared Wasinger:I think it's very close, but it's just a matter of ironing out,
Jared Wasinger:these issues that pop up when I try to run it, so… I mean…
Jared Wasinger:maybe a day or two. It's kind of hard to give a firm answer. I doubt it would… I doubt it would take
Jared Wasinger:A week or more, though.
Toni Wahrstaetter:Great, thanks for the update.
Toni Wahrstaetter:Let's continue on with Netherland.
Marc:I, so…
Marc:I fixed some issue that was, causing, Nethermine to… or the BALS… NetherMind BALS implementation to not run in the Hive tests.
Marc:So now it's passing most of the tests on the tracker.
Marc:And there's a few that are still failing around a few edge cases, so I'm just working through those and fixing them.
Toni Wahrstaetter:Thanks a lot.
Toni Wahrstaetter:Let's continue on with… Ruh.
Ishika:So we ran the new sets of the tests, and had some issues with how, the balances were stored in case of a non-change test, and we fixed it, and we also ran some
Ishika:test concerning IP2930, and yeah, we now have the BAL DevNet 0 branch in red, and the new tests that are added, didn't get a chance to look into it.
Ishika:So…
Ishika:We'll look into it soon, and also have a bit of refactoring on the part of the code we have implemented so far.
Toni Wahrstaetter:Awesome, thanks. This also sounds, like, very close to being able to participate in the first FNet, right?
Toni Wahrstaetter:Let's continue on with Aragon.
Mark Holt:Yeah, so… we are… Just finalizing our implementation,
Mark Holt:I'm expecting to get a branch that we can merge probably on Monday next week.
Mark Holt:And then…
Mark Holt:I guess by the end of the week, we'd aim to get the hive tests all passing, now…
Mark Holt:I think the way that we've done the implementation, we have basically a parallel engine running that we've been
Mark Holt:kind of merging over the last week or so. We now need to put the bowel stuff on top of it.
Mark Holt:Having had a look at the, It's the…
Mark Holt:the Discord chat, although I haven't particularly participated in it. I think most of the issues that we're
Mark Holt:that people are raising, we've also had and kind of fixed in our implementation, so I would hope
Mark Holt:will be in… A good position by the end of next week.
Mark Holt:So I think probably the week after, we would be ready to join a DevNet.
Toni Wahrstaetter:Great, thank you very much.
Toni Wahrstaetter:and peso.
Karim T.:So, so we are passing all of the bul tests, block access tests. We… we did some tests with GET on a local devnet, so the block built by Bezo are accepted by GET.
Karim T.:And to get…
Karim T.:built by… there's a blog built by Ketta, accepted by Bizzou, so it seems that for the moment it's working.
Karim T.:So we created a branch, for the new DevNet.
Karim T.:Just, it seems that we have some issue with the Hive test, but I don't think it's related to block access list, we just have to understand what is the problem. But, I think Bezu is really, yes, for the… for the DevNet.
Toni Wahrstaetter:Amazing.
Toni Wahrstaetter:Yeah, we're getting really close to a first definite hit, it seems like.
Toni Wahrstaetter:Yeah, great work, everyone.
Toni Wahrstaetter:Is there anything else we should discuss today?
Toni Wahrstaetter:Great.
Toni Wahrstaetter:I will then double-check with PandaOps regarding First DevNet, and…
Toni Wahrstaetter:Nothing needed for that, but looks like we might.
Toni Wahrstaetter:Get to a first definite next week, sometime.
Toni Wahrstaetter:Amazing.
Toni Wahrstaetter:If there is nothing else, then I would say we can…
Toni Wahrstaetter:And the call a little earlier today.
Toni Wahrstaetter:Awesome.
Toni Wahrstaetter:Then, thanks everyone, and see you at the next breakout call in two weeks.
Marc:By the way.
felipe:Thanks, bye.
Ishika:Bye.
draganrakita:What?
Chat Logs
00:02:20
jochem-brouwer:@pooja the stream is very laggy
00:03:10
Pooja Ranjan:Let’s continue. In worst case, I’ll upload the recording.
00:06:30
draganrakita:It feels this affects EXTCODESIZE, EXTCODE, right? What about BALANCE, would this be same
00:07:00
Toni Wahrstaetter:Replying to "It feels this affect..."
right, yeah, I was wrong. For those we would still need them
00:08:39
Karim T.:Agree with @draganrakita
I think it will add more complexity on our side to check at the end and remove precompile
00:09:22
draganrakita:For us, we have one path for EXTCODESIZE and EXTCODE, it is not different for precompile
00:12:23
Ishika:we dont include initial if its equal to post balance in reth
00:13:52
Karim T.:Same Besu it will be a read
00:15:28
Katya:https://github.com/ethereum/execution-metrics/issues/5
00:20:14
Ishika:yes we will be ready soon
Summary
10 highlights
· 3 action itemsExperimental
Summary
10 highlights · 3 action itemsExperimentalspecification decisions
testing progress
- Geth: refactoring complete, DevNet ready in 1-2 days00:17:41
- Nethermind: Hive tests mostly passing, fixing edge cases00:18:28
- Reth: passing tests, DevNet 0 branch ready00:19:03
- Erigon: branch merge Monday, Hive tests by end of week00:20:09
- Besu: all tests passing, local DevNet validated with Geth00:21:42
targets
- First BAL DevNet expected next week after PandaOps coordination00:22:37
documentation
- Metrics standardization proposal for BAL DevNets published00:14:59