Skip to content

Feedback from using op-rbuilder to build the credible layer #212

@makemake-kbo

Description

@makemake-kbo

hey! we're using op-rbuilder to build the credible layer block builder, using a fork of op-rbuilder. I summarized our experience using it below. Thanks for building such a solid foundation!

Enhanced Documentation

The documentation that exists is good! Some things like how testing works, how builders are structured and why they're structured the way they are only become clear after diving into the code. An architecture doc would help as both a reference and for those diving into the code for the first time.

Easier Implementation of New Builders

Creating a new builder is relatively straightforward when using the standard and flashblocks builders as reference. I did run into friction when having to satisfy trait bounds for both the service and payload builder.

For an SDK solution, I would suggest a template builder approach where you implement traits for ordering and execution. For example, if I wanted to build a new builder that modifies the EVM execution loop, I would have to implement a builder that implements execute_best_transactions and ideally only have to worry about satisfying the trait fn signature for execute_best_transactions.

In the example above, it would likely require the execute_best_transactions signature to be changed, but IMO architecting it so that we just have to implement &self-less functions would provide good UX for an SDK.

Local Development

Something like a script to send transactions while running the builder locally would be very useful for development, debugging and monitoring. Contender can be used for this but the friction to instantiate it is too much for a quick test. Builder playground is a fine tool for local testing, but does not work on Linux.

The testing framework is spectacular and incredibly useful for verifying core functionality(especially so because it automatically impls test for additional builders), but it doesn't work if you want to observe the builder for a while.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions