Skip to content

devnet-SDK: decouple Chain and Node interfaces #14616

@protolambda

Description

@protolambda

For both L1 nodes and L2 nodes, decouple the idea of a "chain" and a "node".

A chain should:

  • have a way to access configuration
  • have a way to access deployment info
  • have a way to access nodes by name (and per type, e.g. getting an EL node, or getting a rollup-node)

An (EL) node should:

  • provide high level interface, to interact with all common RPC client bindings, without leaking the client binding to the test itself.
    • direct RPC access in a test is bad, it's not DSL, it makes it harder to maintain and apply shared behaviors too.

Similarly, an interface for a rollup-node, around the rollup-client RPC bindings, is useful to have.
Start really minimal, interfaces and composition is important. We can expand the interfaces later.
E.g. the sync-status RPC.

Over time, preventing boilerplate in tests is important. E.g. an interface can provide "wait for unsafe head change", instead of making it poll the sync-status manually.

Also see ticket for expanding the EL op-service client bindings.

Metadata

Metadata

Assignees

Labels

A-devnet-sdkArea: devnet-sdkA-integrationArea: integration testsH-interopHardfork: change planned for interop upgrade

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions