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

node: lean archival mode #5615

Closed
2 of 4 tasks
tac0turtle opened this issue Nov 4, 2020 · 5 comments
Closed
2 of 4 tasks

node: lean archival mode #5615

tac0turtle opened this issue Nov 4, 2020 · 5 comments
Labels
C:light Component: Light C:state Component: State C:sync Component: Fast Sync, State Sync S:proposal Status: Proposal stale for use by stalebot

Comments

@tac0turtle
Copy link
Contributor

tac0turtle commented Nov 4, 2020

Summary

In Tendermint there are various types of nodes: Validator, full node, seed node. Full nodes can mean a few things because blocks can be pruned. While these nodes are useful there is a use case for a full archival node that is minimal in reactors. This will become useful when data retrievability becomes a more apparent issue.

Problem Definition

This is not a problem that needs solving but IMO provides usability improvements.

Proposal

Define an archival node mode. This mode will only run the blockchain reactor, light client and a simplified rpc. There will be no application (ABCI) so verification of incoming data will have to be through the light client.

Node operators would still be able to query and submit transactions directly to the application via the Light Client.

Untitled Diagram-1

This node could be its own separate repo not by us, but as we move things to internal, the implementation will begin copy pastaing internalized pkgs.


For Admin Use

  • Not duplicate issue
  • Appropriate labels applied
  • Appropriate contributors tagged
  • Contributor assigned/self-assigned
@tac0turtle tac0turtle added C:light Component: Light C:state Component: State C:sync Component: Fast Sync, State Sync S:proposal Status: Proposal labels Nov 4, 2020
@alexanderbez
Copy link
Contributor

Seems odd that we call it a full archival node, yet it relies on a light client, or are you proposing we remove the "full" nomenclature from this mode?

@tac0turtle
Copy link
Contributor Author

tac0turtle commented Nov 4, 2020

are you proposing we remove the "full" nomenclature from this mode?

Yes, it would not be a full node.

case for a full archival node that is minimal in reactors

I see the confusion in this sentence now. I meant full as in full state of the chain. A different name would be needed.

@cmwaters
Copy link
Contributor

cmwaters commented Nov 9, 2020

I'm generally in support of this. It seems to make sense with the introduction of state sync and block pruning where we are likely to see only a few archival nodes that keep full history whilst most nodes only keep the last x amount of blocks.

The blockchain reactor currently already has it's own form of verification (and could be possibly adopting the light client form of verification), so is having a light client really necessary?

A few other questions I have:

  • Would the Blockstore RPC support the same endpoints as a full node?
  • Would we want archival nodes to be recognised distinctly from other nodes (so other peers know specifically which peeers to add to their address book for syncing)

As a final side question: does Tendermint want to have any checks in place to avoid the scenario where the last full node with complete history from genesis prunes all it's history essentially severing the gap between genesis and the current height resulting in no new nodes being able of join the network

@tac0turtle
Copy link
Contributor Author

The blockchain reactor currently already has it's own form of verification (and could be possibly adopting the light client form of verification), so is having a light client really necessary?

It could use the current form of verification but if the blockchain reactor moves to light client verification it would make sense to go with that instead of having another reactor.

Would the Blockstore RPC support the same endpoints as a full node?

Yes, the ideal situation would be the same block related endpoints so integrators could switch between nodes easily.

Would we want archival nodes to be recognised distinctly from other nodes (so other peers know specifically which peeers to add to their address book for syncing)

This is the long term goal, but we currently do not support service discovery, since this node is running with lower consumption we could increase the total inbound and outbound peers. This node will only expose the blockchain reactor channel so other nodes will know what it offers.

does Tendermint want to have any checks in place to avoid the scenario where the last full node with complete history from genesis prunes all it's history essentially severing the gap between genesis and the current height resulting in no new nodes being able of join the network

This goes into data retrievability (#7897). I have put some thought into this but it is too early to design things, IMO.

@cmwaters cmwaters mentioned this issue Nov 10, 2020
4 tasks
@tessr tessr added this to Untriaged in Tendermint Core Project Board via automation Nov 13, 2020
@chengzhinei
Copy link

chengzhinei commented Aug 20, 2021

@marbar3778

There will be no application (ABCI) so verification of incoming data will have to be through the light client.

I have a question, how can we get the application state while having no ABCI? My understanding is that we get the state through DeliverTx.
Or, the BlockStore only store the block without the state?

@github-actions github-actions bot added the stale for use by stalebot label Aug 5, 2023
@github-actions github-actions bot closed this as not planned Won't fix, can't repro, duplicate, stale Aug 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C:light Component: Light C:state Component: State C:sync Component: Fast Sync, State Sync S:proposal Status: Proposal stale for use by stalebot
Projects
No open projects
Development

No branches or pull requests

4 participants