mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-11-23 03:38:35 +00:00
compiler: implement RoleManagement contract wrapper
This commit is contained in:
parent
77fcfeccff
commit
2f26490e59
2 changed files with 38 additions and 0 deletions
|
@ -5,9 +5,16 @@ import (
|
|||
|
||||
"github.com/nspcc-dev/neo-go/pkg/core/native"
|
||||
"github.com/nspcc-dev/neo-go/pkg/interop/native/nameservice"
|
||||
"github.com/nspcc-dev/neo-go/pkg/interop/native/roles"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestRoleManagementRole(t *testing.T) {
|
||||
require.EqualValues(t, native.RoleOracle, roles.Oracle)
|
||||
require.EqualValues(t, native.RoleStateValidator, roles.StateValidator)
|
||||
require.EqualValues(t, native.RoleP2PNotary, roles.P2PNotary)
|
||||
}
|
||||
|
||||
func TestNameServiceRecordType(t *testing.T) {
|
||||
require.EqualValues(t, native.RecordTypeA, nameservice.TypeA)
|
||||
require.EqualValues(t, native.RecordTypeCNAME, nameservice.TypeCNAME)
|
||||
|
|
31
pkg/interop/native/roles/roles.go
Normal file
31
pkg/interop/native/roles/roles.go
Normal file
|
@ -0,0 +1,31 @@
|
|||
package roles
|
||||
|
||||
import (
|
||||
"github.com/nspcc-dev/neo-go/pkg/interop"
|
||||
"github.com/nspcc-dev/neo-go/pkg/interop/contract"
|
||||
)
|
||||
|
||||
// Hash represents RoleManagement contract hash.
|
||||
const Hash = "\x02\x8b\x00\x50\x70\xb6\x0d\xf1\xc8\xe2\x09\x78\x7b\x49\xce\xbb\x71\x14\x7b\x59"
|
||||
|
||||
// Role represents node role.
|
||||
type Role byte
|
||||
|
||||
// Various node roles.
|
||||
const (
|
||||
StateValidator Role = 4
|
||||
Oracle Role = 8
|
||||
P2PNotary Role = 128
|
||||
)
|
||||
|
||||
// GetDesignatedByRole represents `getDesignatedByRole` method of RoleManagement native contract.
|
||||
func GetDesignatedByRole(r Role, height uint32) []interop.PublicKey {
|
||||
return contract.Call(interop.Hash160(Hash), "getDesignatedByRole",
|
||||
contract.ReadStates, r, height).([]interop.PublicKey)
|
||||
}
|
||||
|
||||
// DesignateAsRole represents `designateAsRole` method of RoleManagement native contract.
|
||||
func DesignateAsRole(r Role, pubs []interop.PublicKey) {
|
||||
contract.Call(interop.Hash160(Hash), "designateAsRole",
|
||||
contract.WriteStates, r, pubs)
|
||||
}
|
Loading…
Reference in a new issue