Skip to main content
Monitor new program deployments on Solana to track program launches, analyze deployment trends, or build program discovery tools.

Use Case

Program deployment tracking enables you:
  • Track new program launches
  • Monitor program upgrade activity
  • Analyze deployment trends
  • Build program discovery dashboards

Code Example

curl --compressed -X POST 'https://portal.sqd.dev/datasets/solana-mainnet/stream' \
  -H 'Content-Type: application/json' \
  -d '{
    "type": "solana",
    "fromBlock": 270000044,
    "toBlock": 270000047,
    "fields": {
      "block": {
        "number": true,
        "timestamp": true
      },
      "transaction": {
        "signatures": true,
        "feePayer": true
      },
      "instruction": {
        "programId": true,
        "accounts": true
      }
    },
    "instructions": [{
      "programId": ["BPFLoaderUpgradeab1e11111111111111111111111"]
    }]
  }'
Try it yourself with the interactive query interface below:

Key Parameters

ParameterDescription
programIdBPF Upgradeable Loader program ID for deployments
accountsInstruction accounts (first account is typically the program)
transactionIndexTransaction index (use to match with transactions array)
Program deployments on Solana use the BPF Upgradeable Loader program. Different instruction types within this program indicate deployments, upgrades, or closures.

Expected Output

{
  "header": {
    "number": 259985000,
    "timestamp": 1697544779
  },
  "instructions": [
    {
      "programId": "BPFLoaderUpgradeab1e11111111111111111111111",
      "accounts": ["NewProgramAddress...", "..."],
      "transactionIndex": 0
    }
  ]
}

Filter by Deployer

Track deployments from specific addresses:
curl --compressed -X POST 'https://portal.sqd.dev/datasets/solana-mainnet/stream' \
  -H 'Content-Type: application/json' \
  -d '{
    "type": "solana",
    "fromBlock": 270000044,
    "toBlock": 270000047,
    "fields": {
      "transaction": {
        "signatures": true,
        "feePayer": true
      },
      "instruction": {
        "programId": true,
        "accounts": true,
        "transactionIndex": true
      }
    },
    "instructions": [{
      "programId": ["BPFLoaderUpgradeab1e11111111111111111111111"]
    }],
    "transactions": [{
      "feePayer": ["DeployerAddressHere"]
    }]
  }'

Performance Tips

  1. Filter by deployer: Query deployments from specific addresses
  2. Use slot ranges: Process data in manageable batches
  3. Request minimal fields: Only request fields you need
  4. Combine filters: Use both program and transaction filters for precision
Last modified on November 18, 2025