Ethereum Protocol Fellowship (EPF) Cohort 7 — Applications open until May 13

RPC Standards #021

2026-02-23 Agenda: #1943 canonical JSON

Transcript

00:01:07
Ahmad:blew them out in LA last night.
00:01:12
Mercy Boma Naps-Nkari:Thank you. Good afternoon, everyone. Thank you for joining.
00:01:25
Mercy Boma Naps-Nkari:So, I think we can start, but let me share the agenda.
00:01:38
Mercy Boma Naps-Nkari:So… Hello, everyone. Welcome to RPC Standard Call 21.
00:01:44
Mercy Boma Naps-Nkari:We… I wasn't here during the last call.
00:01:49
Mercy Boma Naps-Nkari:And, although I went through, through the, call somewhere.
00:01:55
Mercy Boma Naps-Nkari:And I did map out this, file.
00:02:01
Mercy Boma Naps-Nkari:Isaac MD proposal for the versioning that we talked about… we've been talking about since the beginning of this year.
00:02:08
Mercy Boma Naps-Nkari:I don't know if anyone had taken a look at it and have any suggestion or impute on it.
00:02:15
Mercy Boma Naps-Nkari:Hello, Felix.
00:02:21
Felix (Geth):Yeah, I, I have taken a look at it. I think it makes a lot of sense.
00:02:28
Felix (Geth):The basic question is just how we exactly,
00:02:33
Felix (Geth):Pull off the versioning, but we had some thoughts on it, so the way it should work is that, yeah.
00:02:40
Felix (Geth):a GitHub release has to be created.
00:02:43
Felix (Geth):of the V1, and we…
00:02:48
Felix (Geth):Can basically do that at any time.
00:02:55
Mercy Boma Naps-Nkari:Okay, okay, thank you for that. So… .
00:04:04
Mercy Boma Naps-Nkari:Sorry, my… I don't know what's wrong with my internet connection.
00:04:09
Mercy Boma Naps-Nkari:So, as I was saying, I'm not sure who we are going to contact for, like, who will be responsible for the GitHub release, so I'm not sure if that will be you.
00:04:21
Mercy Boma Naps-Nkari:Because the money, you didn'.
00:04:22
Felix (Geth):It's gonna be me, y'all.
00:04:24
Felix (Geth):So, we… I can… the question is, Mandy, do you… I mean, you listed some things there which are kind of…
00:04:32
Felix (Geth):still to include, I guess, so we should…
00:04:43
Mercy Boma Naps-Nkari:this PR, actually, this one.
00:04:50
Mercy Boma Naps-Nkari:And this one.
00:04:52
Mercy Boma Naps-Nkari:Although this is, like… I'm not sure about the second one, but yeah.
00:04:58
Mercy Boma Naps-Nkari:Then also, this PR needs to be discussed, this, add max use gas.
00:05:16
Felix (Geth):Yeah, that last one, is kind of a…
00:05:22
Felix (Geth):I think it's more like a… change to the API?
00:05:27
Felix (Geth):I mean, it makes… whatever the status of it is, I think it has to go through the process first, so I wouldn't just include it in the V1, because it is supposed to be…
00:05:38
Felix (Geth):we are supposed to agree on the API changes before deploying them to the spec. And so, I feel like this change with the max use gas is more, like, at the start of the process.
00:05:50
Felix (Geth):So, it is being implemented, as far as I see, in Reth, but it still has an open pull request, and there's also an open pull request in GoEthereum, but that's about it. So, I think it's not at the point where it can be included into the spec, and it shouldn't be considered for this
00:06:08
Felix (Geth):Initial release of the spec.
00:06:11
Mercy Boma Naps-Nkari:Okay, okay, I'm trying to jot that down so that I can…
00:06:16
Mercy Boma Naps-Nkari:know what to include and remove from ERA.
00:06:20
Mercy Boma Naps-Nkari:So, is there any other thing that should be included?
00:06:24
Mercy Boma Naps-Nkari:From your own perspective, apart from the things I've listed.
00:06:28
Felix (Geth):I'm not so super sure, no. I don't think… I mean, to be honest, it's just more about getting started with the release process in the first place, so that we can,
00:06:40
Felix (Geth):see what comes next, because as far as I see it with those, like, with the… with the release process, what's gonna happen is we will…
00:06:50
Felix (Geth):We will make a release of the spec, but then…
00:06:54
Felix (Geth):Ultimately, the point of that is also to freeze the spec at its current place.
00:07:00
Felix (Geth):Giving clients the ability to target the released version for their tests. So we will, in the next step, have to update the test runner so that it will…
00:07:12
Felix (Geth):Use the released version of the spec.
00:07:15
Felix (Geth):Instead of the, latest one.
00:07:21
Felix (Geth):So I think that's something important as well, that is connected with the… with this release process. And for that, I would just say, I mean, if we… we can… if we just freeze this back as it is right now, we have a pretty good chance of…
00:07:38
Felix (Geth):Yeah, making it useful for the clients to target.
00:07:42
Felix (Geth):Unless they see that… unless some client sees that there are certain changes in the spec that are required in order for them to pass the test, in which case, we should just
00:07:51
Felix (Geth):Yeah, make these changes, but it's also, once we have released the version 1, we will keep
00:07:57
Felix (Geth):Making new releases all the time.
00:08:00
Felix (Geth):So I think it's more.
00:08:02
Felix (Geth):Yeah, it's not that important to get everything into the initial release, because literally it's not the last release.
00:08:10
Mercy Boma Naps-Nkari:Yeah, what I was just thinking, going for was, like, maybe the important ones to start with, then we can slowly add up to the release.
00:08:21
Felix (Geth):So one change that definitely has to be made is that recently we added the block timestamp to the transaction object, so that thing needs to still be deployed into the tests.
00:08:32
Felix (Geth):I'll see what's the,
00:08:36
Felix (Geth):What's the pull request for this? I think there is an open pull request for this.
00:08:43
Felix (Geth):Let me check… For it…
00:08:54
Felix (Geth):Hmm. Yeah, so the pull request was merged, but somehow the tests are not updated.
00:09:01
Felix (Geth):So I have to update the tests again to include this change, and this will be something that we have to do before the release, because one of the ideas was also that, as part of the release, we will publish the spec JSON, but we will also publish the tests which are associated with that version as an artifact.
00:09:25
Felix (Geth):So we basically have to…
00:09:26
Felix (Geth):come up with a… so before we can publish the version 1, we have to make sure that there are no regressions in the tests. And at the moment, looking at the Hive.
00:09:36
Felix (Geth):We have a regression in tests because most of the clients are returning this block timestamp as part of the transaction, but the tests themselves do not have this change included yet.
00:09:48
Felix (Geth):So we have to make this change to get all the clients back to 100… like, all the clients which were passing 100% before, Nethermine, and Geth, we have to get them all back to this state.
00:09:59
Felix (Geth):Actually, let me check.
00:10:02
Felix (Geth):I think Erigon is also at a similar…
00:10:06
Felix (Geth):Yeah, Erigon is at the same place now, so if we…
00:10:10
Felix (Geth):If we put it back, then Erigon will also be at 100%. So basically, I will make this change to ensure that they all pass again, and then we can,
00:10:20
Felix (Geth):We are in a good place for the tests.
00:10:26
Mercy Boma Naps-Nkari:Okay, so I'll still, like, try to, like, jot this down so that we don't kind of, like, forget about it.
00:10:32
Mercy Boma Naps-Nkari:And, I'm not sure if anyone has any other thing to say in regards to devotioning.
00:10:40
Mercy Boma Naps-Nkari:Any more imputes, so that I can go to the next agenda item.
00:10:45
Felix (Geth):I would like to give one more thing. So, ultimately, we also have to figure out how the versioning will be handled in the documentation side. So, at the moment, the documentation website shows the latest spec.
00:11:00
Felix (Geth):But, we should have a way of basically browsing the… Spec as it was released.
00:11:08
Felix (Geth):And so, we have to figure out how to make that happen. I think there is some work required in the GitHub Actions or something.
00:11:16
Felix (Geth):that will… Basically publish the latest released spec, as well as the… Yeah, like, the latest one.
00:11:33
Felix (Geth):Or should we maybe publish all of the documentation sites for all of the versions? I mean, that would be the ideal case, right? If we had some kind of version selector in the docs, where you could say, yeah, I want to go to…
00:11:44
Felix (Geth):1, or version 1.1 or so. But this has to be implemented by someone.
00:11:53
Mercy Boma Naps-Nkari:I think I would defer this to Zane, because he has, like, more knowledge about how the website works now.
00:12:00
Mercy Boma Naps-Nkari:If he can, like, give us a direction on how to properly do this.
00:12:05
Mercy Boma Naps-Nkari:Take it off for my own end.
00:12:07
Zane Starr:Yeah, just give me, like, one second to, like, switch over, to my machine. I'm just, like, setting up my mic on it. That's why you see two of me.
00:12:18
Zane Starr:Just, like, one second. Alright.
00:12:24
Mercy Boma Naps-Nkari:I think this current idea makes sense, so that people can, like, easily illustrate through the various versions that we've, be more like a history.
00:12:39
Zane Starr:Hey, how's it going? Off the top of my head, I would say, like…
00:12:46
Zane Starr:Probably what you could do…
00:12:49
Zane Starr:I don't know if this makes total sense, but essentially, any sort of markdown that you put into the docs folder would then just be replicated.
00:13:00
Zane Starr:Probably your biggest thing would be, on the sidebar. So you could probably, because it is just DocuSource, is have a sidebar, and then you could just generate the docs either in Markdown or MDX.
00:13:16
Zane Starr:Because the generator can be run as a standalone CLI.
00:13:20
Zane Starr:And then, for there, you'd be able to have, like, on the sidebar, say, like, V1, V2, V3, and then expand into it, and then latest would just be the default.
00:13:32
Zane Starr:And then, versioning in terms of version number, can just go directly into the docs, I think.
00:13:40
Ahmad:Hey, I'm Zane. So, somewhat a new, question here, but, do you mind, or someone, whoever has on hand, linking to the, the site you're referencing, or you're referring to? Mercy, I think you, I mean, you mentioned this before.
00:13:55
Ahmad:But, yeah, I'm relatively new here, just trying to get more context.
00:14:05
Ahmad:Oh. To the GitHub? Oh, never mind. Okay, got it. Appreciate it.
00:14:17
Felix (Geth):So, yeah, I mean, I would say that this sidebar thing, I'm not super sure about it, so basically this would mean that inside of the guides section or something, we would have… I mean, yeah, we can have something there, but I would…
00:14:30
Felix (Geth):I would rather make it so that we basically have to change the side to have some kind of version selector in the top.
00:14:37
Zane Starr:This is a very common thing, actually, for most documentation sites, that you can switch between the versions.
00:14:42
Felix (Geth):And how exactly we implement that, we have to see, but it has to be, like, a built-in feature of the site with, like, a…
00:14:49
Felix (Geth):That goes in the… basically in the top bar.
00:14:52
Zane Starr:Yeah, that's fine. I was just saying that, like…
00:14:57
Zane Starr:I mean, like, that was quick. We're, like, we want to ship something that, like, works, that doesn't take, like, a whole heck of a lot of time.
00:15:05
Zane Starr:More engineering resources to do, then you could, like… do that?
00:15:10
Zane Starr:And then that would, like, probably just, like, work today.
00:15:16
Zane Starr:The other thing would be is that it is just DocuSource, and that all the docs are generated, with, like, regular.mdx that's not tied to, like, any sort of platform, so…
00:15:29
Zane Starr:In that case, yeah, I'm sure there's a DocuSource plugin that allows you to have, like, a little drop-down menu and all that stuff, so…
00:15:38
Zane Starr:Yeah, it's just DocuSource. The answer is it's DocuSource, and there's a generator CLI that will produce the documents that you need. It's not…
00:15:49
Zane Starr:It doesn't, like, forcibly put you into any sort of arrangement, yeah.
00:16:03
Zane Starr:And, like, that's some work that we could take up, but, like, we'd have to discuss that, like, sort of, like, offline.
00:16:12
Felix (Geth):Yeah, I mean, so there's a… there is a guide here that will explain this, like, how they… how they like to have it in this,
00:16:24
Felix (Geth):in the… in the tool.
00:16:27
Felix (Geth):So… yeah, I mean, the main thing for us is that we want to have this integrated with the…
00:16:35
Felix (Geth):with the release process. So, ultimately, this comes down to documenting also the release process, like, how we publish a release. And I see us publishing releases more often than, you know, like, every year. I mean, we're definitely gonna do this process quite a bit, so…
00:16:52
Felix (Geth):that's… I mean, we kind of want to… yeah, we want to have the versioning, but so far, also, it's been the case that people… when… when stuff is changed in the API, they… people want to have that on quite quickly. It doesn't really help anyone if we have a stable version, and then we're not really in a position to update it, like, frequently.
00:17:12
Zane Starr:Yeah, for sure. So, I would just recommend using GitHub Actions to then call the CLI to build the docs in the right place, in terms of, like, oh, we have this release, new release, boom, it goes into a particular folder, and that's it.
00:17:30
Zane Starr:I think the other thing that we were thinking about originally.
00:17:34
Zane Starr:Why is that? Oh, okay,
00:17:37
Zane Starr:Like, you're probably gonna have one doc, so it's potentially that you could start, like, get ignoring the folder, and then have that all be generated
00:17:48
Zane Starr:Sort of behind the scenes, so that's… that's, like, potentially a possibility, so that way, like, things are not just, like, ever-expanding.
00:17:57
Felix (Geth):Yeah, but I think the ever-expanding part is not really, like, bad. So we have this, the… currently, in the execution APIs, there is also a, like, GitHub pages branch, and that one contains the generated docs. And so, I mean, it…
00:18:14
Felix (Geth):It does kind of, like, we already have the auto-deployment set up there.
00:18:20
Zane Starr:No, so, like, the GH pages change between versions, so now it uses GitHub Actions pages. So GitHub Actions pages, like, puts the docs parallel to, the actual, like, process itself.
00:18:36
Zane Starr:So, there is a checked-in version of the docs themselves, that reflect the current state. So, different consumers, like, MetaMask and Infura.
00:18:49
Zane Starr:From times before, had problems where people were not able to really figure out, like.
00:18:55
Zane Starr:What's going on with the docs, or make suggestions for edits, so it was useful for them to be able to visualize that, at a glance, and say, like, oh, it's this line here, we don't like this kind of markdown, even though the markdown's generated from the descriptions with inside of the methods.
00:19:15
Felix (Geth):Okay. I'm still not really sure, so where is… do you know… I'm sorry.
00:19:23
Felix (Geth):Do you… can you tell me where is the current… Let's actually just check this.
00:19:32
Zane Starr:Yeah, sure. One second.
00:19:37
Felix (Geth):Yeah, so we have this deploying… we have a deploy to GitHub pages.
00:19:43
Zane Starr:Yeah, so GitHub workflows…
00:19:47
Zane Starr:Then you look at deploy.yaml, and then, you'll see this. Let me just pull this up real quick.
00:19:57
Zane Starr:So that's the deploy to the YAML, and so between V2 and V4. So many years ago.
00:20:06
Zane Starr:GitHub Actions was new, and it would require you to have a GHPages branch, and the GHPages branch would then, like, do the deploy, and then that would use DocuSource and all this other stuff. But, GitHub just, like, got rid of all of that, so you could just basically…
00:20:25
Zane Starr:Use GitHub Actions to deploy pages without needing, like, a separate branch and branch management and all of that stuff.
00:20:32
Felix (Geth):Yeah, but so where does the… thanks for giving me the tutorial about that, but where is this…
00:20:40
Zane Starr:Docs API, and then API.
00:20:43
Zane Starr:And that has all of the stuff.
00:20:46
Zane Starr:So, it looks like this…
00:20:59
Zane Starr:And that's, like, where the methods are, and then they get generated.
00:21:08
Zane Starr:So, like, this is supposed to just be so that way, like, okay, let's say that you are, from the UX perspective, someone that.
00:21:16
Felix (Geth):Yeah, I'm also sorry, my question was a different one. Basically, in order for… in order for us to, build
00:21:27
Felix (Geth):mostly, I think I'm not that familiar with this, like, way of deploying GitHub pages, which is, just…
00:21:34
Felix (Geth):Doesn't use the repository itself as a kind of storage for the files.
00:21:39
Zane Starr:So, I was just mostly curious, like, where do the actual, like, files live that are deployed to the GitHub pages? Okay, so line 44 of the deploy…
00:21:49
Zane Starr:It's called, like, Upload Artifact, and then Actions Upload Pages Artifact, and it says with build, so in the background, npm run build docs creates a build directory, and the staging area of the CI, and then from there, it will copy that
00:22:08
Zane Starr:Where you see, on line 44, Actions Upload Pages Artifact.
00:22:13
Zane Starr:With the build, and then that is where the pages actually live. And then on GitHub and the background, I don't know if they just, like, throw it on their own, like, data center?
00:22:26
Zane Starr:or they take that, where it says it needs, like, the build, and then that's, like, where the built artifacts live, and are hosted by GitHub.
00:22:37
Felix (Geth):Yeah, so what I… mostly what I'm trying to get at is that if we actually want to use the versioning feature from DocuSaurus, we need to…
00:22:45
Felix (Geth):have some place that contains all of the versions, and they all have to be in the same, so we basically have to keep adding to that storage. It's not like we cannot fully overwrite the pages storage every time. We have to check out the current version of the pages.
00:23:02
Felix (Geth):and modify it. So at that point, it might make sense to switch back to this, like, GitHub pages as a Branch approach.
00:23:10
Zane Starr:I actually don't think it does.
00:23:13
Felix (Geth):Okay. From my perspective.
00:23:15
Zane Starr:The thing that you would do, you could write your tooling script in any sort of language you want.
00:23:20
Zane Starr:in, like, shell script, or you could write it in TypeScript, or you could write it in Go.
00:23:27
Zane Starr:But I would then just, like, Through that, I would,
00:23:33
Zane Starr:simply not use the npm run build docs.
00:23:39
Zane Starr:Trying to figure out, like.
00:23:43
Zane Starr:What's the script that's running again?
00:23:47
Zane Starr:And the package JSON… do… So… let's see… They build… ba-ba-ba… So there's the make-build script…
00:24:02
Zane Starr:And then the bill… It's in the source…
00:24:11
Zane Starr:I'm just looking for the proper, thing, but you… you don't need to do all of that, because, again, underneath the hood, it's all just,
00:24:24
Zane Starr:And we have the CLI, so the only thing you would do is download the GitHub releases. We actually have done this in the past with, like, our meta schema.
00:24:34
Zane Starr:which we're moving away from, but you can use the GitHub API to get the release versions that you want, or get all of the releases, then you build the docs.
00:24:43
Zane Starr:by calling the CLI on that directory. That directory then produces the markdown, and then you can, just have that output into the build, in the file location that DocuSource likes.
00:24:58
Felix (Geth):I understand. But then, basically, this means that on every single build, we have to download all of the past releases, and then, like.
00:25:04
Felix (Geth):build it that way, but what I meant is that if we were to use this GitHub pages as a branch approach, we can just check out the current version of the docs, add something to it, like, make the necessary modifications, and then also commit that, which is actually going to make it way easier to see the changes that are created by the build.
00:25:23
Felix (Geth):Whereas, in the other way, it's kind of like we're treating it more like the deployment is basically gonna be this thing that we cannot really inspect too well. I mean, you can run it locally, I guess, but…
00:25:37
Felix (Geth):It's not really the same. So we… anyway, let's cut it short.
00:25:40
Zane Starr:Cut it short, yeah. There's a way.
00:25:44
Felix (Geth):There are some stuff to figure out for this build, that is gonna make it possible to host, like, all the versions simultaneously of the docs, and basically, it comes with some update to the GitHub Pages build, however we do it, but this update has to be developed.
00:26:03
Felix (Geth):In order to make this happen.
00:26:08
Zane Starr:Yeah, yeah, it could be developed. The other approach is to just generate the versions into the current repo, which is, like, also an approach that would also give you the same caching.
00:26:20
Zane Starr:But it just depends on, like, how you feel about that, etc. And then, the other thing about that is only the files that are changing will then update the docs, so if you were to go to, like, one…
00:26:33
Zane Starr:well, not quite, because on the versions, then you haven't checked in. So maybe a branch approach is, like, a good approach, and, like, I don't know, so…
00:26:43
Felix (Geth):I mean, we'll figure it out, anyways. Okay, so this is like the… basically, in order to fully finish this API versioning.
00:26:52
Felix (Geth):topic, we have to update the docs build to be aware of the versioning, and I think that's, like, that's kind of a slightly bigger task, but I'll find someone to do this, so that's fine.
00:27:05
Felix (Geth):I just wanted to mention that, for me, this kind of comes with the versioning. I mean, we can make a GitHub release with the V1 API, but it doesn't really help anyone. That's mostly what I wanted to mention here.
00:27:15
Felix (Geth):I mean, the main thing this does is then the… ultimately, we're gonna create that GitHub release very soon. In the immediate next step, we're going to update the tests to be running on top of this version, which is gonna make it easier for the clients, and we will have some kind of
00:27:33
Felix (Geth):running both the latest tests and the latest release tests, and then, as a… in the third step, we're gonna look into updating the docs build to be
00:27:44
Felix (Geth):aware of the versions, so this is the summary.
00:27:49
Mercy Boma Naps-Nkari:Okay, noted. Thank you very much.
00:27:53
Zane Starr:Oh, I was gonna say, I had one other question for Felix. Felix, for the test files on the .ios.
00:28:02
Zane Starr:Would it be useful for you if the .io files were a part of the docs, and then went through the same sort of validation as…
00:28:11
Zane Starr:The rest of the… Methods.
00:28:17
Zane Starr:Because, like, I think right now, it's like, oh, if you generate this .io, but it doesn't actually correspond to the methods,
00:28:24
Zane Starr:It essentially is, like, a possibility.
00:28:27
Felix (Geth):No, no, no, we check, there is a job that actually checks the I.O. files for validity, so that.
00:28:34
Zane Starr:Spec check, right? But you wouldn't need spec check, potentially.
00:28:39
Zane Starr:If the .io files were already…
00:28:43
Zane Starr:and the doc, because that would be self-validating with the validation of the tools, potentially. That's… that's like a route, but…
00:28:52
Felix (Geth):I don't think this could be related too much. Basically, I think we are going to be releasing the tests as part of the…
00:28:59
Felix (Geth):we're gonna be releasing the tests as part of the versioned release as well, so the release is gonna contain the OpenRPC.json file and the tests that are matching that version.
00:29:13
Felix (Geth):So that's how I see it for now. And then we can… we'll see how… where to go from there.
00:29:24
Mercy Boma Naps-Nkari:Okay, Denise, I don't know, Samus, do you have any updates in regards to the error?
00:29:30
Mercy Boma Naps-Nkari:Code standardization.
00:29:33
Simsonraj Easvarasakthi:Yeah, yeah. I saw the comment from, Felix, I looked into it. I have a few questions,
00:29:44
Simsonraj Easvarasakthi:It's not questions. I did… I understand, Felix's point of view. My hesitation is,
00:29:53
Simsonraj Easvarasakthi:We will lose the, native validation functionality for error groups, if we don't embed the X error groups, the extension specification within the JSON.
00:30:07
Simsonraj Easvarasakthi:So I wanted to just get some opinion from Felix, what's the reservation here, and how we can address it.
00:30:19
Felix (Geth):Yeah, mostly. I mean, from my point of view, it's just that we decided to rebuild the… we decided to recreate the spec build functionality because we see it as more, like.
00:30:31
Felix (Geth):An easier way for us forward to just…
00:30:35
Felix (Geth):be in control of the YAML input format in the repository, and so…
00:30:41
Felix (Geth):it's just kind of… that was, like, the main motivation for us to make these changes. And I think when it comes to the error codes, I…
00:30:49
Felix (Geth):I sort of understand this ex-error Group stuff, but… At the same time.
00:30:56
Felix (Geth):Yeah, I mean, I just feel like it's…
00:30:59
Felix (Geth):I don't know, it just makes the spec more complicated in some way.
00:31:04
Simsonraj Easvarasakthi:Yeah, yeah.
00:31:05
Felix (Geth):If we will… I have no problem with, like, labeling the errors as groups, but to be honest, I don't think anyone really cares about these groups too much. Like, for people… I mean.
00:31:16
Felix (Geth):mostly what we've been looking for is a way to just have, like, arrow codes defined at all for the standard methods. And so, for me, this is kind of the more important thing.
00:31:27
Simsonraj Easvarasakthi:Yeah, yeah.
00:31:28
Felix (Geth):With regard to the, like…
00:31:31
Felix (Geth):groups, we have to see. I mean, we can update our tool to support this arrow group stuff, and then it will just be in the spec. Like, that's… I'm fine with that. I don't think there's, like, any issue with this.
00:31:45
Felix (Geth):it's just that, yeah, well, I mean, we have to make this update. So that's… that's… that's the main thing. So I would say.
00:31:51
Simsonraj Easvarasakthi:I understand.
00:31:52
Felix (Geth):like, the next step is basically we have to implement support for the… for the errors inside of our tool. However we do it, basically, it has to be implemented.
00:32:01
Simsonraj Easvarasakthi:Right, right. Yeah, I saw you move the scripts from JavaScript to Go.
00:32:08
Simsonraj Easvarasakthi:Yeah, I think we should… I should definitely do it, because I wanted to make sure if, if I'm doing the right way of doing it, you know, so we don't have to re-implement everything. Because, one of your comments, the concerns were, we're still using references and it's not flattened.
00:32:26
Simsonraj Easvarasakthi:But it's already dereferenced, it's already flattened.
00:32:30
Simsonraj Easvarasakthi:I can actually show the generated,
00:32:34
Simsonraj Easvarasakthi:OPA, sorry, generated, OpenRPC file. Let me just share for one moment.
00:32:41
Felix (Geth):Yeah, yeah, it's fine.
00:32:42
Simsonraj Easvarasakthi:If that… if that would make it easier.
00:32:44
Felix (Geth):No, I mean, maybe we just misunderstood each other. So, we generate two versions of the spec right now. We have this… we have one file that we generate, it's called refs-openrpc.json, and that one includes all of the references. So basically, it doesn't have any of this, like, JSON post-processing.
00:33:02
Felix (Geth):And then we have another version of the spec, the OpenRPC.json, which is kind of a flattened version, so this one doesn't have any schemas defined.
00:33:10
Felix (Geth):And all the schemas are inlined into the methods in a specific way, and also all of these, like, all of…
00:33:17
Felix (Geth):Schema feature is, processed by the tool.
00:33:22
Simsonraj Easvarasakthi:Yes, exactly. No, no, I definitely understand that. So, we have two files, one is intermediary, the other one is the final one, flattened and, dereference. The open… sorry, the Xera groups work exactly the same, in the
00:33:38
Simsonraj Easvarasakthi:non-dereference, which is the, middle file, refs file, it has the refs, and the final open RPC, it is dereferenced. For example, if you say X, error group.
00:33:52
Simsonraj Easvarasakthi:I don't know what method this is, but you can see it is all dereferenced. It doesn't hold any…
00:33:59
Simsonraj Easvarasakthi:references, and it has all the errors dereference. The only difference here is
00:34:04
Simsonraj Easvarasakthi:it doesn't use the errors, the typical errors, that's because it doesn't support arrays of arrays in the… that's one. Second, that's the only change as far as the methods are concerned, so it is still pretty readable for the users when they look at the spec.
00:34:22
Simsonraj Easvarasakthi:They'll know exactly what errors are supported per method.
00:34:25
Simsonraj Easvarasakthi:At the end, I have appended the extensions. This is…
00:34:30
Simsonraj Easvarasakthi:Users don't need to worry about this at all. The only reason we kept the extensions here, we can actually remove it if you don't need it, because it's useless at this point for pretty much most folks. But the reason I still kept X extensions, the spec itself, within the dereferenced one, is because this now allows us to natively validate
00:34:52
Simsonraj Easvarasakthi:if any of the error messages or any error codes are violating the grouping. For example, if I specified, let's say, 799 for one of the errors, I can natively validate without any extra validation tools, using just OpenRPC validations to see if anyone has violated.
00:35:11
Simsonraj Easvarasakthi:Some developer tomorrow comes in and says… adds a number, that doesn't, fall within our ranges that we expect it to be, which can be easily validated without no… without any code… additional coding or tooling to validate these ranges violations. That's the only reason I kept it here, but otherwise, it is pretty much exactly what we would expect the…
00:35:35
Simsonraj Easvarasakthi:rest of the spec to be.
00:35:37
Simsonraj Easvarasakthi:Other than this, you won't see any other…
00:35:39
Felix (Geth):Maybe this is a quick comment, Darrell.
00:35:41
Felix (Geth):It is… since… this is kind of what I… what I was trying to say, is that since we are now in control of this, like, translation step within our repository, we can just create a tool that will check that the errors are right. We can do this check while we are building the spec.
00:35:57
Felix (Geth):So we don't really need to embed this into the spec, because as far as we're concerned, we treat the spec as an output from the tool. So there's… we will never worry that, like, that late in the process, we will not worry about the invalidity of the spec anyways.
00:36:10
Felix (Geth):Because we expect that this translation tool from the YAML to the JSON can only produce a valid output, so it is supposed to basically…
00:36:18
Felix (Geth):Not… it cannot create invalid… spec…
00:36:25
Simsonraj Easvarasakthi:I see your point, because if you remember, we had the RPC Testion, which is also consuming this, downstream. Now this has been merged back into the same repo. Needed this validation, because in RPC Testion, I can also enforce additional
00:36:43
Simsonraj Easvarasakthi:validations.
00:36:45
Simsonraj Easvarasakthi:With this, with this extension spec being written here.
00:36:49
Simsonraj Easvarasakthi:Now I have to take a look at this, how this RPC testing will work and consume, because this allowed me to enable validations with multiple
00:36:59
Simsonraj Easvarasakthi:places, kind of felt like a really niche side effect of having the extension specification, and also the documentation is built in. I don't have to worry about
00:37:10
Simsonraj Easvarasakthi:any modifications to the documentation, especially given there are too many errors per method now. It can… I don't know how it looks like now, but I think it'll have a good side effect of displaying this in the documentation, too, having it in a…
00:37:29
Simsonraj Easvarasakthi:Extension specification. But now, if you have to rewrite this to… to be in a pragmatic way.
00:37:36
Simsonraj Easvarasakthi:we'll have to worry about a lot of things, like, how we would do these validations in our RPC testing, because then it'll be a lot of complicated, hard-coded logic testing for these, grouping.
00:37:50
Simsonraj Easvarasakthi:Which I kinda hated.
00:37:52
Simsonraj Easvarasakthi:Which was, like,
00:37:55
Simsonraj Easvarasakthi:built-in. Now, since this is an, embedded, it's a built-in validation, which I liked the way how we… how it did, using the OpenRPCs, scripts. Now, this means, like, writing ugly, ugly, hard-coded, grouping somewhere.
00:38:12
Simsonraj Easvarasakthi:Which is why I hesitated.
00:38:16
Felix (Geth):Yeah, I mean, ultimately, what we want is… ultimately, we want the input to the spec generation process to be kind of easy to write, so there is going to be some YAML file that defines these error groups, right? I mean, you have that now, probably.
00:38:30
Simsonraj Easvarasakthi:Yeah, yeah, we do.
00:38:32
Felix (Geth):Yeah, so I mean, there is… somewhere, there is.
00:38:36
Simsonraj Easvarasakthi:Hi, Mocha.
00:38:37
Felix (Geth):a file that contains these errors, and then this file, I mean, we basically have to process that, and we have to create, anyway, some code that will process this file to create the…
00:38:48
Felix (Geth):the OpenRPC JSON output. And I think during this process, we can apply any validation we want. For example, we can.
00:38:55
Simsonraj Easvarasakthi:Oh, no, no, no, I'm not talking about the validation while generating OpenRPC, which is already done anyway, but if someone is consuming this to make some modification or to generate tests in any downstream applications, we can all.
00:39:09
Felix (Geth):Yeah, yeah, that is not supposed to happen, though. Like, nobody is supposed to, like, extend the spec, which was published already. Like, that… I'm not worried about these kinds of use cases at all. As far as we are concerned, we are producing the spec, and it is what it is. Like, we're not, like, concerned about someone modifying the spec that we have produced later.
00:39:28
Felix (Geth):Right? When would that be a use case?
00:39:32
Simsonraj Easvarasakthi:It doesn't…
00:39:34
Simsonraj Easvarasakthi:Sorry, yeah, I was, I was going to say just, even in RPC test gen, for example,
00:39:41
Simsonraj Easvarasakthi:it doesn't directly consume these, error codes. For example, nonce to low error.
00:39:48
Simsonraj Easvarasakthi:whatever the error that's returned by the get, or whatever the client within the RPC testion, we can also implement this if it falls out of range, which…
00:40:02
Simsonraj Easvarasakthi:this… Side effect of, again, having the embedded, grouping.
00:40:09
Simsonraj Easvarasakthi:But I do see your point, how we can do it otherwise, but it just feels like a, you know, an ugly implementation of… or a hard-coded implementation of validations in multiple places here.
00:40:24
Felix (Geth):Yeah, I mean, as far as I understand, like, in RPC test gen, we're not really going to…
00:40:29
Felix (Geth):validate any of this. Like, that's not… that's not really the point of it. Like, RPC testing is just supposed to capture the outputs from the clients.
00:40:38
Felix (Geth):Yeah, yeah, but… We'll have to implement.
00:40:42
Felix (Geth):We will have to implement some validation in the spec check tool for the errors. So in that case, what we have to do is we have to check that in the responses, they have… they are using one of the error codes which is listed for the method.
00:40:57
Felix (Geth):So, again, this is not really related with the groups, it's just that the client is allowed for a specific method to return specific error codes, and there's a definitive list of error codes for each method that can be returned, and so the spec check tool at some point has to be extended to
00:41:13
Felix (Geth):Basically, recognize the method, and then recognize the set of allowable error codes.
00:41:18
Felix (Geth):I don't really see how this is related with this, like, inlining the extension schema into the OpenRPC.json, because in the OpenRPC.json, we have a list of errors, which is…
00:41:29
Felix (Geth):allowed for each method, and we can just validate that in spec check.
00:41:36
Simsonraj Easvarasakthi:I… yeah, okay, I'll have to go back and check which tool where it sat nicely, but…
00:41:44
Felix (Geth):I do see your point, I'm just worried about re-implementing all this again. It's been open for a really long time, yeah, I mean, you don't really have to do this. I mean, as far as I'm concerned, the main thing I'm seeing is that this PR has been open for a long time. I recognize that it's a bit annoying, but…
00:42:01
Felix (Geth):We just took our time to figure out, like, the right way to do this.
00:42:10
Felix (Geth):we can merge it as it is today, but I can tell you that there will be some changes to this thing, ultimately, to make it kind of, like.
00:42:19
Felix (Geth):work for us, and the way I see it, the main contribution in the error codes proposal is the list of the error codes themselves, and also their association with the methods. So that's kind of how I see it. Like, the precise way of, like, how these error codes are integrated into the spec.
00:42:37
Felix (Geth):I don't think it's, like, the important part there. And, I mean, definitely I or someone else at the F, we will be working on the tools to make it more supported, or whatever, or apply more validations, or… I mean, this is something that is definitely gonna happen.
00:42:52
Simsonraj Easvarasakthi:Yeah, yeah, no, I definitely want to provide my support, not just for the sake of merging it. I want to definitely see it through all the way. Let's hear from Zayn. He helped implement the extension just for this, so…
00:43:09
Zane Starr:Well, not just for that, but still. I mean…
00:43:13
Simsonraj Easvarasakthi:Yeah, no, no, sorry, the other way around.
00:43:16
Zane Starr:A general extensions framework, so…
00:43:19
Zane Starr:The way that, like, we see extensions is a way of communicating, like, docs is a way of communicating, like, downstream, all the different people that consume it. So, when you're talking about, well, like, no one's gonna really modify these docs, kind of, in a way.
00:43:36
Zane Starr:I think downstream consumers have a hard time consuming the docs currently. Just kind of the way, because of the structure, I think because of the versioning that you were talking about, and the fact that things are not, like, well bundled together, so it makes it really hard to test.
00:43:53
Zane Starr:And so, like, the way we saw the extensions is a way to allow people to, do things that would be useful for the spec before we actually make those, like.
00:44:05
Zane Starr:mainline and say, like, okay, this is definitively the way that everything's gonna be done, so we don't, like, break people, and we also allow for a lot of flexibility. So with the X error groups and X error codes, those are things that we had discussed for a long time, and then we said, okay, we're gonna make these, like.
00:44:23
Zane Starr:Official, so they're supported by docs, categories, and all that stuff.
00:44:28
Zane Starr:But, the main thing there is just, like,
00:44:33
Zane Starr:Like, from the spec check perspective, like, looking at the spec check code.
00:44:38
Zane Starr:There are a few things that are, like, not quite right about that. So, like, one is the JSON schema version that's supported is actually at odds with what's supported with OpenRPC itself. So the schema that's being validated is the wrong version.
00:44:53
Zane Starr:So, that means that, like, certain patterns that are available in, like, JSON 2020 are not available in JSON Draft 7.
00:45:02
Zane Starr:That's, like, something to contend with. The other thing is, is that we're actually changing the metaschema types. So before, we were a lot, like, looser with the typing, and so now we're a lot more tight.
00:45:13
Zane Starr:So that's, like, another thing. And then, when it came to, like, sort of the .io files, so you've been talking about, like, bundling that with the release, and the release and the .io files are kind of separate.
00:45:24
Zane Starr:But then it's also bundling the entire, like, sort of package, and sort of package infrastructure as well, so then you have to kind of use RPC TestGen.
00:45:33
Zane Starr:There are companies out there, like in Europe, that take the execution APIs, like, documentation, and then they use the OpenRPC TestGen, like, native, test coverage.
00:45:46
Zane Starr:Which then allows you to hit the RPC endpoints and then get back the responses, much like the .io file, but it uses the examples to then validate, so when a user is writing the doc.
00:46:01
Zane Starr:no matter, like, what it is that they're writing, it means that the validation for the doc goes through, the same OpenRPC, validations that's within the schema Utils.
00:46:12
Zane Starr:So, it all automatically, like, aligns that the responses that you're expecting to get back
00:46:19
Zane Starr:are the same, and then the other sort of thing about that is it allows you to hit your live endpoints with it. So, like, let's say that you had an Erigon client, or let's say the FlashBots RPC API, then when you're making requests, you're able to validate that your responses then match the thing that's within the test.
00:46:39
Zane Starr:And so, within the next, like, month, our team is actually scheduled to help, like, overhaul tests, so we would really actually like to meet with you, Felix. So that way we can figure out, like, what it is, the thing that you, like, sort of need, and, like, what would, like, work well.
00:47:01
Zane Starr:I'm not opposed to writing things in Golang to, like, make those things, like, mesh with the vision of that. It's actually what we proposed
00:47:09
Zane Starr:like, I don't know, 7 months ago? It's like, hey, do you want this in Goling, or what? So, that's… that's why I was saying that we should just meet with flight clients and, like, you together to just figure out, like, okay.
00:47:21
Zane Starr:what do you need OpenRPC to do and, like, sort of help you with? And then, like, how can we, like, sort of help make that happen? Because ultimately.
00:47:30
Felix (Geth):I mean, we don't really need anything right now, to be honest. Like, that's the thing, is, I mean, we have our own toolchain, I think we are pretty happy with it, to be honest. I don't think we have to change it. The main thing is, there are these examples in the spec,
00:47:43
Zane Starr:But I think examples and tests are not the same. Yeah, that's why we want to add X test, which would be parallel to examples, which would then allow you to do, like, the testing flow that I think that you would like.
00:47:57
Felix (Geth):Yeah, but the thing is that with these tests, it's not that easy. Like, we have built our own infrastructure precisely because it has some…
00:48:08
Felix (Geth):it… it… it has some requirements, and I mean, one of these requirements is that for the testing of the…
00:48:15
Felix (Geth):spec, you also need to make sure that you're running the test against a very specific chain. Like, you can't just, like, have an arbitrary example, because you will never be able to verify the result. And that's the whole… that's… and then also, in order to do your testing for certain methods, it's actually not possible to just directly compare the response.
00:48:33
Felix (Geth):And that's… that's, like, the whole other thing. Like, we have already kind of figured out, like, how to do our testing in a way that is, like, a good compromise, and I don't think that we really…
00:48:44
Felix (Geth):I don't think there's, like, too much that can be improved, with this. There is a separate project right now at the EF, trying to come up with, like, a performance-oriented testing method, but this is also fully unrelated, because again, for the performance testing, it has very different requirements from the conformance testing, which we are doing,
00:49:02
Felix (Geth):With these I.O. files.
00:49:05
Felix (Geth):And so, I mean, from my point of view, I think our setup is pretty good, and I don't really see how it would have to be changed.
00:49:12
Felix (Geth):Definitely, let's have that meeting, but…
00:49:16
Felix (Geth):Yeah, I mean, I'm coming from a position where I think, like.
00:49:19
Felix (Geth):we are pretty well covered. There are certain things that can be improved in these tools, like, for example, the spec check tool could be improved a little bit, or… I mean, we can always have more tests, and…
00:49:30
Felix (Geth):Like, expand the coverage of the existing tests, or we can…
00:49:35
Felix (Geth):Yeah, but I think, for example, bundling the tests into the spec is… I don't see it as the correct approach, to be honest, because the tests are very specific to, like, the setup that we are using also with the test chain and everything, so then it's kind of like, if you have these… like, the tests stand alone are kind of useless. They only really work
00:49:57
Zane Starr:PRLP, that you have the historical state, so that way you can reproduce that from the perspective of, like.
00:50:04
Zane Starr:Geth, right? So it's like, oh, here's the chain state, and you can't do anything without the chain state.
00:50:11
Felix (Geth):Yeah, I mean, for the current test, we have a definitive chain that we use, and all of the clients are loading that specific chain, and then we have test vectors that match this specific chain, yeah.
00:50:23
Felix (Geth):And, I mean, I'm pretty happy to go over it with you, like, how it actually, like, all works if you want, but I think we have a really good setup that works
00:50:32
Felix (Geth):really well. Like, in terms of how companies could use this to test their endpoints, like Infora, I'd be curious, like, I'm pretty sure they can just run the same setup that we have.
00:50:43
Felix (Geth):To test their own, like, software.
00:50:46
Felix (Geth):Because it's written in a way that is very,
00:50:51
Felix (Geth):it's… it is very reproducible, but yeah. I mean, I agree, it's… I mean, at some point, one of the things we're gonna add to the testing is just, like, a… basically, we're gonna move the library that is the, like, interpreter of these I.O. files, we're probably gonna move that into the…
00:51:06
Felix (Geth):into the Golang tools directory in the spec as well, so that people can just import it from there. And then it's like, if you write your tests in Go, you can basically also have the validation of the tests
00:51:17
Felix (Geth):Like, the way we do it in our… in our conformance testing, and…
00:51:21
Felix (Geth):I think that's some… that's gonna be another step that helps people if they wanna be a downstream consumer of our tests. They can… they can use this library or whatever, I don't know.
00:51:31
Felix (Geth):Like, that's how I see it.
00:51:33
Mercy Boma Naps-Nkari:So, I have a question. Wouldn't this, have an impact in Hive?
00:51:39
Felix (Geth):I mean, yeah, that's the thing, I mean, we have this… we have some… some… what I was talking about just now is that
00:51:46
Felix (Geth):code in Hive that interprets the tests and compares the results, and this is where, ultimately, the testing really happens. Like, the test gen is just the creator of the test, it doesn't actually verify anything. The actual verification is done when these tests are executed against the client.
00:52:02
Felix (Geth):And that code, like the code that actually runs it against the client and compares the result, we can make… we can move that back into the…
00:52:09
Felix (Geth):into the specification repository also, and… but it's still, like, ultimately, we're still going to be running the tests in Hive, and…
00:52:17
Felix (Geth):is… is not… we're not really gonna change our approach, I think, for the conformance testing. It's just that the… the tools right now are a bit spread over multiple things, and I mean, the first thing we did is we have moved the test generation into the spec repository with the RPT test gen, and basically.
00:52:36
Felix (Geth):the running of the test will remain in Hive, but we can definitely make it easier for
00:52:42
Felix (Geth):like, external projects to run the tests in a similar way by at least providing a library that kind of makes it easier, like, that's how I see it.
00:52:54
Mercy Boma Naps-Nkari:Okay, so, based on this, I don't know, are we still having discussion to further this, or do I need to open a trend so that we can have everything in a more compact form?
00:53:07
Felix (Geth):Sorry, I didn't catch the question, really. Can you, can you, can you…
00:53:10
Mercy Boma Naps-Nkari:No, I was asking Zane if he… because he was saying he wanted to talk to you on my client, so I was asking if it would make sense to open a train so that we would have, like,
00:53:22
Mercy Boma Naps-Nkari:a unified place we can reach consensus on this, or maybe a pointer.
00:53:30
Zane Starr:Where do you need to open a chain? Like, on… like, email? No, I was just… on GitHub?
00:53:36
Mercy Boma Naps-Nkari:No, like, on, on, yeah, on, what's it called? It's Magician, or the, Discord channel.
00:53:45
Zane Starr:Shh… Sure, I guess, which…
00:53:49
Mercy Boma Naps-Nkari:No, I was just trying to, like, so that we don't… if the discussion happens…
00:53:53
Mercy Boma Naps-Nkari:Yes, that's what, that's what…
00:53:56
Zane Starr:Yeah, I think we were scheduled to meet with light clients.
00:53:59
Zane Starr:Barely soon, probably?
00:54:02
Zane Starr:So… I think we can just, like, coordinate, like, just meeting, just to, like, get everything straight and, like…
00:54:13
Mercy Boma Naps-Nkari:I think I'll handle it.
00:54:13
Zane Starr:that, it's okay. Yeah.
00:54:16
Mercy Boma Naps-Nkari:Okay, okay. So, based on that, I think we are, like, 5 minutes…
00:54:21
Mercy Boma Naps-Nkari:extra time, and I wanted to actually walk, through something with Felix. I think I'll have to, like, create a trend for that also.
00:54:30
Mercy Boma Naps-Nkari:And I might target to it. There's some, like, open and stealth PRs and issues I would like to walk through with you, so that.
00:54:37
Felix (Geth):We'll be able to figure out…
00:54:40
Mercy Boma Naps-Nkari:Are you okay doing it now? I'm just looking at the time, we have, like, 5 minutes left.
00:54:46
Felix (Geth):It's okay, I mean, yeah, I mean, this is part of the agenda. We got a bit lost in the whole discussion, but I think it was also kind of necessary after the big update that we pushed to discuss this.
00:54:58
Felix (Geth):Because it affects the error code so much, that's why I think it was very helpful to talk it over.
00:55:05
Felix (Geth):Let's go through the… let's go through the… through the PRs.
00:55:13
Mercy Boma Naps-Nkari:some are here in this, other issue I opened.
00:55:27
Felix (Geth):So the… Stalled… are we talking about the stalled PRs, or are you talking about the…
00:55:33
Mercy Boma Naps-Nkari:Yeah, distort PRs.
00:55:39
Felix (Geth):Yeah, one second, I think it might be good if I share my screen for this, and then we can click through them.
00:55:47
Felix (Geth):One second… I just have to… Figure out my tabs here.
00:56:08
Felix (Geth):Okay Yeah, okay, so here is the… is the agenda.
00:56:18
Felix (Geth):First one… oh, sorry, maybe should open in tab.
00:56:24
Felix (Geth):Here, okay, so first one…
00:56:29
Felix (Geth):GraphQL test cases from Hive. I don't fully…
00:56:34
Felix (Geth):I mean, this is somewhat unrelated. This is about the GraphQL test. This PR is trying to basically make it so the GraphQL tests are also in line. The problem is that the GraphQL tests in general are very outdated, and
00:56:50
Felix (Geth):I think we can't really… We can basically only just close this.
00:57:00
Felix (Geth):the other problem is that the GraphQL API in general is a bit unmaintained right now. I mean, nobody is really looking into any issues there, and it kind of has some… it has the parallel tooling to the RPC, but we are not really actively… I mean, we maintain the endpoint and Geth, but…
00:57:19
Felix (Geth):I don't think anyone really uses it. So, I would say this thing, I mean, it was nice, but…
00:57:26
Felix (Geth):realistically, I think the next step for us is just to remove the GraphQL. I don't think we're really maintaining it.
00:57:35
Zane Starr:Were you able to get any stats on usage before? Just, like, a casual query on, GraphQL, on the endpoints, in code out there?
00:57:47
Felix (Geth):I mean, we do not… we don't have any telemetry in the client, so we cannot actually check if anyone's using it.
00:57:53
Zane Starr:So, I just meant on GitHub, like, so one of the approaches we took was to look back, over the last 3 years through commit messages for, whether or not someone was using the code, and it kind of gives you back a cursory stat that, like, oh, no one's at least made a PR, that many.
00:58:13
Felix (Geth):Yeah, I mean, we can check… we can definitely check if someone is using it, yeah.
00:58:19
Felix (Geth):But I just think it's pretty unlikely. So let's go to the next… like, this GraphQL thing, we have to figure out some other time. So, we can… from my point of view, we can also go, like, a couple minutes over, like, it's okay, because we have to go through these things.
00:58:36
Felix (Geth):So, next one is this default location.
00:58:46
Felix (Geth):this is… this is, again, very old. Someone is trying to… define the…
00:58:55
Felix (Geth):canonical location of the engine API. I think this chip has kind of sailed.
00:59:01
Felix (Geth):It's… this was supposed to be in the… Initial spec, but it…
00:59:09
Felix (Geth):never really happened, and I think now it's kind of like we would have to bring it up on…
00:59:15
Felix (Geth):ACD, I mean, it has come up on ACD a couple times before, But…
00:59:21
Felix (Geth):Nobody has really been in a position to say, yeah, we have to do this.
00:59:27
Felix (Geth):And I feel like the RPC standards is kind of the wrong forum to make this call, because ultimately this has to be implemented inside of the consensus layer clients, and inside of the execution clients, and it's not like an API change, it's just like a config change. So they have to… we have to bring it up on ACD again. I think that's the next step for this one.
00:59:48
Felix (Geth):Same with the next one about the secret, it's also just, like, an engine API config thing.
00:59:55
Felix (Geth):TX pool, standardization, Yeah.
01:00:05
Felix (Geth):So, this one would require us to go through the…
01:00:16
Felix (Geth):yeah, basically it just adds a bunch of methods. I think we have to figure out
01:00:22
Felix (Geth):This is something where we would have to…
01:00:25
Felix (Geth):create, like, an EIP, so this would be the next step for this one, because it has to be discussed in the same way that all the other new methods. It's basically adding new methods to the spec, and as far as I understand, these methods are not really implemented.
01:00:39
Felix (Geth):in any client. So, we would have to… Figure this out.
01:00:45
Felix (Geth):I'm not really seeing any…
01:00:49
Felix (Geth):too many comments. I mean, there's this guy, he's… I think he's in the Bisu client, but we would have to bring it up more formally to… to really,
01:01:01
Felix (Geth):Make a decision on that.
01:01:04
Felix (Geth):Yeah, we have to check the logs of the call to see how that went. Same with the receipt proof, it's also something…
01:01:13
Felix (Geth):Yeah, like, all of these PRs are just stuck because they are spec changes that have to go through the process, and they haven't really…
01:01:21
Felix (Geth):Gone through the process.
01:01:26
Felix (Geth):I don't really know what we can do to these PRs to make them unstuck. Basically, people… clients have to come on the call to discuss these… these methods and to come to a decision, and sometimes it works, sometimes it doesn't, that's how…
01:01:39
Mercy Boma Naps-Nkari:So, I have a question. So,
01:01:42
Mercy Boma Naps-Nkari:let's say I decide to, like, take this up to ACDE or ACDT, and I want.
01:01:50
Mercy Boma Naps-Nkari:then how do I, like,
01:01:53
Mercy Boma Naps-Nkari:continue the process. If… if by some miracle they decide to go with any… any of them, do I need to open a fresh PR, or do I need to tag the authors, of the PR? Because it's been long, and then I'm not sure how…
01:02:08
Mercy Boma Naps-Nkari:available they would be to continue the discussion or to continue the work, actually, in case of any PR changes or some light work on the PR itself.
01:02:18
Felix (Geth):So, the way I see it is that you have actually been really good at this process. If you occasionally come on ACD and propose one of these things, the main thing is, it's good to occasionally remind the clients that there are open proposals on the RPC, and if you…
01:02:35
Felix (Geth):put it just right, where you're like, hey, you know what, guys? I have this little proposal, can you just vote on it right now? Chances are, it works. We saw that last time.
01:02:44
Felix (Geth):With the, with the, with the thing where they added the…
01:02:48
Felix (Geth):What was it? It was the block timestamp?
01:02:51
Felix (Geth):I think we can go… we can see it here.
01:03:02
Felix (Geth):So, I would say this was a… This was a…
01:03:07
Felix (Geth):this is an example where this approach worked really well. So, basically, this was opened, someone put it on the… I mean, you put… you had it on the RPC standards, we discussed it a little bit. At some point, you mentioned it in the ACDE, and then more people came and gave their statement.
01:03:25
Felix (Geth):And then it was pretty clear at some point that, yeah, I mean, we can just merge this, because every client just gave their statement. And it's just, like, I think in this particular case, you did a really good job of just, like, pinging the clients once in ACDE, and that was enough to make everyone vote.
01:03:41
Felix (Geth):If we come with 10 proposals, they're not really gonna vote, but if we come with, like, let's say one proposal per ACDE, we're always gonna say, hey, you know what, guys? Here's a little proposal, just vote on that right now. And I think
01:03:52
Felix (Geth):That way, we can make progress through these proposals. At the same time.
01:03:58
Felix (Geth):I would say that it might also make sense to start fresh with these proposals and not try to revive the old PR, especially because all of these old PRs are somehow…
01:04:10
Felix (Geth):They… first of all, they require rebasing in some cases, but also, sometimes they are just…
01:04:17
Felix (Geth):Yeah, I mean, it's just like they have a lot of baggage, and if…
01:04:22
Felix (Geth):if someone comes to this PR, they will… they will be really confused, because this PR, for example, has, like, 10… it has, like, 20 comments on it. So, we're not really expecting people to read the comments. What we're expecting from the clients on ACD is to go to this page.
01:04:36
Felix (Geth):Check out the new spec, and say, oh yeah, that looks reasonable, we could implement that, and then give their vote.
01:04:42
Felix (Geth):So I think it makes sense for us to…
01:04:47
Felix (Geth):basically just recreate these PRs again, in a way where they can be applied, and then in this case, for example, also, they wouldn't really need these script changes anymore.
01:04:57
Felix (Geth):maybe, or, I don't know, we have to see how that all works out, but basically… and also, maybe we wouldn't add the tests right away, we would just add the methods and then come up with the tests later, so that way we would have a really small PR that they can just give a quick glance, and then we can get to a…
01:05:15
Felix (Geth):we can get to somewhere. And then for some things, if there are larger changes, we may even want to consider creating, like, an EIP. But I don't think it really makes sense to try and, like, ping these authors who…
01:05:28
Felix (Geth):Did something years ago, and to try to get them to
01:05:33
Felix (Geth):continue the work on that PR.
01:05:39
Mercy Boma Naps-Nkari:Okay, thank you. I'll try and, like, make a proper list, and then start introducing them one after the other.
01:05:46
Mercy Boma Naps-Nkari:perhaps, like, make fresh PRs for them, then I will start introducing them one after the other. But before then, when I do a PR, I'll tag it to it so that you can take a look then. For the next, ACDH, for that week, we'll kind of, like, I'll…
01:06:01
Mercy Boma Naps-Nkari:ask for… Clients' opinion on it.
01:06:04
Felix (Geth):Yeah, that's great. I think that way we will actually make some progress, and I mean, you can… when you recreate the PR, you can also just…
01:06:12
Felix (Geth):make a link to the old PR saying that basically this is a resubmission of these changes that were proposed earlier, so if people are interested, they can take a look, but I don't think people are really interested in digging through all of this old stuff. Like, this is…
01:06:26
Felix (Geth):Is… they are… basically don't really have the time for that, or not the capacity.
01:06:38
Mercy Boma Naps-Nkari:Oh, great. We made some progress over here, and I'm hoping by this we can reduce some PRs and then some issues also.
01:06:54
Mercy Boma Naps-Nkari:Hmm… I don't know if there's any other thing.
01:06:59
Mercy Boma Naps-Nkari:Because this is all I have for my end,
01:07:02
Mercy Boma Naps-Nkari:Adi Boyer and, Ahmad. I don't… this is, I think, my first time seeing you guys here.
01:07:09
Ahmad:knowing how Ethereum works. Yeah, so apologies on the camera front, can you guys hear me? Hello? Oh, oh, cool, cool, cool. Yeah, so, so I think it, it's not my first time, but I haven't really…
01:07:25
Ahmad:I've kind of just joined, like, a fly on the wall, on, like, maybe one or two other calls. But, anyway, just to introduce myself, my name is Ahmad, Wilson. I've been in this space for quite a bit, started mining, and validating, back in the day. I'm currently head of infrastructure at OTem Labs.
01:07:41
Ahmad:We're a Web3, company built on top of EIP7702, so account delegation. And so…
01:07:51
Ahmad:really into orchestrators, have worked, just, again, being in infrastructure, have dealt with a lot of, client, deployments, and, whether or not there are validator nodes, execution layer clients, clients across all the different types of EVMs, even Solana, Bitcoin.
01:08:08
Ahmad:So most of my experience, really, revolves around that. Let me turn this down, target you guys. I'm also hopping into the, protocol studies, like.
01:08:20
Ahmad:study group, cohort or so that's beginning today. So that's pretty sweet, there. But, but yeah, I'll wrap it up. Have… have been pretty, pretty committed.
01:08:32
Ahmad:To the, Ethereum ecosystem, for… for quite a bit, have worked within the system for… or within the space for quite a bit as well, and, am looking to hopefully become a regular to this call and contribute where I can. Just like with before, when we were talking about, the, the spec generation.
01:08:52
Ahmad:excuse me, the, the spec versioning, and then also the error, error, spec generation. Those are things right up my alley at, you know, that's kind of what you, you would think, like, CICD, DevOps, infrastructure, that's, those are things that we do. We have, we handle quite a bit for…
01:09:09
Ahmad:APIs for microservices, for example, or different types of services. So, so yeah, I'm looking forward to learning more, and, and work with you guys more. Hopefully you'll see me on…
01:09:21
Ahmad:on calls regularly, and, and then I'll quickly add, I posted in the chat, that I would be… I'm always up for, a walkthrough, so Felix, Zane, Mercy, Simpson, Raj, any of you guys,
01:09:38
Ahmad:if you're, if you're up for it, I, I'm super cool with just, like, sending you a DM or so to walk through, like, some of the more fundamental, like, at least starting with, like, the more fundamental, base, tools and processes, just so I can, you know, get more familiar.
01:09:54
Ahmad:But, but yeah, I'll definitely always appreciate it anytime that people would be willing to invest. But yeah, I'll wrap it up right there. Thanks, you guys.
01:10:02
Mercy Boma Naps-Nkari:Okay, thanks for the introduction, and it's a pleasure having you here, and also hoping for you to contribute more, and then…
01:10:09
Mercy Boma Naps-Nkari:Attend more calls with us, and…
01:10:13
Mercy Boma Naps-Nkari:So, I think that's for my end,
01:10:17
Mercy Boma Naps-Nkari:Are we calling it a wrap? Is there any other thing? Thank you, Felix, for, the pointers, and then for always being here.
01:10:30
Mercy Boma Naps-Nkari:Okay, I think that's all for today. See you guys next two weeks, probably. I'll make a list.
01:10:37
Mercy Boma Naps-Nkari:I'll do a course summary for what we discussed today, and then for the backlogs and for the versioning we talked about on the website issue, we highlighted as a blocker for this. And that's all from my end. Thank you guys for joining.
01:10:53
Mercy Boma Naps-Nkari:Have a nice evening.
01:10:55
Simsonraj Easvarasakthi:Thank you, Rod. Bye-bye.
01:10:58
Mercy Boma Naps-Nkari:Thanks. Thanks, Felix.

Chat Logs

00:01:34
Mercy Boma Naps-Nkari:https://github.com/ethereum/pm/issues/1943
00:02:05
Mercy Boma Naps-Nkari:https://hackmd.io/@bomanaps/rJiHuPFOZl
00:03:39
Felix (Geth):I can't hear any speaking anymore
00:03:44
Simsonraj Easvarasakthi:not sure if everyone can hear Boma
00:04:48
Mercy Boma Naps-Nkari:https://github.com/ethereum/execution-apis/pull/753
00:04:56
Mercy Boma Naps-Nkari:https://github.com/ethereum/execution-apis/pull/742
00:05:08
Mercy Boma Naps-Nkari:https://github.com/ethereum/execution-apis/pull/746
00:14:03
Felix (Geth):https://ethereum.github.io/execution-apis/
00:14:14
Zane Starr:https://ethereum.github.io/execution-apis/
00:16:19
Felix (Geth):https://docusaurus.io/docs/versioning
00:19:58
Zane Starr:https://github.com/ethereum/execution-apis/blob/main/.github/workflows/deploy.yaml
00:20:52
Zane Starr:https://github.com/ethereum/execution-apis/tree/main/docs-api/api
00:28:22
Mercy Boma Naps-Nkari:https://github.com/ethereum/execution-apis/issues/658
00:52:13
Ahmad:+1 I'd definitely be interested in walking through the tooling/processes sometime
00:55:15
Mercy Boma Naps-Nkari:https://github.com/ethereum/pm/issues/1914#issue-3902319995
00:55:27
Mercy Boma Naps-Nkari:https://github.com/ethereum/execution-apis/pull/470
00:55:34
Mercy Boma Naps-Nkari:https://github.com/ethereum/execution-apis/pull/297
00:55:46
Mercy Boma Naps-Nkari:https://github.com/ethereum/execution-apis/pull/302
00:55:58
Mercy Boma Naps-Nkari:https://github.com/ethereum/execution-apis/pull/353
00:56:06
Mercy Boma Naps-Nkari:https://github.com/ethereum/execution-apis/pull/372
00:56:13
Mercy Boma Naps-Nkari:https://github.com/ethereum/execution-apis/pull/445
00:56:39
Mercy Boma Naps-Nkari:https://github.com/ethereum/execution-apis/pull/331
00:56:55
Mercy Boma Naps-Nkari:https://github.com/ethereum/execution-apis/pull/302
00:57:29
Mercy Boma Naps-Nkari:https://github.com/ethereum/execution-apis/pull/331
00:58:05
Mercy Boma Naps-Nkari:https://github.com/ethereum/execution-apis/issues/118
01:10:36
Felix (Geth):I missed last call :(

Summary

13 highlights · 4 action itemsExperimental

versioning proposal

  • V1.0.0 versioning proposal covers 71 methods through Cancun fork00:02:13
  • GitHub release process can proceed; Felix will create V1 release00:06:05
  • Test runner will target released version instead of latest00:08:36
  • Block timestamp added to transaction object; tests need updating00:09:00
  • Documentation versioning requires GitHub Actions updates for version selector00:11:00

error code standardization

  • X-error-groups extension enables native validation without additional tooling00:31:41
  • Spec generation now uses Go tools; translation validates errors during build00:36:25
  • Error groups won't be embedded in final OpenRPC JSON; validation moves to build process00:39:27

testing infrastructure

  • Current conformance testing setup works well; tests tied to specific chain state00:48:45
  • I.O. file interpreter library may move to execution-apis repository for reuse00:51:06

stalled prs

  • GraphQL API considered unmaintained; removal being evaluated00:56:33
  • Old stalled PRs should be recreated fresh without baggage01:00:01
  • New proposals should be introduced one-per-ACDE for better voting success01:03:44

Decisions

  • Max use gas (PR #746) deferred from V1; not ready for initial release00:06:45
  • X-error-groups won't be embedded in published OpenRPC; validation at build time only00:39:09
  • GraphQL tests and potentially GraphQL API itself to be deprecated/removed00:56:57
  • Stalled PRs (tx pool, receipt proof, etc.) require EIP process; close old PRs01:02:35

Action Items

  • Felix: Update RPC tests to include block timestamp in transaction object00:09:00
  • Zane/Documentation team: Implement docs versioning with version selector in GitHub Actions00:11:43
  • Felix/EF team: Update Go toolchain to support error code validation during spec build00:32:30
  • Mercy: Recreate stalled PRs as fresh proposals; introduce one per ACDE call01:06:01

Targets

  • V1.0.0 release after test regressions fixed and client pass rates restored00:06:27