From 90b01bcea65c5e4f398a6b74f5a8ff1b981c4c4a Mon Sep 17 00:00:00 2001 From: Anna Shaleva Date: Sat, 8 Jul 2023 13:48:52 +0300 Subject: [PATCH] core: move SignersToStackItem to transaction package It will be reused from interops. Signed-off-by: Anna Shaleva --- pkg/core/native/ledger.go | 30 +----------------------------- pkg/core/transaction/signer.go | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/pkg/core/native/ledger.go b/pkg/core/native/ledger.go index ba21a3487..6a1d43a22 100644 --- a/pkg/core/native/ledger.go +++ b/pkg/core/native/ledger.go @@ -3,7 +3,6 @@ package native import ( "fmt" "math" - "math/big" "github.com/nspcc-dev/neo-go/pkg/core/dao" "github.com/nspcc-dev/neo-go/pkg/core/interop" @@ -163,7 +162,7 @@ func (l *Ledger) getTransactionSigners(ic *interop.Context, params []stackitem.I if err != nil || !isTraceableBlock(ic, h) { return stackitem.Null{} } - return SignersToStackItem(tx.Signers) + return transaction.SignersToStackItem(tx.Signers) } // getTransactionVMState returns VM state got after transaction invocation. @@ -231,30 +230,3 @@ func getTransactionAndHeight(d *dao.Simple, item stackitem.Item) (*transaction.T } return d.GetTransaction(hash) } - -// SignersToStackItem converts transaction.Signers to stackitem.Item. -func SignersToStackItem(signers []transaction.Signer) stackitem.Item { - res := make([]stackitem.Item, len(signers)) - for i, s := range signers { - contracts := make([]stackitem.Item, len(s.AllowedContracts)) - for j, c := range s.AllowedContracts { - contracts[j] = stackitem.NewByteArray(c.BytesBE()) - } - groups := make([]stackitem.Item, len(s.AllowedGroups)) - for j, g := range s.AllowedGroups { - groups[j] = stackitem.NewByteArray(g.Bytes()) - } - rules := make([]stackitem.Item, len(s.Rules)) - for j, r := range s.Rules { - rules[j] = r.ToStackItem() - } - res[i] = stackitem.NewArray([]stackitem.Item{ - stackitem.NewByteArray(s.Account.BytesBE()), - stackitem.NewBigInteger(big.NewInt(int64(s.Scopes))), - stackitem.NewArray(contracts), - stackitem.NewArray(groups), - stackitem.NewArray(rules), - }) - } - return stackitem.NewArray(res) -} diff --git a/pkg/core/transaction/signer.go b/pkg/core/transaction/signer.go index 5b42f56f5..663513925 100644 --- a/pkg/core/transaction/signer.go +++ b/pkg/core/transaction/signer.go @@ -2,10 +2,12 @@ package transaction import ( "errors" + "math/big" "github.com/nspcc-dev/neo-go/pkg/crypto/keys" "github.com/nspcc-dev/neo-go/pkg/io" "github.com/nspcc-dev/neo-go/pkg/util" + "github.com/nspcc-dev/neo-go/pkg/vm/stackitem" ) // The maximum number of AllowedContracts or AllowedGroups. @@ -57,3 +59,30 @@ func (c *Signer) DecodeBinary(br *io.BinReader) { br.ReadArray(&c.Rules, maxSubitems) } } + +// SignersToStackItem converts transaction.Signers to stackitem.Item. +func SignersToStackItem(signers []Signer) stackitem.Item { + res := make([]stackitem.Item, len(signers)) + for i, s := range signers { + contracts := make([]stackitem.Item, len(s.AllowedContracts)) + for j, c := range s.AllowedContracts { + contracts[j] = stackitem.NewByteArray(c.BytesBE()) + } + groups := make([]stackitem.Item, len(s.AllowedGroups)) + for j, g := range s.AllowedGroups { + groups[j] = stackitem.NewByteArray(g.Bytes()) + } + rules := make([]stackitem.Item, len(s.Rules)) + for j, r := range s.Rules { + rules[j] = r.ToStackItem() + } + res[i] = stackitem.NewArray([]stackitem.Item{ + stackitem.NewByteArray(s.Account.BytesBE()), + stackitem.NewBigInteger(big.NewInt(int64(s.Scopes))), + stackitem.NewArray(contracts), + stackitem.NewArray(groups), + stackitem.NewArray(rules), + }) + } + return stackitem.NewArray(res) +}