RPC Standards #28
RPC Standards · 15 Jun 2026 · 36:32
Call 28 of RPC Standards, held on 15 June 2026. Client teams and tooling developers work on the shared JSON-RPC specification.
Speakers
Topics
From RPC Standards, hosted by Ethereum Foundation.
Transcript
Mercy Boma Naps-Nkari: Hello. Hello, good afternoon, I think maybe we can wait for one more minute, then.
Oh, begin. I don't know, are we okay to join, to start? Because the last call, Felix was unable to join, and I'm not sure if he'll be joining this one, so…
Chase, I don't know if you have anything to say on this.
Chase Wright: Sorry, sorry, you talking to me? What's the question?
Mercy Boma Naps-Nkari: Yeah, I don't know if Felix would be able to join, as the last call we had, he didn't join, so…
Chase Wright: I don't know. I, I haven't spoke to him.
Mercy Boma Naps-Nkari: the thing is, we need someone to, like, at least… there's some peers that I think they're okay to merge. I don't know if.
Chase Wright: I mean, technically, Carrie can merge PRs, but if we need Felix to review, then we'll have to.
Mercy Boma Naps-Nkari: Oh.
Chase Wright: Off one.
Mercy Boma Naps-Nkari: Okay, I think he's here.
Felix Lange: Yup.
Mercy Boma Naps-Nkari: I think I can share my screen.
Chase Wright: There he is.
Felix Lange: Honey, I'm here.
Mercy Boma Naps-Nkari: Hello? So, good afternoon, everybody. Good day. Welcome to ROPC Core Standard 28, and… I think we sort of had, like, a release, on the versioning we've been working on. I'm not sure I understand how my screen works. So, can you still see my screen?
Chase Wright: Yes.
Felix Lange: Yes, we can see your entire screen.
Mercy Boma Naps-Nkari: Okay. So this is… I don't know if, Kerry, you have something to say about the release, because you made it, so maybe a brief introduction of how this will go on from now onwards. And also, there was a comment on, a CD on the general chat on Discord about, This sort of thing that she's had to reply, so how do we also make an announcement in regards to that?
Keri Clowes: I can talk a little bit about the, the release and the documentation, Dane and his team finished up, Their work that they've been working on, to do… that we have multiple versions now for release. So, what I'm hoping to do with this is, make it easier for both, like, clients to be passing the RPC Compet test, and then also for consumers to be able to… have implemented. And, like, hopefully all the clients are on the same page, but, to be able to see What methods and what is coming back. And what the parameters are for the, methods. So, yeah, so you can see we have, we have a bunch of different versions now. Mostly, we're just debugging the release process, but the latest is 1.0.0 Beta 7,
I… I think we might want to do, like, a 1.0 when Glamsterdam ships, maybe? But open to opinions on that. I'm not sure that it quite makes sense to move In lockstep with… The hard forks, for this repo. But yeah, open to opinions, so… Yeah, pretty exciting, and it looks great. So, thank you, Zane.
Zane Starr: Thanks. We're excited to see all of this go down, sir. Yeah, and then versions… we're excited for versioning.
Mercy Boma Naps-Nkari: Oh, thank you. It really looks nice. This is more like our own, smaller heart fork, so… I guess we can… when we kind of, like, have, maybe move out from the beta or something, then we can… make, a sort of an announcement, because there was a discussion about something similar. I don't know, Chase, you had a reply to it about, I can't recall what the exact conversation was all about, but I know I saw something about, someone think from the… Either testing team or eat bundles about this.
Chase Wright: I'm not sure what you're referring to, honestly.
Mercy Boma Naps-Nkari: I mean, there was a conversation, on the… I can't record which channel, that's the problem. But yeah, okay, we can move on. But yeah, I just lose grade, and… hopefully it works well for us. So, the next conversation would be… some… there's these periods I want us to close, because it has already been addressed, and then there's another issue. that someone opened, I think it's a spam. It is true. So true. So, D… 5… 353 has been addressed, on a different PR, and that this issue is a spam, then this other pull request also has been addressed, confirmed by Nicole. So, if you can close it up, that would be nice. And then the next open item has to do with error codes. There has been so many conversations around it.
And I lost track of all of them, so I think, if Sims or Chase are here, they can… Walk us more through it.
Chase Wright: I mean.
Mercy Boma Naps-Nkari: and so on.
Chase Wright: So, yeah, I mean, I opened the issue, obviously, because, Well, there's… there's a lot of problems. The… right now, Cena has a… has a draft PR, for… Kind of resolving the current issues. for the most part, with… with the catalog. The… Simpson, the other, individual, said that he would take a look at it and try to make a… make a fix to the catalog, but I haven't… I haven't seen anything from him. I've… I looked at Sina's PR, and I think it's fine, but I, like… I know Felix… You have far stronger opinions on it than… than I do.
Felix Lange: We have a longer response also in the PR to basically just to summarize the situation. So the way I see it is that the initial set of codes that were proposed was more like a demo of the feature, unless they weren't, like, also these, like, groups that were proposed originally weren't gonna be the final ones, so I feel like… Now is the time to go and really decide things, and It is a bit strange that we are now specifying these eSimulate error codes to be the canonical codes for everything. But it is kind of what… Somehow, the alternative We would… would be to define eSimilatev2, and then change all the error codes, and just…
Chase Wright: Right.
Felix Lange: Doing that just for the codes alone is a bit strange as well, because it's gonna cause some disruption in the client side for no reason, so I feel like we might just be stuck with these codes that were defined for… somehow, and… We just have to live with it. It's… I don't really mind what the actual codes are, I just want us to all agree on the same.
Chase Wright: Yeah, I kinda agree with that as well. I… and I think the… I think the major holdup right now is around the… JSON standard errors and JSON non-standard errors. And I think, for the most part, all of us… Mostly agree that we shouldn't define them, and because they are standard.
Felix Lange: Yeah, I…
Chase Wright: I'm…
Felix Lange: So, first of all, it doesn't make any sense for us to list every possible JSON or PC standard error on every method, because it is just normal that these errors can always be returned by the server for any reason. There is no way for us to specify that. It can literally be as simple as the server just crashed due to the execution of the method, so then it's gonna return, like, some kind of internal error. This is just always possible. And then the other thing is, this other list with the JSON RPC non-standard errors. I just don't understand it. Like, this is kind of this, like, unspecific list of errors that might occur, and I think…
we should rather be more specific about it. So these two categories, I just don't understand.
Chase Wright: Yeah, and I… I agree there. I think the… the thing… or the thinking behind adding the standard errors was that the tool would need to know about them, but, like, we can just bake that into the tool, or tools. I also think… Yeah.
Felix Lange: It's just something that is… that is possible. And it is just how… I mean, these… they… they are always… they can always be returned. Also, for example, invalid parameters, like any method can have invalid parameters, and then… unless it has no parameters, but even then, if you call a method that has no defined parameters with parameters, it will also error. So there's just… there's always this possibility that if you call it wrong, it's gonna return this error. So there's no need for us in the application specification to tell that to the user.
Chase Wright: Yeah, and I think Sina's PR is kind of addressing that, and so it's doing what you suggested, where we remove all those duplicate, Like, this is just an invalid param, so we don't need it. But I don't know, I don't know what the next step is, like… Casinos…
Felix Lange: That for us is to just decide this formally, and then merge it, I guess. That's what we want.
Chase Wright: I know Cena's PR is in draft, and I reviewed it, and I think it's okay, but to your point, it is kind of just pulling in those… ETH simulate error codes.
Felix Lange: No. I guess no one is really happy about this, but at the same time, it just feels like the least disruptive thing to do right now for the… for this… this is mostly for us to… to… to just not have any kind of mismatch between e-simulate errors and regular errors. to that point, I don't re… I also don't care about having this mismatch. I don't think that the error codes used by ETH Simulate are necessarily, like, good ones, it's just that they were there first, and also. eSimulate V1 had a very, very long specification process that yielded… in some ways, was trying to do things on the… API that we just didn't have a solution for, like, for example, defining all the errors, like, they spent a lot of time actually coming up with this error specification before we had the error specification for any other method, because they just wanted to… the spec… the…
standardization process for that method was completely separate from the rest of the API in some ways. They had their own calls, coming up with their own thing, and… I would also be fine with just saying, yeah, well, eSimulate V1 is just special. It just has its own errors, because it had its own spec process. But somehow, that is also unpopular. that opinion. So, yeah, in the end, I don't care. I honestly… I literally don't care. I just want to make progress on the codes, like, on having defined codes. And if that's what it takes, then… Let's just do it. We just need some agreement here.
Mercy Boma Naps-Nkari: I think, we have someone from Erigon. Can you weigh in on this, so we have much, better opinions?
Tullio Canepa: Yeah, I think I agree with Felix. The important thing is to have progress on… on this, about… Error code specifically. I mean, which category, which values. And… okay, it's important to go on. And that is a standout. Great.
Chase Wright: Alright, well, I don't think we're gonna solve it on this particular call. Let me go back and talk to Sina again, and then see if I can get Simpson on the same page, and then… If we can just come up with a compromise, we'll… We'll work on it async and see what.
Felix Lange: Yeah, but it is definitely very close. I also feel like now we have everything on the table, so that's fine.
Chase Wright: Yeah.
Mercy Boma Naps-Nkari: Okay, think we can move on to the next PR, which is 795. This, it has been reviewed, but, not yet matched.
Chase Wright: It looks like the CI needs to kick off, right?
Mercy Boma Naps-Nkari: Yeah. But I… What's about this one?
Keri Clowes: I've had, merge conflicts last week, but I can kick off CI real fast. It looks like those have been fixed, so I think it's ready.
Mercy Boma Naps-Nkari: So, I don't know, are we imagining it, or…
Chase Wright: I think the consensus is we can merge it once CI is green, so… We'll do…
Mercy Boma Naps-Nkari: Okay, thank you. Mmm, so moving on to the next one should be ITC1. Yeah, this is yours, Chase.
Chase Wright: Yeah, this actually can wait. The Go Ethereum changes are done, but it's not merged. Nethermind… They had a reg… so, this method was based off of NetherMind's implementation, and then NetherMind has a regression in their client, making it not pass and not work anymore. So, they're taking a look at that. So, this is just pending feedback from Nethermind, and if they're gonna… adopt… the way that it was. So, I mean, in theory, this is… this is good. It's passing on Geth, if Geth merges it, and I'm just waiting for another mine to fix their bug. If they fix it, then we'll have two clients Matching, and then… We just need to get, like, Erigon and everybody else to implement it.
Mercy Boma Naps-Nkari: So, sorry, but I didn't like, walking towards it, or…
Chase Wright: Yeah, yeah, there's… I mean, there's an open issue, and they have PRs open, and they're being reviewed, so… it's just…
Mercy Boma Naps-Nkari: Oh, okay.
Chase Wright: Let's just move it till the next meeting.
Mercy Boma Naps-Nkari: Alright, thank you.
Chase Wright: Yeah.
Mercy Boma Naps-Nkari: and… This needs the CI to run, also, I think. Yeah. So I'm not sure if, anyone can, like, kick off the CI, then review the PR also.
Keri Clowes: I don't see a button to kick off CI, I think it's just… GitHub, but I'll, again, maybe push an empty commit, or something like that.
Mercy Boma Naps-Nkari: Sorry, I didn't get that.
Keri Clowes: I, I think I might have to push an empty commit to run CI. I think there's something happening with, like, the… There's, like, a bug in the UI or something?
Mercy Boma Naps-Nkari: Okay.
Keri Clowes: See what I can do.
Mercy Boma Naps-Nkari: Okay, thank you. Okay… Didn't necessarily use this.
Chase Wright: Yes, there… there really hasn't been any updates or changes here. The last time we talked about this, Felix, you said that you needed time to review it? And I think that was where we… where we left off.
Mercy Boma Naps-Nkari: I remember that was our last Two calls, thereabout.
Chase Wright: Like, as far as I know, if we… if this is ran against GoEthereum, it passes, But, yeah, I mean, we still need… You still need review from Felix, I suppose.
Felix Lange: Yeah, that's true.
Mercy Boma Naps-Nkari: So, is this something that we can do now, since… although it's pretty big, like… Thousand plus.
Felix Lange: Yeah, I mean, not really. I really just have to review it, and yeah, I mean, it's a thousand lines of… but it's mostly tests, like, the actual… The actual spec is not that large, I guess.
Mercy Boma Naps-Nkari: Yeah.
Felix Lange: It just has a bunch of tests, and… I mean, it has… a lot of this Treasure stuff. So, can I again ask the question, like, so, we have sign-off from all the clients on this, or… I'm somehow not sure.
Chase Wright: Yeah, I mean, everyone has basically given it thumbs up. There's been a… there's been a bit of back and forth around the memory bloat.
Felix Lange: Yeah.
Chase Wright: But, I mean, that's been a problem for, like, 10 years, so, like, it's not a new problem, and I think everyone has mostly been like, yeah, okay, it's… it's a thing, it's a problem, but… it's not gonna get fixed in this PR, right? We're mostly just documenting the standard as how it… how it operates today. And… Besu went out and… implemented it, and Nethermind. fix their stuff to Erigon. All the major clients have thumbs up it and have implementations and merged stuff, so as far as I know, it's good.
Felix Lange: Yup.
Chase Wright: Yeah, alright.
Felix Lange: I will… I will…
Chase Wright: I mean, I'm the first to admit it's not a perfect standard, but neither was the original.
Felix Lange: No, no, no, no, no, I mean, I don't think it's a great achievement that we have this at all, and I definitely have to review it. I will… I will do it today. I'm sorry, the last time I… I… I didn't get to it, but I still wanna really check it in detail, and I didn't get to it yet. I'm really sorry about this.
Chase Wright: That's alright.
Felix Lange: But it is… I will… I… I… that's all I can do now.
Mercy Boma Naps-Nkari: Okay… So, we have this… But it's still undraftable, I think, Kira, you can…
Chase Wright: Yeah, actually, I wanted to talk about this one, too, because I was looking at it. And Felix, I'm glad you're here, because you probably would have more insight into this one. So, in… in Hive, someone made a change to the tests, or the configuration of the deposit. contract address, such that it defaults over to the mainnet, address, and then… but, hiveChain doesn't deploy a con… a deposit contract. It's true.
Felix Lange: We don't actually have any contract there. Yeah, that's true.
Chase Wright: Yeah, and so… this PR is changing the contract address to mainnet, but I don't think this PR would survive a hive chain regeneration. I think…
Felix Lange: We have to… we have to actually generate… regenerate the chain, yeah. But that should be no problem, like, that's the whole point of… of the test generation pipeline. You can just… we could just regenerate, the chain by running the script, and then we can… Regenerate the test based on the chain, and it should all just work. Like, there's no…
Chase Wright: Right, but the problem is… There is no deployed con- contract.
Felix Lange: Yeah, but it doesn't matter, because we don't actually access this in the tests. It's just that the… The deposit contract is mostly… used by the… by the CL, but we don't… inside of the test chain, we don't interact with the deposit contract at all, so it doesn't… Matter for the purposes of this… these tests.
Chase Wright: So, my only… Counter there is that… It's kind of… Like, it's… it's a lie to say that the deposit contract address is mainnet in this.
Felix Lange: I mean, I can add the deposit contract into the chain, it's fine, it's just that it's kind of a big contract, and it doesn't give us any benefit, so that's why I didn't…
Chase Wright: soon.
Tullio Canepa: Yeah, but I think there is something else going on here, because… Currently, the The expected, value from for example, if config response is to have this deposit contract 0, which matches what you are saying, that there is no deposit contract in IveChain, but if I look at the initialization, run for Erigon, the client launch, I can see in the config that the deposit contract address is, in fact, non-zero. So I think there is a mismatch. between the expected value in if config. And, the deposit contract, which is passed in… in the… in the chain config for… for… even if maybe there is no deposit contract, okay, but so… if so, there is a mismatch in the config, I think.
Sorry? Because the config contains a deposit contract address.
Felix Lange: Yeah, I mean, that's the thing, we just have to regenerate the test, and then it will be okay. Like, the ETH config…
Tullio Canepa: Yeah, yeah.
Felix Lange: So… It is… it is dependent on this value, yes. The test output is dependent on this value, even though there's no contract.
Tullio Canepa: Yeah, yeah, okay.
Felix Lange: It's just because we have an RPC endpoint that reads the config, and it returns this.
Tullio Canepa: Yeah, huh.
Felix Lange: So, is…
Tullio Canepa: It's… it's… it's the config to be fixed, not the… not the response.
Felix Lange: So the current response contains the mainnet address? I'm not sure, I think it shouldn't.
Tullio Canepa: No, it contains zero.
Felix Lange: Yeah, exactly. So if we change the config, then we also have to change the test output, but this will happen when you regenerate the test. So it's just, you regenerate, so we regenerate the chain, Which will update the config. And then we…
Tullio Canepa: Oh, and that's it, because the… the response already contains zero. I think. Just back to the restrooms.
Felix Lange: Cheers.
Tullio Canepa: This PR is changing the expected response from 0 to a non-zero value, but it's not merged, right?
Felix Lange: It is not merged.
Mercy Boma Naps-Nkari: Sorry, I guess I'm lost, but how do we regenerate the chain? You said something about regenerating the chain, I don't understand.
Felix Lange: There is a whole hype chain that can be used to regenerate the chain. There's a script inside of the test that does this. You just need to run the script, and it will update.
Chase Wright: But, so, that was what I was saying about this is not… this particular… this PR, as it sits right now, is not HiveChain region safe, because if you run that tool right now, it's going to rewrite it to 0x0.
Felix Lange: because…
Chase Wright: Or…
Felix Lange: Oh, why?
Chase Wright: Okay.
Felix Lange: I don't think so. I mean, it changes in the conflict, so then it should just be fine. I will take a look at this, I'm sorry. I know how to… we will find a resolution for this. There's no… Yeah, yeah, thank you.
Tullio Canepa: Of course.
Mercy Boma Naps-Nkari: Okay, thank you. Yeah, this, this PR is kind of, like, blocking, one of Sina's PR. I had to reopen… it… I had a rebase, I did not understand how to resolve the conflict. We already talked about this, like, 3, calls ago.
Felix Lange: Yo. So, is there anything blocking this? Can we literally just merge it?
Mercy Boma Naps-Nkari: Yeah, we can merge it, then we now look… move over to Sina's PR, because these changes affect Sina's PR. We need to, like, bump it first before… looking at one of the Sinas PR, so… but it's…
Felix Lange: Do you mean, like, the one about the notifications, or…
Mercy Boma Naps-Nkari: Yeah, Diaz, that one.
Felix Lange: So we can… this PR, bumping the schema version, We can just do, yeah?
Mercy Boma Naps-Nkari: Yes, yes.
Felix Lange: Okay, so let's just merge it. I'm just gonna mudge it right now.
Mercy Boma Naps-Nkari: Okay.
Felix Lange: Thank you. Okay, so it's done. I mean, there should be no consequences from this, except that we are referencing a newer version, and let's see if this causes problems.
Mercy Boma Naps-Nkari: Okay. So the last thing on the call is this other one.
Felix Lange: Yeah, we've been there a couple times.
Mercy Boma Naps-Nkari: Yep.
Felix Lange: I still don't know. So, we, the filled transaction, we have discussed it a bunch of times, and one of the things here is that there was this feedback that we used to return the raw transaction alongside the JSON encoded one, but there could be a mismatch between these two. things, when interacting with a hostile RPC provider. This… has been resolved by removing the raw transaction ROP output, so it now just contains the JSON output. If this is okay with clients, I'm happy to just merge it. I mean, I think… Fill transaction is important. It's, it is our stepping stone toward removing support for each send transaction. from this specification, so, you know, I feel like I'm happy to just…
Budge this if everyone agrees that this is what we're doing.
Mercy Boma Naps-Nkari: If we can get thumbs up from Erigon, that would be also nice.
Felix Lange: Yeah, at the moment, it doesn't have… It doesn't have a lot of reviews on it. It's kind of a replacement for the older PR, which…
Tullio Canepa: Okay, I need… we… we need to take a look, but generally speaking, I think we are… we are not against it.
Felix Lange: No.
Mercy Boma Naps-Nkari: Okay.
Felix Lange: We do have to… I think this thing, we have to bring it up also in Nethermind, because Nethermind was the party who most… had comments. So Nethermind had had… We're the ones that brought up the original issue, and… we… I don't know if they… I feel like they should also sign off on this. I think they will, but we have to bring them on the call, or somehow get ahold of them. Async to agree to this.
Mercy Boma Naps-Nkari: Okay, I guess, I can tag, One of the team members to this, and then…
Felix Lange: Yeah, that would be good.
Mercy Boma Naps-Nkari: Or probably Lucas, I don't know, yeah, but… I think that's the only thing. I don't know if anyone has any other thing to add to the agenda, then we can look at it, because that's all we have.
Chase Wright: The only… I just posted one thing in the chat, and it's the…
Mercy Boma Naps-Nkari: Okay.
Chase Wright: default block param to latest on state methods. Everyone except Erigon and ethrex have… merged? So, Tulio, if you could, put eyes on it, that would be great, but otherwise…
Tullio Canepa: Yeah, I'll do, I'll do.
Chase Wright: Yeah, everyone is already merged. It's in GoEthereum, it's in all the clients. Everyone passes the tests. So… That's… that's the last one.
Mercy Boma Naps-Nkari: Okay. But, like, is it… This being on draft, doesn't it signify that it's not ready to be merged?
Chase Wright: Oh, yeah, that's on me, I could probably… well, I was waiting for Erigon, at least, to do it, but… yeah, good, good point. I'll, I'll mark it ready.
Mercy Boma Naps-Nkari: Okay. I don't know, but that's all from me, and I think it's okay to end the call here.
Felix Lange: Yeah, I'd appreciate it. We have an event going on here, so I kind of want to get back to the event.
Mercy Boma Naps-Nkari: Oh, okay. Thank you all for joining, and see you guys next two weeks.
Chase Wright: Why?
Tullio Canepa: Bye.
Mercy Boma Naps-Nkari: But we should also make announcements about our, releases.
Chase Wright: Yeah, I think we should… we need to figure out when we want to do the first release. Do we want to wait for Glamsterdam, or do we want to just… Send it.
Felix Lange: I mean, if you guys feel happy with the current state, I mean, there are still some… maybe some small things to get in, but everyone, I think, is just also quite ready to say, like, let's just wrap up this whole versioning Thread, and… just move on.
Chase Wright: Yep.
Mercy Boma Naps-Nkari: Yeah, I agree with that.
Keri Clowes: Alright.
Felix Lange: haven't really taken a look at the whole release pipeline. Sorry, I'm really happy that you guys shipped it, but I have no… I didn't really have time to seriously look at it.
Chase Wright: I'd like to fix the Hive deposit contract thing first, maybe, and then we can do a V1. That would make sense.
Keri Clowes: Yeah, that makes sense to me.
Chase Wright: Right.
Mercy Boma Naps-Nkari: Alright, thank you. Bye-bye.
Chase Wright: Beautiful.
Felix Lange: Bye.
Tullio Canepa: Bye.
Transcript adapted from ethereum/pm, CC BY-SA 3.0.