Files
pumpfun-bonkfun-bot/learning-examples/calculate_discriminator.py
T

34 lines
1.0 KiB
Python
Raw Normal View History

2024-09-09 09:04:23 +07:00
import hashlib
import struct
# https://book.anchor-lang.com/anchor_bts/discriminator.html
# Set the instruction name here
instruction_name = "account:BondingCurve"
2025-03-05 07:03:32 +00:00
2024-09-09 09:04:23 +07:00
def calculate_discriminator(instruction_name):
# Create a SHA256 hash object
sha = hashlib.sha256()
2025-03-05 07:03:32 +00:00
2024-09-09 09:04:23 +07:00
# Update the hash with the instruction name
2025-03-05 07:03:32 +00:00
sha.update(instruction_name.encode("utf-8"))
2024-09-09 09:04:23 +07:00
# Get the first 8 bytes of the hash
discriminator_bytes = sha.digest()[:8]
2025-03-05 07:03:32 +00:00
2024-09-09 09:04:23 +07:00
# Convert the bytes to a 64-bit unsigned integer (little-endian)
2025-03-05 07:03:32 +00:00
discriminator = struct.unpack("<Q", discriminator_bytes)[0]
2024-09-09 09:04:23 +07:00
return discriminator
2025-03-05 07:03:32 +00:00
2024-09-09 09:04:23 +07:00
# Calculate the discriminator for the specified instruction
discriminator = calculate_discriminator(instruction_name)
print(f"Discriminator for '{instruction_name}' instruction: {discriminator}")
# global:buy discriminator - 16927863322537952870
# global:sell discriminator - 12502976635542562355
# global:create discriminator - 8576854823835016728
2025-03-05 07:03:32 +00:00
# account:BondingCurve discriminator - 6966180631402821399