Skip to main content

calculateDiscriminator

Calculates the 8-byte discriminator for an instruction in a Solana program written with the Anchor framework. Anchor prefixes all instruction data with a unique 8-byte hash to identify which function to call. This hash is the first 8 bytes of sha256("global:<function_name>").

This function simplifies interaction with Anchor-based programs.

Parameters

ParameterTypeDescription
functionNameconst std::string&The name of the Anchor instruction function (e.g., "initialize" or "update_data").

Return Value

  • std::vector<uint8_t>: An 8-byte vector containing the calculated discriminator.

Example Code (main.cpp)

#include <Arduino.h>
#include "Infratic-lib.h"

const String SOLANA_RPC_URL = "[https://api.devnet.solana.com](https://api.devnet.solana.com)";
Infratic solana(SOLANA_RPC_URL);

void setup() {
Serial.begin(115200);
delay(1000);

Serial.println("\n=== Calculate Anchor Discriminator Example ===");

std::string functionName = "update_temperature";
std::vector<uint8_t> discriminator = solana.calculateDiscriminator(functionName);

Serial.print("✅ Discriminator for '");
Serial.print(functionName.c_str());
Serial.print("' (hex): ");
for (uint8_t b : discriminator) {
if (b < 16) Serial.print("0");
Serial.print(b, HEX);
Serial.print(" ");
}
Serial.println();
}

void loop() {
// Can be left empty
}