129 lines
5.0 KiB
Markdown
129 lines
5.0 KiB
Markdown
### Task definition
|
|
|
|
```mermaid
|
|
stateDiagram
|
|
a1: Architecture skeleton
|
|
c1: geyser connector
|
|
c2: Faithful connector
|
|
c22: Triton block index
|
|
c3: TPU connector
|
|
c4: gossip listening
|
|
s1: Data model
|
|
s2: Storage definition
|
|
s3: Block storage
|
|
s4: Cluster storage
|
|
b1: Block processing
|
|
b5: Block RPC call
|
|
t1: Tx processing
|
|
t3: Sendtransacton
|
|
t4: Tx RPC call
|
|
h1: History getBlock
|
|
h2: History getBlocks
|
|
h3: History calls
|
|
cl1: Cluster processing
|
|
cl2: cluster RPC solana
|
|
cl6: cluster RPC call
|
|
|
|
|
|
[*] --> a1
|
|
[*] --> c1
|
|
[*] --> c2
|
|
c2 --> c22
|
|
[*] --> c3
|
|
[*] --> c4
|
|
[*] --> s1
|
|
[*] --> cl1
|
|
s1 --> s2
|
|
s2 --> s3
|
|
s2 --> s4
|
|
a1 --> s2
|
|
a1 --> b1
|
|
b1 --> b5
|
|
a1 --> t1
|
|
t1 --> t3
|
|
t1 --> t4
|
|
cl1 --> cl2
|
|
cl1 --> cl6
|
|
s3 --> h1
|
|
c22 --> h1
|
|
b1 --> h1
|
|
h1 --> h2
|
|
h2 --> h3
|
|
```
|
|
|
|
|
|
#### Tasks list
|
|
|
|
- Architecture skeleton: do the mimimun code to define the first version of the architecture implementation. (PhiD)
|
|
- geyser connector: Geyser (grpc) connector code to all geyser data. Data not available use the current RPC access.
|
|
-> focus on leader schedule and make sendtransaction work without Solana RPC.
|
|
- vote account update to be defined. epoch info. always updated: lastVote, rootSlot, delinquent votes, epochCredits:
|
|
- recalculate the leader schedule using vote account activatedStake to see if it's the same. (PhilD)
|
|
- Add new Vote account notification. See linus.
|
|
- send all bank vote account (snapshot) at the subscription after send update. volume the number of validator (5000). They use cache inside grpc.
|
|
- (do it later) epoch data that are missing. See new entry point. notification of epoch info.
|
|
- implements.
|
|
- get cluster info:
|
|
- share memory, gossip, RPC (can keep basic endpoint on RPC): we've to define how we do.
|
|
- Faithful connector: connect to the Faithful service to query their method.
|
|
- Triton block index: research task on do we use the triton block index and how.
|
|
- TPU connector: manage TPU connection and connect to a specified validator's TPU port and send Tx batch. Done to be plug in the architecture.
|
|
- gossip listening: Listen to validator gossip and extract data. (leader schedule)
|
|
- Data model: define the stored data model + indexes for block and Cluster.
|
|
- Storage definition: implement the storage infra to host block and cluster data query.
|
|
- Block storage: implement block storage with epoch switch
|
|
- Cluster storage: implement cluster storage with epoch switch
|
|
- Block processing: implement block processing management. Base task:
|
|
- Update block: update block process
|
|
- get block: get block from cache and storage.
|
|
- get current data: get block current data
|
|
- Block RPC call: implements block RPC call.
|
|
- Tx processing: implement Tx processing algo
|
|
- notify Tx: notify Tx to other modules
|
|
- update Tx cache
|
|
- Sendtransacton
|
|
- send Tx
|
|
- confirm Tx
|
|
- replay Tx
|
|
- Tx RPC call: get Tx + Status
|
|
- History getBlock: integrate block index or/and call Faithful service
|
|
- History getBlocks: query indexes or add Faithful service call.
|
|
- define if we use Triton blocks index or ask Triton to implement getBlocks.
|
|
- History other calls: implements the other history call.
|
|
- Cluster processing: cluster data processing implementation.
|
|
- cluster data
|
|
- cluster epoch update
|
|
- cluster info
|
|
- cluster epoch notification
|
|
- Cluster RPC solana
|
|
- Cluster RPC call
|
|
|
|
Block and slot notification at process:
|
|
* slot on process notification.
|
|
* Tx signature on process (Tx verification and execution are done.)
|
|
* shred: block constructed.
|
|
|
|
Slot notification at the same commitment.
|
|
Tx signature subscription: shred, process, confirm, finalized. (slot, sign, commitment)
|
|
|
|
1) subscription to send process Tx signature. Try to deplucate (optimisation).
|
|
2) subscription process Tx in a block that contains only the Tx signature.
|
|
|
|
|
|
Validator -> share memory -> cluster -> web access to get them
|
|
|
|
Validator -> cluster -> geiser plug -> grpc access to get them
|
|
|
|
Look at the message between geyser and validator.
|
|
|
|
Short term task.
|
|
- Architecture skeleton: do the minimum code to define the first version of the architecture implementation. (PhiD) 3d
|
|
- Leader schedule
|
|
- recalculate the leader schedule using vote account activatedStake to see if it's the same. (PhilD) 2d
|
|
- Solana discussion about how to get vote account, Tx at process, cluster info and epoch info that we need
|
|
- Slot subscription at process : does the gprc support it? (Stephan)
|
|
- Tx signature subscription: (shred), process, confirm, finalized. (slot, sign, commitment) (Stephan) see if it's only a grpc update.
|
|
- Faithful connector: connect to the Faithful service to query their method: getBlock. Test getBlock on different epoch. See timing. (Aniket)
|
|
- Triton block index: research task on do we use the triton block index and how.: getBlocks
|
|
- Data model: define the stored data model + indexes for block and Cluster.
|