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

Initial implementations of the TPU Vortexor #3258

Merged
merged 30 commits into from
Dec 22, 2024
Merged
Changes from 1 commit
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
c62498a
Initial implementations of the TPU Vortexor
lijunwangs Oct 22, 2024
4b3109f
Initial implementations of the TPU Vortexor
lijunwangs Oct 24, 2024
1d0cd56
Initial implementations of the TPU Vortexor
lijunwangs Oct 24, 2024
ae25a0e
update Readme.md for vorexor
lijunwangs Oct 25, 2024
28f4498
launch the vortexor service
lijunwangs Oct 25, 2024
d2f78d4
set num quic to 1 while investigating multi-bind issue
lijunwangs Oct 25, 2024
b907702
Fixed multi-bind issue
lijunwangs Oct 25, 2024
3456240
Readme.md fmt
lijunwangs Oct 25, 2024
ccd4599
Readme.md fmt
lijunwangs Oct 25, 2024
fdbfdcc
Readme.md update
lijunwangs Oct 25, 2024
309bf1c
clippy issue
lijunwangs Oct 25, 2024
33e2d47
crate check
lijunwangs Oct 25, 2024
b1336fd
Readme.md fmt
lijunwangs Oct 30, 2024
b446e29
Readme.md fmt
lijunwangs Nov 1, 2024
02f1254
clippy fix
lijunwangs Nov 1, 2024
60fdb52
clippy issue
lijunwangs Nov 1, 2024
76de172
Added a unit test for the vortexor
lijunwangs Nov 12, 2024
01d7345
fmt test code
lijunwangs Nov 12, 2024
224efae
Fixed a merge conflict issue with testing due to refactoring
lijunwangs Nov 12, 2024
07f1121
fixed clippy issues
lijunwangs Nov 12, 2024
da16795
clippy problem
lijunwangs Nov 13, 2024
90ec007
updated the architecture doc
lijunwangs Dec 2, 2024
e9bbbd6
fixed a clippy issue
lijunwangs Dec 2, 2024
023e1e5
added some comments on deployment considerations
lijunwangs Dec 6, 2024
b368d36
missing Cargo.lock
lijunwangs Dec 7, 2024
367935d
Update readme based on feedback from Lucas B
lijunwangs Dec 12, 2024
8b526d7
rebase
lijunwangs Dec 13, 2024
441088f
addressed some comments from Brennan
lijunwangs Dec 13, 2024
a4b63f0
Addressed some feedback from Pankaj and Brennan
lijunwangs Dec 19, 2024
6125f44
some typo and style update to the Readme.md
lijunwangs Dec 19, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
updated the architecture doc
  • Loading branch information
lijunwangs committed Dec 13, 2024
commit 90ec007a9641220883d447da11475685b855fb5a
43 changes: 32 additions & 11 deletions vortexor/Readme.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
The vortexor is a service which can be used to offload receiving transaction from the public, doing signature verifications and deduplications from the core validator which can focus on processing and executing the transactions. The filtered transactions can be forwarded to the validators linked with the vortexor.
This vortexor makes the TPU transaction ingestion more scalable compared to single node solution.
The vortexor is a service which can be used to offload receiving transaction
from the public, doing signature verifications and deduplications from the core
validator which can focus on processing and executing the transactions. The
filtered transactions can be forwarded to the validators linked with the
vortexor. This vortexor makes the TPU transaction ingestion more scalable
compared to single node solution.

The archietecture diagram of the Vorexor with the relationship to the validator.

Expand Down Expand Up @@ -32,15 +36,32 @@ Admin RPC | | Management | | | |
+-------------------------------------------------------+


The Vorexor is a new executable which can be deployed on to different nodes from the core Agave validator.
It has the following major components:
The Vorexor is a new executable which can be deployed on to different nodes from
the core Agave validator. It has the following major components:

1. The TPU Streamer -- this is built from the existing QUIC based TPU streamer
2. The SigVerify/Dedup -- this is built/refactored from the existing SigVerify component
3. Subscription Management -- This is responsible for managing subscriptions from the validator.
Subscriptions action include subscription for transactions and cancel subscriptions.
4. VerifiedPacketForwarder -- This is responsible for forwarding the verified transaction packets
to the subscribed validators. We target use UDP/QUIC to send transactions to the validators
The validators can use firewall rules to allow transactions only from the vortexor.
2. The SigVerify/Dedup -- this is built/refactored from the existing SigVerify
component
3. Subscription Management -- This is responsible for managing subscriptions
from the validator. Subscriptions action include subscription for
transactions and cancel subscriptions.
4. VerifiedPacketForwarder -- This is responsible for forwarding the verified
transaction packetsto the subscribed validators. We target use UDP/QUIC to
send transactions to the validators. The validator has option to bind to
private address for receiving the verified packets.
The validators can also use firewall rules to allow transactions only from
the vortexor.
5. The Vortexor StakedKeyUpdater -- this service is responsible for retrieving
the stake map from the network and make it available to the TPU streamer
so that it can apply SWQOS.

In the validator, there is new component which receives the verified packets sent from the vortexor which directly sends the packets to the banking stage. The validator's Admin RPC is enhanced to configure the peering vortexor. The ContactInfo of the validator is updated with the address of the vortexor when it is linked with the validator. There is periodic heartbeat messages sent from the vortexor to the validator. If there are not transactions sent and no heartbeat messages from the vortexor within configurable timeout window, the validator may decide the vortexor is dead or disconnected it may choose to use another vortexor or use its own native QUI TPU streamer by updating the ContactInfo about TPU address.
In the validator, there is new component which receives the verified packets
sent from the vortexor which directly sends the packets to the banking stage.
The validator's Admin RPC is enhanced to configure the peering vortexor. The
ContactInfo of the validator is updated with the address of the vortexor when it
is linked with the validator. There is periodic heartbeat messages sent from the
vortexor to the validator. If there are not transactions sent and no heartbeat
messages from the vortexor within configurable timeout window, the validator may
decide the vortexor is dead or disconnected it may choose to use another
vortexor or use its own native QUI TPU streamer by updating the ContactInfo
about TPU address.