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
| Parameter | Type | Description |
|---|---|---|
functionName | const 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
}