programSubscribe | Solana

The programSubscribe method in Solana allows developers to receive real-time notifications about changes to all accounts owned by a specific program. This subscription-based method provides updates whenever any account owned by the monitored program is modified.

Parameters

  • publicKey - The program ID (public key) to monitor, as a base-58 encoded string
  • <config> - (optional) Configuration object:
    • encoding - Data encoding for the account data:
      • "base58" - Base-58 encoding (default)
      • "base64" - Base-64 encoding
      • "base64+zstd" - Compressed Base-64 encoding
      • "jsonParsed" - JSON format (if program supports it)
    • filters - (optional) Array of filter objects:
      • memcmp - Filter for memory comparison:
        • offset - Number of bytes into program account to start comparison
        • bytes - Data to match, as base-58 encoded string
      • dataSize - Filter for program account data size
    • commitment - (optional) The level of commitment desired when querying state. Default is "finalized".

Response

  • result - An integer subscription id (needed to unsubscribe)
  • subscription - An object containing account information:
    • pubkey - The public key of the account that changed
    • account - Account information:
      • lamports - Number of lamports assigned to the account
      • owner - Base-58 encoded public key of the program this account is assigned to
      • data - Account data, encoded according to specified encoding parameter
      • executable - Boolean indicating if the account contains a program
      • rentEpoch - The epoch at which this account will next owe rent

programSubscribe code examples

This example subscribes to all accounts owned by the pump.fun program.

📘

Note that subscriptions require a WebSocket connection and WebSocket cat for you to use this method in the console.

Install WebSocket cat with:

npm install -g wscat


$ wscat -c YOUR_CHAINSTACK_WEBSOCKET_ENDPOINT
# Wait for the connection to be established

Connected (press CTRL+C to quit)

> {"jsonrpc":"2.0","id":1,"method":"programSubscribe","params":["6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",{"encoding":"jsonParsed","commitment":"finalized"}]}

Use case

The programSubscribe method is particularly useful for applications that need to monitor all accounts associated with a specific program. Common use cases include:

  • DEX monitoring: Track changes to orderbooks, market states, and other trading-related accounts
  • Token tracking: Monitor token program accounts for transfers and balance changes
  • Gaming: Track game state changes across all player accounts
  • DeFi applications: Monitor lending pools, staking positions, and other DeFi-related accounts
  • Analytics platforms: Gather real-time data about program usage and account state changes

By subscribing to program account changes, applications can provide real-time updates and analytics without constantly polling the blockchain for changes to individual accounts.