mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2024-11-29 23:33:37 +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/core/native"
|
||||||
"github.com/nspcc-dev/neo-go/pkg/interop/native/nameservice"
|
"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"
|
"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) {
|
func TestNameServiceRecordType(t *testing.T) {
|
||||||
require.EqualValues(t, native.RecordTypeA, nameservice.TypeA)
|
require.EqualValues(t, native.RecordTypeA, nameservice.TypeA)
|
||||||
require.EqualValues(t, native.RecordTypeCNAME, nameservice.TypeCNAME)
|
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