package helper import ( "fmt" "github.com/nspcc-dev/neo-go/pkg/crypto/keys" "github.com/nspcc-dev/neo-go/pkg/encoding/address" "github.com/nspcc-dev/neo-go/pkg/util" "github.com/spf13/viper" ) const frostfsIDAdminConfigKey = "frostfsid.admin" func GetFrostfsIDAdmin(v *viper.Viper) (util.Uint160, bool, error) { admin := v.GetString(frostfsIDAdminConfigKey) if admin == "" { return util.Uint160{}, false, nil } h, err := address.StringToUint160(admin) if err == nil { return h, true, nil } h, err = util.Uint160DecodeStringLE(admin) if err == nil { return h, true, nil } pk, err := keys.NewPublicKeyFromString(admin) if err == nil { return pk.GetScriptHash(), true, nil } return util.Uint160{}, true, fmt.Errorf("frostfsid: admin is invalid: '%s'", admin) }