github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/core/interop/interopnames/convert.go (about)

     1  package interopnames
     2  
     3  import (
     4  	"crypto/sha256"
     5  	"encoding/binary"
     6  	"errors"
     7  )
     8  
     9  var errNotFound = errors.New("interop not found")
    10  
    11  // ToID returns an identificator of the method based on its name.
    12  func ToID(name []byte) uint32 {
    13  	h := sha256.Sum256(name)
    14  	return binary.LittleEndian.Uint32(h[:4])
    15  }
    16  
    17  // FromID returns interop name from its id.
    18  func FromID(id uint32) (string, error) {
    19  	for i := range names {
    20  		if id == ToID([]byte(names[i])) {
    21  			return names[i], nil
    22  		}
    23  	}
    24  	return "", errNotFound
    25  }