Solana · Arazzo Workflow

Solana Analyze an SPL Token Mint and Its Largest Holders

Version 1.0.0

Read a mint's total supply, list its 20 largest token accounts, and inspect the top holder.

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

Provider

solana

Workflows

token-mint-analytics
Profile an SPL Token mint's supply and holder concentration.
Combines total supply with the largest holding accounts and the identity of the top holder.
3 steps inputs: mintAddress outputs: decimals, largestHolders, supplyAmount, supplyUiAmountString, topHolderAccountData, topHolderAddress, topHolderAmount
1
totalSupply
getTokenSupply
Read the mint's current total supply, returned as a raw amount plus the decimals needed to render it.
2
largestHolders
getTokenLargestAccounts
List the twenty largest token accounts for the mint, ordered by balance, which is the raw material for a concentration calculation.
3
inspectTopHolder
getAccountInfo
Inspect the largest token account in parsed form so the owning wallet behind the balance is visible rather than just the token account address.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Solana Analyze an SPL Token Mint and Its Largest Holders
  summary: Read a mint's total supply, list its 20 largest token accounts, and inspect the top holder.
  description: >-
    The concentration analysis behind token dashboards and due-diligence
    tooling. The workflow reads the current total supply for an SPL Token mint,
    lists the twenty largest token accounts holding that mint, and then inspects
    the largest holder's account in parsed form to reveal who owns it. Supply
    and top-holder balances together give the caller the concentration ratio
    that indicates whether a token is widely distributed or controlled by a
    handful of accounts. 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: token-mint-analytics
  summary: Profile an SPL Token mint's supply and holder concentration.
  description: >-
    Combines total supply with the largest holding accounts and the identity of
    the top holder.
  inputs:
    type: object
    required:
    - mintAddress
    properties:
      mintAddress:
        type: string
        description: Base58-encoded public key of the SPL Token mint.
  steps:
  - stepId: totalSupply
    description: >-
      Read the mint's current total supply, returned as a raw amount plus the
      decimals needed to render it.
    operationId: getTokenSupply
    requestBody:
      contentType: application/json
      payload:
        jsonrpc: "2.0"
        id: 1
        method: getTokenSupply
        params:
        - $inputs.mintAddress
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.result.value
      type: jsonpath
    outputs:
      amount: $response.body#/result/value/amount
      decimals: $response.body#/result/value/decimals
      uiAmountString: $response.body#/result/value/uiAmountString
  - stepId: largestHolders
    description: >-
      List the twenty largest token accounts for the mint, ordered by balance,
      which is the raw material for a concentration calculation.
    operationId: getTokenLargestAccounts
    requestBody:
      contentType: application/json
      payload:
        jsonrpc: "2.0"
        id: 1
        method: getTokenLargestAccounts
        params:
        - $inputs.mintAddress
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.result.value
      type: jsonpath
    outputs:
      holders: $response.body#/result/value
      topHolderAddress: $response.body#/result/value/0/address
      topHolderAmount: $response.body#/result/value/0/amount
      topHolderUiAmountString: $response.body#/result/value/0/uiAmountString
    onSuccess:
    - name: hasHolders
      type: goto
      stepId: inspectTopHolder
      criteria:
      - context: $response.body
        condition: $.result.value.length > 0
        type: jsonpath
  - stepId: inspectTopHolder
    description: >-
      Inspect the largest token account in parsed form so the owning wallet
      behind the balance is visible rather than just the token account address.
    operationId: getAccountInfo
    requestBody:
      contentType: application/json
      payload:
        jsonrpc: "2.0"
        id: 1
        method: getAccountInfo
        params:
        - $steps.largestHolders.outputs.topHolderAddress
        - encoding: jsonParsed
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.result.value
      type: jsonpath
    outputs:
      accountData: $response.body#/result/value/data
      accountOwnerProgram: $response.body#/result/value/owner
      lamports: $response.body#/result/value/lamports
  outputs:
    supplyAmount: $steps.totalSupply.outputs.amount
    supplyUiAmountString: $steps.totalSupply.outputs.uiAmountString
    decimals: $steps.totalSupply.outputs.decimals
    largestHolders: $steps.largestHolders.outputs.holders
    topHolderAddress: $steps.largestHolders.outputs.topHolderAddress
    topHolderAmount: $steps.largestHolders.outputs.topHolderAmount
    topHolderAccountData: $steps.inspectTopHolder.outputs.accountData