flow-go icon indicating copy to clipboard operation
flow-go copied to clipboard

Provide read-only access from the Access nodes during a spork

Open vishalchangrani opened this issue 2 years ago • 1 comments

Problem Definition

What problem is this solving?

Currently, during a spork, the Flow access nodes are turned off to prevent users from submitting any new transactions. After the spork is complete, the access nodes on the new network and the old are turned back on. However, many applications for example Instagram, only needs read access to the network and should be able to read chain data during the spork.

Proposed Solution

What are the proposed solutions to this problem? During the spork, all the read-based APIs are served (e.g. GetBlock, GetCollection etc) and only the SendTransaction API is disallowed.

Definition of Done

What tests must pass for this issue to be considered solved? All except for the SendTransaction API is up during a spork.

Actions Needed Before Submitting

Update ticket status using the following (remove this section once ticket created)

  • What workstream does this ticket deal with? Find the appropriate 'S-' label and add that label.
  • Is it a specific 'type' of ticket (ex: bug, documentation)? If yes, add that label as well.
  • Is this ticket related to an overarching theme (ex: architecture, performance)? If yes, add that label as well.
  • Add any/all descriptive characteristic labels needed (ex: Needs Estimation, Needs Test Cases).
  • Now we should determine what release this ticket is associated with. If none, leave it blank. If it is associated with a specific release, please add it to the appropriate release.
  • If this ticket is associated with a release, we want to assign it a level of importance within that release. These labels follow the standard MoSCoW method rules. We want to look at releases and then the importance of tickets within those specific releases. So the MoSCoW label is ONLY valid when it is taken in conjunction with its release.
  • Assign this ticket a priority level (High, Medium, Low) via the appropriate label. These labels control the importance of the ticket within the sprint. For example, all P-High tickets should be worked on first, then P-Medium, then P-Low. This gives us an easy way to identify the order of priority for tickets within a specific sprint.

vishalchangrani avatar Sep 15 '22 18:09 vishalchangrani

This would also be useful in the context of a network halt. Often the ANs are disabled to prevent new transaction submissions and load on ENs. It would be great to have the option of

  1. Read-only (disable sending transactions)
  2. Local-only (disable sending transactions and requests proxied to ENs)

peterargue avatar Sep 19 '22 17:09 peterargue

Now that archive nodes are available (https://flow.com/post/flow-blockchain-node-operation-archive-node), is this possible to have for the next spork?

aishairzay avatar Dec 07 '22 21:12 aishairzay

QN confirmed they can do for the public access nodes using their middleware. The have the capability to shutdown the SendTransaction API while allowing traffic for the other APIs.

vishalchangrani avatar Sep 21 '23 23:09 vishalchangrani

given quicknode has a solution for the public nodes, I'm going to close this

peterargue avatar Mar 26 '24 18:03 peterargue