-
Notifications
You must be signed in to change notification settings - Fork 1
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
[QoS][REST][CometBFT] Introduce CometQoS: Quality-of-Service for CometBFT & The Interchain #149
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great PR, thank you.
Only a few blockers, mostly re TODOs.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Have addressed all review comments. PTAL and take special note of the change to support both JSON-RPC and REST-like requests in CometBFT QoS.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@commoddity PTAL at my review in #155
Approved. Feel free to merge. |
Review of #149 Some notes: - No real structural changes; just naming, nits, comments, etc... - I tried to wrap my head around the whole thing and went too deep and out of scope - Approach is good, but not amazing. We are setting the foundation for non-technical additions thought - I understand the need for a refactor now - We can likely use CometBFT as the "starting point" for the refactor, but it'll also require farther cleanup, even with this PR Suggested next steps; 1. Review this PR 2. Merge it into #149 assuming it looks good 3. Add some makefile helpers in #149 specific to CometBFT 4. Merge the whole thing into main 5. Kickoff the refactor
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's get this in and keep iterating!
Please make sure the E2E tests in CI pass befor emerging though.
7e3a6e8
to
1c4948a
Compare
Summary
Adds a CometBFT QoS implementation.
Spec Reference: https://docs.cometbft.com/v0.38/rpc
QoS Checks
/health
- Simple node heartbeat. Returns empty response if node healthy or error response if node unhealthy./status
- Returns status including node info, pubkey, latest block hash, app hash, block height and time. Only used to get latest block height.Screenshots
The following screenshots show PATH functioning for
cometbft
on Shannon aftercometbft
service added with Supplier backend URL set to https://rpc.cosmos.directory/cosmoshub1.
![Screenshot 2025-01-24 at 19 26 33](https://private-user-images.githubusercontent.com/47662958/406567184-7a8ab462-0b01-41c2-a716-00cf0f09ab02.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNTExNzQsIm5iZiI6MTczOTA1MDg3NCwicGF0aCI6Ii80NzY2Mjk1OC80MDY1NjcxODQtN2E4YWI0NjItMGIwMS00MWMyLWE3MTYtMDBjZjBmMDlhYjAyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDIxNDExNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQyMThmYjgxMDc3ZGRkYTc5ZGE1OTU4OTU0ZjVlOTZmMmM1MTJjMWEzM2FhMTc5ZjhmOWIwZThlZTQ0NWVlODAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.HNmcNyUeSvRBOh-HTJe74TRFSnTjUM4DQktqftanBDg)
/health
Request2.
![Screenshot 2025-01-24 at 19 26 50](https://private-user-images.githubusercontent.com/47662958/406567338-befd23e4-a5e5-49cc-af31-83dd35ac43df.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNTExNzQsIm5iZiI6MTczOTA1MDg3NCwicGF0aCI6Ii80NzY2Mjk1OC80MDY1NjczMzgtYmVmZDIzZTQtYTVlNS00OWNjLWFmMzEtODNkZDM1YWM0M2RmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDIxNDExNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZmZDVlZjEzYjI4ZDNjNjRlNmI0Nzg3NDZkZDYyMTFjMTMxMTYwYjg5NTk2MTgzMWFiNDRjZWU1ZTEyYjMwYzQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.RiEsjHiOISUPjP5h5B5C-kkxgfG88E9k8BZom7WmQEc)
/status
Request3.
![Screenshot 2025-01-24 at 19 27 07](https://private-user-images.githubusercontent.com/47662958/406567370-6e3bf268-4af5-49a0-ae54-64ef77643b97.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNTExNzQsIm5iZiI6MTczOTA1MDg3NCwicGF0aCI6Ii80NzY2Mjk1OC80MDY1NjczNzAtNmUzYmYyNjgtNGFmNS00OWEwLWFlNTQtNjRlZjc3NjQzYjk3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDIxNDExNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQxNTRjNGExODJmNTM4ZjBjYWQ0Mzk1YjZhYmIwNGU2ODcxOTk2MGNiZmFmMmVmODBkY2MxNDcwNjI3YzQyYzkmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.rdrly-NFS-qSM30KhqUi7ez8uEHJUrP4q4KRYOPkrqk)
header?height=24106587
Request4.
![Screenshot 2025-01-24 at 19 44 32](https://private-user-images.githubusercontent.com/47662958/406567587-120a1b9e-96e1-463e-a2dd-d299e4ff59ce.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNTExNzQsIm5iZiI6MTczOTA1MDg3NCwicGF0aCI6Ii80NzY2Mjk1OC80MDY1Njc1ODctMTIwYTFiOWUtOTZlMS00NjNlLWEyZGQtZDI5OWU0ZmY1OWNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDIxNDExNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM3OGI0NWY1NTQ4YzE1NTQ5NDk1ZmM3OWZiM2JjOWRlNTExYTJjM2IxNTVkNzRiYjYxYzY2ZDIzMGIwMjNkM2ImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.Xus3Q2pamVBNSOB3MYcBWKIzHCivjdE0UMiJmOp_bLk)
/header?height=24106587
Request (Envoy Proxy)5. Hydrator Enabled for
![Screenshot 2025-01-24 at 19 24 47](https://private-user-images.githubusercontent.com/47662958/406568779-16b8d700-3e33-43a4-a1b7-16dabbf0a398.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNTExNzQsIm5iZiI6MTczOTA1MDg3NCwicGF0aCI6Ii80NzY2Mjk1OC80MDY1Njg3NzktMTZiOGQ3MDAtM2UzMy00M2E0LWExYjctMTZkYWJiZjBhMzk4LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDIxNDExNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM0ZTg5MjhiYWUxODBlYmNmZjhkYTgzNDY5YjJmYjllNjM2MjA5NDUzN2Y3OTUyZWE2YWYyYTAxMjA5N2QyNGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.g6QVDYcpfZiOCrCwoyTC-0elTsQgJPVyRe53yJZlWeU)
cometbft
Changes:
qos/cometbft
implementation. Built using same pattern asqos/evm
package, then modified.cmd/qos.go
andconfig/service_qos.go
files to includecometbft
.Issue
Type of change
Select one or more from the following:
Sanity Checklist
assignees
,reviewers
,labels
,project
,iteration
andmilestone
make docusaurus_start
make test_all