Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ethereum Core Devs Meeting 120 Agenda #370

Closed
timbeiko opened this issue Aug 6, 2021 · 17 comments
Closed

Ethereum Core Devs Meeting 120 Agenda #370

timbeiko opened this issue Aug 6, 2021 · 17 comments

Comments

@timbeiko
Copy link
Collaborator

timbeiko commented Aug 6, 2021

Meeting Info

Agenda

@lightclient
Copy link
Member

Can we come to consensus on EIP-2681 vs. EIP-3338 (limiting account nonce)?

@MicahZoltu
Copy link

Re: 2681/3338:
2^64-1 is a natural bound for 64-bit integer systems (not JavaScript).
2^52 is a natural bound for 64-bit floating point systems (JavaScript).

Neither are realistically reachable by anyone. Making one of these assertions just makes it easier to reason about the system and for new client developers and integrators to choose appropriate types for this field when working with it internally.

@poojaranjan
Copy link
Contributor

Because (EIP-2681 vs. EIP-3338) may not be added to the network upgrade, I would appreciate a discussion (followed by documentation in EIP-1?) on the process to move Core proposals like this for the future reference.

@alita-moore
Copy link
Contributor

alita-moore commented Aug 19, 2021

The JSON RPC work is coming to a head. We need many reviews (at least one per endpoint) for all 5 clients. @DockBoss has created pull requests in the execution-apis repo with the edgecases pertaining to several endpoints with more to follow. In order to maximize throughput it would be good to get someone from every client who can be very responsive to review / comment on edgecases over the next month or so.

I spoke with Tomasz about this and he recommended I bring it up here. Can we put this on the agenda?

@timbeiko
Copy link
Collaborator Author

@alita-moore sure 👍 Is there somewhere to point people to?

@alita-moore
Copy link
Contributor

@alita-moore sure 👍 Is there somewhere to point people to?

I can create an issue and collect the relevant PRs into there if it would help.

@timbeiko
Copy link
Collaborator Author

That would be great, @alita-moore 😄

@shemnon
Copy link
Contributor

shemnon commented Aug 19, 2021

Can we also add eip-1352 (reserve 0x0->0xffff for precompile and system contracts) to the discussion since we are talking about nonce limits too? The actual technical impact now is the cold/warm gas charge. Nethermind and Besu both had consensus bugs in the ephemeral testnets related to counting precompiles wrong for Berlin and this would limit the impact going forward.

I'll actually call in for this.

@timbeiko
Copy link
Collaborator Author

Sure @shemnon 👍

@alita-moore
Copy link
Contributor

@timbeiko here is the issue with the relevant links ethereum/execution-apis#56

@timbeiko
Copy link
Collaborator Author

Last minute addition to the agenda, but I've spoken with client teams over the past two weeks, and here's a summary of their thoughts on how London went, and what their priorities are for the next ~6 months: https://hackmd.io/@timbeiko/london-retro

@axic
Copy link
Member

axic commented Aug 20, 2021

Re: 2681/3338:
2^64-1 is a natural bound for 64-bit integer systems (not JavaScript).
2^52 is a natural bound for 64-bit floating point systems (JavaScript).

To put this into perspective all this originates from EIP-1985 where we wanted to put upper bounds to a lot of fields. 2681 was the first item split out as an experiment to see how long it takes to finalise it. The proposed 64-bit limited is already enforced by geth, so no code change is needed. @MicahZoltu raised that limiting it for floating points would help JavaScript tools, but also require an actual code change to clients.

One could argue that for nonce this can make sense, as many of the transaction are generated by JavaScript-based systems. One must note however that JavaScript has native bigint support for a while now.

An argument against this is that where do we stop? There are many other fields which are 64-bit today in "Eth1" and should we keep JavaScript in mind for all of these? What about beacon chain related fields?

Because (EIP-2681 vs. EIP-3338) may not be added to the network upgrade, I would appreciate a discussion (followed by documentation in EIP-1?) on the process to move Core proposals like this for the future reference.

The next step for this particular EIP would be creating a consensus test, where an account is preset to an artificially high nonce. We can agree this is not going to happen on mainnet, but having a test would ensure that every client complies.

@vorot93
Copy link

vorot93 commented Aug 20, 2021

TL;DR Should we bend over for JavaScript special needs?

I think not.

@holgerd77
Copy link

We have everything in Buffer or BN.js (big number helper library), so I guess we are ok with going for 2^64 - also regarding that native BigInt is very much around the corner.

@holiman
Copy link

holiman commented Aug 20, 2021

I'm OK with just officially saying nonce is a uint64.

IMO js implementors can choose to use a limit of 2^52, regardless of what we 'officially' decide.

@axic
Copy link
Member

axic commented Aug 20, 2021

Pushed the change here: ethereum/EIPs#3750

@timbeiko
Copy link
Collaborator Author

Closed in favor of #379

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants