Solana leader schedule cli vs api correlation

117 Views Asked by At

How to correlate between API output and the ci output

The leader schedule coming from the API is coming as offset

solana@:~$   curl https://api.mainnet-beta.solana.com -X POST -H "Content-Type: application/json" -d '
>   {
>     "id":1,
>     "jsonrpc":"2.0",
>     "method":"getLeaderSchedule",
>     "params":[
>       {
>         "identity":"AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb"
>       }
>     ]
>   }
> '

The output

{"jsonrpc":"2.0","result":{"AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb":[48360,48361,48362,48363,49260,49261,49262,49263,75072,75073,75074,75075,112200,112201,112202,112203,114572,114573,114574,114575,140984,140985,140986,140987,158720,158721,158722,158723,166276,166277,166278,166279,185124,185125,185126,185127,226220,226221,226222,226223,249656,249657,249658,249659,252316,252317,252318,252319,258804,258805,258806,258807,259116,259117,259118,259119,259336,259337,259338,259339,277108,277109,277110,277111,289656,289657,289658,289659,313972,313973,313974,313975,327088,327089,327090,327091,377792,377793,377794,377795,424116,424117,424118,424119]},"id":1}

Here is th eleader schedule directly from the cli, as you can see the output is real slot number not the offset

solana@:~$ solana leader-schedule | grep "AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb"
  132240360       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132240361       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132240362       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132240363       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132241260       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132241261       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132241262       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132241263       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132267072       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132267073       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132267074       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132267075       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132304200       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132304201       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132304202       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132304203       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132306572       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132306573       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132306574       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132306575       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132332984       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132332985       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132332986       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132332987       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132350720       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132350721       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132350722       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132350723       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132358276       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132358277       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132358278       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132358279       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132377124       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132377125       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132377126       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132377127       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132418220       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  132418221       AAHSdsnRREfdQNzDGRxai8CLXh9EPCoRdwULPqBYd9fb
  .....
.......

How to use API to give the solana leader schedule as it shown using the solana cli

1

There are 1 best solutions below

0
On

It's a bit convoluted, but to do the same thing as the CLI, you'll need to get the current epoch using getEpochInfo https://docs.solana.com/developing/clients/jsonrpc-api#getepochinfo, and then the epoch schedule using getEpochSchedule https://docs.solana.com/developing/clients/jsonrpc-api#getepochschedule.

With all of these, you can get the first slot in the epoch:

firstSlotInEpoch = (currentEpoch - firstNormalEpoch) * slotsPerEpoch + firstNormalSlot

With that, you can add firstSlotInEpoch to each of the values in the leader schedule.

The full CLI implementation doing this can be found at https://github.com/solana-labs/solana/blob/e1866aacad667073a6fcc3231f2494ef39363928/cli/src/cluster_query.rs#L998-L1044