Skip to content

[Execution] Add methods to allow simulating transactions against local execution state on edge nodes #4588

Open

Description

Problem Definition

Currently, archive nodes have some functionality that allows them to execute scripts against a local datastore:
Archive Code:
https://github.com/onflow/flow-archive/blob/a3113fce4d808b59b18841307259e234265ddc96/service/invoker/invoker.go

Supporting Execution Code:
https://github.com/onflow/flow-go/blob/master/engine/execution/computation/query/executor.go

At some point in the future, this will likely be integrated into Access nodes, allowing local script execution. One other common feature for "full nodes", is the ability to simulate a transaction at a particular block. In ethereum's RPC, it's the call method.

The goal is to allow a user to simulate a transaction at a specific block height. The call should return the same results as if the transaction was executed at that height, except no state changes are made.

Proposed Solution

Add new methods/interfaces to support simulating transactions in a similar way to how it's done for script execution.

Definition of Done

There are new methods that allow Access and Observer nodes that have a local copy of execution state can simulate transactions against a specific block height.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    ExecutionCadence Execution TeamPreserveStale Bot repellent

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions