16 Available Tokens Data From Subgraph

note: here use RPC node to grab block close to chainhead and use it for timetravel query

# wait one minute
#Sys.sleep(60)


# Select columns needed for rewards_per_token calculation and general info
# Remove queries_per_indexer as it no longer exists
rewards_info = synced_subgraphs %>%
  select(deployment, signalled_tokens, total_allocated_tokens, rewards_proportion)
  # Optional: Add queries_per_indexer_48h here if needed for rewards_info analysis later
  # select(deployment, signalled_tokens, total_allocated_tokens, rewards_proportion, queries_per_indexer_48h)

# Now pull total available tokens
query = '{
  indexers(where: {id: "0x74dbb201ecc0b16934e68377bc13013883d9417b"}) {
    stakedTokens
    delegatedTokens
    availableStake
  }
}'

# Send POST request to the GraphQL API
response = POST(url, body = list(query = query), encode = "json")
# Parse the JSON response
content = content(response, "text", encoding='UTF-8')
json_data = fromJSON(content, flatten = TRUE)

# get available tokens amounts
available_tokens = as.data.frame(json_data$data$indexers) %>% 
  mutate(available_stake = as.numeric(availableStake)/10^18,
         total_stake = (as.numeric(stakedTokens)/10^18)+(as.numeric(delegatedTokens))/10^18) %>% 
  select(-availableStake, -delegatedTokens, -stakedTokens)

# Calculate rewards per token
rewards_info$rewards_per_token = rewards_info$rewards_proportion / rewards_info$total_allocated_tokens

# Sort by rewards per token in descending order
rewards_info = rewards_info[order(-rewards_info$rewards_per_token), ] %>% filter(rewards_per_token > 0, rewards_per_token < 9999999)
available_tokens
##   available_stake total_stake
## 1        40.28453     2716940
rewards_info
## # A tibble: 222 × 5
##    deployment         signalled_tokens total_allocated_tokens rewards_proportion
##    <chr>                         <dbl>                  <dbl>              <dbl>
##  1 Qmb7rYJk1BmDDkfYQ…            109.                   1167.            0.0934 
##  2 QmRT7M2wHbkFdC9N9…            704.                   7023             0.100  
##  3 QmVHVUTkiTEdF7Sij…             57.6                  8000             0.00719
##  4 QmWaCrvdyepm1Pe6R…             49.9                  9426             0.00529
##  5 QmeHZcGmj7wrJMHRr…             24.4                  7000             0.00348
##  6 Qmdp89ALKgfGVTjvw…             50.0                 11883             0.00421
##  7 QmQTGTovKTt3pni5i…             19.6                  8005             0.00245
##  8 QmUZg8JgW7zX87tpw…             99.0                 23535             0.00421
##  9 QmRJwFemjzSz1iAve…             99.0                 23591             0.00420
## 10 QmTCHDfwDRJspwLKb…             99.0                 23594             0.00420
## # ℹ 212 more rows
## # ℹ 1 more variable: rewards_per_token <dbl>
save.image('/root/github/indexer_analytics_tutorial/data/chapters_snapshots/08-available_tokens.RData')