diff --git a/pkg/rpc/client/nep5.go b/pkg/rpc/client/nep5.go index 7a1f22cc5..8d9902323 100644 --- a/pkg/rpc/client/nep5.go +++ b/pkg/rpc/client/nep5.go @@ -134,7 +134,10 @@ func (c *Client) CreateNEP5MultiTransferTx(acc *wallet.Account, gas int64, recip recipients[i].Address, recipients[i].Amount) emit.Opcode(w.BinWriter, opcode.ASSERT) } - return c.CreateTxFromScript(w.Bytes(), acc, -1, gas) + return c.CreateTxFromScript(w.Bytes(), acc, -1, gas, transaction.Signer{ + Account: acc.Contract.ScriptHash(), + Scopes: transaction.CalledByEntry, + }) } // CreateTxFromScript creates transaction and properly sets cosigners and NetworkFee. diff --git a/pkg/rpc/server/client_test.go b/pkg/rpc/server/client_test.go index 059a3c7b0..91f70fa19 100644 --- a/pkg/rpc/server/client_test.go +++ b/pkg/rpc/server/client_test.go @@ -12,6 +12,7 @@ import ( "github.com/nspcc-dev/neo-go/pkg/internal/testchain" "github.com/nspcc-dev/neo-go/pkg/io" "github.com/nspcc-dev/neo-go/pkg/rpc/client" + "github.com/nspcc-dev/neo-go/pkg/smartcontract" "github.com/nspcc-dev/neo-go/pkg/util" "github.com/nspcc-dev/neo-go/pkg/vm/opcode" "github.com/nspcc-dev/neo-go/pkg/wallet" @@ -198,3 +199,24 @@ func TestCreateTxFromScript(t *testing.T) { require.Equal(t, acc.PrivateKey().GetScriptHash(), tx.Signers[0].Account) }) } + +func TestCreateNEP5TransferTx(t *testing.T) { + chain, rpcSrv, httpSrv := initServerWithInMemoryChain(t) + defer chain.Close() + defer rpcSrv.Shutdown() + + c, err := client.New(context.Background(), httpSrv.URL, client.Options{Network: testchain.Network()}) + require.NoError(t, err) + + priv := testchain.PrivateKeyByID(0) + acc, err := wallet.NewAccountFromWIF(priv.WIF()) + require.NoError(t, err) + + tx, err := c.CreateNEP5TransferTx(acc, util.Uint160{}, client.GasContractHash, 1000, 0) + require.NoError(t, err) + require.NoError(t, acc.SignTx(tx)) + require.NoError(t, chain.VerifyTx(tx)) + v := chain.GetTestVM(tx) + v.LoadScriptWithFlags(tx.Script, smartcontract.All) + require.NoError(t, v.Run()) +}