-
Notifications
You must be signed in to change notification settings - Fork 375
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
Block data synchronization and full node operation on test3 #863
Comments
https://github.com/gnolang/gno/blob/408fc68d4b3c189dbc6a608c590a86c661ae232a/gno.land/cmd/gnoland/main.go#LL138C1-L138C1 -> |
We can set empty blocks to true. then blocks will come at regular intervals. The solution to poll vs push is to use websockets and to implement what is already in TM1 but not TM2, would be TM2/rpc/core/events.go, where Subscribe is implemented. Subscribe would not be available as an HTTP rest API, only as a websocket request. See also TM1/rpc/core/routes.go which tells the TM1 RPC system that Subscribe isn't available as an HTTP rest API (rpc.NewWSRPCFunc vs rpc.NewRPCFunc). Basically we should port TM2/rpc/core/events.go but without using the query system. A good first step would be to just not have the query argument at all, and to subscribe to ALL TM events. Then we can discuss what types of TM events you need to listen to, and we can just filter on those message types. |
Tested the current sync process with Decreasing If a new transaction occurs within 5 seconds, a new block is created immediately (which means it moves up BlockInterval time). Is this intended? If it is intended, what is the purpose of doing this? Wouldn't it be better to create blocks regularly regardless of new transactions? What do you think? TestingTesting Option 1.
Testing Option 2.
Testing Option 3.
Testing Option 4.
|
Try increasing TimeoutCommit. from tm2/pkg/bft/consensus/config/config.go:
These comments could be duplicated above ConsensusConfig for better documentation. BTW if TimeoutCommit is too low, then validators may appear as if they are offline if they are on the edge of the gossip network, or otherwise somehow slower to catch up or broadcast votes. The cosmos hub (gaia) uses the presence of validators in the Commit (which is +2/3 of precommit votes) to determine the liveness of validators. Not a problem for you if you want a large TimeoutCommit though. Please reassign if this doesn't work or there are other questions. |
Big thanks for your comment! I (think) have resolved issue in #969. Please take a look |
Description
I want to share Onbloc's experience of synching block data and running a full node on testnet3 for our infra tools such as Adena and Gnoscan. I hope our early experience contributes to this issue and improves the block sync & full node operation experience for other Gnoland infra teams in the future.
cc @moul @zivkovicmilos @albttx @r3v4s
How we sync the block data and run a full node on test3
1-1. if no block has been generated, wait another 15 seconds and execute (1.)
1-2. if there is a generated block, execute (2.)
Use a slightly modified
tm2txport
binary to parse information about the latest block2-1. Parse block information
2-2. Parse transaction information
Bundle the block information & transaction information and store it in ES (Elastic Search)
3-1. If there is a transaction, it adds a temporary hash value (block height_transaction index) and saves it
3-2. If there’s no transaction, no hash value
4-1. Each type and function requires slightly different data for Gnoscan, so we are saving them individually.
Why we had to do it this way?
ascii
range, making it nearly impossible to parseMain problems
Suggestions for solving problems
gnoland
binary to add logic to intervene in the block generation process and save it to the DBRelated with gnolang/hackerspace#9
The text was updated successfully, but these errors were encountered: