You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Currently to provide distributed public json-rpc service, one need to run multiple full nodes, each node sync the chain directly.
With the help of recent new features, it's possible to replicate the chain state directly and setup cheaper distributed query service.
cosmos-sdk already support state streaming1, but there's only a file based implementation builtin.
cosmos-sdk already support --grpc-only mode.
we are implementing another streaming service which save the historical states in a db2, and eventually will use this db to support the grpc query server.
We just need one more piece to complete the puzzle: replicate the state stream across multiple processes.
Implementation ideas:
based on the builtin file streamer
do we need to keep the abci begin/end headers?
do we keep the insertion order, or merge the writes? The insertion order enables consumer to reconstruct the iavl tree.
one file per block which is easier for client to sync?
Is millions of files under single directory is too much? could separate directories based on parts of digits in block number.
open a http server to serve these files.
start client node in --grpc-only mode, and sync the stream files in the order of block numbers, feed them to the version db2.
grpc service alone is not very interesting in the context of cronos, json-rpc is more important, for json-rpc service to work, we also need to sync the tendermint dbs(mainly the raw blocks and tx execution results).
Currently to provide distributed public json-rpc service, one need to run multiple full nodes, each node sync the chain directly.
With the help of recent new features, it's possible to replicate the chain state directly and setup cheaper distributed query service.
--grpc-only
mode.We just need one more piece to complete the puzzle: replicate the state stream across multiple processes.
Implementation ideas:
--grpc-only
mode, and sync the stream files in the order of block numbers, feed them to the version db2.Future Works
grpc service alone is not very interesting in the context of cronos, json-rpc is more important, for json-rpc service to work, we also need to sync the tendermint dbs(mainly the raw blocks and tx execution results).
Footnotes
https://docs.cosmos.network/master/architecture/adr-038-state-listening.html ↩
Problem: there's no compact historical state storage #704 ↩ ↩2
The text was updated successfully, but these errors were encountered: