知道solana合约方法名,如何计算出anchor的Discriminator

Date:

如果有idl文件可以直接从idl中查到某个方法对应的Discriminator 如果没有idl但是可以在solscan上看到相关交易调用的合约方法名,可以用下面这个golang函数计算Discriminator 项目用其他语言的话,找chatgpt翻译一下

` package utils

import ( “crypto/sha256” “fmt” )

// namespace 一般是”global”, name 就是你想调用的方法名,和合约保持一致 func GetDiscriminator(namespace string, name string) []byte { preimage := fmt.Sprintf(“%s:%s”, namespace, name) hash := sha256.Sum256([]byte(preimage)) return hash[:8] } `