From 0e2a1f40badfc91399a7c14090f3f516b2c92970 Mon Sep 17 00:00:00 2001 From: Evgenii Stratonikov Date: Wed, 26 Feb 2020 15:37:53 +0300 Subject: [PATCH] core: add ContractTX to a testchain generator Simple transfer from multisig account to the account of one of the validators. --- pkg/core/helper_test.go | 56 +++++++++++++++++- .../{ => server}/testdata/test_contract.go | 0 pkg/rpc/server/testdata/testblocks.acc | Bin 27236 -> 27799 bytes 3 files changed, 53 insertions(+), 3 deletions(-) rename pkg/rpc/{ => server}/testdata/test_contract.go (100%) diff --git a/pkg/core/helper_test.go b/pkg/core/helper_test.go index 78cd7bb34..35583ab28 100644 --- a/pkg/core/helper_test.go +++ b/pkg/core/helper_test.go @@ -165,6 +165,8 @@ func newDumbBlock() *block.Block { // 2. Add specific test-case into "neo-go/pkg/core/blockchain_test.go" // 3. Run tests with `$ make test` func _(t *testing.T) { + const prefix = "../rpc/server/testdata/" + bc := newTestChain(t) n := 50 _, err := bc.genBlocks(n) @@ -172,7 +174,7 @@ func _(t *testing.T) { tx1 := newMinerTX() - avm, err := ioutil.ReadFile("../rpc/testdata/test_contract.avm") + avm, err := ioutil.ReadFile(prefix + "test_contract.avm") require.NoError(t, err) var props smartcontract.PropertyState @@ -206,10 +208,58 @@ func _(t *testing.T) { emit.AppCall(script.BinWriter, hash.Hash160(avm), false) tx3 := transaction.NewInvocationTX(script.Bytes(), util.Fixed8FromFloat(100)) - b := bc.newBlock(newMinerTX(), tx3) + + tx4 := transaction.NewContractTX() + h, err := util.Uint256DecodeStringBE("6da730b566db183bfceb863b780cd92dee2b497e5a023c322c1eaca81cf9ad7a") + require.NoError(t, err) + tx4.AddInput(&transaction.Input{ + PrevHash: h, + PrevIndex: 0, + }) + + // multisig address which possess all NEO + scriptHash, err := util.Uint160DecodeStringBE("be48d3a3f5d10013ab9ffee489706078714f1ea2") + require.NoError(t, err) + priv, err := keys.NewPrivateKeyFromWIF(privNetKeys[0]) + require.NoError(t, err) + tx4.AddOutput(&transaction.Output{ + AssetID: GoverningTokenID(), + Amount: util.Fixed8FromInt64(1000), + ScriptHash: priv.GetScriptHash(), + Position: 0, + }) + tx4.AddOutput(&transaction.Output{ + AssetID: GoverningTokenID(), + Amount: util.Fixed8FromInt64(99999000), + ScriptHash: scriptHash, + Position: 1, + }) + tx4.Data = new(transaction.ContractTX) + + validators, err := getValidators(bc.config) + require.NoError(t, err) + rawScript, err := smartcontract.CreateMultiSigRedeemScript(len(bc.config.StandbyValidators)/2+1, validators) + require.NoError(t, err) + data := tx4.GetSignedPart() + + var invoc []byte + for i := range privNetKeys { + priv, err := keys.NewPrivateKeyFromWIF(privNetKeys[i]) + require.NoError(t, err) + signature := priv.Sign(data) + invoc = append(invoc, byte(opcode.PUSHBYTES64)) + invoc = append(invoc, signature...) + } + + tx4.Scripts = []transaction.Witness{{ + InvocationScript: invoc, + VerificationScript: rawScript, + }} + + b := bc.newBlock(newMinerTX(), tx3, tx4) require.NoError(t, bc.AddBlock(b)) - outStream, err := os.Create("../rpc/testdata/testblocks.acc") + outStream, err := os.Create(prefix + "testblocks.acc") require.NoError(t, err) defer outStream.Close() diff --git a/pkg/rpc/testdata/test_contract.go b/pkg/rpc/server/testdata/test_contract.go similarity index 100% rename from pkg/rpc/testdata/test_contract.go rename to pkg/rpc/server/testdata/test_contract.go diff --git a/pkg/rpc/server/testdata/testblocks.acc b/pkg/rpc/server/testdata/testblocks.acc index f0bcc1f757a5ab0ed6b9bbbb4e873edf03c8df3e..2fe1d8be7c7dfa95e514301c3aa4ba3bf9631a3c 100644 GIT binary patch delta 16676 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 delta 16269 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 UWJOT8T7s&?|GT0lG1?0LAMXw4^#A|>