core: implement System.Contract.CreateStandardAccount syscall

This commit is contained in:
Evgenii Stratonikov 2020-06-16 11:25:30 +03:00
parent 5b4f38d717
commit 52a27e9be4
3 changed files with 35 additions and 0 deletions

View file

@ -12,6 +12,7 @@ import (
"github.com/nspcc-dev/neo-go/pkg/core/interop"
"github.com/nspcc-dev/neo-go/pkg/core/state"
"github.com/nspcc-dev/neo-go/pkg/core/transaction"
"github.com/nspcc-dev/neo-go/pkg/crypto/keys"
"github.com/nspcc-dev/neo-go/pkg/smartcontract"
"github.com/nspcc-dev/neo-go/pkg/util"
"github.com/nspcc-dev/neo-go/pkg/vm"
@ -486,3 +487,14 @@ func contractIsStandard(ic *interop.Context, v *vm.VM) error {
v.Estack().PushVal(result)
return nil
}
// contractCreateStandardAccount calculates contract scripthash for a given public key.
func contractCreateStandardAccount(ic *interop.Context, v *vm.VM) error {
h := v.Estack().Pop().Bytes()
p, err := keys.NewPublicKeyFromBytes(h)
if err != nil {
return err
}
v.Estack().PushVal(p.GetScriptHash().BytesBE())
return nil
}