neo-go/pkg/core/native/noderoles/role.go
Anna Shaleva 065bd3f0be *: introduce Genesis protocol configuration
This section contains genesis-related settings including genesis-related or natives-related
extensions. Currently it includes the set of node roles that may be designated
duing the native Designation contract initialisation.

Close #3156.

Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
2023-10-19 18:30:20 +03:00

39 lines
865 B
Go

package noderoles
//go:generate stringer -type=Role
// Role represents the type of the participant.
type Role byte
// Role enumeration.
const (
_ Role = 1 << iota
_
StateValidator
Oracle
NeoFSAlphabet
P2PNotary
// last denotes the end of roles enum. Consider adding new roles before the last.
last
)
// Roles is a set of all available roles sorted by values.
var Roles []Role
// roles is a map of valid Role string representation to its type.
var roles map[string]Role
func init() {
roles = make(map[string]Role)
for i := StateValidator; i < last; i = i << 1 {
roles[i.String()] = i
Roles = append(Roles, i)
}
}
// FromString returns a node role parsed from its string representation and a
// boolean value denoting whether the conversion was OK and the role exists.
func FromString(s string) (Role, bool) {
r, ok := roles[s]
return r, ok
}