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

Increase txsize #550

Merged
merged 23 commits into from
Jun 28, 2024
Merged

Increase txsize #550

merged 23 commits into from
Jun 28, 2024

Commits on Jun 28, 2024

  1. p2p/enr: updates for discovery v4 compatibility (ethereum#16679)

    This applies spec changes from ethereum/EIPs#1049 and adds support for
    pluggable identity schemes.
    
    Some care has been taken to make the "v4" scheme standalone. It uses
    public APIs only and could be moved out of package enr at any time.
    
    A couple of minor changes were needed to make identity schemes work:
    
    - The sequence number is now updated in Set instead of when signing.
    - Record is now copy-safe, i.e. calling Set on a shallow copy doesn't
      modify the record it was copied from.
    fjl authored and wanwiset25 committed Jun 28, 2024
    Configuration menu
    Copy the full SHA
    c074646 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    e65b81a View commit details
    Browse the repository at this point in the history
  3. all: new p2p node representation (ethereum#17643)

    Package p2p/enode provides a generalized representation of p2p nodes
    which can contain arbitrary information in key/value pairs. It is also
    the new home for the node database. The "v4" identity scheme is also
    moved here from p2p/enr to remove the dependency on Ethereum crypto from
    that package.
    
    Record signature handling is changed significantly. The identity scheme
    registry is removed and acceptable schemes must be passed to any method
    that needs identity. This means records must now be validated explicitly
    after decoding.
    
    The enode API is designed to make signature handling easy and safe: most
    APIs around the codebase work with enode.Node, which is a wrapper around
    a valid record. Going from enr.Record to enode.Node requires a valid
    signature.
    
    * p2p/discover: port to p2p/enode
    
    This ports the discovery code to the new node representation in
    p2p/enode. The wire protocol is unchanged, this can be considered a
    refactoring change. The Kademlia table can now deal with nodes using an
    arbitrary identity scheme. This requires a few incompatible API changes:
    
      - Table.Lookup is not available anymore. It used to take a public key
        as argument because v4 protocol requires one. Its replacement is
        LookupRandom.
      - Table.Resolve takes *enode.Node instead of NodeID. This is also for
        v4 protocol compatibility because nodes cannot be looked up by ID
        alone.
      - Types Node and NodeID are gone. Further commits in the series will be
        fixes all over the the codebase to deal with those removals.
    
    * p2p: port to p2p/enode and discovery changes
    
    This adapts package p2p to the changes in p2p/discover. All uses of
    discover.Node and discover.NodeID are replaced by their equivalents from
    p2p/enode.
    
    New API is added to retrieve the enode.Node instance of a peer. The
    behavior of Server.Self with discovery disabled is improved. It now
    tries much harder to report a working IP address, falling back to
    127.0.0.1 if no suitable address can be determined through other means.
    These changes were needed for tests of other packages later in the
    series.
    
    * p2p/simulations, p2p/testing: port to p2p/enode
    
    No surprises here, mostly replacements of discover.Node, discover.NodeID
    with their new equivalents. The 'interesting' API changes are:
    
     - testing.ProtocolSession tracks complete nodes, not just their IDs.
     - adapters.NodeConfig has a new method to create a complete node.
    
    These changes were needed to make swarm tests work.
    
    Note that the NodeID change makes the code incompatible with old
    simulation snapshots.
    
    * whisper/whisperv5, whisper/whisperv6: port to p2p/enode
    
    This port was easy because whisper uses []byte for node IDs and
    URL strings in the API.
    
    * eth: port to p2p/enode
    
    Again, easy to port because eth uses strings for node IDs and doesn't
    care about node information in any way.
    
    * les: port to p2p/enode
    
    Apart from replacing discover.NodeID with enode.ID, most changes are in
    the server pool code. It now deals with complete nodes instead
    of (Pubkey, IP, Port) triples. The database format is unchanged for now,
    but we should probably change it to use the node database later.
    
    * node: port to p2p/enode
    
    This change simply replaces discover.Node and discover.NodeID with their
    new equivalents.
    
    * swarm/network: port to p2p/enode
    
    Swarm has its own node address representation, BzzAddr, containing both
    an overlay address (the hash of a secp256k1 public key) and an underlay
    address (enode:// URL).
    
    There are no changes to the BzzAddr format in this commit, but certain
    operations such as creating a BzzAddr from a node ID are now impossible
    because node IDs aren't public keys anymore.
    
    Most swarm-related changes in the series remove uses of
    NewAddrFromNodeID, replacing it with NewAddr which takes a complete node
    as argument. ToOverlayAddr is removed because we can just use the node
    ID directly.
    fjl authored and wanwiset25 committed Jun 28, 2024
    Configuration menu
    Copy the full SHA
    1bdf536 View commit details
    Browse the repository at this point in the history
  4. fix

    wanwiset25 committed Jun 28, 2024
    Configuration menu
    Copy the full SHA
    c72aabb View commit details
    Browse the repository at this point in the history
  5. p2p, p2p/discover: add signed ENR generation (ethereum#17753)

    This PR adds enode.LocalNode and integrates it into the p2p
    subsystem. This new object is the keeper of the local node
    record. For now, a new version of the record is produced every
    time the client restarts. We'll make it smarter to avoid that in
    the future.
    
    There are a couple of other changes in this commit: discovery now
    waits for all of its goroutines at shutdown and the p2p server
    now closes the node database after discovery has shut down. This
    fixes a leveldb crash in tests. p2p server startup is faster
    because it doesn't need to wait for the external IP query
    anymore.
    fjl authored and wanwiset25 committed Jun 28, 2024
    Configuration menu
    Copy the full SHA
    3ca7a7c View commit details
    Browse the repository at this point in the history
  6. core/forkid: implement the forkid EIP, announce via ENR (ethereum#19738)

    * eth: chain config (genesis + fork) ENR entry
    
    * core/forkid, eth: protocol independent fork ID, update to CRC32 spec
    
    * core/forkid, eth: make forkid a struct, next uint64, enr struct, RLP
    
    * core/forkid: change forkhash rlp encoding from int to [4]byte
    
    * eth: fixup eth entry a bit and update it every block
    
    * eth: fix lint
    
    * eth: fix crash in ethclient tests
    karalabe authored and wanwiset25 committed Jun 28, 2024
    Configuration menu
    Copy the full SHA
    8e998ec View commit details
    Browse the repository at this point in the history
  7. core/forkid: fix off-by-one bug (ethereum#22879)

    * forkid: added failing test
    
    * forkid: fixed off-by-one bug
    sjb933 authored and wanwiset25 committed Jun 28, 2024
    Configuration menu
    Copy the full SHA
    4707d1c View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    ae52ca6 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    93b2a23 View commit details
    Browse the repository at this point in the history
  10. Configuration menu
    Copy the full SHA
    3f87990 View commit details
    Browse the repository at this point in the history
  11. eth, les: add sanity checks for unbounded block fields (ethereum#19573)

    This PR adds some hardening in the lower levels of the protocol stack, to bail early on invalid data. Primarily, attacks that this PR protects against are on the "annoyance"-level, which would otherwise write a couple of megabytes of data into the log output, which is a bit resource intensive.
    holiman authored and wanwiset25 committed Jun 28, 2024
    Configuration menu
    Copy the full SHA
    8f4a269 View commit details
    Browse the repository at this point in the history
  12. Configuration menu
    Copy the full SHA
    1204fa9 View commit details
    Browse the repository at this point in the history
  13. Configuration menu
    Copy the full SHA
    41fa412 View commit details
    Browse the repository at this point in the history
  14. Configuration menu
    Copy the full SHA
    1b78153 View commit details
    Browse the repository at this point in the history
  15. Configuration menu
    Copy the full SHA
    9e04fd8 View commit details
    Browse the repository at this point in the history
  16. fix tests

    wanwiset25 committed Jun 28, 2024
    Configuration menu
    Copy the full SHA
    c9ee324 View commit details
    Browse the repository at this point in the history
  17. add p2p logging

    wanwiset25 committed Jun 28, 2024
    Configuration menu
    Copy the full SHA
    da42d75 View commit details
    Browse the repository at this point in the history
  18. Configuration menu
    Copy the full SHA
    57b11ab View commit details
    Browse the repository at this point in the history
  19. Configuration menu
    Copy the full SHA
    ebb9a63 View commit details
    Browse the repository at this point in the history
  20. Configuration menu
    Copy the full SHA
    b5c7bd5 View commit details
    Browse the repository at this point in the history
  21. Configuration menu
    Copy the full SHA
    829ca9f View commit details
    Browse the repository at this point in the history
  22. fix tests

    wanwiset25 committed Jun 28, 2024
    Configuration menu
    Copy the full SHA
    4be4f2e View commit details
    Browse the repository at this point in the history
  23. add explanation

    wanwiset25 committed Jun 28, 2024
    Configuration menu
    Copy the full SHA
    82f2f63 View commit details
    Browse the repository at this point in the history