lite-rpc/docs/tasks.md

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.