Solana · Arazzo Workflow

Solana Snapshot Network Supply and Staking Economics

Version 1.0.0

Read total and circulating supply, profile the largest accounts, and read inflation and staking floors.

1 workflow 1 source API 1 provider
View Spec View on GitHub BlockchainCryptocurrencyWeb3DeFiTransactionsTokensArazzoWorkflows

Provider

solana

Workflows

network-supply-economics
Assemble a supply, concentration, inflation, and staking snapshot.
Reads the network-wide economic figures a dashboard or report needs in one pass.
5 steps inputs: excludeNonCirculatingAccountsList outputs: circulatingSupply, currentInflationTotal, largestAccounts, stakeMinimumDelegation, terminalInflation, totalSupply
1
supply
getSupply
Read the current supply of lamports across the network, split into circulating and non-circulating.
2
largestCirculatingAccounts
getLargestAccounts
Profile the twenty largest accounts by lamport balance, filtered to circulating supply, which is what turns a supply figure into a concentration picture.
3
inflationGovernor
getInflationGovernor
Read the long-run inflation schedule: the initial and terminal rates, the taper that moves between them, and the foundation's share and term.
4
inflationRate
getInflationRate
Read the inflation actually in force for the current epoch, which is the governor's schedule resolved to a point in time.
5
stakeMinimumDelegation
getStakeMinimumDelegation
Read the minimum lamports required to delegate a stake account, the floor any staking product has to enforce in its UI.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Solana Snapshot Network Supply and Staking Economics
  summary: Read total and circulating supply, profile the largest accounts, and read inflation and staking floors.
  description: >-
    The macro read behind economics dashboards and research reports. The
    workflow reads the network's total, circulating, and non-circulating
    lamport supply, profiles the twenty largest circulating accounts to show how
    concentrated that supply is, reads the inflation governor's long-run
    parameters and the inflation rate actually in force this epoch, and reads
    the minimum lamports a stake account must delegate. getLargestAccounts
    results may be cached by the node for up to two hours. Every step spells out
    its JSON-RPC request inline so the flow can be read and executed without
    opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: solanaRpcApi
  url: ../openapi/solana-rpc-api-openapi.yml
  type: openapi
workflows:
- workflowId: network-supply-economics
  summary: Assemble a supply, concentration, inflation, and staking snapshot.
  description: >-
    Reads the network-wide economic figures a dashboard or report needs in one
    pass.
  inputs:
    type: object
    properties:
      excludeNonCirculatingAccountsList:
        type: boolean
        description: >-
          Set true to omit the non-circulating account list from the supply
          response, which makes the payload far smaller.
        default: false
  steps:
  - stepId: supply
    description: >-
      Read the current supply of lamports across the network, split into
      circulating and non-circulating.
    operationId: getSupply
    requestBody:
      contentType: application/json
      payload:
        jsonrpc: "2.0"
        id: 1
        method: getSupply
        params:
        - excludeNonCirculatingAccountsList: $inputs.excludeNonCirculatingAccountsList
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.result.value
      type: jsonpath
    outputs:
      total: $response.body#/result/value/total
      circulating: $response.body#/result/value/circulating
      nonCirculating: $response.body#/result/value/nonCirculating
      nonCirculatingAccounts: $response.body#/result/value/nonCirculatingAccounts
  - stepId: largestCirculatingAccounts
    description: >-
      Profile the twenty largest accounts by lamport balance, filtered to
      circulating supply, which is what turns a supply figure into a
      concentration picture.
    operationId: getLargestAccounts
    requestBody:
      contentType: application/json
      payload:
        jsonrpc: "2.0"
        id: 1
        method: getLargestAccounts
        params:
        - filter: circulating
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.result.value
      type: jsonpath
    outputs:
      accounts: $response.body#/result/value
      largestAddress: $response.body#/result/value/0/address
      largestLamports: $response.body#/result/value/0/lamports
  - stepId: inflationGovernor
    description: >-
      Read the long-run inflation schedule: the initial and terminal rates, the
      taper that moves between them, and the foundation's share and term.
    operationId: getInflationGovernor
    requestBody:
      contentType: application/json
      payload:
        jsonrpc: "2.0"
        id: 1
        method: getInflationGovernor
        params: []
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.result
      type: jsonpath
    outputs:
      initial: $response.body#/result/initial
      terminal: $response.body#/result/terminal
      taper: $response.body#/result/taper
      foundation: $response.body#/result/foundation
      foundationTerm: $response.body#/result/foundationTerm
  - stepId: inflationRate
    description: >-
      Read the inflation actually in force for the current epoch, which is the
      governor's schedule resolved to a point in time.
    operationId: getInflationRate
    requestBody:
      contentType: application/json
      payload:
        jsonrpc: "2.0"
        id: 1
        method: getInflationRate
        params: []
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.result
      type: jsonpath
    outputs:
      total: $response.body#/result/total
      validator: $response.body#/result/validator
      foundation: $response.body#/result/foundation
      epoch: $response.body#/result/epoch
  - stepId: stakeMinimumDelegation
    description: >-
      Read the minimum lamports required to delegate a stake account, the floor
      any staking product has to enforce in its UI.
    operationId: getStakeMinimumDelegation
    requestBody:
      contentType: application/json
      payload:
        jsonrpc: "2.0"
        id: 1
        method: getStakeMinimumDelegation
        params: []
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      minimumLamports: $response.body#/result/value
  outputs:
    totalSupply: $steps.supply.outputs.total
    circulatingSupply: $steps.supply.outputs.circulating
    largestAccounts: $steps.largestCirculatingAccounts.outputs.accounts
    currentInflationTotal: $steps.inflationRate.outputs.total
    terminalInflation: $steps.inflationGovernor.outputs.terminal
    stakeMinimumDelegation: $steps.stakeMinimumDelegation.outputs.minimumLamports