-
Notifications
You must be signed in to change notification settings - Fork 251
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
Initial implementations of the TPU Vortexor #3258
base: master
Are you sure you want to change the base?
Conversation
610493d
to
bf5ac84
Compare
4e372b1
to
257e49a
Compare
509dbad
to
f3ba6a6
Compare
@@ -239,3 +245,46 @@ pub async fn make_client_endpoint( | |||
.await | |||
.expect("Test server should be already listening on 'localhost'") | |||
} | |||
|
|||
pub async fn check_multiple_streams( |
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.
This is moved from nonblocking::quic::test to here to be reused for other testing
Is there a design document or anything for this? |
51b7492
to
a45a8b2
Compare
The motivation is to make TPU streaming, sig verification more scalable. The readme captures this: https://raw.githubusercontent.com/anza-xyz/agave/11908fbbcfab7194f954177c2da0646249ee308a/vortexor/Readme.md. I have set up a review meeting to go over this to give more context. The vortexor will retrieve the stake map via regular RPC service from configured validator -- the RPC can be either pairing validator or any other trusted RPC validator in the network supporting the RPC pub/sub service. The Vortexor does not need the private key to the validator. |
don't we need the private key for QUIC handshake ? |
A private key is used to sign the TLS certificate. But the client does not care about if the key is the same as the one of the validator advertising the TPU address (The vortexor address). The client code does not check that and we have no use case to enforce that check -- this is the same currently using --public-tpu-address. Without requiring using the same private key making it more secure and simplify deployment. |
How does the client prune its connection cache when it becomes too big? |
We randomly select a connection to prune -- the current connection cache is agnostic of the stake map. |
78e6546
to
d9e7f34
Compare
@pgarg66 @behzadnouri @bw-solana @sakridge -- can you follow up on this PR request? I have updated the readme.md with some of feedback I got in the table top review. Thanks |
Hey @lijunwangs, could you post the comments/summary from the table-top review? It'll be good to have them captured here in this PR. Also, there were some action items based on the review. It'll be great to have tracking issues for those, so that reviewers know what's coming down the line for Vortexor. |
I don't have a ton of feedback on the code for now, but a few comments (most of which are just reiterating what came up during live discussion):
|
af6647b
to
8b526d7
Compare
Thanks for the comments. Updated the Readme.md with this. |
I have put the discussion point we had into the Readme.md -- as I think it is a design questions. I have created a project to track these efforts: |
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.
Some suggestions/comments.
In its current form it looks like a wrapper on top of part of existing QUIC and TPU functionality. The follow on PRs would add more specifics for Vortexor.
It looks in the right direction to me, but I would like another person to review it as well.
Problem
Framework for Solana TPU vortexor which allows core validator to offload TPU receiving, sigverify and deduplications.
Summary of Changes
This is the first installment of the change. This is the framework part. It starts the TPU and forward stream based on the CLI configurations. In future PRs we will have the sigverify, forwarder, subscription management. The code has no impact to the existing validator.
Added a unit test for starting the vortexor, send some transactions and stops it.
Fixes #