lite-rpc/docs/tasks.md

5.0 KiB

Task definition

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.