From aa554f0a9a17c0ce7d7062919265aacf0e721413 Mon Sep 17 00:00:00 2001 From: Anna Shaleva Date: Tue, 21 Apr 2020 14:26:57 +0300 Subject: [PATCH 1/7] core: update block timestamp format Changed block.Timestamp from uint32 to uint64 --- go.mod | 2 +- go.sum | 2 ++ pkg/consensus/block.go | 4 +-- pkg/consensus/payload_test.go | 2 +- pkg/consensus/prepare_request.go | 10 +++--- pkg/core/block/block_base.go | 6 ++-- pkg/core/block/block_test.go | 2 +- pkg/core/block/header_test.go | 2 +- pkg/core/helper_test.go | 4 +-- pkg/core/state/nep5.go | 8 ++--- pkg/core/util.go | 2 +- pkg/core/util_test.go | 2 +- pkg/network/payload/headers_test.go | 4 ++- pkg/rpc/client/rpc_test.go | 40 +++++++++++------------ pkg/rpc/response/result/block.go | 2 +- pkg/rpc/response/result/block_header.go | 2 +- pkg/rpc/response/result/nep5.go | 2 +- pkg/rpc/response/result/tx_raw_output.go | 2 +- pkg/rpc/server/server_test.go | 2 +- pkg/rpc/server/testdata/testblocks.acc | Bin 204257 -> 205089 bytes 20 files changed, 52 insertions(+), 48 deletions(-) diff --git a/go.mod b/go.mod index 0d4eb0ec8..06bce704d 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/go-redis/redis v6.10.2+incompatible github.com/go-yaml/yaml v2.1.0+incompatible github.com/mr-tron/base58 v1.1.2 - github.com/nspcc-dev/dbft v0.0.0-20200303183127-36d3da79c682 + github.com/nspcc-dev/dbft v0.0.0-20200427132226-660464796c11 github.com/nspcc-dev/rfc6979 v0.2.0 github.com/pkg/errors v0.8.1 github.com/prometheus/client_golang v1.2.1 diff --git a/go.sum b/go.sum index abbecef44..003de7aad 100644 --- a/go.sum +++ b/go.sum @@ -131,6 +131,8 @@ github.com/nspcc-dev/dbft v0.0.0-20200219114139-199d286ed6c1 h1:yEx9WznS+rjE0jl0 github.com/nspcc-dev/dbft v0.0.0-20200219114139-199d286ed6c1/go.mod h1:O0qtn62prQSqizzoagHmuuKoz8QMkU3SzBoKdEvm3aQ= github.com/nspcc-dev/dbft v0.0.0-20200303183127-36d3da79c682 h1:63OWUolW4GcjJR7cThq8hLnMLTwL+sjO3Qf4fo4sx8w= github.com/nspcc-dev/dbft v0.0.0-20200303183127-36d3da79c682/go.mod h1:1FYQXSbb6/9HQIkoF8XO7W/S8N7AZRkBsgwbcXRvk0E= +github.com/nspcc-dev/dbft v0.0.0-20200427132226-660464796c11 h1:sledsmRo0wzgWNCZir5/CeM0PjhHVP8khnGtOfBCFWk= +github.com/nspcc-dev/dbft v0.0.0-20200427132226-660464796c11/go.mod h1:1FYQXSbb6/9HQIkoF8XO7W/S8N7AZRkBsgwbcXRvk0E= github.com/nspcc-dev/neo-go v0.73.1-pre.0.20200303142215-f5a1b928ce09/go.mod h1:pPYwPZ2ks+uMnlRLUyXOpLieaDQSEaf4NM3zHVbRjmg= github.com/nspcc-dev/neofs-crypto v0.2.0 h1:ftN+59WqxSWz/RCgXYOfhmltOOqU+udsNQSvN6wkFck= github.com/nspcc-dev/neofs-crypto v0.2.0/go.mod h1:F/96fUzPM3wR+UGsPi3faVNmFlA9KAEAUQR7dMxZmNA= diff --git a/pkg/consensus/block.go b/pkg/consensus/block.go index 31b6a5e15..e907813af 100644 --- a/pkg/consensus/block.go +++ b/pkg/consensus/block.go @@ -74,10 +74,10 @@ func (n *neoBlock) MerkleRoot() util.Uint256 { return n.Block.MerkleRoot } func (n *neoBlock) SetMerkleRoot(r util.Uint256) { n.Block.MerkleRoot = r } // Timestamp implements block.Block interface. -func (n *neoBlock) Timestamp() uint32 { return n.Block.Timestamp } +func (n *neoBlock) Timestamp() uint64 { return n.Block.Timestamp } // SetTimestamp implements block.Block interface. -func (n *neoBlock) SetTimestamp(ts uint32) { n.Block.Timestamp = ts } +func (n *neoBlock) SetTimestamp(ts uint64) { n.Block.Timestamp = ts } // Index implements block.Block interface. func (n *neoBlock) Index() uint32 { return n.Block.Index } diff --git a/pkg/consensus/payload_test.go b/pkg/consensus/payload_test.go index 48bf020c0..16d21a081 100644 --- a/pkg/consensus/payload_test.go +++ b/pkg/consensus/payload_test.go @@ -243,7 +243,7 @@ func randomPrepareRequest(t *testing.T) *prepareRequest { const txCount = 3 req := &prepareRequest{ - timestamp: rand.Uint32(), + timestamp: rand.Uint64(), nonce: rand.Uint64(), transactionHashes: make([]util.Uint256, txCount), minerTx: *transaction.NewMinerTX(), diff --git a/pkg/consensus/prepare_request.go b/pkg/consensus/prepare_request.go index bbc7ce90b..bcb5a5e42 100644 --- a/pkg/consensus/prepare_request.go +++ b/pkg/consensus/prepare_request.go @@ -9,7 +9,7 @@ import ( // prepareRequest represents dBFT prepareRequest message. type prepareRequest struct { - timestamp uint32 + timestamp uint64 nonce uint64 transactionHashes []util.Uint256 minerTx transaction.Transaction @@ -20,7 +20,7 @@ var _ payload.PrepareRequest = (*prepareRequest)(nil) // EncodeBinary implements io.Serializable interface. func (p *prepareRequest) EncodeBinary(w *io.BinWriter) { - w.WriteU32LE(p.timestamp) + w.WriteU64LE(p.timestamp) w.WriteU64LE(p.nonce) w.WriteBytes(p.nextConsensus[:]) w.WriteArray(p.transactionHashes) @@ -29,7 +29,7 @@ func (p *prepareRequest) EncodeBinary(w *io.BinWriter) { // DecodeBinary implements io.Serializable interface. func (p *prepareRequest) DecodeBinary(r *io.BinReader) { - p.timestamp = r.ReadU32LE() + p.timestamp = r.ReadU64LE() p.nonce = r.ReadU64LE() r.ReadBytes(p.nextConsensus[:]) r.ReadArray(&p.transactionHashes) @@ -37,10 +37,10 @@ func (p *prepareRequest) DecodeBinary(r *io.BinReader) { } // Timestamp implements payload.PrepareRequest interface. -func (p *prepareRequest) Timestamp() uint32 { return p.timestamp } +func (p *prepareRequest) Timestamp() uint64 { return p.timestamp } // SetTimestamp implements payload.PrepareRequest interface. -func (p *prepareRequest) SetTimestamp(ts uint32) { p.timestamp = ts } +func (p *prepareRequest) SetTimestamp(ts uint64) { p.timestamp = ts } // Nonce implements payload.PrepareRequest interface. func (p *prepareRequest) Nonce() uint64 { return p.nonce } diff --git a/pkg/core/block/block_base.go b/pkg/core/block/block_base.go index bfd5e4ab4..e1e142062 100644 --- a/pkg/core/block/block_base.go +++ b/pkg/core/block/block_base.go @@ -23,7 +23,7 @@ type Base struct { // The time stamp of each block must be later than previous block's time stamp. // Generally the difference of two block's time stamp is about 15 seconds and imprecision is allowed. // The height of the block must be exactly equal to the height of the previous block plus 1. - Timestamp uint32 `json:"time"` + Timestamp uint64 `json:"time"` // index/height of the block Index uint32 `json:"height"` @@ -117,7 +117,7 @@ func (b *Base) encodeHashableFields(bw *io.BinWriter) { bw.WriteU32LE(b.Version) bw.WriteBytes(b.PrevHash[:]) bw.WriteBytes(b.MerkleRoot[:]) - bw.WriteU32LE(b.Timestamp) + bw.WriteU64LE(b.Timestamp) bw.WriteU32LE(b.Index) bw.WriteU64LE(b.ConsensusData) bw.WriteBytes(b.NextConsensus[:]) @@ -129,7 +129,7 @@ func (b *Base) decodeHashableFields(br *io.BinReader) { b.Version = br.ReadU32LE() br.ReadBytes(b.PrevHash[:]) br.ReadBytes(b.MerkleRoot[:]) - b.Timestamp = br.ReadU32LE() + b.Timestamp = br.ReadU64LE() b.Index = br.ReadU32LE() b.ConsensusData = br.ReadU64LE() br.ReadBytes(b.NextConsensus[:]) diff --git a/pkg/core/block/block_test.go b/pkg/core/block/block_test.go index 15e6acd37..7fafc2c58 100644 --- a/pkg/core/block/block_test.go +++ b/pkg/core/block/block_test.go @@ -71,7 +71,7 @@ func newDumbBlock() *Block { Version: 0, PrevHash: hash.Sha256([]byte("a")), MerkleRoot: hash.Sha256([]byte("b")), - Timestamp: uint32(100500), + Timestamp: 100500, Index: 1, ConsensusData: 1111, NextConsensus: hash.Hash160([]byte("a")), diff --git a/pkg/core/block/header_test.go b/pkg/core/block/header_test.go index 55b20b24b..f0820f120 100644 --- a/pkg/core/block/header_test.go +++ b/pkg/core/block/header_test.go @@ -16,7 +16,7 @@ func TestHeaderEncodeDecode(t *testing.T) { Version: 0, PrevHash: hash.Sha256([]byte("prevhash")), MerkleRoot: hash.Sha256([]byte("merkleroot")), - Timestamp: uint32(time.Now().UTC().Unix()), + Timestamp: uint64(time.Now().UTC().Unix()), Index: 3445, ConsensusData: 394949, NextConsensus: util.Uint160{}, diff --git a/pkg/core/helper_test.go b/pkg/core/helper_test.go index f54b1ad23..048c87b67 100644 --- a/pkg/core/helper_test.go +++ b/pkg/core/helper_test.go @@ -61,7 +61,7 @@ func newBlock(cfg config.ProtocolConfiguration, index uint32, prev util.Uint256, Base: block.Base{ Version: 0, PrevHash: prev, - Timestamp: uint32(time.Now().UTC().Unix()) + index, + Timestamp: uint64(time.Now().UTC().Unix()) + uint64(index), Index: index, ConsensusData: 1111, NextConsensus: witness.ScriptHash(), @@ -130,7 +130,7 @@ func newDumbBlock() *block.Block { Version: 0, PrevHash: hash.Sha256([]byte("a")), MerkleRoot: hash.Sha256([]byte("b")), - Timestamp: uint32(100500), + Timestamp: 100500, Index: 1, ConsensusData: 1111, NextConsensus: hash.Hash160([]byte("a")), diff --git a/pkg/core/state/nep5.go b/pkg/core/state/nep5.go index 91fe30932..a0631dd09 100644 --- a/pkg/core/state/nep5.go +++ b/pkg/core/state/nep5.go @@ -20,7 +20,7 @@ type NEP5TransferLog struct { } // NEP5TransferSize is a size of a marshaled NEP5Transfer struct in bytes. -const NEP5TransferSize = util.Uint160Size*3 + 8 + 4 + 4 + util.Uint256Size +const NEP5TransferSize = util.Uint160Size*3 + 8 + 4 + 8 + util.Uint256Size // NEP5Transfer represents a single NEP5 Transfer event. type NEP5Transfer struct { @@ -36,7 +36,7 @@ type NEP5Transfer struct { // Block is a number of block when the event occured. Block uint32 // Timestamp is the timestamp of the block where transfer occured. - Timestamp uint32 + Timestamp uint64 // Tx is a hash the transaction. Tx util.Uint256 } @@ -135,7 +135,7 @@ func (t *NEP5Transfer) EncodeBinary(w *io.BinWriter) { w.WriteBytes(t.From[:]) w.WriteBytes(t.To[:]) w.WriteU32LE(t.Block) - w.WriteU32LE(t.Timestamp) + w.WriteU64LE(t.Timestamp) w.WriteU64LE(uint64(t.Amount)) } @@ -146,6 +146,6 @@ func (t *NEP5Transfer) DecodeBinary(r *io.BinReader) { r.ReadBytes(t.From[:]) r.ReadBytes(t.To[:]) t.Block = r.ReadU32LE() - t.Timestamp = r.ReadU32LE() + t.Timestamp = r.ReadU64LE() t.Amount = int64(r.ReadU64LE()) } diff --git a/pkg/core/util.go b/pkg/core/util.go index 465e90d11..5f93a09e5 100644 --- a/pkg/core/util.go +++ b/pkg/core/util.go @@ -41,7 +41,7 @@ func createGenesisBlock(cfg config.ProtocolConfiguration) (*block.Block, error) base := block.Base{ Version: 0, PrevHash: util.Uint256{}, - Timestamp: uint32(time.Date(2016, 7, 15, 15, 8, 21, 0, time.UTC).Unix()), + Timestamp: uint64(time.Date(2016, 7, 15, 15, 8, 21, 0, time.UTC).Unix()), Index: 0, ConsensusData: 2083236893, NextConsensus: nextConsensus, diff --git a/pkg/core/util_test.go b/pkg/core/util_test.go index a3b9fc001..77ec20cb6 100644 --- a/pkg/core/util_test.go +++ b/pkg/core/util_test.go @@ -20,7 +20,7 @@ func TestGenesisBlockMainNet(t *testing.T) { // have been changed. Consequently, hash of the genesis block has been changed. // Update expected genesis block hash for better times. // Old hash is "d42561e3d30e15be6400b6df2f328e02d2bf6354c41dce433bc57687c82144bf" - expect := "094c2c2db5dcb868d85aa4d652aed23bc67e7166f53223a228e382265b1be84b" + expect := "c8b1429f154c43321283bb634758951186c00bf4529187ed7e2ff2dadfdfc7a8" assert.Equal(t, expect, block.Hash().StringLE()) } diff --git a/pkg/network/payload/headers_test.go b/pkg/network/payload/headers_test.go index 729b258be..94ebdaf8b 100644 --- a/pkg/network/payload/headers_test.go +++ b/pkg/network/payload/headers_test.go @@ -1,7 +1,6 @@ package payload import ( - "encoding/hex" "testing" "github.com/nspcc-dev/neo-go/pkg/core/block" @@ -65,6 +64,8 @@ func testHeadersEncodeDecode(t *testing.T, headers *Headers, expected int, limit } } +//TODO NEO3.0: Update binary +/* func TestBinEncodeDecode(t *testing.T) { rawBlockHeaders := "010000000026b3c3df4dc1602a3b0e6989248b23275b5e4014a159af5dce69e16d4ab75f00f439321a51f425a530820cfe4d715bfd835b49687e87772f2c4737b8bc586dca7fda03580a000000bf14ff160228f0c059e75d652b5d3827bf04c165bbe9ef95cca4bf5501fd45014036fdd23248880c1c311bcd97df04fe6d740dc1bf340c26915f0466e31e81c039012eca7a760270389e04b58b99820fe49cf8c24c9afc65d696b4d3f406a1e6b5405172a9b461e68dd399c8716de11d31f7dd2ec3be327c636b024562db6ac5df1cffdbee74c994736fd49803234d2baffbc0054f28ba5ec76494a467b4106955bb4084af7746d269241628c667003e9d39288b190ad5cef218ada625cbba8be411bb153828d8d3634e8f586638e2448425bc5b671be69800392ccbdebc945a5099c7406f6a11824105ecad345e525957053e77fbc0119d6b3fa7f854527e816cfce0d95dac66888e07e8990c95103d8e46124aac16f152e088520d7ec8325e3a2456f840e5b77ef0e3c410b347ccaf8a87516d10b88d436563c80712153273993afc320ec49b638225f58de464a1345e62a564b398939f96f6f4b7cf21b583609f85495af1552102486fd15702c4490a26703112a5cc1d0923fd697a33406bd5a1c00e0013b09a7021024c7b7fb6c310fccf1ba33b082519d82964ea93868d676662d4a59ad548df0e7d2102aaec38470f6aad0042c6e877cfd8087d2676b0f516fddd362801b9bd3936399e2103b209fd4f53a7170ea4444e0cb0a6bb6a53c2bd016926989cf85f9b0fba17a70c2103b8d9d5771d8f513aa0869b9cc8d50986403b78c6da36890638c3d46a5adce04a2102ca0e27697b9c248f6f16e085fd0061e26f44da85b58ee835c110caa5ec3ba5542102df48f60e8f3e01c48ff40b9b7f1310d7a8b2a193188befe1c2e3df740e89509357ae00" @@ -84,3 +85,4 @@ func TestBinEncodeDecode(t *testing.T) { assert.NoError(t, err) assert.Equal(t, hex.EncodeToString(rawBlockBytes), hex.EncodeToString(data)) } +*/ diff --git a/pkg/rpc/client/rpc_test.go b/pkg/rpc/client/rpc_test.go index f630868b2..6e1c483bd 100644 --- a/pkg/rpc/client/rpc_test.go +++ b/pkg/rpc/client/rpc_test.go @@ -136,17 +136,17 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ invoke: func(c *Client) (interface{}, error) { return c.GetBlockByIndex(5) }, - serverResponse: `{"id":1,"jsonrpc":"2.0","result":"00000000b3aa04926a237abc2e54808fb10b5ca2394ae5ccfff17d60c1e393cfd418ed8f265f271088384b2f696e34bea0c8e02cf226351800c0866c1586be521536e579997c9d5e050000005704000000000000be48d3a3f5d10013ab9ffee489706078714f1ea201fd040140a6cc2c7fdee4f8fd97f84114d04edda16a37a4c088da9d5be3233e118fccdf73c0305d2cbd15ea0dbcedb594fec3044844e8f59f236ded7fccb1eda2eee2c76740197eba5d648d650ca1d73b8c0a0c7cdc22d31d7b2564764729d271e7ff6378c4f2228f657d65fec530f2af6cdc7af3bc2ab17a7b8175376601fb17ec951faf074038222bb0430f7808d333be3fb8e5b93c490dbb07e6c085350ba64cb7de61127067d1825de30915964dbb345f3b902d61dbf9a294c11ff6459000648f0dc4e66740926854a25b9ea87d7fffe0253bf2bcb3d153434cc0a8ba166136d16aef9a3de70ba3704ba3103a26d01c2bdbeb7262a19bbceab6a7487beba5e55f7ee768a0808b532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae010000d5040000be48d3a3f5d10013ab9ffee489706078714f1ea20500000000000001fd040140f50121bb6ec9d8e0d1c15eea66b2ff7b51bb1bc4b3da27d9eac1d46b59e6a319bb1db4eb710c7f1931b0c2deaa2389a0fc3fe8c761cec40906b7973450c43173402dc082417a6815e722216de0b857eda6c846bf435088d543d2ab89f1dd92488e87b4d2c6508b0db945cbe6968e85c1c6d57274bfc898e82876c5cb08613da5d64053100f0162a41709a37305c300e7d6ac0d46575aab98dade7375b8d9ca980086594f1288dc68da0e0e42913d1c68024f63442a79c9478971d3ad93c5467ec53040a1c3a772a88b09cba8cc8ec3b46c0c0db6ac86519a7fd7db29b43d34e804a22d8839eaeb35e2a1e05d591fbad4ae290b90c6dc02dddbe28b2b3bf0fec2a337dd8b532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae"}`, + serverResponse: `{"id":1,"jsonrpc":"2.0","result":"000000000c9e819ca13abd194ea86727f8dae2c28634a855836755bde0217125611aefe7675b5bd2a90a1f5e74b2e4386162240318f86534f4d3061722ba78b4fe10fe53a9d49e5e00000000050000005704000000000000d60ac443bb800fb08261e75fa5925d747d48586101fd0401407153238e784d759f1093e5911fcbb07f78af3f83a2159d59511b1c31dd4b70311feb9d63531427ac0e30dc3ae6656adda1f31713a7d56ff68a8764af523776cb4048630138d8d402902b66107ef9a50a227e1be8d8ce148f821e58f45430e59b8c034f1b5ed8208f7ce9711942405bb991d4e69232235bafa5476a8f30b92ac7e840947723eafcdfa2e9d75b551b5fc72bdb300cf541d84db5be4f2a5c33d45b0e3ae35a18c33af988c88dd201c823c15fced52eeed66d7defa3fcf7ea1587e8851c40365d8fdf714453d48f030cf3f7744b57d2cd35ad07a7980b58718e3da9e4dfe466f2e1089e8123dfc5d8d6fe679627ae78aa4cb4986cb4805d78becc009544c594534c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e4c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd624c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc24c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee6995450683073b3bb010000d5040000d60ac443bb800fb08261e75fa5925d747d4858610500000000000001fd040140947358ca2dd7543c3ff3f6ea1389a72c3d5ee99f47a9d0ef70bd84a9f57384e76271efc682f6741568c55907b1794b9f520f7d35f39382303bf0206945b5009a409f467419a886aebe6b482e6d5787981d98b58b82959a2858045bf5683665a5c25c502481b2d9655c902c5dcc147546bed58175c2ed16f328cc21e999e19741554063cab34f1613932947a1c346416b12b1ca724198016acc5fd760597539eed74f2069cfe2a8383e99595aefa3234d79d64a39e3f4c64e8cea800469a6f790999c408e2438fab244bdb79e67f6dab9cde0063e523bd0c175657a66e84897cd15eec8bf358661666679bf50334664872616faa366825f36873b16dd2add64c418cd5794534c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e4c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd624c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc24c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee6995450683073b3bb"}`, result: func(c *Client) interface{} { return &block.Block{} }, check: func(t *testing.T, c *Client, result interface{}) { res, ok := result.(*block.Block) require.True(t, ok) assert.Equal(t, uint32(0), res.Version) - assert.Equal(t, "66d1c140fbdc0eaa47e69a6a9c5034ebc3a449db98da565191ab863d1a079906", res.Hash().StringLE()) - assert.Equal(t, "8fed18d4cf93e3c1607df1ffcce54a39a25c0bb18f80542ebc7a236a9204aab3", res.PrevHash.StringLE()) - assert.Equal(t, "79e5361552be86156c86c000183526f22ce0c8a0be346e692f4b388810275f26", res.MerkleRoot.StringLE()) + assert.Equal(t, "d745190c4823eb4d97f7a40a907f931e05380c05070bd71cb09d832d7bca4bb8", res.Hash().StringLE()) + assert.Equal(t, "e7ef1a61257121e0bd55678355a83486c2e2daf82767a84e19bd3aa19c819e0c", res.PrevHash.StringLE()) + assert.Equal(t, "53fe10feb478ba221706d3f43465f8180324626138e4b2745e1f0aa9d25b5b67", res.MerkleRoot.StringLE()) assert.Equal(t, 1, len(res.Transactions)) - assert.Equal(t, "79e5361552be86156c86c000183526f22ce0c8a0be346e692f4b388810275f26", res.Transactions[0].Hash().StringLE()) + assert.Equal(t, "53fe10feb478ba221706d3f43465f8180324626138e4b2745e1f0aa9d25b5b67", res.Transactions[0].Hash().StringLE()) }, }, { @@ -232,23 +232,23 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ { name: "byHash_positive", invoke: func(c *Client) (interface{}, error) { - hash, err := util.Uint256DecodeStringLE("0699071a3d86ab915156da98db49a4c3eb34509c6a9ae647aa0edcfb40c1d166") + hash, err := util.Uint256DecodeStringLE("b84bca7b2d839db01cd70b07050c38051e937f900aa4f7974deb23480c1945d7") if err != nil { panic(err) } return c.GetBlockByHash(hash) }, - serverResponse: `{"id":1,"jsonrpc":"2.0","result":"00000000b3aa04926a237abc2e54808fb10b5ca2394ae5ccfff17d60c1e393cfd418ed8f265f271088384b2f696e34bea0c8e02cf226351800c0866c1586be521536e579997c9d5e050000005704000000000000be48d3a3f5d10013ab9ffee489706078714f1ea201fd040140a6cc2c7fdee4f8fd97f84114d04edda16a37a4c088da9d5be3233e118fccdf73c0305d2cbd15ea0dbcedb594fec3044844e8f59f236ded7fccb1eda2eee2c76740197eba5d648d650ca1d73b8c0a0c7cdc22d31d7b2564764729d271e7ff6378c4f2228f657d65fec530f2af6cdc7af3bc2ab17a7b8175376601fb17ec951faf074038222bb0430f7808d333be3fb8e5b93c490dbb07e6c085350ba64cb7de61127067d1825de30915964dbb345f3b902d61dbf9a294c11ff6459000648f0dc4e66740926854a25b9ea87d7fffe0253bf2bcb3d153434cc0a8ba166136d16aef9a3de70ba3704ba3103a26d01c2bdbeb7262a19bbceab6a7487beba5e55f7ee768a0808b532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae010000d5040000be48d3a3f5d10013ab9ffee489706078714f1ea20500000000000001fd040140f50121bb6ec9d8e0d1c15eea66b2ff7b51bb1bc4b3da27d9eac1d46b59e6a319bb1db4eb710c7f1931b0c2deaa2389a0fc3fe8c761cec40906b7973450c43173402dc082417a6815e722216de0b857eda6c846bf435088d543d2ab89f1dd92488e87b4d2c6508b0db945cbe6968e85c1c6d57274bfc898e82876c5cb08613da5d64053100f0162a41709a37305c300e7d6ac0d46575aab98dade7375b8d9ca980086594f1288dc68da0e0e42913d1c68024f63442a79c9478971d3ad93c5467ec53040a1c3a772a88b09cba8cc8ec3b46c0c0db6ac86519a7fd7db29b43d34e804a22d8839eaeb35e2a1e05d591fbad4ae290b90c6dc02dddbe28b2b3bf0fec2a337dd8b532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae"}`, + serverResponse: `{"id":1,"jsonrpc":"2.0","result":"000000000c9e819ca13abd194ea86727f8dae2c28634a855836755bde0217125611aefe7675b5bd2a90a1f5e74b2e4386162240318f86534f4d3061722ba78b4fe10fe53a9d49e5e00000000050000005704000000000000d60ac443bb800fb08261e75fa5925d747d48586101fd0401407153238e784d759f1093e5911fcbb07f78af3f83a2159d59511b1c31dd4b70311feb9d63531427ac0e30dc3ae6656adda1f31713a7d56ff68a8764af523776cb4048630138d8d402902b66107ef9a50a227e1be8d8ce148f821e58f45430e59b8c034f1b5ed8208f7ce9711942405bb991d4e69232235bafa5476a8f30b92ac7e840947723eafcdfa2e9d75b551b5fc72bdb300cf541d84db5be4f2a5c33d45b0e3ae35a18c33af988c88dd201c823c15fced52eeed66d7defa3fcf7ea1587e8851c40365d8fdf714453d48f030cf3f7744b57d2cd35ad07a7980b58718e3da9e4dfe466f2e1089e8123dfc5d8d6fe679627ae78aa4cb4986cb4805d78becc009544c594534c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e4c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd624c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc24c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee6995450683073b3bb010000d5040000d60ac443bb800fb08261e75fa5925d747d4858610500000000000001fd040140947358ca2dd7543c3ff3f6ea1389a72c3d5ee99f47a9d0ef70bd84a9f57384e76271efc682f6741568c55907b1794b9f520f7d35f39382303bf0206945b5009a409f467419a886aebe6b482e6d5787981d98b58b82959a2858045bf5683665a5c25c502481b2d9655c902c5dcc147546bed58175c2ed16f328cc21e999e19741554063cab34f1613932947a1c346416b12b1ca724198016acc5fd760597539eed74f2069cfe2a8383e99595aefa3234d79d64a39e3f4c64e8cea800469a6f790999c408e2438fab244bdb79e67f6dab9cde0063e523bd0c175657a66e84897cd15eec8bf358661666679bf50334664872616faa366825f36873b16dd2add64c418cd5794534c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e4c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd624c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc24c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee6995450683073b3bb"}`, result: func(c *Client) interface{} { return &block.Block{} }, check: func(t *testing.T, c *Client, result interface{}) { res, ok := result.(*block.Block) require.True(t, ok) assert.Equal(t, uint32(0), res.Version) - assert.Equal(t, "66d1c140fbdc0eaa47e69a6a9c5034ebc3a449db98da565191ab863d1a079906", res.Hash().StringLE()) - assert.Equal(t, "8fed18d4cf93e3c1607df1ffcce54a39a25c0bb18f80542ebc7a236a9204aab3", res.PrevHash.StringLE()) - assert.Equal(t, "79e5361552be86156c86c000183526f22ce0c8a0be346e692f4b388810275f26", res.MerkleRoot.StringLE()) + assert.Equal(t, "d745190c4823eb4d97f7a40a907f931e05380c05070bd71cb09d832d7bca4bb8", res.Hash().StringLE()) + assert.Equal(t, "e7ef1a61257121e0bd55678355a83486c2e2daf82767a84e19bd3aa19c819e0c", res.PrevHash.StringLE()) + assert.Equal(t, "53fe10feb478ba221706d3f43465f8180324626138e4b2745e1f0aa9d25b5b67", res.MerkleRoot.StringLE()) assert.Equal(t, 1, len(res.Transactions)) - assert.Equal(t, "79e5361552be86156c86c000183526f22ce0c8a0be346e692f4b388810275f26", res.Transactions[0].Hash().StringLE()) + assert.Equal(t, "53fe10feb478ba221706d3f43465f8180324626138e4b2745e1f0aa9d25b5b67", res.Transactions[0].Hash().StringLE()) }, }, { @@ -368,21 +368,21 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ { name: "positive", invoke: func(c *Client) (interface{}, error) { - hash, err := util.Uint256DecodeStringLE("e93d17a52967f9e69314385482bf86f85260e811b46bf4d4b261a7f4135a623c") + hash, err := util.Uint256DecodeStringLE("cac0ebfcf1230d0cd236f333dc659b232da612e7ee42bd80f9e6c8d0ce2fb542") if err != nil { panic(err) } return c.GetBlockHeader(hash) }, - serverResponse: `{"id":1,"jsonrpc":"2.0","result":"00000000999086db552ba8f84734bddca55b25a8d3d8c5f866f941209169c38d35376e99b29ffa96224227f5e033c9a291bceef2724429d596c3a6944cafd6995fdb6dcbe013dd5b010000004ded49fea284b451be48d3a3f5d10013ab9ffee489706078714f1ea201c340356a91d94e398170e47447d6a0f60aa5470e209782a5452403115a49166db3e1c4a3898122db19f779c30f8ccd0b7d401acdf71eda340655e4ae5237a64961bf4034dd47955e5a71627dafc39dd92999140e9eaeec6b11dbb2b313efa3f1093ed915b4455e199c69ec53778f94ffc236b92f8b97fff97a1f6bbb3770c0c0b3844a40fbe743bd5c90b2f5255e0b073281d7aeb2fb516572f36bec8446bcc37ac755cbf10d08b16c95644db1b2dddc2df5daa377880b20198fc7b967ac6e76474b22df8b532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae00"}`, + serverResponse: `{"id":1,"jsonrpc":"2.0","result":"0000000098166844503a270bf532addc3db1a30e22b5336594ed8944fceaaf8fe697013414aa46a5e3e62056c842d54ea5ba480fc448c498989f505bcae9ae4364436b9da5d49e5e00000000010000005704000000000000d60ac443bb800fb08261e75fa5925d747d48586101fd040140519e5dfec4f07533853ca092139070fb6f033f8ab03b226948ee35910767a2ec426ad16d70e6aaf6e70ba256c829c963efc61b450690f9f4c022ec345f4b698240527d91d454a488419f724f51f44b33f162a4c8dfe84775e3e178abe254c728fda5a81915b3fbd9d41c0609f3cd576ba65b767753b2d52e4f96ce1a9b1cdb1e364021d2d03a1b57ab5bb50ac19679f9543f10c8873ef9a8d4c236f9e022c0a60f684b78bf56bd2b5f82d0a8ed091cadd2f29a16a7e9f48f3feb723dcb7f26470f5e40f447d13062ab7ec4669b82d0da2d4e0165756b30c5f6b734cb2049d91ae0f8ab85ab52f476d825ea12f26cfaf6c8d6c662bb7e3442130785b2d12e3398ac204f94534c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e4c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd624c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc24c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee6995450683073b3bb00"}`, result: func(c *Client) interface{} { return &block.Header{} }, check: func(t *testing.T, c *Client, result interface{}) { res, ok := result.(*block.Header) require.True(t, ok) assert.Equal(t, uint32(0), res.Version) - assert.Equal(t, "e93d17a52967f9e69314385482bf86f85260e811b46bf4d4b261a7f4135a623c", res.Hash().StringLE()) - assert.Equal(t, "996e37358dc369912041f966f8c5d8d3a8255ba5dcbd3447f8a82b55db869099", res.PrevHash.StringLE()) - assert.Equal(t, "cb6ddb5f99d6af4c94a6c396d5294472f2eebc91a2c933e0f527422296fa9fb2", res.MerkleRoot.StringLE()) + assert.Equal(t, "cac0ebfcf1230d0cd236f333dc659b232da612e7ee42bd80f9e6c8d0ce2fb542", res.Hash().StringLE()) + assert.Equal(t, "340197e68fafeafc4489ed946533b5220ea3b13ddcad32f50b273a5044681698", res.PrevHash.StringLE()) + assert.Equal(t, "9d6b436443aee9ca5b509f9898c448c40f48baa54ed542c85620e6e3a546aa14", res.MerkleRoot.StringLE()) }, }, { @@ -646,19 +646,19 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ { name: "positive", invoke: func(c *Client) (i interface{}, err error) { - hash, err := util.Uint256DecodeStringLE("265f271088384b2f696e34bea0c8e02cf226351800c0866c1586be521536e579") + hash, err := util.Uint256DecodeStringLE("675b5bd2a90a1f5e74b2e4386162240318f86534f4d3061722ba78b4fe10fe53") if err != nil { panic(err) } return c.GetRawTransaction(hash) }, - serverResponse: `{"id":1,"jsonrpc":"2.0","result":"0000d5040000be48d3a3f5d10013ab9ffee489706078714f1ea20500000000000001fd040140f50121bb6ec9d8e0d1c15eea66b2ff7b51bb1bc4b3da27d9eac1d46b59e6a319bb1db4eb710c7f1931b0c2deaa2389a0fc3fe8c761cec40906b7973450c43173402dc082417a6815e722216de0b857eda6c846bf435088d543d2ab89f1dd92488e87b4d2c6508b0db945cbe6968e85c1c6d57274bfc898e82876c5cb08613da5d64053100f0162a41709a37305c300e7d6ac0d46575aab98dade7375b8d9ca980086594f1288dc68da0e0e42913d1c68024f63442a79c9478971d3ad93c5467ec53040a1c3a772a88b09cba8cc8ec3b46c0c0db6ac86519a7fd7db29b43d34e804a22d8839eaeb35e2a1e05d591fbad4ae290b90c6dc02dddbe28b2b3bf0fec2a337dd8b532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae"}`, + serverResponse: `{"id":1,"jsonrpc":"2.0","result":"0000d5040000d60ac443bb800fb08261e75fa5925d747d4858610500000000000001fd040140947358ca2dd7543c3ff3f6ea1389a72c3d5ee99f47a9d0ef70bd84a9f57384e76271efc682f6741568c55907b1794b9f520f7d35f39382303bf0206945b5009a409f467419a886aebe6b482e6d5787981d98b58b82959a2858045bf5683665a5c25c502481b2d9655c902c5dcc147546bed58175c2ed16f328cc21e999e19741554063cab34f1613932947a1c346416b12b1ca724198016acc5fd760597539eed74f2069cfe2a8383e99595aefa3234d79d64a39e3f4c64e8cea800469a6f790999c408e2438fab244bdb79e67f6dab9cde0063e523bd0c175657a66e84897cd15eec8bf358661666679bf50334664872616faa366825f36873b16dd2add64c418cd5794534c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e4c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd624c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc24c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee6995450683073b3bb"}`, result: func(c *Client) interface{} { return &transaction.Transaction{} }, check: func(t *testing.T, c *Client, result interface{}) { res, ok := result.(*transaction.Transaction) require.True(t, ok) assert.Equal(t, uint8(0), res.Version) - assert.Equal(t, "265f271088384b2f696e34bea0c8e02cf226351800c0866c1586be521536e579", res.Hash().StringBE()) + assert.Equal(t, "675b5bd2a90a1f5e74b2e4386162240318f86534f4d3061722ba78b4fe10fe53", res.Hash().StringBE()) assert.Equal(t, transaction.MinerType, res.Type) assert.Equal(t, false, res.Trimmed) }, @@ -709,7 +709,7 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ NetFee: 0, Blockhash: blockHash, Confirmations: 205, - Timestamp: uint32(1587379353), + Timestamp: uint64(1587379353), }, } }, diff --git a/pkg/rpc/response/result/block.go b/pkg/rpc/response/result/block.go index 8f02a2999..74509d1a9 100644 --- a/pkg/rpc/response/result/block.go +++ b/pkg/rpc/response/result/block.go @@ -36,7 +36,7 @@ type ( NextBlockHash *util.Uint256 `json:"nextblockhash,omitempty"` PreviousBlockHash util.Uint256 `json:"previousblockhash"` MerkleRoot util.Uint256 `json:"merkleroot"` - Time uint32 `json:"time"` + Time uint64 `json:"time"` Index uint32 `json:"index"` Nonce string `json:"nonce"` NextConsensus string `json:"nextconsensus"` diff --git a/pkg/rpc/response/result/block_header.go b/pkg/rpc/response/result/block_header.go index 886903500..614b400ed 100644 --- a/pkg/rpc/response/result/block_header.go +++ b/pkg/rpc/response/result/block_header.go @@ -20,7 +20,7 @@ type ( Version uint32 `json:"version"` PrevBlockHash util.Uint256 `json:"previousblockhash"` MerkleRoot util.Uint256 `json:"merkleroot"` - Timestamp uint32 `json:"time"` + Timestamp uint64 `json:"time"` Index uint32 `json:"index"` Nonce string `json:"nonce"` NextConsensus string `json:"nextconsensus"` diff --git a/pkg/rpc/response/result/nep5.go b/pkg/rpc/response/result/nep5.go index 897c82345..fb906192b 100644 --- a/pkg/rpc/response/result/nep5.go +++ b/pkg/rpc/response/result/nep5.go @@ -35,7 +35,7 @@ type NEP5Transfers struct { // NEP5Transfer represents single NEP5 transfer event. type NEP5Transfer struct { - Timestamp uint32 `json:"timestamp"` + Timestamp uint64 `json:"timestamp"` Asset util.Uint160 `json:"asset_hash"` Address string `json:"transfer_address,omitempty"` Amount string `json:"amount"` diff --git a/pkg/rpc/response/result/tx_raw_output.go b/pkg/rpc/response/result/tx_raw_output.go index 3c0269022..886d865ed 100644 --- a/pkg/rpc/response/result/tx_raw_output.go +++ b/pkg/rpc/response/result/tx_raw_output.go @@ -23,7 +23,7 @@ type TransactionMetadata struct { NetFee util.Fixed8 `json:"net_fee"` Blockhash util.Uint256 `json:"blockhash,omitempty"` Confirmations int `json:"confirmations,omitempty"` - Timestamp uint32 `json:"blocktime,omitempty"` + Timestamp uint64 `json:"blocktime,omitempty"` } // NewTransactionOutputRaw returns a new ransactionOutputRaw object. diff --git a/pkg/rpc/server/server_test.go b/pkg/rpc/server/server_test.go index ab5e059de..733190075 100644 --- a/pkg/rpc/server/server_test.go +++ b/pkg/rpc/server/server_test.go @@ -1049,7 +1049,7 @@ func newBlock(t *testing.T, bc blockchainer.Blockchainer, index uint32, txs ...* b := &block.Block{ Base: block.Base{ PrevHash: hdr.Hash(), - Timestamp: uint32(time.Now().UTC().Unix()) + hdr.Index, + Timestamp: uint64(time.Now().UTC().Unix()) + uint64(hdr.Index), Index: hdr.Index + index, ConsensusData: 1111, NextConsensus: witness.ScriptHash(), diff --git a/pkg/rpc/server/testdata/testblocks.acc b/pkg/rpc/server/testdata/testblocks.acc index ba7136e2697c18ed16dcb414fe147ef9251ec864..520c80ca2b8544e63efb43356e956278283336be 100644 GIT binary patch delta 69423 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 b_xuSG5vYL5v8avA%8mbL9a|AXyF>m5JY95i delta 68481 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

)a7rzOG8?z(~=+g<%2@)zQ1%NoJd^R+GFBu-zH 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 Date: Fri, 24 Apr 2020 12:49:17 +0300 Subject: [PATCH 2/7] core, consensus: nanoseconds-precision timestamp Keep timestamp of consensus messages in nanoseconds-precision state --- go.mod | 2 +- go.sum | 2 ++ pkg/consensus/block.go | 4 ++-- pkg/consensus/block_test.go | 7 ++++++- pkg/consensus/prepare_request.go | 4 ++-- pkg/consensus/prepare_request_test.go | 7 ++++++- pkg/core/block/block_base.go | 1 + pkg/core/block/header_test.go | 2 +- pkg/rpc/server/server_test.go | 2 +- 9 files changed, 22 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index 06bce704d..636d7071e 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/go-redis/redis v6.10.2+incompatible github.com/go-yaml/yaml v2.1.0+incompatible github.com/mr-tron/base58 v1.1.2 - github.com/nspcc-dev/dbft v0.0.0-20200427132226-660464796c11 + github.com/nspcc-dev/dbft v0.0.0-20200427132226-15a7927772a4 github.com/nspcc-dev/rfc6979 v0.2.0 github.com/pkg/errors v0.8.1 github.com/prometheus/client_golang v1.2.1 diff --git a/go.sum b/go.sum index 003de7aad..7f8283738 100644 --- a/go.sum +++ b/go.sum @@ -131,6 +131,8 @@ github.com/nspcc-dev/dbft v0.0.0-20200219114139-199d286ed6c1 h1:yEx9WznS+rjE0jl0 github.com/nspcc-dev/dbft v0.0.0-20200219114139-199d286ed6c1/go.mod h1:O0qtn62prQSqizzoagHmuuKoz8QMkU3SzBoKdEvm3aQ= github.com/nspcc-dev/dbft v0.0.0-20200303183127-36d3da79c682 h1:63OWUolW4GcjJR7cThq8hLnMLTwL+sjO3Qf4fo4sx8w= github.com/nspcc-dev/dbft v0.0.0-20200303183127-36d3da79c682/go.mod h1:1FYQXSbb6/9HQIkoF8XO7W/S8N7AZRkBsgwbcXRvk0E= +github.com/nspcc-dev/dbft v0.0.0-20200427132226-15a7927772a4 h1:3cFSp4v2u9+S7K1GdLUOP1680EiGEHSBvSI6G2n8XzY= +github.com/nspcc-dev/dbft v0.0.0-20200427132226-15a7927772a4/go.mod h1:1FYQXSbb6/9HQIkoF8XO7W/S8N7AZRkBsgwbcXRvk0E= github.com/nspcc-dev/dbft v0.0.0-20200427132226-660464796c11 h1:sledsmRo0wzgWNCZir5/CeM0PjhHVP8khnGtOfBCFWk= github.com/nspcc-dev/dbft v0.0.0-20200427132226-660464796c11/go.mod h1:1FYQXSbb6/9HQIkoF8XO7W/S8N7AZRkBsgwbcXRvk0E= github.com/nspcc-dev/neo-go v0.73.1-pre.0.20200303142215-f5a1b928ce09/go.mod h1:pPYwPZ2ks+uMnlRLUyXOpLieaDQSEaf4NM3zHVbRjmg= diff --git a/pkg/consensus/block.go b/pkg/consensus/block.go index e907813af..845e6a2d7 100644 --- a/pkg/consensus/block.go +++ b/pkg/consensus/block.go @@ -74,10 +74,10 @@ func (n *neoBlock) MerkleRoot() util.Uint256 { return n.Block.MerkleRoot } func (n *neoBlock) SetMerkleRoot(r util.Uint256) { n.Block.MerkleRoot = r } // Timestamp implements block.Block interface. -func (n *neoBlock) Timestamp() uint64 { return n.Block.Timestamp } +func (n *neoBlock) Timestamp() uint64 { return n.Block.Timestamp * 1000000 } // SetTimestamp implements block.Block interface. -func (n *neoBlock) SetTimestamp(ts uint64) { n.Block.Timestamp = ts } +func (n *neoBlock) SetTimestamp(ts uint64) { n.Block.Timestamp = ts / 1000000 } // Index implements block.Block interface. func (n *neoBlock) Index() uint32 { return n.Block.Index } diff --git a/pkg/consensus/block_test.go b/pkg/consensus/block_test.go index 0e9edf915..b95072601 100644 --- a/pkg/consensus/block_test.go +++ b/pkg/consensus/block_test.go @@ -29,7 +29,12 @@ func TestNeoBlock_Setters(t *testing.T) { require.EqualValues(t, 12, b.Index()) b.SetTimestamp(777) - require.EqualValues(t, 777, b.Timestamp()) + // 777ns -> 0ms -> 0ns + require.EqualValues(t, 0, b.Timestamp()) + + b.SetTimestamp(7777777) + // 7777777ns -> 7ms -> 7000000ns + require.EqualValues(t, 7000000, b.Timestamp()) b.SetConsensusData(456) require.EqualValues(t, 456, b.ConsensusData()) diff --git a/pkg/consensus/prepare_request.go b/pkg/consensus/prepare_request.go index bcb5a5e42..b9b5ec76d 100644 --- a/pkg/consensus/prepare_request.go +++ b/pkg/consensus/prepare_request.go @@ -37,10 +37,10 @@ func (p *prepareRequest) DecodeBinary(r *io.BinReader) { } // Timestamp implements payload.PrepareRequest interface. -func (p *prepareRequest) Timestamp() uint64 { return p.timestamp } +func (p *prepareRequest) Timestamp() uint64 { return p.timestamp * 1000000 } // SetTimestamp implements payload.PrepareRequest interface. -func (p *prepareRequest) SetTimestamp(ts uint64) { p.timestamp = ts } +func (p *prepareRequest) SetTimestamp(ts uint64) { p.timestamp = ts / 1000000 } // Nonce implements payload.PrepareRequest interface. func (p *prepareRequest) Nonce() uint64 { return p.nonce } diff --git a/pkg/consensus/prepare_request_test.go b/pkg/consensus/prepare_request_test.go index d7a3473b9..4b91e6cfb 100644 --- a/pkg/consensus/prepare_request_test.go +++ b/pkg/consensus/prepare_request_test.go @@ -12,7 +12,12 @@ func TestPrepareRequest_Setters(t *testing.T) { var p prepareRequest p.SetTimestamp(123) - require.EqualValues(t, 123, p.Timestamp()) + // 123ns -> 0ms -> 0ns + require.EqualValues(t, 0, p.Timestamp()) + + p.SetTimestamp(1230000) + // 1230000ns -> 1ms -> 1000000ns + require.EqualValues(t, 1000000, p.Timestamp()) p.SetNextConsensus(util.Uint160{5, 6, 7}) require.Equal(t, util.Uint160{5, 6, 7}, p.NextConsensus()) diff --git a/pkg/core/block/block_base.go b/pkg/core/block/block_base.go index e1e142062..f32e17b05 100644 --- a/pkg/core/block/block_base.go +++ b/pkg/core/block/block_base.go @@ -20,6 +20,7 @@ type Base struct { // Root hash of a transaction list. MerkleRoot util.Uint256 `json:"merkleroot"` + // Timestamp is a millisecond-precision timestamp. // The time stamp of each block must be later than previous block's time stamp. // Generally the difference of two block's time stamp is about 15 seconds and imprecision is allowed. // The height of the block must be exactly equal to the height of the previous block plus 1. diff --git a/pkg/core/block/header_test.go b/pkg/core/block/header_test.go index f0820f120..35f669917 100644 --- a/pkg/core/block/header_test.go +++ b/pkg/core/block/header_test.go @@ -16,7 +16,7 @@ func TestHeaderEncodeDecode(t *testing.T) { Version: 0, PrevHash: hash.Sha256([]byte("prevhash")), MerkleRoot: hash.Sha256([]byte("merkleroot")), - Timestamp: uint64(time.Now().UTC().Unix()), + Timestamp: uint64(time.Now().UTC().Unix() * 1000), Index: 3445, ConsensusData: 394949, NextConsensus: util.Uint160{}, diff --git a/pkg/rpc/server/server_test.go b/pkg/rpc/server/server_test.go index 733190075..ed5e4b9f5 100644 --- a/pkg/rpc/server/server_test.go +++ b/pkg/rpc/server/server_test.go @@ -1049,7 +1049,7 @@ func newBlock(t *testing.T, bc blockchainer.Blockchainer, index uint32, txs ...* b := &block.Block{ Base: block.Base{ PrevHash: hdr.Hash(), - Timestamp: uint64(time.Now().UTC().Unix()) + uint64(hdr.Index), + Timestamp: (uint64(time.Now().UTC().Unix()) + uint64(hdr.Index)) * 1000, Index: hdr.Index + index, ConsensusData: 1111, NextConsensus: witness.ScriptHash(), From 55fd9f8d24cf2c2677ced90cd1b2258347335cb5 Mon Sep 17 00:00:00 2001 From: Anna Shaleva Date: Wed, 22 Apr 2020 08:57:55 +0300 Subject: [PATCH 3/7] core: change block.ConsensusData to neo3 format 1. Dropped `Base.ConsensusData` block field 2. Added `Block.ConsensusData` field with `Nonce` and `PrimaryIndex` 3. Removed "Neo.Header.GetConsensusData" and "AntShares.Header.GetConsensusData" interops --- pkg/consensus/block.go | 4 +- pkg/core/block/block.go | 72 ++++++++++++++---- pkg/core/block/block_base.go | 5 -- pkg/core/block/block_test.go | 5 +- pkg/core/block/consensus_data.go | 52 +++++++++++++ pkg/core/block/header_test.go | 2 - pkg/core/helper_test.go | 10 ++- pkg/core/interop_neo.go | 10 --- pkg/core/interop_neo_test.go | 10 --- pkg/core/interops.go | 2 - pkg/core/interops_test.go | 1 - pkg/core/util.go | 5 +- pkg/core/util_test.go | 2 +- pkg/rpc/client/rpc_test.go | 97 +++++++++++++----------- pkg/rpc/response/result/block.go | 17 ++++- pkg/rpc/response/result/block_header.go | 4 - pkg/rpc/server/server_test.go | 7 +- pkg/rpc/server/testdata/testblocks.acc | Bin 205089 -> 205297 bytes 18 files changed, 196 insertions(+), 109 deletions(-) create mode 100644 pkg/core/block/consensus_data.go diff --git a/pkg/consensus/block.go b/pkg/consensus/block.go index 845e6a2d7..cd6ccb5d6 100644 --- a/pkg/consensus/block.go +++ b/pkg/consensus/block.go @@ -86,10 +86,10 @@ func (n *neoBlock) Index() uint32 { return n.Block.Index } func (n *neoBlock) SetIndex(i uint32) { n.Block.Index = i } // ConsensusData implements block.Block interface. -func (n *neoBlock) ConsensusData() uint64 { return n.Block.ConsensusData } +func (n *neoBlock) ConsensusData() uint64 { return n.Block.ConsensusData.Nonce } // SetConsensusData implements block.Block interface. -func (n *neoBlock) SetConsensusData(nonce uint64) { n.Block.ConsensusData = nonce } +func (n *neoBlock) SetConsensusData(nonce uint64) { n.Block.ConsensusData.Nonce = nonce } // NextConsensus implements block.Block interface. func (n *neoBlock) NextConsensus() util.Uint160 { return n.Block.NextConsensus } diff --git a/pkg/core/block/block.go b/pkg/core/block/block.go index 37ec73847..846069335 100644 --- a/pkg/core/block/block.go +++ b/pkg/core/block/block.go @@ -16,6 +16,9 @@ type Block struct { // The base of the block. Base + // Primary index and nonce + ConsensusData ConsensusData `json:"consensus_data"` + // Transaction list. Transactions []*transaction.Transaction `json:"tx"` @@ -30,10 +33,12 @@ func (b *Block) Header() *Header { } } -func merkleTreeFromTransactions(txes []*transaction.Transaction) (*hash.MerkleTree, error) { - hashes := make([]util.Uint256, len(txes)) - for i, tx := range txes { - hashes[i] = tx.Hash() +// computeMerkleTree computes Merkle tree based on actual block's data. +func (b *Block) computeMerkleTree() (*hash.MerkleTree, error) { + hashes := make([]util.Uint256, len(b.Transactions)+1) + hashes[0] = b.ConsensusData.Hash() + for i, tx := range b.Transactions { + hashes[i+1] = tx.Hash() } return hash.NewMerkleTree(hashes) @@ -41,7 +46,7 @@ func merkleTreeFromTransactions(txes []*transaction.Transaction) (*hash.MerkleTr // RebuildMerkleRoot rebuilds the merkleroot of the block. func (b *Block) RebuildMerkleRoot() error { - merkle, err := merkleTreeFromTransactions(b.Transactions) + merkle, err := b.computeMerkleTree() if err != nil { return err } @@ -66,7 +71,7 @@ func (b *Block) Verify() error { return fmt.Errorf("miner transaction %s is not the first one", tx.Hash().StringLE()) } } - merkle, err := merkleTreeFromTransactions(b.Transactions) + merkle, err := b.computeMerkleTree() if err != nil { return err } @@ -92,12 +97,18 @@ func NewBlockFromTrimmedBytes(b []byte) (*Block, error) { block.Script.DecodeBinary(br) - lenTX := br.ReadVarUint() - block.Transactions = make([]*transaction.Transaction, lenTX) - for i := 0; i < int(lenTX); i++ { - var hash util.Uint256 - hash.DecodeBinary(br) - block.Transactions[i] = transaction.NewTrimmedTX(hash) + lenHashes := br.ReadVarUint() + if lenHashes > 0 { + var consensusDataHash util.Uint256 + consensusDataHash.DecodeBinary(br) + lenTX := lenHashes - 1 + block.Transactions = make([]*transaction.Transaction, lenTX) + for i := 0; i < int(lenTX); i++ { + var hash util.Uint256 + hash.DecodeBinary(br) + block.Transactions[i] = transaction.NewTrimmedTX(hash) + } + block.ConsensusData.DecodeBinary(br) } return block, br.Err @@ -112,14 +123,20 @@ func (b *Block) Trim() ([]byte, error) { buf.WriteB(1) b.Script.EncodeBinary(buf.BinWriter) - buf.WriteVarUint(uint64(len(b.Transactions))) + buf.WriteVarUint(uint64(len(b.Transactions)) + 1) + hash := b.ConsensusData.Hash() + hash.EncodeBinary(buf.BinWriter) + for _, tx := range b.Transactions { h := tx.Hash() h.EncodeBinary(buf.BinWriter) } + + b.ConsensusData.EncodeBinary(buf.BinWriter) if buf.Err != nil { return nil, buf.Err } + return buf.Bytes(), nil } @@ -127,14 +144,39 @@ func (b *Block) Trim() ([]byte, error) { // Serializable interface. func (b *Block) DecodeBinary(br *io.BinReader) { b.Base.DecodeBinary(br) - br.ReadArray(&b.Transactions) + contentsCount := br.ReadVarUint() + if contentsCount == 0 { + br.Err = errors.New("invalid block format") + return + } + b.ConsensusData.DecodeBinary(br) + txes := make([]*transaction.Transaction, contentsCount-1) + for i := 0; i < int(contentsCount)-1; i++ { + tx := new(transaction.Transaction) + tx.DecodeBinary(br) + txes[i] = tx + } + b.Transactions = txes + merkle, err := b.computeMerkleTree() + if err != nil { + br.Err = err + return + } + if !b.MerkleRoot.Equals(merkle.Root()) { + br.Err = errors.New("MerkleRoot mismatch") + return + } } // EncodeBinary encodes the block to the given BinWriter, implementing // Serializable interface. func (b *Block) EncodeBinary(bw *io.BinWriter) { b.Base.EncodeBinary(bw) - bw.WriteArray(b.Transactions) + bw.WriteVarUint(uint64(len(b.Transactions) + 1)) + b.ConsensusData.EncodeBinary(bw) + for i := 0; i < len(b.Transactions); i++ { + b.Transactions[i].EncodeBinary(bw) + } } // Compare implements the queue Item interface. diff --git a/pkg/core/block/block_base.go b/pkg/core/block/block_base.go index f32e17b05..3b4073a5a 100644 --- a/pkg/core/block/block_base.go +++ b/pkg/core/block/block_base.go @@ -29,9 +29,6 @@ type Base struct { // index/height of the block Index uint32 `json:"height"` - // Random number also called nonce - ConsensusData uint64 `json:"nonce"` - // Contract address of the next miner NextConsensus util.Uint160 `json:"next_consensus"` @@ -120,7 +117,6 @@ func (b *Base) encodeHashableFields(bw *io.BinWriter) { bw.WriteBytes(b.MerkleRoot[:]) bw.WriteU64LE(b.Timestamp) bw.WriteU32LE(b.Index) - bw.WriteU64LE(b.ConsensusData) bw.WriteBytes(b.NextConsensus[:]) } @@ -132,7 +128,6 @@ func (b *Base) decodeHashableFields(br *io.BinReader) { br.ReadBytes(b.MerkleRoot[:]) b.Timestamp = br.ReadU64LE() b.Index = br.ReadU32LE() - b.ConsensusData = br.ReadU64LE() br.ReadBytes(b.NextConsensus[:]) // Make the hash of the block here so we dont need to do this diff --git a/pkg/core/block/block_test.go b/pkg/core/block/block_test.go index 7fafc2c58..534002903 100644 --- a/pkg/core/block/block_test.go +++ b/pkg/core/block/block_test.go @@ -73,13 +73,16 @@ func newDumbBlock() *Block { MerkleRoot: hash.Sha256([]byte("b")), Timestamp: 100500, Index: 1, - ConsensusData: 1111, NextConsensus: hash.Hash160([]byte("a")), Script: transaction.Witness{ VerificationScript: []byte{0x51}, // PUSH1 InvocationScript: []byte{0x61}, // NOP }, }, + ConsensusData: ConsensusData{ + PrimaryIndex: 0, + Nonce: 1111, + }, Transactions: []*transaction.Transaction{ transaction.NewMinerTX(), transaction.NewIssueTX(), diff --git a/pkg/core/block/consensus_data.go b/pkg/core/block/consensus_data.go new file mode 100644 index 000000000..ef8cc6f95 --- /dev/null +++ b/pkg/core/block/consensus_data.go @@ -0,0 +1,52 @@ +package block + +import ( + "github.com/nspcc-dev/neo-go/pkg/crypto/hash" + "github.com/nspcc-dev/neo-go/pkg/io" + "github.com/nspcc-dev/neo-go/pkg/util" +) + +// ConsensusData represents primary index and nonce of block in the chain. +type ConsensusData struct { + // Primary index + PrimaryIndex uint32 `json:"primary"` + // Random number + Nonce uint64 `json:"nonce"` + // Hash of the ConsensusData (single SHA256) + hash util.Uint256 +} + +// DecodeBinary implements Serializable interface. +func (c *ConsensusData) DecodeBinary(br *io.BinReader) { + c.PrimaryIndex = uint32(br.ReadVarUint()) + c.Nonce = br.ReadU64LE() +} + +// EncodeBinary encodes implements Serializable interface. +func (c *ConsensusData) EncodeBinary(bw *io.BinWriter) { + bw.WriteVarUint(uint64(c.PrimaryIndex)) + bw.WriteU64LE(c.Nonce) +} + +// Hash returns the hash of the consensus data. +func (c *ConsensusData) Hash() util.Uint256 { + if c.hash.Equals(util.Uint256{}) { + if c.createHash() != nil { + panic("failed to compute hash!") + } + } + return c.hash +} + +// createHash creates the hash of the consensus data. +func (c *ConsensusData) createHash() error { + buf := io.NewBufBinWriter() + c.EncodeBinary(buf.BinWriter) + if buf.Err != nil { + return buf.Err + } + + b := buf.Bytes() + c.hash = hash.Sha256(b) + return nil +} diff --git a/pkg/core/block/header_test.go b/pkg/core/block/header_test.go index 35f669917..989920fbf 100644 --- a/pkg/core/block/header_test.go +++ b/pkg/core/block/header_test.go @@ -18,7 +18,6 @@ func TestHeaderEncodeDecode(t *testing.T) { MerkleRoot: hash.Sha256([]byte("merkleroot")), Timestamp: uint64(time.Now().UTC().Unix() * 1000), Index: 3445, - ConsensusData: 394949, NextConsensus: util.Uint160{}, Script: transaction.Witness{ InvocationScript: []byte{0x10}, @@ -34,7 +33,6 @@ func TestHeaderEncodeDecode(t *testing.T) { assert.Equal(t, header.PrevHash, headerDecode.PrevHash, "expected both prev hashes to be equal") assert.Equal(t, header.MerkleRoot, headerDecode.MerkleRoot, "expected both merkle roots to be equal") assert.Equal(t, header.Index, headerDecode.Index, "expected both indexes to be equal") - assert.Equal(t, header.ConsensusData, headerDecode.ConsensusData, "expected both consensus data fields to be equal") assert.Equal(t, header.NextConsensus, headerDecode.NextConsensus, "expected both next consensus fields to be equal") assert.Equal(t, header.Script.InvocationScript, headerDecode.Script.InvocationScript, "expected equal invocation scripts") assert.Equal(t, header.Script.VerificationScript, headerDecode.Script.VerificationScript, "expected equal verification scripts") diff --git a/pkg/core/helper_test.go b/pkg/core/helper_test.go index 048c87b67..8853e3571 100644 --- a/pkg/core/helper_test.go +++ b/pkg/core/helper_test.go @@ -63,10 +63,13 @@ func newBlock(cfg config.ProtocolConfiguration, index uint32, prev util.Uint256, PrevHash: prev, Timestamp: uint64(time.Now().UTC().Unix()) + uint64(index), Index: index, - ConsensusData: 1111, NextConsensus: witness.ScriptHash(), Script: witness, }, + ConsensusData: block.ConsensusData{ + PrimaryIndex: 0, + Nonce: 1111, + }, Transactions: txs, } _ = b.RebuildMerkleRoot() @@ -132,13 +135,16 @@ func newDumbBlock() *block.Block { MerkleRoot: hash.Sha256([]byte("b")), Timestamp: 100500, Index: 1, - ConsensusData: 1111, NextConsensus: hash.Hash160([]byte("a")), Script: transaction.Witness{ VerificationScript: []byte{0x51}, // PUSH1 InvocationScript: []byte{0x61}, // NOP }, }, + ConsensusData: block.ConsensusData{ + PrimaryIndex: 0, + Nonce: 1111, + }, Transactions: []*transaction.Transaction{ {Type: transaction.MinerType}, {Type: transaction.IssueType}, diff --git a/pkg/core/interop_neo.go b/pkg/core/interop_neo.go index 065ecd8e5..6dcc1f9b9 100644 --- a/pkg/core/interop_neo.go +++ b/pkg/core/interop_neo.go @@ -48,16 +48,6 @@ func headerGetVersion(ic *interop.Context, v *vm.VM) error { return nil } -// headerGetConsensusData returns consensus data from the header. -func headerGetConsensusData(ic *interop.Context, v *vm.VM) error { - header, err := popHeaderFromVM(v) - if err != nil { - return err - } - v.Estack().PushVal(header.ConsensusData) - return nil -} - // headerGetMerkleRoot returns version from the header. func headerGetMerkleRoot(ic *interop.Context, v *vm.VM) error { header, err := popHeaderFromVM(v) diff --git a/pkg/core/interop_neo_test.go b/pkg/core/interop_neo_test.go index d7625d681..24835af64 100644 --- a/pkg/core/interop_neo_test.go +++ b/pkg/core/interop_neo_test.go @@ -136,16 +136,6 @@ func TestHeaderGetVersion_Negative(t *testing.T) { require.Errorf(t, err, "value is not a header or block") } -func TestHeaderGetConsensusData(t *testing.T) { - v, block, context, chain := createVMAndPushBlock(t) - defer chain.Close() - - err := headerGetConsensusData(context, v) - require.NoError(t, err) - value := v.Estack().Pop().Value().(*big.Int) - require.Equal(t, block.ConsensusData, value.Uint64()) -} - func TestHeaderGetMerkleRoot(t *testing.T) { v, block, context, chain := createVMAndPushBlock(t) defer chain.Close() diff --git a/pkg/core/interops.go b/pkg/core/interops.go index 0f2c2c203..93b03d778 100644 --- a/pkg/core/interops.go +++ b/pkg/core/interops.go @@ -151,7 +151,6 @@ var neoInterops = []interop.Function{ {Name: "Neo.Enumerator.Create", Func: enumerator.Create, Price: 1}, {Name: "Neo.Enumerator.Next", Func: enumerator.Next, Price: 1}, {Name: "Neo.Enumerator.Value", Func: enumerator.Value, Price: 1}, - {Name: "Neo.Header.GetConsensusData", Func: headerGetConsensusData, Price: 1}, {Name: "Neo.Header.GetHash", Func: headerGetHash, Price: 1}, {Name: "Neo.Header.GetIndex", Func: headerGetIndex, Price: 1}, {Name: "Neo.Header.GetMerkleRoot", Func: headerGetMerkleRoot, Price: 1}, @@ -229,7 +228,6 @@ var neoInterops = []interop.Function{ {Name: "AntShares.Contract.GetScript", Func: contractGetScript, Price: 1}, {Name: "AntShares.Contract.GetStorageContext", Func: contractGetStorageContext, Price: 1}, {Name: "AntShares.Contract.Migrate", Func: contractMigrate, Price: 0}, - {Name: "AntShares.Header.GetConsensusData", Func: headerGetConsensusData, Price: 1}, {Name: "AntShares.Header.GetHash", Func: headerGetHash, Price: 1}, {Name: "AntShares.Header.GetMerkleRoot", Func: headerGetMerkleRoot, Price: 1}, {Name: "AntShares.Header.GetNextConsensus", Func: headerGetNextConsensus, Price: 1}, diff --git a/pkg/core/interops_test.go b/pkg/core/interops_test.go index 70dd25c8c..c1ca1bdfa 100644 --- a/pkg/core/interops_test.go +++ b/pkg/core/interops_test.go @@ -51,7 +51,6 @@ func TestUnexpectedNonInterops(t *testing.T) { contractGetScript, contractGetStorageContext, contractIsPayable, - headerGetConsensusData, headerGetHash, headerGetIndex, headerGetMerkleRoot, diff --git a/pkg/core/util.go b/pkg/core/util.go index 5f93a09e5..e0d0fedf0 100644 --- a/pkg/core/util.go +++ b/pkg/core/util.go @@ -43,7 +43,6 @@ func createGenesisBlock(cfg config.ProtocolConfiguration) (*block.Block, error) PrevHash: util.Uint256{}, Timestamp: uint64(time.Date(2016, 7, 15, 15, 8, 21, 0, time.UTC).Unix()), Index: 0, - ConsensusData: 2083236893, NextConsensus: nextConsensus, Script: transaction.Witness{ InvocationScript: []byte{}, @@ -90,6 +89,10 @@ func createGenesisBlock(cfg config.ProtocolConfiguration) (*block.Block, error) issueTx, deployNativeContracts(), }, + ConsensusData: block.ConsensusData{ + PrimaryIndex: 0, + Nonce: 2083236893, + }, } if err = b.RebuildMerkleRoot(); err != nil { diff --git a/pkg/core/util_test.go b/pkg/core/util_test.go index 77ec20cb6..7b033406a 100644 --- a/pkg/core/util_test.go +++ b/pkg/core/util_test.go @@ -20,7 +20,7 @@ func TestGenesisBlockMainNet(t *testing.T) { // have been changed. Consequently, hash of the genesis block has been changed. // Update expected genesis block hash for better times. // Old hash is "d42561e3d30e15be6400b6df2f328e02d2bf6354c41dce433bc57687c82144bf" - expect := "c8b1429f154c43321283bb634758951186c00bf4529187ed7e2ff2dadfdfc7a8" + expect := "4dce83edc5bb9cbdf23d37cfb81dd3c8fc0c331c608d2d893289ae36a62a41eb" assert.Equal(t, expect, block.Hash().StringLE()) } diff --git a/pkg/rpc/client/rpc_test.go b/pkg/rpc/client/rpc_test.go index 6e1c483bd..675d644d5 100644 --- a/pkg/rpc/client/rpc_test.go +++ b/pkg/rpc/client/rpc_test.go @@ -136,17 +136,17 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ invoke: func(c *Client) (interface{}, error) { return c.GetBlockByIndex(5) }, - serverResponse: `{"id":1,"jsonrpc":"2.0","result":"000000000c9e819ca13abd194ea86727f8dae2c28634a855836755bde0217125611aefe7675b5bd2a90a1f5e74b2e4386162240318f86534f4d3061722ba78b4fe10fe53a9d49e5e00000000050000005704000000000000d60ac443bb800fb08261e75fa5925d747d48586101fd0401407153238e784d759f1093e5911fcbb07f78af3f83a2159d59511b1c31dd4b70311feb9d63531427ac0e30dc3ae6656adda1f31713a7d56ff68a8764af523776cb4048630138d8d402902b66107ef9a50a227e1be8d8ce148f821e58f45430e59b8c034f1b5ed8208f7ce9711942405bb991d4e69232235bafa5476a8f30b92ac7e840947723eafcdfa2e9d75b551b5fc72bdb300cf541d84db5be4f2a5c33d45b0e3ae35a18c33af988c88dd201c823c15fced52eeed66d7defa3fcf7ea1587e8851c40365d8fdf714453d48f030cf3f7744b57d2cd35ad07a7980b58718e3da9e4dfe466f2e1089e8123dfc5d8d6fe679627ae78aa4cb4986cb4805d78becc009544c594534c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e4c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd624c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc24c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee6995450683073b3bb010000d5040000d60ac443bb800fb08261e75fa5925d747d4858610500000000000001fd040140947358ca2dd7543c3ff3f6ea1389a72c3d5ee99f47a9d0ef70bd84a9f57384e76271efc682f6741568c55907b1794b9f520f7d35f39382303bf0206945b5009a409f467419a886aebe6b482e6d5787981d98b58b82959a2858045bf5683665a5c25c502481b2d9655c902c5dcc147546bed58175c2ed16f328cc21e999e19741554063cab34f1613932947a1c346416b12b1ca724198016acc5fd760597539eed74f2069cfe2a8383e99595aefa3234d79d64a39e3f4c64e8cea800469a6f790999c408e2438fab244bdb79e67f6dab9cde0063e523bd0c175657a66e84897cd15eec8bf358661666679bf50334664872616faa366825f36873b16dd2add64c418cd5794534c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e4c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd624c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc24c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee6995450683073b3bb"}`, + serverResponse: `{"id":1,"jsonrpc":"2.0","result":"0000000062af8cd56d179044215cc8611f75bd96d896f1026c5b42994ae7707df8d82bd3c9f774f449fec7135b506faffaaeee603e2b82e01dec7d0f706789aa1bb983ae0ec7a25e0000000005000000e903736ceceeceae1806eee0e3ec61e7cce476ce01fd08010c408e48ace06fdd7d9bf536b6cb683f7edd336c60a707df8110f69121273fe7e0353e574c55abf2961ac4f7f2bfef44af07e6121f42e5e2115517b29060e3a7dd3e0c40d56609addaa61f06d9df159f7008ffb889d605742baaf7f95a8283469d6e5a4a76c5814f24efa0452e3c6723d88e43833e917551808d05aca8d46a17f25c72440c40fa0b66a2a41933e39685f7cbf45ba0cef286b3eed5f7d1cb60db4bac3a9c55212efb5b1f4a4c5512b2562f8e0a2ebfbc8951734ca53243ec963bd6839773f5910c40c1c0de79304d8ad7e204dceb880325694e5c34abb25ff23beb61e931ecf384e4f06c13a5ea56273c400ecac9408a3eb8e8cf3b0b358f7b2b6ac5120bb5c7763594130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb020057040000000000000000d5040000e903736ceceeceae1806eee0e3ec61e7cce476ce0500000000000001fd08010c40a9c72069ad0365a8f0787a236ec60293a9846172e9cdeaeb665586d6c72545bcfa694422f8ccd3e76bce7e27ac8099cc9b3f6322bcfeaf971c9b481a1a308a350c4048f7c2a176a7c8eb73f881aacb0a5bc52bb3b2eeeb2341031496aaadbc043dda02d8c79935ac27ecda0dc7c2561af056946e82ff1a819b56461ad32fce83ab960c4036a238579bbe505150f2ea2e4172eb83cfd614af00c1cfe36791a1eb12cb5565f37668fa09a0fcb2528fffe377c96ec9d63d18aa19a5d6c24c5c97034d1811250c4007c3826543bc03b3b6cecf48fb30ff24033c1aad7a946ac6c54e7fa90173ff3b0fe181936079fc0e7030bdde2b655ae3a7101b8a0bd85fc98de83bb72739a9ce94130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"}`, result: func(c *Client) interface{} { return &block.Block{} }, check: func(t *testing.T, c *Client, result interface{}) { res, ok := result.(*block.Block) require.True(t, ok) assert.Equal(t, uint32(0), res.Version) - assert.Equal(t, "d745190c4823eb4d97f7a40a907f931e05380c05070bd71cb09d832d7bca4bb8", res.Hash().StringLE()) - assert.Equal(t, "e7ef1a61257121e0bd55678355a83486c2e2daf82767a84e19bd3aa19c819e0c", res.PrevHash.StringLE()) - assert.Equal(t, "53fe10feb478ba221706d3f43465f8180324626138e4b2745e1f0aa9d25b5b67", res.MerkleRoot.StringLE()) + assert.Equal(t, "424b08395ea83eb09604a6c8e76e95574b657e219fe2c3e2f1574176581bf7e9", res.Hash().StringLE()) + assert.Equal(t, "d32bd8f87d70e74a99425b6c02f196d896bd751f61c85c214490176dd58caf62", res.PrevHash.StringLE()) + assert.Equal(t, "ae83b91baa8967700f7dec1de0822b3e60eeaefaaf6f505b13c7fe49f474f7c9", res.MerkleRoot.StringLE()) assert.Equal(t, 1, len(res.Transactions)) - assert.Equal(t, "53fe10feb478ba221706d3f43465f8180324626138e4b2745e1f0aa9d25b5b67", res.Transactions[0].Hash().StringLE()) + assert.Equal(t, "ae63e96d984673b038c83cfcb94323e37bdab29a53921823544b50df9f7edb54", res.Transactions[0].Hash().StringLE()) }, }, { @@ -154,41 +154,41 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ invoke: func(c *Client) (i interface{}, err error) { return c.GetBlockByIndexVerbose(5) }, - serverResponse: `{"id":1,"jsonrpc":"2.0","result":{"hash":"0x66d1c140fbdc0eaa47e69a6a9c5034ebc3a449db98da565191ab863d1a079906","size":946,"version":0,"nextblockhash":"0xf6749a5eb21273ec67951afd22282f002e605e210678c2fa765dbecf0124bd1a","previousblockhash":"0x8fed18d4cf93e3c1607df1ffcce54a39a25c0bb18f80542ebc7a236a9204aab3","merkleroot":"0x79e5361552be86156c86c000183526f22ce0c8a0be346e692f4b388810275f26","time":1587379353,"index":5,"nonce":"0000000000000457","nextconsensus":"AZ81H31DMWzbSnFDLFkzh9vHwaDLayV7fU","confirmations":203,"script":{"invocation":"40a6cc2c7fdee4f8fd97f84114d04edda16a37a4c088da9d5be3233e118fccdf73c0305d2cbd15ea0dbcedb594fec3044844e8f59f236ded7fccb1eda2eee2c76740197eba5d648d650ca1d73b8c0a0c7cdc22d31d7b2564764729d271e7ff6378c4f2228f657d65fec530f2af6cdc7af3bc2ab17a7b8175376601fb17ec951faf074038222bb0430f7808d333be3fb8e5b93c490dbb07e6c085350ba64cb7de61127067d1825de30915964dbb345f3b902d61dbf9a294c11ff6459000648f0dc4e66740926854a25b9ea87d7fffe0253bf2bcb3d153434cc0a8ba166136d16aef9a3de70ba3704ba3103a26d01c2bdbeb7262a19bbceab6a7487beba5e55f7ee768a080","verification":"532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae"},"tx":[{"sys_fee":"0","net_fee":"0","txid":"0x79e5361552be86156c86c000183526f22ce0c8a0be346e692f4b388810275f26","size":437,"type":"MinerTransaction","version":0,"nonce":1237,"sender":"AZ81H31DMWzbSnFDLFkzh9vHwaDLayV7fU","valid_until_block":5,"attributes":[],"vin":[],"vout":[],"scripts":[{"invocation":"40f50121bb6ec9d8e0d1c15eea66b2ff7b51bb1bc4b3da27d9eac1d46b59e6a319bb1db4eb710c7f1931b0c2deaa2389a0fc3fe8c761cec40906b7973450c43173402dc082417a6815e722216de0b857eda6c846bf435088d543d2ab89f1dd92488e87b4d2c6508b0db945cbe6968e85c1c6d57274bfc898e82876c5cb08613da5d64053100f0162a41709a37305c300e7d6ac0d46575aab98dade7375b8d9ca980086594f1288dc68da0e0e42913d1c68024f63442a79c9478971d3ad93c5467ec53040a1c3a772a88b09cba8cc8ec3b46c0c0db6ac86519a7fd7db29b43d34e804a22d8839eaeb35e2a1e05d591fbad4ae290b90c6dc02dddbe28b2b3bf0fec2a337dd","verification":"532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae"}]}]}}`, + serverResponse: `{"id":1,"jsonrpc":"2.0","result":{"hash":"0x424b08395ea83eb09604a6c8e76e95574b657e219fe2c3e2f1574176581bf7e9","size":977,"version":0,"nextblockhash":"0xc2ce96d861414ad229101cc9afaec4ae500f730a2180b54bd14a8dd6147bc8c3","previousblockhash":"0xd32bd8f87d70e74a99425b6c02f196d896bd751f61c85c214490176dd58caf62","merkleroot":"0xae83b91baa8967700f7dec1de0822b3e60eeaefaaf6f505b13c7fe49f474f7c9","time":1587726094,"index":5,"consensus_data":{"primary":0,"nonce":"0000000000000457"},"nextconsensus":"Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy","confirmations":203,"script":{"invocation":"0c408e48ace06fdd7d9bf536b6cb683f7edd336c60a707df8110f69121273fe7e0353e574c55abf2961ac4f7f2bfef44af07e6121f42e5e2115517b29060e3a7dd3e0c40d56609addaa61f06d9df159f7008ffb889d605742baaf7f95a8283469d6e5a4a76c5814f24efa0452e3c6723d88e43833e917551808d05aca8d46a17f25c72440c40fa0b66a2a41933e39685f7cbf45ba0cef286b3eed5f7d1cb60db4bac3a9c55212efb5b1f4a4c5512b2562f8e0a2ebfbc8951734ca53243ec963bd6839773f5910c40c1c0de79304d8ad7e204dceb880325694e5c34abb25ff23beb61e931ecf384e4f06c13a5ea56273c400ecac9408a3eb8e8cf3b0b358f7b2b6ac5120bb5c77635","verification":"130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"},"tx":[{"sys_fee":"0","net_fee":"0","txid":"0xae63e96d984673b038c83cfcb94323e37bdab29a53921823544b50df9f7edb54","size":450,"type":"MinerTransaction","version":0,"nonce":1237,"sender":"Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy","valid_until_block":5,"attributes":[],"vin":[],"vout":[],"scripts":[{"invocation":"0c40a9c72069ad0365a8f0787a236ec60293a9846172e9cdeaeb665586d6c72545bcfa694422f8ccd3e76bce7e27ac8099cc9b3f6322bcfeaf971c9b481a1a308a350c4048f7c2a176a7c8eb73f881aacb0a5bc52bb3b2eeeb2341031496aaadbc043dda02d8c79935ac27ecda0dc7c2561af056946e82ff1a819b56461ad32fce83ab960c4036a238579bbe505150f2ea2e4172eb83cfd614af00c1cfe36791a1eb12cb5565f37668fa09a0fcb2528fffe377c96ec9d63d18aa19a5d6c24c5c97034d1811250c4007c3826543bc03b3b6cecf48fb30ff24033c1aad7a946ac6c54e7fa90173ff3b0fe181936079fc0e7030bdde2b655ae3a7101b8a0bd85fc98de83bb72739a9ce","verification":"130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"}]}]}}`, result: func(c *Client) interface{} { - hash, err := util.Uint256DecodeStringLE("66d1c140fbdc0eaa47e69a6a9c5034ebc3a449db98da565191ab863d1a079906") + hash, err := util.Uint256DecodeStringLE("424b08395ea83eb09604a6c8e76e95574b657e219fe2c3e2f1574176581bf7e9") if err != nil { panic(err) } - nextBlockHash, err := util.Uint256DecodeStringLE("f6749a5eb21273ec67951afd22282f002e605e210678c2fa765dbecf0124bd1a") + nextBlockHash, err := util.Uint256DecodeStringLE("c2ce96d861414ad229101cc9afaec4ae500f730a2180b54bd14a8dd6147bc8c3") if err != nil { panic(err) } - prevBlockHash, err := util.Uint256DecodeStringLE("8fed18d4cf93e3c1607df1ffcce54a39a25c0bb18f80542ebc7a236a9204aab3") + prevBlockHash, err := util.Uint256DecodeStringLE("d32bd8f87d70e74a99425b6c02f196d896bd751f61c85c214490176dd58caf62") if err != nil { panic(err) } - merkleRoot, err := util.Uint256DecodeStringLE("79e5361552be86156c86c000183526f22ce0c8a0be346e692f4b388810275f26") + merkleRoot, err := util.Uint256DecodeStringLE("ae83b91baa8967700f7dec1de0822b3e60eeaefaaf6f505b13c7fe49f474f7c9") if err != nil { panic(err) } - invScript, err := hex.DecodeString("40a6cc2c7fdee4f8fd97f84114d04edda16a37a4c088da9d5be3233e118fccdf73c0305d2cbd15ea0dbcedb594fec3044844e8f59f236ded7fccb1eda2eee2c76740197eba5d648d650ca1d73b8c0a0c7cdc22d31d7b2564764729d271e7ff6378c4f2228f657d65fec530f2af6cdc7af3bc2ab17a7b8175376601fb17ec951faf074038222bb0430f7808d333be3fb8e5b93c490dbb07e6c085350ba64cb7de61127067d1825de30915964dbb345f3b902d61dbf9a294c11ff6459000648f0dc4e66740926854a25b9ea87d7fffe0253bf2bcb3d153434cc0a8ba166136d16aef9a3de70ba3704ba3103a26d01c2bdbeb7262a19bbceab6a7487beba5e55f7ee768a080") + invScript, err := hex.DecodeString("0c408e48ace06fdd7d9bf536b6cb683f7edd336c60a707df8110f69121273fe7e0353e574c55abf2961ac4f7f2bfef44af07e6121f42e5e2115517b29060e3a7dd3e0c40d56609addaa61f06d9df159f7008ffb889d605742baaf7f95a8283469d6e5a4a76c5814f24efa0452e3c6723d88e43833e917551808d05aca8d46a17f25c72440c40fa0b66a2a41933e39685f7cbf45ba0cef286b3eed5f7d1cb60db4bac3a9c55212efb5b1f4a4c5512b2562f8e0a2ebfbc8951734ca53243ec963bd6839773f5910c40c1c0de79304d8ad7e204dceb880325694e5c34abb25ff23beb61e931ecf384e4f06c13a5ea56273c400ecac9408a3eb8e8cf3b0b358f7b2b6ac5120bb5c77635") if err != nil { panic(err) } - verifScript, err := hex.DecodeString("532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae") + verifScript, err := hex.DecodeString("130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb") if err != nil { panic(err) } - sender, err := address.StringToUint160("AZ81H31DMWzbSnFDLFkzh9vHwaDLayV7fU") + sender, err := address.StringToUint160("Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy") if err != nil { panic(err) } - txInvScript, err := hex.DecodeString("40f50121bb6ec9d8e0d1c15eea66b2ff7b51bb1bc4b3da27d9eac1d46b59e6a319bb1db4eb710c7f1931b0c2deaa2389a0fc3fe8c761cec40906b7973450c43173402dc082417a6815e722216de0b857eda6c846bf435088d543d2ab89f1dd92488e87b4d2c6508b0db945cbe6968e85c1c6d57274bfc898e82876c5cb08613da5d64053100f0162a41709a37305c300e7d6ac0d46575aab98dade7375b8d9ca980086594f1288dc68da0e0e42913d1c68024f63442a79c9478971d3ad93c5467ec53040a1c3a772a88b09cba8cc8ec3b46c0c0db6ac86519a7fd7db29b43d34e804a22d8839eaeb35e2a1e05d591fbad4ae290b90c6dc02dddbe28b2b3bf0fec2a337dd") + txInvScript, err := hex.DecodeString("0c40a9c72069ad0365a8f0787a236ec60293a9846172e9cdeaeb665586d6c72545bcfa694422f8ccd3e76bce7e27ac8099cc9b3f6322bcfeaf971c9b481a1a308a350c4048f7c2a176a7c8eb73f881aacb0a5bc52bb3b2eeeb2341031496aaadbc043dda02d8c79935ac27ecda0dc7c2561af056946e82ff1a819b56461ad32fce83ab960c4036a238579bbe505150f2ea2e4172eb83cfd614af00c1cfe36791a1eb12cb5565f37668fa09a0fcb2528fffe377c96ec9d63d18aa19a5d6c24c5c97034d1811250c4007c3826543bc03b3b6cecf48fb30ff24033c1aad7a946ac6c54e7fa90173ff3b0fe181936079fc0e7030bdde2b655ae3a7101b8a0bd85fc98de83bb72739a9ce") if err != nil { panic(err) } - txVerifScript, err := hex.DecodeString("532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae") + txVerifScript, err := hex.DecodeString("130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb") if err != nil { panic(err) } @@ -205,16 +205,19 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ _ = tx.Hash() return &result.Block{ Hash: hash, - Size: 946, + Size: 977, Version: 0, NextBlockHash: &nextBlockHash, PreviousBlockHash: prevBlockHash, MerkleRoot: merkleRoot, - Time: 1587379353, + Time: 1587726094, Index: 5, - Nonce: "0000000000000457", - NextConsensus: "AZ81H31DMWzbSnFDLFkzh9vHwaDLayV7fU", + NextConsensus: "Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy", Confirmations: 203, + ConsensusData: result.ConsensusData{ + PrimaryIndex: 0, + Nonce: "0000000000000457", + }, Script: transaction.Witness{ InvocationScript: invScript, VerificationScript: verifScript, @@ -232,69 +235,69 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ { name: "byHash_positive", invoke: func(c *Client) (interface{}, error) { - hash, err := util.Uint256DecodeStringLE("b84bca7b2d839db01cd70b07050c38051e937f900aa4f7974deb23480c1945d7") + hash, err := util.Uint256DecodeStringLE("e9f71b58764157f1e2c3e29f217e654b57956ee7c8a60496b03ea85e39084b42") if err != nil { panic(err) } return c.GetBlockByHash(hash) }, - serverResponse: `{"id":1,"jsonrpc":"2.0","result":"000000000c9e819ca13abd194ea86727f8dae2c28634a855836755bde0217125611aefe7675b5bd2a90a1f5e74b2e4386162240318f86534f4d3061722ba78b4fe10fe53a9d49e5e00000000050000005704000000000000d60ac443bb800fb08261e75fa5925d747d48586101fd0401407153238e784d759f1093e5911fcbb07f78af3f83a2159d59511b1c31dd4b70311feb9d63531427ac0e30dc3ae6656adda1f31713a7d56ff68a8764af523776cb4048630138d8d402902b66107ef9a50a227e1be8d8ce148f821e58f45430e59b8c034f1b5ed8208f7ce9711942405bb991d4e69232235bafa5476a8f30b92ac7e840947723eafcdfa2e9d75b551b5fc72bdb300cf541d84db5be4f2a5c33d45b0e3ae35a18c33af988c88dd201c823c15fced52eeed66d7defa3fcf7ea1587e8851c40365d8fdf714453d48f030cf3f7744b57d2cd35ad07a7980b58718e3da9e4dfe466f2e1089e8123dfc5d8d6fe679627ae78aa4cb4986cb4805d78becc009544c594534c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e4c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd624c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc24c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee6995450683073b3bb010000d5040000d60ac443bb800fb08261e75fa5925d747d4858610500000000000001fd040140947358ca2dd7543c3ff3f6ea1389a72c3d5ee99f47a9d0ef70bd84a9f57384e76271efc682f6741568c55907b1794b9f520f7d35f39382303bf0206945b5009a409f467419a886aebe6b482e6d5787981d98b58b82959a2858045bf5683665a5c25c502481b2d9655c902c5dcc147546bed58175c2ed16f328cc21e999e19741554063cab34f1613932947a1c346416b12b1ca724198016acc5fd760597539eed74f2069cfe2a8383e99595aefa3234d79d64a39e3f4c64e8cea800469a6f790999c408e2438fab244bdb79e67f6dab9cde0063e523bd0c175657a66e84897cd15eec8bf358661666679bf50334664872616faa366825f36873b16dd2add64c418cd5794534c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e4c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd624c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc24c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee6995450683073b3bb"}`, + serverResponse: `{"id":1,"jsonrpc":"2.0","result":"0000000062af8cd56d179044215cc8611f75bd96d896f1026c5b42994ae7707df8d82bd3c9f774f449fec7135b506faffaaeee603e2b82e01dec7d0f706789aa1bb983ae0ec7a25e0000000005000000e903736ceceeceae1806eee0e3ec61e7cce476ce01fd08010c408e48ace06fdd7d9bf536b6cb683f7edd336c60a707df8110f69121273fe7e0353e574c55abf2961ac4f7f2bfef44af07e6121f42e5e2115517b29060e3a7dd3e0c40d56609addaa61f06d9df159f7008ffb889d605742baaf7f95a8283469d6e5a4a76c5814f24efa0452e3c6723d88e43833e917551808d05aca8d46a17f25c72440c40fa0b66a2a41933e39685f7cbf45ba0cef286b3eed5f7d1cb60db4bac3a9c55212efb5b1f4a4c5512b2562f8e0a2ebfbc8951734ca53243ec963bd6839773f5910c40c1c0de79304d8ad7e204dceb880325694e5c34abb25ff23beb61e931ecf384e4f06c13a5ea56273c400ecac9408a3eb8e8cf3b0b358f7b2b6ac5120bb5c7763594130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb020057040000000000000000d5040000e903736ceceeceae1806eee0e3ec61e7cce476ce0500000000000001fd08010c40a9c72069ad0365a8f0787a236ec60293a9846172e9cdeaeb665586d6c72545bcfa694422f8ccd3e76bce7e27ac8099cc9b3f6322bcfeaf971c9b481a1a308a350c4048f7c2a176a7c8eb73f881aacb0a5bc52bb3b2eeeb2341031496aaadbc043dda02d8c79935ac27ecda0dc7c2561af056946e82ff1a819b56461ad32fce83ab960c4036a238579bbe505150f2ea2e4172eb83cfd614af00c1cfe36791a1eb12cb5565f37668fa09a0fcb2528fffe377c96ec9d63d18aa19a5d6c24c5c97034d1811250c4007c3826543bc03b3b6cecf48fb30ff24033c1aad7a946ac6c54e7fa90173ff3b0fe181936079fc0e7030bdde2b655ae3a7101b8a0bd85fc98de83bb72739a9ce94130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"}`, result: func(c *Client) interface{} { return &block.Block{} }, check: func(t *testing.T, c *Client, result interface{}) { res, ok := result.(*block.Block) require.True(t, ok) assert.Equal(t, uint32(0), res.Version) - assert.Equal(t, "d745190c4823eb4d97f7a40a907f931e05380c05070bd71cb09d832d7bca4bb8", res.Hash().StringLE()) - assert.Equal(t, "e7ef1a61257121e0bd55678355a83486c2e2daf82767a84e19bd3aa19c819e0c", res.PrevHash.StringLE()) - assert.Equal(t, "53fe10feb478ba221706d3f43465f8180324626138e4b2745e1f0aa9d25b5b67", res.MerkleRoot.StringLE()) + assert.Equal(t, "424b08395ea83eb09604a6c8e76e95574b657e219fe2c3e2f1574176581bf7e9", res.Hash().StringLE()) + assert.Equal(t, "d32bd8f87d70e74a99425b6c02f196d896bd751f61c85c214490176dd58caf62", res.PrevHash.StringLE()) + assert.Equal(t, "ae83b91baa8967700f7dec1de0822b3e60eeaefaaf6f505b13c7fe49f474f7c9", res.MerkleRoot.StringLE()) assert.Equal(t, 1, len(res.Transactions)) - assert.Equal(t, "53fe10feb478ba221706d3f43465f8180324626138e4b2745e1f0aa9d25b5b67", res.Transactions[0].Hash().StringLE()) + assert.Equal(t, "ae63e96d984673b038c83cfcb94323e37bdab29a53921823544b50df9f7edb54", res.Transactions[0].Hash().StringLE()) }, }, { name: "byHash_verbose_positive", invoke: func(c *Client) (i interface{}, err error) { - hash, err := util.Uint256DecodeStringLE("0699071a3d86ab915156da98db49a4c3eb34509c6a9ae647aa0edcfb40c1d166") + hash, err := util.Uint256DecodeStringLE("e9f71b58764157f1e2c3e29f217e654b57956ee7c8a60496b03ea85e39084b42") if err != nil { panic(err) } return c.GetBlockByHashVerbose(hash) }, - serverResponse: `{"id":1,"jsonrpc":"2.0","result":{"hash":"0x66d1c140fbdc0eaa47e69a6a9c5034ebc3a449db98da565191ab863d1a079906","size":946,"version":0,"nextblockhash":"0xf6749a5eb21273ec67951afd22282f002e605e210678c2fa765dbecf0124bd1a","previousblockhash":"0x8fed18d4cf93e3c1607df1ffcce54a39a25c0bb18f80542ebc7a236a9204aab3","merkleroot":"0x79e5361552be86156c86c000183526f22ce0c8a0be346e692f4b388810275f26","time":1587379353,"index":5,"nonce":"0000000000000457","nextconsensus":"AZ81H31DMWzbSnFDLFkzh9vHwaDLayV7fU","confirmations":203,"script":{"invocation":"40a6cc2c7fdee4f8fd97f84114d04edda16a37a4c088da9d5be3233e118fccdf73c0305d2cbd15ea0dbcedb594fec3044844e8f59f236ded7fccb1eda2eee2c76740197eba5d648d650ca1d73b8c0a0c7cdc22d31d7b2564764729d271e7ff6378c4f2228f657d65fec530f2af6cdc7af3bc2ab17a7b8175376601fb17ec951faf074038222bb0430f7808d333be3fb8e5b93c490dbb07e6c085350ba64cb7de61127067d1825de30915964dbb345f3b902d61dbf9a294c11ff6459000648f0dc4e66740926854a25b9ea87d7fffe0253bf2bcb3d153434cc0a8ba166136d16aef9a3de70ba3704ba3103a26d01c2bdbeb7262a19bbceab6a7487beba5e55f7ee768a080","verification":"532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae"},"tx":[{"sys_fee":"0","net_fee":"0","txid":"0x79e5361552be86156c86c000183526f22ce0c8a0be346e692f4b388810275f26","size":437,"type":"MinerTransaction","version":0,"nonce":1237,"sender":"AZ81H31DMWzbSnFDLFkzh9vHwaDLayV7fU","valid_until_block":5,"attributes":[],"vin":[],"vout":[],"scripts":[{"invocation":"40f50121bb6ec9d8e0d1c15eea66b2ff7b51bb1bc4b3da27d9eac1d46b59e6a319bb1db4eb710c7f1931b0c2deaa2389a0fc3fe8c761cec40906b7973450c43173402dc082417a6815e722216de0b857eda6c846bf435088d543d2ab89f1dd92488e87b4d2c6508b0db945cbe6968e85c1c6d57274bfc898e82876c5cb08613da5d64053100f0162a41709a37305c300e7d6ac0d46575aab98dade7375b8d9ca980086594f1288dc68da0e0e42913d1c68024f63442a79c9478971d3ad93c5467ec53040a1c3a772a88b09cba8cc8ec3b46c0c0db6ac86519a7fd7db29b43d34e804a22d8839eaeb35e2a1e05d591fbad4ae290b90c6dc02dddbe28b2b3bf0fec2a337dd","verification":"532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae"}]}]}}`, + serverResponse: `{"id":1,"jsonrpc":"2.0","result":{"hash":"0x424b08395ea83eb09604a6c8e76e95574b657e219fe2c3e2f1574176581bf7e9","size":977,"version":0,"nextblockhash":"0xc2ce96d861414ad229101cc9afaec4ae500f730a2180b54bd14a8dd6147bc8c3","previousblockhash":"0xd32bd8f87d70e74a99425b6c02f196d896bd751f61c85c214490176dd58caf62","merkleroot":"0xae83b91baa8967700f7dec1de0822b3e60eeaefaaf6f505b13c7fe49f474f7c9","time":1587726094,"index":5,"consensus_data":{"primary":0,"nonce":"0000000000000457"},"nextconsensus":"Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy","confirmations":203,"script":{"invocation":"0c408e48ace06fdd7d9bf536b6cb683f7edd336c60a707df8110f69121273fe7e0353e574c55abf2961ac4f7f2bfef44af07e6121f42e5e2115517b29060e3a7dd3e0c40d56609addaa61f06d9df159f7008ffb889d605742baaf7f95a8283469d6e5a4a76c5814f24efa0452e3c6723d88e43833e917551808d05aca8d46a17f25c72440c40fa0b66a2a41933e39685f7cbf45ba0cef286b3eed5f7d1cb60db4bac3a9c55212efb5b1f4a4c5512b2562f8e0a2ebfbc8951734ca53243ec963bd6839773f5910c40c1c0de79304d8ad7e204dceb880325694e5c34abb25ff23beb61e931ecf384e4f06c13a5ea56273c400ecac9408a3eb8e8cf3b0b358f7b2b6ac5120bb5c77635","verification":"130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"},"tx":[{"sys_fee":"0","net_fee":"0","txid":"0xae63e96d984673b038c83cfcb94323e37bdab29a53921823544b50df9f7edb54","size":450,"type":"MinerTransaction","version":0,"nonce":1237,"sender":"Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy","valid_until_block":5,"attributes":[],"vin":[],"vout":[],"scripts":[{"invocation":"0c40a9c72069ad0365a8f0787a236ec60293a9846172e9cdeaeb665586d6c72545bcfa694422f8ccd3e76bce7e27ac8099cc9b3f6322bcfeaf971c9b481a1a308a350c4048f7c2a176a7c8eb73f881aacb0a5bc52bb3b2eeeb2341031496aaadbc043dda02d8c79935ac27ecda0dc7c2561af056946e82ff1a819b56461ad32fce83ab960c4036a238579bbe505150f2ea2e4172eb83cfd614af00c1cfe36791a1eb12cb5565f37668fa09a0fcb2528fffe377c96ec9d63d18aa19a5d6c24c5c97034d1811250c4007c3826543bc03b3b6cecf48fb30ff24033c1aad7a946ac6c54e7fa90173ff3b0fe181936079fc0e7030bdde2b655ae3a7101b8a0bd85fc98de83bb72739a9ce","verification":"130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"}]}]}}`, result: func(c *Client) interface{} { - hash, err := util.Uint256DecodeStringLE("66d1c140fbdc0eaa47e69a6a9c5034ebc3a449db98da565191ab863d1a079906") + hash, err := util.Uint256DecodeStringLE("424b08395ea83eb09604a6c8e76e95574b657e219fe2c3e2f1574176581bf7e9") if err != nil { panic(err) } - nextBlockHash, err := util.Uint256DecodeStringLE("f6749a5eb21273ec67951afd22282f002e605e210678c2fa765dbecf0124bd1a") + nextBlockHash, err := util.Uint256DecodeStringLE("c2ce96d861414ad229101cc9afaec4ae500f730a2180b54bd14a8dd6147bc8c3") if err != nil { panic(err) } - prevBlockHash, err := util.Uint256DecodeStringLE("8fed18d4cf93e3c1607df1ffcce54a39a25c0bb18f80542ebc7a236a9204aab3") + prevBlockHash, err := util.Uint256DecodeStringLE("d32bd8f87d70e74a99425b6c02f196d896bd751f61c85c214490176dd58caf62") if err != nil { panic(err) } - merkleRoot, err := util.Uint256DecodeStringLE("79e5361552be86156c86c000183526f22ce0c8a0be346e692f4b388810275f26") + merkleRoot, err := util.Uint256DecodeStringLE("ae83b91baa8967700f7dec1de0822b3e60eeaefaaf6f505b13c7fe49f474f7c9") if err != nil { panic(err) } - invScript, err := hex.DecodeString("40a6cc2c7fdee4f8fd97f84114d04edda16a37a4c088da9d5be3233e118fccdf73c0305d2cbd15ea0dbcedb594fec3044844e8f59f236ded7fccb1eda2eee2c76740197eba5d648d650ca1d73b8c0a0c7cdc22d31d7b2564764729d271e7ff6378c4f2228f657d65fec530f2af6cdc7af3bc2ab17a7b8175376601fb17ec951faf074038222bb0430f7808d333be3fb8e5b93c490dbb07e6c085350ba64cb7de61127067d1825de30915964dbb345f3b902d61dbf9a294c11ff6459000648f0dc4e66740926854a25b9ea87d7fffe0253bf2bcb3d153434cc0a8ba166136d16aef9a3de70ba3704ba3103a26d01c2bdbeb7262a19bbceab6a7487beba5e55f7ee768a080") + invScript, err := hex.DecodeString("0c408e48ace06fdd7d9bf536b6cb683f7edd336c60a707df8110f69121273fe7e0353e574c55abf2961ac4f7f2bfef44af07e6121f42e5e2115517b29060e3a7dd3e0c40d56609addaa61f06d9df159f7008ffb889d605742baaf7f95a8283469d6e5a4a76c5814f24efa0452e3c6723d88e43833e917551808d05aca8d46a17f25c72440c40fa0b66a2a41933e39685f7cbf45ba0cef286b3eed5f7d1cb60db4bac3a9c55212efb5b1f4a4c5512b2562f8e0a2ebfbc8951734ca53243ec963bd6839773f5910c40c1c0de79304d8ad7e204dceb880325694e5c34abb25ff23beb61e931ecf384e4f06c13a5ea56273c400ecac9408a3eb8e8cf3b0b358f7b2b6ac5120bb5c77635") if err != nil { panic(err) } - verifScript, err := hex.DecodeString("532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae") + verifScript, err := hex.DecodeString("130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb") if err != nil { panic(err) } - sender, err := address.StringToUint160("AZ81H31DMWzbSnFDLFkzh9vHwaDLayV7fU") + sender, err := address.StringToUint160("Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy") if err != nil { panic(err) } - txInvScript, err := hex.DecodeString("40f50121bb6ec9d8e0d1c15eea66b2ff7b51bb1bc4b3da27d9eac1d46b59e6a319bb1db4eb710c7f1931b0c2deaa2389a0fc3fe8c761cec40906b7973450c43173402dc082417a6815e722216de0b857eda6c846bf435088d543d2ab89f1dd92488e87b4d2c6508b0db945cbe6968e85c1c6d57274bfc898e82876c5cb08613da5d64053100f0162a41709a37305c300e7d6ac0d46575aab98dade7375b8d9ca980086594f1288dc68da0e0e42913d1c68024f63442a79c9478971d3ad93c5467ec53040a1c3a772a88b09cba8cc8ec3b46c0c0db6ac86519a7fd7db29b43d34e804a22d8839eaeb35e2a1e05d591fbad4ae290b90c6dc02dddbe28b2b3bf0fec2a337dd") + txInvScript, err := hex.DecodeString("0c40a9c72069ad0365a8f0787a236ec60293a9846172e9cdeaeb665586d6c72545bcfa694422f8ccd3e76bce7e27ac8099cc9b3f6322bcfeaf971c9b481a1a308a350c4048f7c2a176a7c8eb73f881aacb0a5bc52bb3b2eeeb2341031496aaadbc043dda02d8c79935ac27ecda0dc7c2561af056946e82ff1a819b56461ad32fce83ab960c4036a238579bbe505150f2ea2e4172eb83cfd614af00c1cfe36791a1eb12cb5565f37668fa09a0fcb2528fffe377c96ec9d63d18aa19a5d6c24c5c97034d1811250c4007c3826543bc03b3b6cecf48fb30ff24033c1aad7a946ac6c54e7fa90173ff3b0fe181936079fc0e7030bdde2b655ae3a7101b8a0bd85fc98de83bb72739a9ce") if err != nil { panic(err) } - txVerifScript, err := hex.DecodeString("532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae") + txVerifScript, err := hex.DecodeString("130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb") if err != nil { panic(err) } @@ -311,16 +314,19 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ _ = tx.Hash() return &result.Block{ Hash: hash, - Size: 946, + Size: 977, Version: 0, NextBlockHash: &nextBlockHash, PreviousBlockHash: prevBlockHash, MerkleRoot: merkleRoot, - Time: 1587379353, + Time: 1587726094, Index: 5, - Nonce: "0000000000000457", - NextConsensus: "AZ81H31DMWzbSnFDLFkzh9vHwaDLayV7fU", + NextConsensus: "Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy", Confirmations: 203, + ConsensusData: result.ConsensusData{ + PrimaryIndex: 0, + Nonce: "0000000000000457", + }, Script: transaction.Witness{ InvocationScript: invScript, VerificationScript: verifScript, @@ -368,21 +374,21 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ { name: "positive", invoke: func(c *Client) (interface{}, error) { - hash, err := util.Uint256DecodeStringLE("cac0ebfcf1230d0cd236f333dc659b232da612e7ee42bd80f9e6c8d0ce2fb542") + hash, err := util.Uint256DecodeStringLE("68e4bd688b852e807eef13a0ff7da7b02223e359a35153667e88f9cb4a3b0801") if err != nil { panic(err) } return c.GetBlockHeader(hash) }, - serverResponse: `{"id":1,"jsonrpc":"2.0","result":"0000000098166844503a270bf532addc3db1a30e22b5336594ed8944fceaaf8fe697013414aa46a5e3e62056c842d54ea5ba480fc448c498989f505bcae9ae4364436b9da5d49e5e00000000010000005704000000000000d60ac443bb800fb08261e75fa5925d747d48586101fd040140519e5dfec4f07533853ca092139070fb6f033f8ab03b226948ee35910767a2ec426ad16d70e6aaf6e70ba256c829c963efc61b450690f9f4c022ec345f4b698240527d91d454a488419f724f51f44b33f162a4c8dfe84775e3e178abe254c728fda5a81915b3fbd9d41c0609f3cd576ba65b767753b2d52e4f96ce1a9b1cdb1e364021d2d03a1b57ab5bb50ac19679f9543f10c8873ef9a8d4c236f9e022c0a60f684b78bf56bd2b5f82d0a8ed091cadd2f29a16a7e9f48f3feb723dcb7f26470f5e40f447d13062ab7ec4669b82d0da2d4e0165756b30c5f6b734cb2049d91ae0f8ab85ab52f476d825ea12f26cfaf6c8d6c662bb7e3442130785b2d12e3398ac204f94534c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e4c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd624c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc24c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee6995450683073b3bb00"}`, + serverResponse: `{"id":1,"jsonrpc":"2.0","result":"00000000d039da5e49d63eb0533437d24ff8ceb6aeacf88680599c39f0ffca8948dfcdb94a3def1fca91cf45d69358414e3be77f7621e557f4cebbdb79a47d3cf56ac007f920a05e0000000001000000d60ac443bb800fb08261e75fa5925d747d48586101fd04014055041db6a59c99ab98137cc57e1e56a0a89856a311b2d2fc0aec76ec714c7616edc8fc5c9b81b27f25b7db1a61f64be0730a9cc103efcea1195cc3fe55843e264027e49c647f48bb08d3c32b79ee3432005ea577d7e497f78b46f1e81858848f961b557fb42a92e8eb4433fed203c917cbebb2138a31ed86750fb769d1e70956c0404c20054aa8bd45b520cba9410a9dd6c256481066bb657d7793fbba5551898c91b6dde81285fac841753ccfdd3193d08f19d5431313fa0d926ca965072a5fa3384026b0705078409bcc62fb98bb985edc387edeaaeba37bb7642d88a90762b2c2a62d9b61d53c097d548a368e450c4d995a178d5af28d4c93698233c52de05e3f0094534c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e4c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd624c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc24c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee6995450683073b3bb00"}`, result: func(c *Client) interface{} { return &block.Header{} }, check: func(t *testing.T, c *Client, result interface{}) { res, ok := result.(*block.Header) require.True(t, ok) assert.Equal(t, uint32(0), res.Version) - assert.Equal(t, "cac0ebfcf1230d0cd236f333dc659b232da612e7ee42bd80f9e6c8d0ce2fb542", res.Hash().StringLE()) - assert.Equal(t, "340197e68fafeafc4489ed946533b5220ea3b13ddcad32f50b273a5044681698", res.PrevHash.StringLE()) - assert.Equal(t, "9d6b436443aee9ca5b509f9898c448c40f48baa54ed542c85620e6e3a546aa14", res.MerkleRoot.StringLE()) + assert.Equal(t, "68e4bd688b852e807eef13a0ff7da7b02223e359a35153667e88f9cb4a3b0801", res.Hash().StringLE()) + assert.Equal(t, "b9cddf4889cafff0399c598086f8acaeb6cef84fd2373453b03ed6495eda39d0", res.PrevHash.StringLE()) + assert.Equal(t, "07c06af53c7da479dbbbcef457e521767fe73b4e415893d645cf91ca1fef3d4a", res.MerkleRoot.StringLE()) }, }, { @@ -429,7 +435,6 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ MerkleRoot: merkleRoot, Timestamp: 1541215200, Index: 1, - Nonce: "51b484a2fe49ed4d", NextConsensus: "AZ81H31DMWzbSnFDLFkzh9vHwaDLayV7fU", Confirmations: 20061, Script: transaction.Witness{ diff --git a/pkg/rpc/response/result/block.go b/pkg/rpc/response/result/block.go index 74509d1a9..ccdef6fd5 100644 --- a/pkg/rpc/response/result/block.go +++ b/pkg/rpc/response/result/block.go @@ -27,6 +27,12 @@ type ( NetFee util.Fixed8 `json:"net_fee"` } + // ConsensusData is a wrapper for block.ConsensusData + ConsensusData struct { + PrimaryIndex uint32 `json:"primary"` + Nonce string `json:"nonce"` + } + // Block wrapper used for the representation of // block.Block / block.Base on the RPC Server. Block struct { @@ -38,7 +44,7 @@ type ( MerkleRoot util.Uint256 `json:"merkleroot"` Time uint64 `json:"time"` Index uint32 `json:"index"` - Nonce string `json:"nonce"` + ConsensusData ConsensusData `json:"consensus_data"` NextConsensus string `json:"nextconsensus"` Confirmations uint32 `json:"confirmations"` @@ -59,9 +65,12 @@ func NewBlock(b *block.Block, chain blockchainer.Blockchainer) Block { MerkleRoot: b.MerkleRoot, Time: b.Timestamp, Index: b.Index, - Nonce: fmt.Sprintf("%016x", b.ConsensusData), - NextConsensus: address.Uint160ToString(b.NextConsensus), - Confirmations: chain.BlockHeight() - b.Index - 1, + ConsensusData: ConsensusData{ + PrimaryIndex: b.ConsensusData.PrimaryIndex, + Nonce: fmt.Sprintf("%016x", b.ConsensusData.Nonce), + }, + NextConsensus: address.Uint160ToString(b.NextConsensus), + Confirmations: chain.BlockHeight() - b.Index - 1, Script: b.Script, diff --git a/pkg/rpc/response/result/block_header.go b/pkg/rpc/response/result/block_header.go index 614b400ed..1eeabd4eb 100644 --- a/pkg/rpc/response/result/block_header.go +++ b/pkg/rpc/response/result/block_header.go @@ -1,8 +1,6 @@ package result import ( - "strconv" - "github.com/nspcc-dev/neo-go/pkg/core/block" "github.com/nspcc-dev/neo-go/pkg/core/blockchainer" "github.com/nspcc-dev/neo-go/pkg/core/transaction" @@ -22,7 +20,6 @@ type ( MerkleRoot util.Uint256 `json:"merkleroot"` Timestamp uint64 `json:"time"` Index uint32 `json:"index"` - Nonce string `json:"nonce"` NextConsensus string `json:"nextconsensus"` Script transaction.Witness `json:"script"` Confirmations uint32 `json:"confirmations"` @@ -40,7 +37,6 @@ func NewHeader(h *block.Header, chain blockchainer.Blockchainer) Header { MerkleRoot: h.MerkleRoot, Timestamp: h.Timestamp, Index: h.Index, - Nonce: strconv.FormatUint(h.ConsensusData, 16), NextConsensus: address.Uint160ToString(h.NextConsensus), Script: h.Script, Confirmations: chain.BlockHeight() - h.Index + 1, diff --git a/pkg/rpc/server/server_test.go b/pkg/rpc/server/server_test.go index ed5e4b9f5..22e214490 100644 --- a/pkg/rpc/server/server_test.go +++ b/pkg/rpc/server/server_test.go @@ -9,7 +9,6 @@ import ( "net/http" "net/http/httptest" "reflect" - "strconv" "strings" "testing" "time" @@ -967,7 +966,6 @@ func TestRPC(t *testing.T) { MerkleRoot: hdr.MerkleRoot, Timestamp: hdr.Timestamp, Index: hdr.Index, - Nonce: strconv.FormatUint(hdr.ConsensusData, 16), NextConsensus: address.Uint160ToString(hdr.NextConsensus), Script: hdr.Script, Confirmations: e.chain.BlockHeight() - hdr.Index + 1, @@ -1051,10 +1049,13 @@ func newBlock(t *testing.T, bc blockchainer.Blockchainer, index uint32, txs ...* PrevHash: hdr.Hash(), Timestamp: (uint64(time.Now().UTC().Unix()) + uint64(hdr.Index)) * 1000, Index: hdr.Index + index, - ConsensusData: 1111, NextConsensus: witness.ScriptHash(), Script: witness, }, + ConsensusData: block.ConsensusData{ + PrimaryIndex: 0, + Nonce: 1111, + }, Transactions: txs, } _ = b.RebuildMerkleRoot() diff --git a/pkg/rpc/server/testdata/testblocks.acc b/pkg/rpc/server/testdata/testblocks.acc index 520c80ca2b8544e63efb43356e956278283336be..f09535357a0e6b19b6b56da87ea6f2282b0eb4f4 100644 GIT binary patch delta 78030 zcmZ77Ra}(O`aXP81{k_jy1P5Xp`;rm1O(}jP6dYU?rxCo?(XjH?r!kUX8XQBw{yS& z2XpY9>vOI3tmj_o?ZC4Rpz1oDvUJB@=ctG+jp!+HI!ZvPT)tuLn>B_XS(y^XqsYDC7zil@?fq z2C@ur`8a%DxI-j^{s{y<3(hrq+r#!k-grXUk@Kr*wsFCW7;?rpkl^WkHG%OFkTMG& zEmw|m4YosjcON|}IUC@WZI`;iO}yp(tr{%x1qjMFoqOYEN(qop-~kxde@bs+hq+Z4 zo7(ffFRr5~E-FURf0Sh?qfS^l+-1ZmUnLB1*b~^KcoJ z(w}Pxa zpCZ!XTJ^7Wk`nX$W;9l3eQl`@yZVb(5=F`~l09dKX%ckEx8DotCZ_JoLyV1k|B;7! z`D%P{P0xFRI9xN&Cre}}RYZAYdsFXvW@4T1_d>0Ps(E^Y_zOX|HX;Y6eft zUcz7iABtAcWl-18sI({tahQT%9pd@#GV_0eTd5v_pq?^qpZ59VEm!T%o7_lQ)=XMd znh*3wxU=`2%hXveQw1^}?zf&9CdILD<|Ey^-ZGF)@)US!$Tbui?l}WH4}qY2_5R4C zau^HrzG#cVr(Z0kM!4eLeDjC*^%8YDq#N%(H)DQRyc%p|$B*}RlS(E`jEdFsXJu^$ zkY_~5JI0|nyvWBQ{-67JJCmRxJ3N$YkdNxvkuKlBMzvXK&qT}54UID61$80Mi;y2%kfcL| zc6UDL%0^pjAORC*bZD_ID+qD$qu?+QM0pL!NC_GVAyG?p=6v6yX%hdYW^*K`c}FM+ zDrjwn#e>_YOzY7K$;9It+hoH>vT>o)&wH{g_!4NV#jz0V0|Y@={8T6Yc5Jq2o&NbD zr>#YRf@(_rWV=jHP+hJBY822tztHiCtnPUb2xpLd;G01-AzWc7y37n{)1E4%lvxw~ z$9>|}oelVx`&kc!cf=K+d8cZlj4~2d2f8T~xQ$Od7?NR>gLm8}f=(*FlaDj~I%~ed zK(GsH+>xr%<>XHOog33pR?bBAZ{I)eFp*{N2*8%kqOciE6B$urIa2- z`yISv1O&B@z#YWg)7p-|nPiy)XJupC)OksE^E`4vQFYQi-!P_s+l@q@78am*U;`LO zG1flBX1_f)7BWA~%R`{aL}>tmWIOk|`@VI^2x?M~NbEj>CZtla-mdX&ud?B~;JCxB z@7iA-1`do&Ml`JQT$Am%m7A3%vI}XKufwrt0pmNfKmCUt@c+fV;uxj<|8h>DQtrI* zwpG%~qyBy@HmUW?k8@ZjIF_=J5EG)awg=vPYhb}0V zhW`1ub)Ln3f4pH|b8htHEv$E9t(%fwZ}rCZxW?5^MfGvfF#N%ngdl~;U+5!3KcAmv z-0!+)Lc1ZgQ$Hb1xM7>kQNJe{#*QaKb?i#X10&8 zC)+P>t`eBD5Yi>0OtdPWc&DI>@u=o7z)Re#u4g5d(2_D_3t-52ZXk%Ko&){%kp;h~ zhBU{E+^taFeiY)wlc7J632iQh=MSCgGYG+RUZ2ZfEEcwB`~Pu&^Xk6TTcVU- zegIv;BxZl>OdAo6dcg~LorwamAN-;o_%-3kW^tYAn zP~{y(>J2>*bQZ>8VPd>NXzncIX+V3CfzTX*?dAnRJyc@JUFE z3r}>vLEEnaGW;h53l2R$jtv;kIRgk9!8ZxitUn_kEJ*w%Cgba#5>HbY{0&a*q#X7X z)3a><5J%dEX0t}=Ckxn^j;bd$jO7=+mqeWzBF4OoLtCFW5X5L>1xFWM&ytIn{pq^1 z|N9dmMk}px_<+5z?+^?};v`?e;ELVPR2Wg3MdIU!XL5`@VK_ta_*=l+-{Sk7xMW8E zxKF>jm*V{8F6%|>gDpesx%5W7UzC0o!~8vw?QUj@i-egA4HL~rygjj1)8F_`Xf@d1 zvFH`nDJX2|)IY~`om1>4nhCll@&){HhkJETV?PPNo2(&aYRyX*s{eKell{0a&kX$;}drI3=7L&vNkjy;Tr+D4$m@NJdzCmxX--0d*S}&o}M9e6uPP70P!7H zYiPQw?ECX0^M_4#VXCLX(L;FX8x{(dpSUM>Mg~#`VfG*1pOAFTF2EX*^O!feF-JXZLpPcD0a1{| z_a0sk%Mys-Ae^ZueDPX;Qk zEI<+QoL*gCn(uIvN=`U%xzRrUqg8N8w$Wg*yt{fL96+@?Y-C+dWdPy^o*@kq2(lmb z6iYY#jFro4&|Zm;9WGf z&pp7s9AzW=D(w6J7CS%TU&X#tm3c!W_$-U)z3he|tw=pU<$yITSAShS;(SD%$U8E5 z#a&`GW(dQ!fM1c^oEZGRN4~LAn{^GssGXDk7c4&R!FAIzuG33=TI9>5~aCT@E*K-bDMDX=8kg zIn8jr_Lq;^`Fxncf7}sX-RUCNBs)e8#suuw_FHc#bvfm|Rr*J7XybH6t(p@9MOK`e z)U!mYdHlLK`L2jWS4xX`-Rv*a0ByC!>SoWI{y>l|3b9O8AzhNs+2ZfggB#gjF_Llk zB6Ag$TjcO=+pGBUZgqhHU-=eLp6DoiH7T0~Ke2Z*oJbcxsr*9T0Fy>c06{@!?M^(_ zwM*9!eUK_1cy1!%oQVQn*H~Y#8Zeljjz@X?*BEr!VZD1%k?0B|#B(2bO0Rgw9Vzb; z%_hzOJ&ZsQ6`Z!7nlImTd#DnP4YtT9dpHb3?a42Wo!2^6LaS=bht=bbWNl4ry6H^n z;y}0U?J3sCd&`_kz>*`qKe6{it|x(2;OePL{IfPk4Q1MU z?7?02NB$#X)Y`aR@9Rt3Ui*w{p|n=pwm@Zu=`pjI(LwEzv)(F1n1q6mKkSIF?9CQ| zN-)E*L;0WWr9x~7m|#cJq^DOoaFdgl5cS}ndN?CsPFMtL2ov_A!`33~a;x6$pCJ6T~)2DJ-I%zw^EgIumgdpWZh`g4#r5 z@)81K>k{DQ!Ql+_^d`mkKeZE8b}6?yl|Ac~1mhtN(8q1^yP^R>t{-vVNfVh2>m8DO zhKa{7pdbz-G*>4Um~9lr$6lvdT7cqW=k5Bb;qa-PiX)$KY%u!tjmbq>1)xZ%$AT~# zR^uP`h1a-G(){HK|1fNc~qUyYQGC_ zzsi@XO82CY@AD`68rrpa*(%=Uy+Y;?p?}{(pKsqA&x9Pg`s334D@Q}4^Fl2}@=PI)Fz=>>hjR620bepKIGOa3c8Ly6 z>5Qpgj9`j2AZU>7lgcN8Jf`sNw*bdqz_Jf*4fy@C9F6j62*=!*#7|qb*zOC!%yt`P z0M5~y`H(;e>SC^(OMH{JEeV$jEH8_?$sX$rZ1fkM?Z}$vhNt^`_|rALXI?zU0OFC5 z%Wp>Nz6q^c@G|@%b`XvT7up1tRc)&8`NZNDJhq{xVX5&!WFDt zTZ8H%?ZWd+7&e&D;2Y!)+9r>Q($QOkw=aPLMeU} z9tVO3a#V6Wk3O2v2-#LGNs@6RVrJy|zhBrAYLfg`XMj-r#^L$Pq^_WuhU)E#3NNhL z&YnMjS+$cCa48kfgBH%%^H0#1UW4w;@>kF^Y0NV6Qws%Ue74w#zb()y=hAq9a)u^9 z9@vCqw`7EPIY6`CoA!fOcOqQunw!+RySOJkTsjVn6oKjt;;k~_f83E@-N#R2me5Q; z7#Tj}r zL9zX9S{V>znx8QDbM~VCP@+PqF!|xkT139^`XB>8puS~VNJ;TS4mYbp|JrzdNXCKJ zRpjGCa&Q$ze;O8%YZoEkGKT97C>;R|xOU ztBO7hmJ?+`j6QIOB+h2zTIkjg{~_{V+a)t!vzFLx=Qv$MSHq$syk z^*+w;#)nFn&CTSzM#K7O49@~YMtCRCc7YP{M3{tvnxC)(-F9!54YxTOsE#mWt=t_u zbiPFXaYud4drO3b-w9c{;T58^wTieHNw>+*0S}FcJ&Du=L_fz6pP5Vzbf2WX_==LY zQggMGgzC}*bM<31Id)qxU%oVHQ*`R%Y<4b%fD^r(Tqw z=`-JZRcR~tBGqdAw?J22Et#!Pr6?bqyTM`gJ+;=l;EB5zH9J@SW5TMjtzec_hTC_} zZj9eARAC#;x-HQFKF@>NL=)iDq`{cS#%*FQ+hwkYvkf@~;vyfy50FCg-Z&*ai9k?p z^3YE6ELXttom*_I(K`kvx9{S6YVoX}c@;0=F23GfB2HNK#Cpl~e(1D$Pm9PV8tPv5 zV59&Iz-UB&?@RB)^S{Nu{Nb-+r+n8qSx~YK-r`P<5D-FKWfm*oJ9;*zOVwi15Gi`A ztJM)-PhNuJ9)r#y*!zX2D0BPFYQEtp&RHj6tW$j_HR=yI+AFxBWXj=3sjpfK0u`(b zCsz8qvA&ElyN^BxK93jcE!(xl@->b0Jc4%?pHmgX;Md5^%;DwM}sbrI@!~(K` zpmgNQ+-|GdjAC$tZNccK`nF$DPE^nh+CP@z&rTs}1a zUdB94q%tVby}x#Q*ReueF8}@2Ou6}oN6MR*gMR3S7(0C9gGcR$d~%gg+Tgyl@1o*) z{A~wBn7ZscsjA5DmTbv@nKFWv{jr4`L)Wyz^VHsasn!5u>l_xbt`O6Ig1+_|^g)5Y zg1(M=6+p1U{idqvd&}DbU#5|?bH?cF@7Y-7+HuHu)-YF~c2>S`Y;^(jmTtUMA8}ps z4DdtIvH%BoZXZ{8YPh5SxTC+ipWx#Z45ehVnl2=+IM@HA5r+zhqx$yy13Ao)yON?? za4kea;9*;2+nrW8>esI21!q0_4)O1TGJ1Z6G@Kp-zhAZ=CSN|%Z_oD0^H+I6G(};7 z2Fg*~o`xd;w?xZ?i8Wdq+ta^C3DYJS9KX>Du5POh0HaPB0zoBt zblPJZP;+`yo~>B0$6qO+1{i-81u~VEL4Es?UnMbnX8W_4z=;MK{^n;5XA0uGd}w!& zW3VzI??6Z?)|Mp@MA1*%J|-%Eo)vMN+jQ=Y-cs_}g{o(o_-+M~_Hi94oB4bIPDlF3 z?I>5lfe9P1x)KY)DC@fbE1+%n`+bPWQ1CzQ>#y!l{Cr2Bq z84JSStY(k=4w0qWdPH4baHVzpj%DZe+;4Hp&(?QviP*H?teJJJl5%Su!|T-&^T!?I z)m@20m#H67o;eE3Kc%d;P?QOa`*Szva&qh_z}o|Lpdq$kuP(e0+GSq%$gu#^B&HXJ zt2*a*Zyc}Qjbvt7XW+|bxrqkk?3~G*iKL=&JQ(<9^$Ka_BIav|$iXITyW{Wk!vbMi zKOIsH^$jf8S31-T68W&L3L!O&{h&GRMky*x! zYEB2XZ|a0`ahUGoN4Z5M9C1%Frc;o@^(up<8+4fZWP%Jw^6=c)Kkk_ST~Lv#-Ek{UF?eQDSEVR8rLW^a zLlye#%z>9?I*&R2*I|b=t-?{nJ>9i^RcuI<#Tj@WKeR$;c6Ntvk@G~f7J;A>Amy_* zRZ)MLe+c9%srz`YgSKk6)ei!xXqK^><85vbNOmLl_NOaU{wxlTb047kYXl6-Q~p~V zP9+NucJSBem%LwcqHAk=$b>w|`p};|2-hJdOx}iAWt@Q1m5;&==@eMsz$M*<2DU+S z=hf6coij*nah>u^T{2(L8~9s4ethYf-K6--l`;y|oU^w)t)qpAN!Om;9NLW9`86}33vj2#DW${y*m!Biuf`Y@!@u>rW5G@u3 z)8NBxQ`{eLtkJ?o?T5Xz7b%x-DdF|Lkoqp?;6f;Qt|2?e3&XusFLdDDtNqwfww+%)f}Xn|#( z-RZ;8bOcwtXt`#)5COr|eIQK>pA2D7myX0n2|fM}&<+RwB8~zC_0MYBxR*Zn-TCV7 zH3V=K;bVJRASu7g{8;>!;AX@EKDyJy0rP@>DRnqp%n?yZ*<%cZaa|r*xBvJN+kwvW z6bNF~^Sh>o3jQgi!Yj`M@ttR|zGY;&j>U?L5>dd?1vIXIs;2qVwdQKWHVG4wl0vu( zNzoZX@m)TE$IcO@(1N1#pP+BO1|3iSub|&u*?f9RW3o~;__iy*<^F?C#qN!~G<8l{ zjOQWMc$3B%&WE`j&uV#xgKpjUMe4S^XT?gVAxhYWLX(8UAAN#3A5Qt`V)`d1X&JQVs!b61WuOQrD8d?tQAb8qdITTm_;pt1MH|CAzU6`BJtqAiC$e_ycCAT6VPR zAS!N5usk&k5zTSfD{47GI{aziqzMFB(1k+Z4ED!@rnhM* z`R{7@T0Gc{(6UAV54~p30H*N2IT7#j%-O-uB`Z6Y?6g3Tkh-#xv1nYal+28K=NyFM z2NLw-A3DRo`Rii69nt)Z)jNh5qY(j?kFZTY{QaGiix;&SixRkTl{Kvt0|LSIEkF2Eao8KvS4x_+Gy}u60q-(DmzcL?(s`?5|&!`4%rwPl)t2cKJ?Kkq{{6kl>l8rYg?~ z%d1)QqjGCH65`3WGJ8KPZ!W?i4sFA_l}Y{MzVqtdsrr}uILEau`s2B*B=@pHt!Yj@ z6^gDj?kK-vJLNz!&WzGDoU)TIJe_NKjOlpwSJH9YqT`bfIhCj1ndq5~(45EZ6aTos zea(AG$gRO1Pi~0&&u({qYbG1?&-8gj3dgOIbKBp7-MyoyD=9Yt@O*r7eohViPUq!8 zDArI)kyk~aRQFAMa5>PM6E{RfgtLsWw_;@ zt}PEAUVR^LW>E0-k1tRPnHP>_T44}PL{vvAT`aVbwjXvPKTpppkapr;OOZoCVx|Br z)40zy*3fPKx7b}Z{wntSB{mDb=%|)49q#dqAviUhFHtzgI3CKeVKL5rW~1ItB2xkK z$il~WlkF&rzxJsN9o{icEdDeO;c3!(_Jayc`UCzh7Lwp)Du(e(lV9|<_wWw_pS7<< z2z?qk1?{|C^6hGLgt~|^aDA2AZO)l#xbNMs?$WQDgyY9bkhLGhQq{@D?(P)sUd~Za zJaE(-xPs(s+_ug+_{opunKBtpr={5&s3t0Gb5xxmi$%MPFR^!+5#4Rs zLV1CniZ@>zrY{Q&oj3Jnt6I>73$=Q&=>btLc zivt~an07msHY%lQrDbxju4P7kM<`~U;wHSj(g$7<5;uW?=6i!X^IJlkYCwDH8esD|@DHY$q|{`b*z?=|RV+J6PT zGyiF8q6j|Df2W<^2rB);MhFxYmMo=N-huarLH#;gh;(3FNMl_=w0oI`U znv-lBl$PiiwxByqu<`}(d0^HIFA*4d92Mp_R@8wd zl;QSCjcd5ogm5A48{Rwx*F=xAK+ot`OsZcLJ6~;pAUH9PUEZBc?;@?@dKwmUSN<6_ z!eKL(ix$n$!WF(xKACCvxbTCA*$hj!+u#hp3}?NM{e5&_@S%L1ZMyg8c5*!#fGk##Y)VVioK>_t>#SX) zRJh#lYH*4maoXELuLS`=;l>javBt>%DVY6NcaYv+?lqd9JRv4~q^T^8jR+;*i%F}V zXpyQf6j0l3q2Ad*NM%@`>fY*HoUDk!l>)1Hr^yZTL@mwhoLoN$JoMPb=BNB|$BjJ$ zy&T1m74v z9I;tPW2|X;oVlYU66ebSx&6v}@tRvrR$-^EC4rxa`^OsZFCY#-WGk@l`Xm+r5e%}K zh~~TF-^0dI68S~MD1W1g#1j2PzUvX@bp!nbemOz`Rktvuae@%!jWGejbep>04!_u) zkXrW5Jr|w!-M36XN=>6L3jz_A!ZZn-o!Gk5J&k{FvqMo1uoVL6Eb;qa&e;3GKT=}o zM=6PVa0ji*e;H{U9=TnfdMTXbQ;8Tv^V?~AF0rwp(HZiQ`?T)CLWT=l0P3Nlg0{)v z3@2;FArqJWaX)x<$29uOy`-v}6$zO6mO4fD9iMjc=+P}U>U&mxbe?7W;@bfB?6#Bk z-Svp6&rb96!azL$fZP*SCVb`#Qn-TegLLcTY3d($yw|)3KvqK$Rnal;iqA*(5taso z*T!OE4rt6Si`Ao&2wvg)eiA^_P-7fBsMM?6f-#0rKYTt6$D=jiWLPAjeUtwl2%5BB z@4aTt!v5u~twTHF`Za*E_M2Yb9X3GWfpgCz4=T4aTAx97KE?F(C(F4MB3w>fLAY)v z)W9|XaNY~L0@I4&m$T2 zh@g+Sv1}vhJOZpL4+%DsY{9K%oQts6_k)tJ!rTYc7)UGS!zyz4T`+?~`Gr?CIDraweimS_YKuko`tkS&B`QzK9j)uTXgT z9QZ-D{fODDSFojll|oV4HUY|aTXX=ooj4%KnOe2^i@G*I#>-JaDvK)0NB;i7{$nls z^5?lVs&J#+5+QXgLiYFhZr%RU;2_HUgfF0UYMJXpJYO!%5E8W}lpitmEt+AOXx3X|+uftrQs3E8 z2fC>MLFHT42C9|}&Jc@}QG&uY_XV&BJ_7tcxp+1(qvQhx%Fe#vS0hN%Syvh64U><6TG^+tDN%S zo=o11|#ibu*A-`W_ZDsjke7Dwj*5`ts*4`UJV*!Rf*A z)ewmk%2*yWR1;0s3lrD=Lu5EZtr&juI_)^0RA#swV5pAQ@ z%aAIt6>{txc&Cfav;L1y2YxlyVwIFvb#luC+qj?brhnNj5YVqE|hqt|w7 zy)g5SJ5lVJ^Xqwx6-xEp=x^$rm64!Ty*daip|41dxS+i; ztShoXV**>ghX)0uvtuB|!)fx~6LbY@bNr&t; zdK<8*Ikz+t-1fDb1tnS`)L7wyJg>4egkKG0KKrDuulr z+^BF^*gs&XC<`C!7*IzR?Kr)@@XW!bCB^f^6cjJv8N9Bk)`Ss@!wb8c*?vS?FqHoC zcEq2{+;D)D*lcf+YY7H7JA&l%K*y9#;KM-U=$UD@6_A0}o1+0^aglvbEEl-IK3HK< zU>G>-kf#J^Rv|dSDK`1P#ZK_^uVOC{IcItcQ|6k1Z>(UmeBS?F(K|itIQ1gZQ|m3C z_Z@s+cppus$383*n#ffC47u79>&Z8?byRh})@SKTRJ4YyKj6f#L03z_(;H?+Yv95& z-Lsqbcpq$O_*iT~=T=Z*DmGqw;c$owjCFx)k>86CSAyO!%dWkVTJNB0{XAZqef!IG zdkP5B3dEHTE^@sTx61Pqf}*FRFc@ovpCkU5iZlE6qE}qgaR1|@K^uu?8NY}8EDXmn z{J~qVdt2}9q7(;gcrbRx{7bRFIq(pA64aIskgk(DOqhse0wUs%Sg2uB8qb{zMtLH_ zW<>$M-gu#YjJW9Lh&*;$ClNfNMMgM7p6`Rd@Mn1m`q}PYBv9&ZfAG+h+fx7X=}-V7 za{#VLfW-s^*BEQkB+3|I<3na&R|@L8_ljS;qO(1eAVskQOc=naA!Yuo`X}gTuR#Zb z{|frNzPCIyv13TGHj?`TACrZ{hpAh8BqEa?xX>nSD_!4N&!|lx)#tsBECrPoehQr^mdZ2$R_#AV& z`JkSLT^#lk$kLDdovU?{xFQ=5d1ttRWf{PfT@MYX_v>D|Y`}<0;R~l0B3Nb~0|=6D zs;eNQ)0pn2bTd70O0e;icy_rZaX^pHoJMo)2M`&`Zcj6(PYUXK-wb-N-f+n$Q~_Xj z&U5|UHlsAMf+K(+T#0gA+;qd z+_-#k%MT#xD$3M9DgXo-BOnRq1xVn&$*Neo_3VMNk47mu;i?*C%KU*Jh*0(rNHMC( z9P0?M(02OLNunH=iDKaLWNU1I-bjk!1%~i3eQ}2sNiW+zQ2rhe!?Paeg2j6^gw1hC zGR!ffMG#nbgS3p(YhmFR=ZNuBzr;%1$npDLZ61wr*tcu95Jx;NT~;9I2s8C^Dy4m& zT&?mgvhXrtr6Z$%hHodnn>n;Ij`==(jX2E`s>#iT{t#p-kxKiQ{OZirnBhP%z%O;b zk@G#hgn!&GUfnBw{&J_3>&4S{C4gpc#ez0+vZOG7Je*CVhw*|Z;zAa5ul|sQgeXA4 z7vEgLwlmSaxquyXjIT6x;m%7_Z-ZyZ{}lD>k2~3`yELHA_L3EdE@}sIRzp6i_06DZ zg)!CrokZ&x-W#cP)fYZerRfxCWb}l#7*`>rGbG0t|I5(V{utCMc79s^00gD<$WpsP zrM2FbA-yxCfwioBpS{4gz{{J>BZ#O~2fjN^S^1bmRgI~?;iZsTf+S5iKoXGb^3y8# z^ck85y!G@lN7hp&`!HI}DK_&NvV@W)W>${)zT~VR=P4QMnP++3v0u{O4Q+L{@9};} z4ys9yyy&cwZc6viI@;Q304h7`qZJT@-5;Ds3pMBP5mlf5z+LOAV8)ViB%7PYU>w3J zA?}V4+tAjmRzX&+J4X+s^Muq86|9G|e$|x?ApVFIs@}>b^B?#B8)G*Q_^a3{3)E_+ z^bWIs?RU6xS6HihJ5neccLz&&|~&40H*{B~0@qkS%lOH`9yfzw!Y=kHxH2kc^XTTG&!vO8ck=BHTiIIt+;w z3%Wj_l4~+?y4D45nlRDix+a^QMb#NB2HdvL!?Mt3DCT5-M1Sx?;mZUWDbt2ISmTMy z+n+Z#bFD0ow1=^!oDG#Y(bD^z6Db~@sl2J=Q|gn;ZQ!{ zH2=%{?pUlO(M2@uCxc!Zlx=7fb{^B^+TE-82$Mp@dY8~O`y@2)Xm&>@s?V8t!;jzm z5`6~l3wYD>i0k1P()em8AsYV)`qgXDHA4Ohx_1(g%$!tgVMkAGNH*kJ8J6c`O{!v_ zL7@uPT=`u3k=0hv2W>VkN$o({WpRDStUfHoTn9@o%HYk5-08L%y}Uo}6t6*NEiySE ziDFS94ZsoGVIXgNyO+h5CeYrn@*Be&>LNmc-Fd7@=LBF=!|^`ltv}T^H*=i4vTI4A zBjx8pDl?at^DBVVPg-0ZxS1=8Z5GCLkZnYbzZ_};8q3?&lvB7j+mIi?Lj#`LmN zxQCIIP@yx-oejmqWmEyD?)v11xwYfXSVeJ- zTr!Vr%NBrAR{awzpD`q-@@FU`b~%F&h*@gfN@Fq4sIv^M3-xNJ0N6o%=#jxvxlS&TsTDoiRjB7XGWgrFGOBH<}K&l(e zOR7$?IqFX$qQ4pzMopdvH8Ci6H zFB@lMCi^{<$>LBGA3-SBx|e~;WP{krdyVwajN4PubNrzmPeIw1FG}J#8EQ^wB^yEM z6Ozccn0c{sh#GmT6^^S|Mf9Cso=nw%B|WpoM4cqUf81|g-C<(>a)<0Uc<2AH`*Cz@ z^$4*IE}xlhtQe$-YvqtXgKZNIav9pv$Rz>W`P|M#gnd#VxB*SDbQX{oze3mBokwQgFzU4(+r01kGWg8wK zB2DuK((KtCzu~z;#Lu#xMY-W+7xDztasHttD01@AX9`frWYr+jm5Pn(ChdIy!%B*^ z^Q{tIa>`0}lSS>C+($?7rem`i-(IW=;#tKy?D#V{P3UDXTQ@71u-U-hejHA2XMA=% z{j5u7sLSyOaIV0pcsYMitJ|Yu#Ht)kRMS^&8Ygjsv96w}ZKx8$o2F-dYyqtPDtP4e{pUmfa?#7-wb7}yKYRVw4J!*a>|Hjqc`v>gbil{Ct zB&>jj$7zRoqL|$OE%xU4zluGTVG1IlcI<m%dXN5wGl+gQP#g z^U&R=9|qeohd}4RoHCC=w||x51*Ug>7h?v3^y*;;k1}kcxH{hV`lvVS+BSU=bU)iu zd|pJ^cUa1IR%{O&y@A{$v17e;48}PM$Nnu{bCI~t1t1K~w&fF#&-y3mcdtP&O#UnA zb%|)?`P`7s(t^=BtZ6pr99@|ddZc4C?TN&$oYI2&@aY7GvW(w=`JnY5)Dz!WRdsU7 zd6Gt@@E@K<1A`Yvo2& zr&S)AXBCvStwg7}0V^L?yb z-sg9^g@zvu86xN*8)26&4fFXQvQ)(NwV+S71(I>enADP2&$2{M!h{s%zn>V&9AaHG_AfYyR6WDW5QT!IaG`OvEjRxL}7*G z71U3sI^y`tff1s@eUr=0*|W?P&f)~{{?p4Fp`3hYz9#+SQTav=m-KZTB7kv{@r(mu zNx|$H2Os*~j~03RDsHoLerzG-j3wSPgw5797b4eB@z@~Jq%jrPO(2MHHq3~^yqBoF zhrCm}UBuubTnb7d(4h_cdy1LtLAds3+QX@5edgz(_~Z*ogj+bm^IrwX-6I=-+km9b z`>@@Pf7~Bl-IcQca!)#2f{g=i;Mk>)Vr$x2NAuPP_aOsAvG-1MpcRUvMUqjox(^-C zB2UcTuBe3RGsUK@Hma;<2{)~!YmJB1be8;ar+an(iZjHQzgCdjT{+C*%)XJx#txX| z+@81>b@&nEzR@e7`y z`3|mOD{Ty{<@y}LU1*)<@f;~%+}(bh2B4`MB$#SuyzRV(1;IEIl5*(_dlU3yqNzZ5 z7YE0IuS#Eb?5j!cmb|(V7pGBun2+D5qf!P%-b~-udEif!d{sN*my7veWVQ_xyv3;3 z__aCTd=NRfH2h-_36I}4e7S@j&C4V_{fUhx0Uf3@tMaVV5<%&O54vj#!w0>~@5Y1E zAMJC}%AtHfcX65@J$2UI_w! z8Q1qAN*O;$-bpA`lTzwdZwc>a)TKy(aiN2m??Y-RgV;qRl$)W}C&K$me?!s*~N`6rfa7Onrxq(?!8wf6=97MaPq2QM849^OBmNaduQ%3 zn$(v|snn?d^N6>Y{RXq5H;@i974=gv5JZcC_elqyxSto7x;!9tiuL!@@(=W)PFf;P z^g|-&>|b;AA>(Y=zQs2`i4-Wzm`@C)0{dd_7^)>do_$ar5cpb znLyC2QJENh+r8(U`yxQ+hy%=0CNRNiHdQ)@N10Anxxjs_*oxg-k^qD#KB1Rd1##7B4sqt37ND z|08gNh#Lr6uAO$2$p2LZFD_QzKgII!`SyFlOtD~5-KwdnX*iZ6&x7d^t!y#cOg4+W zVkw=0Xns;T@ku+0!t!H}23P~@<@zH0d#S_xnceErA$ z`PF^2^e^`r!l3fo(im|G)R>j&x^gz8eDz?Ljkqzs_pSK1XecW^T-U*A%JTXNy=7+U zD@9=ga$%1(?XUsPzQckQQ~NdLf7}^g-MQzDb&GXPBfO0&;yiD;F!I->_Juw>m_SJ` zZQhU>G9%utU2P}n^})s|!*d!T85Pq`yVJ(S)g#;OghanFd6@!BG=UYf;mXH5!aw8s zPHYEl3GcVlHeS{|w~^68FDde*L#P^~S9<}4T=r9cpk9vpQcpN)@;*^bCCrce2RM?C z>E!~X@h7^igK2|<7IIw;3pQ!Wrv(&6M8<&z_ISIlY9^#A1K_j)oaYe4kA^zU?cVvH z7FCV72#USv@MC*`J^GhH)t6iKU9GEP^qKw5t{9 zvpSu4v#G`mlL?l)tkI_ThkQ->VF0HBp$c`wrz!uq|9*APs{G5n>BOiRdHt)ZHHs7! z2A6g>VMP)GZSQbFv=x((zOq)k^6c+GbRXDH^X%MNO=!vcdr2{&y^sW@fV6Q9-3biM zia+j5ukMUQ)Pxl^Zy2#=;>oAjKe-M^7FXQrcixgzIw*-q*0r`eTJF*;QG9asGk6-a zKI-TOv6HaX&NH7z?5(T!;=`wGI+|2#Qp=sp zn?-=Aza#k=Tf@iyEq1Nizlt4rx#3tV$tp818@<}5$QEwRh-mXkUzHk_hv4HhO3HPk zzvpqbvwFhAO}7iihivLj3;HylhSJPmWnp#&Lv=2df54ev!AUibzAXwT_E0jGxE41D z5erthe8Y_?*Q8gLm`|ip@I)F;nu<<$-oI8wf(dQ5s$xRN1YgR9jcCk5k?6Od&H_PT zLL&duAtCS7EVrLu8;lnqb>|B@Qy_Z!n;aIBhO_JVm6aRgJ@Ivxj!sXMysTa}Jv&qk zEp?E;oNBTo!TsYe`|ZZ1QTIsrE8?)Pz+VICuq>Jg4fg9ogr2pS>3MmBCvVN=d>;+G zokybnA6IAL6?L?JeVPG=?(XjH?(Pn01f)ZHkOt`nrIAiSKOz1h5!c zm{dY(@h;cUVY$CH24eL(L?LhzQfUDf4_Et^qKDwTq{e11=a=n)G@#(9-i9b^CG8)f zLnfIu;npd&yb`)PhXj%{Bu+%urXpXr!zB3t&wXa}Bkb?`JiHvS>oYmHO$nB7PZ$wc zMOoOO&n}Tz_jKGVmsuwYn$-j(UpIum{pHT_!hJQE%0j+BcmNN&s0iiH69=*K6g*k_ zbH^PwL$us-%p3diNVTD--JgpxdGUUCsPWp`KZ$hdEIpV$^X$&%i-O|-m?(onWe!#I zWa!RxdTaGK9`w(aMgZ+$8MWU$j=n3ZF5C2dwACX|7;{p4g2>ML9{g4&eX9zV-K>Od zXdYyU1HRD1d?!L-&>`}fr*Kt{Y{e%{7X@&wL4Qp1%rCPcGYR>*)re!TqCP(LBXvhk z%wm{^j(~X#KiR%Y3+K%bGsN#|4@~9kV}Qy(DhU)?dRWaBKHe?u5K&jDX^FeC@FL|RsQh3Z zF-R6a=K9m{mpkYG>D_O0V!__Jx?-J)0L7U+Xqj7K-fi2SM2w89!T02&pEok8{g3Xo zZ%EAs;`qLy47_K*5m~!`_X@n$6_z4i*k2N8&gSh9#OOiC zB=YTHq_5NWZhZDW=nK=J#egM8BbTbaZB_v`=2kbO%eT{Sf}Gx@fp^PLoF`=YBhz=) zuwBGVjs%dvHG{_ix%N3ilD}!laEK)>CQjwW3|+jH&&yPl z*(upJpHI>c8^() zz&x=y^~>vl7Qp+~dS(=M``-i&aEuO^`&IWV?v_Z`*3KD~;+9KIRS7oq0SU>uKpo3> zeam*oF8R+G*JN&C=ndh3K?^j{T7;GM$d|TCAzcha$Z%KPxRP~jipIa(xn8)x=iWRa z$5NMrEFy(oa=C;#J6E*1Qu$KmlZ=?MO_YyNjg$#V11Z1Z&_G4UI~M4U1G@>!Hzop2 zM=&NBGLHZRFIpRY$(A1(SYm;N2r34-LO!zm5@>=Fui@n#X`dF%Yx>Q#i}vGbKia_z z-z2AvGtZEA9gkGb&-1gPUW5|JTMi$*kcYpNrl^_3$5BEp?eS*Q3|Z} zG{2Br05+a_%C1vR3QesI4Q_Rfugc~j4z72R_2?NDGRs~=cq&iNIAjsP@H3fO!3cB5 z{~CK$|0`qnYQ}q_YPRj;n8&_ITh7?I{cz~ zGUR>EFs(l1!PaUra)*-bWUhVRb=s`s^kahNW)eLQAtMs~APRW26QxC|-K3%`+Kru0 z7>%T}m@M7PYgB?AO+St?ipKL=o%2Cv^i=+_pvF5^MkBl+=5ny;4eY!tbk)Z$IS`ZV z2XKWviz~U4`{tU2Mho4Lzoy?-@>4`xevT!#rppQ=)AlX91!4FXltBAVlwOoAH|YLL zx`a0v!Ji>2bS>3HK=%2TY zI=Y&%dRs$Cq1eNZQM5)3U7h6v1r9{ ze+HL7Re%4>o#%zSx&!`cr0eBdp&|8C;^R=W_cv%bnu9$%_IB9tQ(-2{$gL+xe$ZWsqeM4IoKUGabP@B8xiEX^;wZ#tWe z1z%~;Hga|V>SahXnpjLi%0SS{0LjXdIdxOjOyy@laUf#@d}I z5s2x*>Rz1Y9B}jWpy_6h=t)lfkUOx#aH!ICB=-{^!i0+s+K*sND0gOB7UPc&3tKCZ zS6?vi*L0=LhpnK*;F}W9hh=rHO0wW~gY2jxJ7^$OPDbX3bg>&W z2sVB^Iy)QblIKF!_@B*}6)w%po|HK$!{07s~!FW%rMyr}MjRPS#@FApxo3>Wa< zFmtYaM#g(%P8sml)fM;&PB+_EEUW=4Av7~nP`*1mYFcXc!kTU3T?5oYl5ywIVl^Je z0gio@X?i=T4qQcRC;U{wlxa^u1}xpIKoZ)%5NW%KqERpu~1mv^zVkX zem)v_S>z$~dkCK{JJ!8|+3DHY#`J_Z<-`IJmGS)uv{Uda6jt*GpM+>inzAVkisZO8t@cY~KH4Cc(L##9) zQ7_Xhtkr?l(w;V|=vj7~u7GPVQJqG}PGi;CoyR4*wF_8?km-lcR4O8I*!q{dz>Bdv zd|V>d)LihXF`Y1Cp{ z_#N|J?Y<%ADyr}fD8_b3TigPQ4#U(xZB!OjjOFz;rc-?<9{~g^(8B_XO+VB+7{zMc)NtIug7Vm0YIHP^l}7xj z8>8-hr&gqB9uWL-BpWUfYKhpS)NB1_V+bnUeip(W(eSfO*M3U80B@e&n2o#z2)6l< zTh!k$T;x$Tg>0EGC$rT^#`|KV9nUS8CX>RPIGB6J7zzry-6uPn%h4#ZRagPMoY^0J z*qtH&;SSEx0dwzIdBq(PK_$}BqvJ7-Vtf-Z^atzHc>C{)?_-qF);fO3NpbqrFqMI@ zhuA8ou0_@MT?+1HzRsN1vxJh)5?W(lSsymr{&E+5;l8tE8)A+$m~#m;*j~4rbH&ZA z;$L8jpxty(_f|RaYUUfsT8+&Ml4L#3Amhm%QVT(nY)Vf zK0KQA^((+y=9gf7hPprrt?{C&-l5*HjIt&l_Z?Gp7lVTy-VsMTe(gb>HxnbtKCcdy zEeuI{5eU%>JPMyaW1I5FP;wjI^KNuW)AzPwsK-j-x41vxiz}6JV*?i5vYJN-EGhrt4i3@*b5GuQ#l6me zGxNquc+ju<(J{;C%#Zn)Ob#lQV^pyko8M&sQad89fUveSa{mYM@n`$?5@C;72&1gn z?_8&bCHragGZ*cDxeL8;Pv&90Y92hwbr0R*?snPGoJ1J}zG6Yby&w^W*aYQse?juIkZTyE6#853(j&>NdK5NlyA8+JX@pM9P2$rsffHxMa_G z);I4Qd*wjUfIs`dD8E#@vF|^(wXtQAi?&%A)yM4MfW4GNunXEM2<3&#PND#yN^x%$ zK16`Pqi7oPU5()->0zD(`Fs4%r`?k@bw`lG3YC79IMo6gxtZqK;qq}sAG5=gE9th4 z#1a8BfeqP(Uo-*qSD(daE2Urd2mWj9Dm$-?9jmN>yW*38Tcb5%o3IHHe{tXXPw4#& z4>Kgfz0bT{^i&Z?REX#h<;*_`xLwMrpUpS5Rj=$0XKW#IBW0#z=R5ua7k&Y*fX(Tu z%JGPdG?A1^L^%Ys+HK>PbYe zTmzUKQ-&DX7&@xCFDgA;sh91GnDeTj;~|DM-(2eL;c`N8^Wz@c7{(^jUMTZU%Q@t|KJO!7pGe;qZWCv1q&Rj z9{McneLLUsBP&@WA`g<>Dfrn{^~U{qs^p$VxWb4)@4HMjG#B{1qq_l?1N=BTbo96X z2pt@x0~Wf_!7HJUJTp3$K4MV8zPIgj(G}5aob$w;Za4;LeNCjT@Pq91u@opqV0dF( z^-G4ly~i0wximo-SUNY}danOdzk!9K^DlRiBuIJ^(1Sm;kTb-%h|aqKRF4Tsi9A-) zrH3%sU)iKyeeD9B{d9G_88HIU^v1lA;uhQp4_b!lh%oEtnq$j_BJwKWu0k!pFF=nx z$vW01qXJDDQ4-yGqpMa-mW(k`@@l!J{wvyBzu1fM)7TaTr6@eqYwpc2r{4!*J~hOL zDiWKRfG)xDkkS%IVU9Z-KWdC}Rc4?tX1m3r;COA9rCT*%5WPI0SavR!)EZ0O2rljL zv?$=2Mi;O#u&$$n7lM8e=k(ffgFos|5?|;w=GiRB1gXij^E+kFr3sQJ$zgGHE8WA+ zk%l(LCvBIg%mp^&%vTk#gL?U-?lnrJ6l)uX;g@OQ$eb3?|G^H<(E(#eJ9&kj=IJ(S z(lox|!xRJ`^_v>qA(R+pk#zw!#2n$7^rmuMyP*87>2L(Z-&TT;qa34HI(>;FWz?kj zPiDBp1rZnpldv9)vw8hpZz=Ggp)bIUK}X)e`<}W%2gR`;B|B&=9@cTm zQQlnQj}Udn&$$GRr301mLBuaVyahc!Jf3t`CGSb?@lMDvTor*1^b>(%iMc`Ssx$gB zSHXjkzfXh({zx7n-CiUcvRgR$)I-7v(7zL%Fw*5(m%T7tdHX?~Y@(Npeb2E7s+1=} zZemNY2Ap&K`E-rqp~Xr)kuO60XF6#4p3j*M6QB@0j(aeL08tVD)zSiAMU6x+_%nOamRFSfgEIwOCG?;@|hd;NJ>4TOsSVX z`=f0U>f-}7YC(AN0Y zftT$Ro3$UC2NV-hnPTcECgRt+G4t}ZD|7zv7?)Rq%=@gz^FA2wK}wNRgYHA(+B^yH z#Oh9nQ6{h~P2IDJ3sHP$VF#WYB*6;iZepvoCZ|;JbAvr>>tZn0dIMbt)~FSKtTQ6P zRTr9$uh-jdt#OIB^ocT0E@8azPayfbhM<&vF%x+scYy9}Cs3^BBSoF((9k@JtF-1~ zcs^In&C%4d8HGs14|EqN_l9p4omkl!l?^NpISq&%OP+-*1`I9sZz@{=cL_ae0Vj$7 zg!X1%zw-67l6t_+gogvWr9`QkyG^+3(Zr$#h{K3moW2(+Ze#Sbud%o>8C!SI+yWgm zHe3<&aP=C`GzMf>v>A*04d}e*FL3b};68-~J?94+Q}}lNYh)J+K3y$-iyW>%7P1-4 zQ&U_-#x^ZFY1o(%ADN08%8jP+vvs1875}y35hli;7kurK;AIO~%DTxf@_QeK{5fNY zSnT+VhPPC*GOkai=ek5Q&(Dxa3zt{DQ=^jV>dV50C7@- zD=~7rt_>qD6OroORYaD$MYe{Tb4FI^zEOC4CjEg>ZS9r)z3&`(_VEGvWR9tK!6!qD zzsS6V%T_iLNgFvlzpa2Xz;LIZc88;)@`4akB@m0c)+r6gCflHFE~eUB8YGOy&8S5G zWEajcJPNXXvNk+m4`G(AireTk!eH_kJuQKWf9j|;%}&#^ z4m^VfK*!6yfyMZy*S3>{hBS!lKrt7fLKi52U=|Y=RVUe%DWTNsoCY@?K6y2(EhsHp zN}@k#+PtUIAa%I<=>*qnh!-I!P7NhH132>p zitL_unKyl&Avc2KxGztNp6-!1_G=l*FJNGrc$YNsWo^E0<{TYL*KiaBiM*aMsDISk_u^)8GoB6Wr)_NyeqK1XM7h~b@@6?;l zJ0Jk#+%(+1C7Rd&a0ln;fVrFgdBuIELMgVEM^KP+vK*)NH@3=XWCGq-I1g zbQ09#8GB(qt$pjdDTy z3!dPDNR&3nU|i<+*%~algDOYI^@MSn5p1X6Q7rwrIJlh6FmGdw6A{+ye92MTj8$jC z{D@ddbbDrLszRLA4l>M=2d`}qHKD}aG=+{c?{%3xFcvquL}TT(%P2>bD<1BwPmFHo zuPzdtYqp4*4VVVf9rqVXKEd;R>8BJB4wr)Gd5i`hJsl^-v-*q&(5&Sk_kL7qA5B_k z5x63{*?C~#7fF0eO=7mPPzz^!w`V^gB*o(5VFpZ+QRA@{1GrLR3J?AG;r9=BaE?wB zZX*{Y9nj@*pNYm=Bm!v20TM*xZdHWE=LMF2iFK4ss;W5H^;o-G?Om=%+~+dYwYIG-+p3 zGbX#c;LqxQhig9Bev(uI7jx8?lyutCc}6+ADnHJiXXYiZ?82<3YiY4sd?9JnGp--ILywZR ze*Psc{X#rjp9u)*n~cAHW}d6D5uCYc(!dM6u2b#-WM9}8hboXR)YW4oZ_*(_&3bDw z#;EghUc;67Db_*>Fu;^Gl-h!0d!49F1#BrDvI)i_(biV9 z%OvP(nORf%2=KyX+JCQGED5`W@Ri!H??st@*BxZtVV4OWosQpKQoelXd*so&&wKBw z=m=QgsvmtDB>8Xm6r7|3miiLlwbYx9^E#?#B{p*Sj$u;JPb*y*ehPOgd_(;9xOE?Q zGq%sH)zCZ?PNp22M_3-raTj_A(GY#C49&s010 ze#{w7fWZ{~I^NRF`3LP@^6Y+iE7;7ixS?Cv=(Gc+6*Ztt-QO||5qs-;ISor*22w$} z`w~2#0b7{v2A}07y+<(qfi{x)v!abSrp27~uWNpuWh8a=uA3Nv3c8cXlnUD42S&pR z*q69jA|uvAAuzguD4=138Sv)lX%rbGgMNPA#+(~bSvWj}7m2MXW_6+_7FZ%*M431agyPVW__nJ-0sx5Wt9M|8jS++YCyT?3) zX@erxA`;(8IN(E^1a0IfDnFb3>Nn2O5y#9AkT>5%6vyu`1mBi0&u8@`Ir%kvP^~Gt zGir;)Z2^&5Rw%V^7`uwkaX$K{CC}z&+0hYX9=xe?w z5I3Be*)jLy)k2XC_wMF}N$P$DNDQ9%{0bn2`3F4i3-}PU*WkrYsjr5~B_){i=ap!= zDf(wnN2YG0d!81;(Tsz8+dfF}H`Y`{htRXo&J>tv{&964OZg=8v3c6qvobj-Yd>q~ zFL=2Z@Eb;ad8^h6W^tri?rZ7_MWKa5>YZgl&rF-~8*f5?GZAABah8chVbHY}ji@1F zpXDt6EIQJD|Em=3L{;!q2s|e$0~Zi;qS>~Fw@x*Y1h;2C#{pHF67pQU$KCrtsxK?Q zcU`B*N?6L}OuWOvI=DKezFcu5~ zpWDX|oBLRIx=iJ_(xIFzx7;KBZqC+el;1G=QS+n_)o@XT3cpE5M-7|DWTL;0mVJcJ z%QY|`uaPx8EplH0Er03&iWz7rlI9(skGU=CTgE*qLi9ILQWQB6UC7*nKl2MX4tORx zd^OC2$|in$4j3q+HZZBNfk{X|jz@LI-cjnMgR2w5I!%o67oYl&I2^uSbysRd7Sm0u zbe60upZD0ycWu;MmY}54!p7YUAq!Xy^gN8zd*FqBu`j*?h_b9he*evI_>a`_U!=~2 z_gd<|$qEJ+i#&4G9qAr~e(kZTP|H1k#QX@{gKOBG`rRm?%;XW32jVsXaY)y8V?7Oh z(Z>^t_mn|Sqgr9E9jQG0^%uOt3wW_cGXU;8NWhr>w922#xH7{em3D2jeVdO>Lv|`X z<3Dtk4E|i!4YlmLcoK|N7H(x8Quf2$BiPJN89_I)jadN2%w+2&x&*~N?5)$Uzwo~~ z{)mEURMGnz;3<~5jQ zb}#|j_t**4A!OSL;ED{r#>gn5cSQl-J?v*pHLVzf0Bh?{x*=gt&e>o2+j&R|d4}VP z|8%xH)5O-P=C3{ES6{8=ikboVlOU~6N)cb8kzTb>!EriGxD7#&^*M!>&>e9-Aw4=NYVD`%iGrMb{my3 z7{!sl+!bHAuWr}OBoMJ%Hogbn6nCPx-l57KOoPK<;fVgYdd?tWW6&o68iqtFB|sbW zLqe)}hJ=gmhu?b9Y~n-4_;J|4uRa`uTovEhnRA9k0^}yqN$`6^!~5!rP&29>5(ja>6ghiR zcLf^njR-2&d6%M&Cbt84=`He4P+vrqkq9Gy@1D&%jMGjy<*3h z{JVJP5KB%Q#~tY#7RRWwk2>ig5mmTRGm#26nX-}L55Bp5i1glB8R!!NLOG!B{;@^YdfE0Z)JFs|e2GT0r#Yb_Mr%2Yko z6;_WA^3?fr8Qj|{i<(oK)#$l}bN$`X62HxJa_Ivk891u^N40Q6fAdsq80lCL#Ce8L z-4F!{DMrw*htK#zs{Y9g5_I1ZxZ@hz_i>`4vT`3$X^sG^CLi}`j*KStv&PQWn=lpuQkj~jgTF;}yKvL14@ z4=nPh6FvqK@rYZfF14F#s($fdTV!X<1lzaGwo`nrNKsok(NybkNo3dkD?)p76M#WppQeC&%)b@`4%7jkAN^=wOPxmWLZl%D?m4*-s$dT? z=s-H6XS~Gb=oJ1#ibSHfCF#Nnvi5>VGo3!mQ^uc2j>=F7vCrw&Ex%=_xoi(RNfyWd zf>(I~|NWE9)aG@O`sYyb{n<70t952y#G`hrq1aKNM0UyEO+iE4FJPH-fQj`-0LFOC z?ZUkG*-bUXf>EwgyR&TTTkvx{pf9x53kCXi>^g>B-fq!bgl0Z_!M%IvpcXGoQAyRf zSno(1?a{t~)c%-~J1T*wd-2;h_Lb4<7i^nlpqk_^px6n{{3IyKb#t0u-%LiH(M~a{ z)-B-YKrkYb9w*x7V$p|b(G_8kK{H**?#$yP;kVd6Sy!62hbz1Gd1}1Jh9>ZrT?h@4 zMP_X_AU?hH@%g*@(KmHy#gQzQ4?=yrs@%_)n|Z@eFkD(e#%i8Q`1D7qNFO37mYeRJ z0awFNFao)@2LE^rI8g@-UXAfJ_XORC zaCu2_s>9aRbRlTv@}zw6>`Nix@%kM z4b9yu8@4Bwh<_?~wtRbaJ^`cC?BTERaG$4C<1}%%P!;*0HzoI(LZ_aVz;lum#LWcm zVDkK+KY8ySmK;9LTgn&N_Qg>4>lMut-;zF?%04wkM^!r4$4iox^6Tc&g^*4Wt)*k0kl@*c$DHKVu+2Ba#}@dld&zBkXSTV! z(7OJ_=4<|R20I~H0Q35r9gmtj;+t=lKO}6+^j9Ii8`>HH_E-+!y+^si{s9k;)B%I1 zVtoxB)1HQj@z+-dX2UCb$4p-$E4O-(AH`s+*AMm&+ZiPuw=xA`EsRLW` zq79i<#RyIu&AYDRO~E!6_;<4L^SJy|2_@YwgPT5-nu#0(@WzWuGh=nG5xnen6M`TF zE}$6lzMdbM!;LcM9_IJEJ)C7*p2;Xqp;&2|u|F8ygS663Zi+tr;WCV!nJ}>8UjT5$ zaw8MX+%`YW+?b~rECYGKjlm*jM{y;%f|#4o0DdMqjbz5DtR@3OS?rwxNFORYK6(|* z^D+_mv1MEO5a+C>iM4TkHN~F+2#W9o&mT3!s9pj#|9fy>;dpKC?;Yxx!>3@Ld$m4f zYs}i_@^IIcEnMCMeqrtT+YxU z_-J6zMKor$%Ksc76)}WJ`i%|(ip4z|2`yYD)57;kIZpG+sMQ9lhxaC!n5*Z;yhj}h zbO4;rat^2=SHdoqgrXMez;#_6PQ(0M-BL|NrT7N=5f7fN7Qx~(tWnn;7U&@V`n!AM zq%A592_3)CQo$`A`A?I^`6R(^;-Ix9G?_Wvxb+&c{P-f~LjheWjVQx_bqGKc3cLzy zc$(;v7N3_31=rHtn5HdvUZFjO*xRlu>f6}~n2xg*Z%uy*K=G3Ah zP0s~j-_i>1yTO~>f20l$)d5R=nCG?BXY++vB*cY+slK%ag-GrpY)aw5xj zs80S1Z-C*N>^cwZ2LkQmFjAxqY!OjOALI6h2KMDB7Bz$8&RNRzGD}z0=BR?MnLp3Z zte#-wcOe8{>PATuCjlA7ASWDfMmA#EQc2jM4(PnA`^uZ4^ z=rm)zEq4V)R2{e2P*H-&zJ3CVt-|xTz!@Fv)FGcAq**{_D=<-7jWoy3?$-_77$_s1 z5Q{y8x`;yzq|^EHbHZ2GpB}0o;uf#iec~atVW~HG27^~;b51i%N|*ma?4gd1m>gRm z+$`akv)B{Jy@z6MT!b|KRJDeRm==-atV#sBN4lf_=+t0$P!9N+Eh=(+8r1d=cyOu? z7<{h4Yw*nQ49E7p3{T}VUuA6W z%>EIc^Z^2+}%Z9b1&LP5uTd(&c4I0 zgETcE?4w1Kb#b$|Qsx%wWtRSMm$9ZZZSO4}+tn6$kR7$!yxW7AouPwU*6j%(yrAw$ z$C&-gUF${grJ9hHY_#_alM#U^#K!0SGJ;Bw7IZ7Z?Y&8WE_8XcND?;YuC%_Q1D47g z)$+wB`R1+q(4950&Wx)Z*|ZMumW)rgCQVR? zsVg4ioVDdy-;pjD+L7wG>gvMii-J#8n?$FzDq`iug?2(v4NjmrhcxyzP>a z4Q>L2CYI%2UkktNyZ_hQStMS2`-Epq{AEXZ|28WXl)XZkm)v?$6fV6!)HfFJM9P>(tcsHavG=k#^ zX=a}^OvoqJ2&B@gs->C7y8f{`65Xy}E7xCqsnrPS`5M5-sx#ia%xBJWLN;}|JKw5D zaDv(bH#Jdj)Y)^P^4H_r?t>3y=ZtxRRZ+(a(d5wNn2_+^=_Gb0Y}-~Me_HfMoILBk z_gq#?Ayg&MJVo$<7Rb+mVp;k%4sS34%fXQ(na@{fe+sD0&m=sr@3wV+2G~5)6RtB- z=WU(wrG5>@qR|{nn2#=+%n8zXmnkD&aIsuz=KvH-VB)OH)cNSk)~W08E7n67Xq(YI z!MGhaML-Uxs4T*Jp_srb6{?x58`DltgKwT_9}L9#EFiE67;Bc?Cmt_=`p06ZU!+bX z^IGb`lsj2mVKQZlab@^Xsd=7TNAA$orTE&_I4T$ddX2f*wVnmzt%(&!3~hD;^Xo2# z=l$gUiGs!sQO|d--uuz>f5Gd#fFC_Qal!1GfZW-5r|Nlliv4&!MbsK8Uo^e)l&>Jg z8DKR^9MM7f-qhdiT-h>S5ZIC&IS{gRiJdRg5tqi;1g<|SKyeP{$I*>p+3%oIOd>oD z!{!o$W=wqpoicywJKby&)hL;c2eW=M>j?|{j?Ji$wpv6ht(kT2MwL?z4JtwbV;fuM zQ70v4t0|zzb;<}pX5y0j5~t7u^9R-wJ~2-XBbum;Y@nt)4ZE|Ah@~0(THr}q+|kP4 z&nob^%!kx!4t(^-91Vg=xM7h@q+JS$9NqBwldq-Zlfqfbfux$+vE8@)+Y%RK|n9zDY%a|k!)imu#XxQ z<3}o&;>EKyL>UY@_pd{rH?RZOwsVeYSc`&Qm+o6B**_G6%&xI{6%@ zgzPelNZ}B24cMpspCHHZWSFCK+V)PFJZNKnYLqH8%7}NY0%r4kTCb6kfnu^{%o?Zm zS2}Q}rKNkfW5KZA>PFDzQDptq?Ori?cH?6;8Sb{ie4du!muoBIVae=bD4qy`nhby_ z?{!F>d4zvk9pGdgF!&zj*Wh;!Xk@%(hXcqIKMSp4s9KVW6?lG(*Iv)(oR#azI(*;6 zKlcfk*ZAGqls%HYZ^dvSW3W7aqB+9u%|;3BN{8IyU+{V_;8(+?avS1O6L>hU$+jS@ z|EM1mXGS^SMeq=Ok6RVS7N5Rxwd|pV*U7HD9JAr2@}PCJU8J5yWwRvy!-W%k$OnE? z3B9gD62%{JSJ=49X(Og#D-NYEhHh&*!a7>b(FMLc?a7z}J~ki(>blGpi(GrABF10z z*fRg}9AYRs8D!ao0~GUO+Z!rLnL-Wo_$GGep+<{^Z@E6c4o5X8s~QEWX*;2nsaz_r zh>FRJo>3+l@#NM*a71NSz&KNH ze6$zx4OKR_+78lL`b%8@h4>)Iz*LGLTREpgUUvU`jQsFB+`8SZ()aiZX)4d06akYL zhn~!$&sdNbiZpRmCL|B!9kgn{jxnZ&^k_vhja0y^yLVi8xBCGCvgJBZ`Xc5CkBNymVzC^6Yl$< z8Q}q5)pS&2>%$*mBX#Na_GOCopn^0z@|1ZWEWYsr-HRz=t4w?d7RN@VNj2EiT=1H{ zKXmWxP!me(h* z>w9(NXCB)i#$P{vX*!Eut6nSfvxLWu>MQ!Ig{IP1ZJ51p;fV5x*)f{{?UG ze^R%BR?eK5Zdt4S`QB2*o29D!t6KZe!Ox1iM1inwg!BjEMPH@oq?@jVUCp&|_DpJ`{**6KLx>zQnCG*#l-P^hVH?z*Ls*QAh& zMtx-tYv_tBHQ=U_tL0)smWm_7%$;(y1oPI*^vf@G-kSuQBhFsr`hM{84DS01Lvfi9 zbC4osqiy1`(K&&xzIPRJJ{mHItgD$BSz=R}6gjN$o#us~FW!bq0tl&9_w;=AEnseB z@q#BKIR78;;BXxBGJjw7}N#2ajS48Gb4oH(BmNKRJ(XRXjZ}2=q%ge+d%?aWmclcMS`mK>uN@RKFR zD_@#JjiXD8aCJ2rFZJt4gB^CukvkRh^lDuKb(4AhrC>sH#*hpmh?^7yK5x-aH|2)bOJiNc6Oao4IK{w^uAz?@|9}Ul>wv*y8NUY4 z;+>=>PKs1z9ohK~r|w%e^=#q*Rh&vBim+a8=9W?KiFmC+iPWg9r_gyyvpR<3iFW`~%CtXw$@;}UTMKwlV{ZG&U6g;4QuAV1rca$V(w(&dWZd`oI zn55@hf9Rm)1dGSaox1p;!QM0~&wvHgsRId2u~nx`a5l3dk&oBiX$7*Zf~|A2EGx?!j_0SH2{-w*i*9Gm>9qWA1rXljy%R zo;NkbYq8OMOY^ji^c@%aAwd%<+1zQ}y>7_<>&cy-V+EudkpYc3-@o>kxbe%FwHm)| z*nvXm@1a%;l@z)uit}kRlZwU4WaZuI8FX9Y5^4Ml?~hM$A|(N+=j3ikK&n3&EGU9W zvl7Xigo0Br;K!v&i{Els8Z})d1{2d;Jj#{dDm`PISLG1O3R#)s`!2wCl2~=6KoyW# zjRG7^Dt^cF`IB|7&DTy4xd`iAfRe1inU9wuNsV)gBn?R*4vWbe6O?K7L8W0OX`YG3JJp3-qkv67=JA~LjFL*%oJrq za7m34e#4|1d&jx!7cRsiW|vzWl2aXQz5bWG$&1o4@w;hmxw;uI)2HQ^q6#N(P9&0% z2L|T>es3Q8%mTej0>8JgG#L7oGq!xl!k~Naz|HGtJU>9jiZb4y_(cF2DE6UOUlTls z5$=I@kC<;q*0NRzdFWzOEb0>)7y{22Xwjy1FQ+Z}X(e*$B(G){VWqJ6V<;>RX%$;X~QXW_N!kT_%RGofkumFru4!+sQe{Awuh+>_|q!)J4&_0M? zs`w4$cRb=uK`~K$XO#}A^rg!|SZbedq{U7QoR1$C=x9nPER!UTlbq^8yb^2A9f3G0 z<MBGYo(13$ZFZJc>iN7B0O0Kj6UuJ7C3IzIzS697E*$Q-AZ2OI;lX+z*yN#)*6$ z{+&KSTga|C=}J|^ztj91RoVGbq@7?OO}p(!n?gN=f;pn^no=ElW6{a2HvfV*eNjB6 zzo-G0X-mpsMeO=%K_h9)j_i`r{)GCFyp^7e%To94l!&OS-L82UKfL+v=1z~heDVsJ z!2{)$G7Dzn>5L-e=}%f%fO2 z`|o%;vz#ZW)!MTgMu>oKL2ZFJhyh*vi_p>5S&DUc+A;g|JHJDaa!P8u+eiSdzd&*v zu(758>+K}Yuf09cHJirWTU<>q>)fifpQXxtFkRps1FTm<${XA;A8Z3T&kteWL61G9 zPa7NVi))LvW$9J69+x|<4t23RZj&}!e~FvD5Z7!wtByWCPD5W7^!tqFlB#W3^0|fk zEn)uZsd>;hZ9%EWR(jgPUZ5|VtqOa3wqXHcwwND@>8w-h7-v>8KLxmIyStoLtJ*2`IBc zJ*khtalsklee&;;zlCF*5U+LQzL;Z}R0f27RTX2WLc94#>fneSu+)L>ucdx4BX)`! z5WW_&JOF-gqS`XcGU+L0m_F)o9v2tRs^F!4QLnGbY-QC?H zDcy}AjfAxD-j6?LUcT}NFw8ZJb)U1(-fMsP2Rx9m1AyQ9^csAhY0q_=O_99#hZ&ZO z)+fi+e0i@*F=Oo>b$w;7Erp~wF3|<6gwiP9=byDx?P@SK2WpjKDHd;`3f!*K!Pl?$ z|AIIEqj=6DJ9cASt^uee*kUn>x_EHC!f~r|jnEq@)RSHh`0vz&Ox;lzP3_7Ee9D{2 zU~f5Hs^lRBo-=0UM^e9tQ3BT;nfG~uD}}~)JL1SI-xU$c^$@3}Tt6qQ>1zq%XNC0N zU9j_kRF8hztQcZh1?k`;HLQu!tEGM;ix;35cmlPL+#!kDkNOuRAo7Y-*1i!M{gvan zBunnvHWiemu|ivf5Dsl0sqX#aQf)}Jg0z0 zKd~_^Yv@X!TaxK@8$Lhv_O9$@P6Y9b5HaI=B`bNjc?E$7VUHe8DJZdPeh4WP?^rAl z7w8X?h3N~C41+Ra3|J9Kpqe#O0>=^i>|$i{)pQRXD;?i z;h)~tFPqVdt7Z!IM2+UeOy<&2F;t!l4lO)%u|q(bPSN`y1b0XT!$0f$HR8YKZU=g8 z?&I<454&OfONE3~g~IvhXQFl_Wpfyoo1ZLF24P^pLaX9hmRf4gkfV7PQu_0Ty1y^` z!Kf5I7mesfgU$KYksbUcZu*D#LK(4sR4aa71*G&^w8uLsu3s4*Pv_!Qec+;oJgiEx z$Q_{Dg9Z?sLWcbZzN^d@1-w1QjE(rf90Sc=eq&VfUb z(Qj>E>O{4^*m^Zmt*m~Zg6|tBFr>It zjIT@6EwJ_72?R0-)kAd&fqB!tD4~X7T1`oddlcI614)b*3B@PmD@bpNN@;cd1FWWB zhMAS;h8NHn-|dp$s#8`cncH2@k%;gt19z*bdST-tgx)B>`|pN4=@6Sw)kqsPv(9gENBq{B}}XGKYV` zoBaWgp{FyO9f^tJLoUemOz?JOyU0Mx^;f<>>HFV)Ny zqlAR;an9burbArEEwU*vX7`otmfVH3sYP#vUe_mz`V8~?P)4Q8(z<|#2zxu!_mYuM z{ueI?*+$bqbrg|9(eAwEI$Fq749pUz8} z&^s)5F$G@MJb^iOcYZP87NhE6RICsdQLnc_sGQRNN&>Oi&elL+hodS7c*o|T{LyVT z+LMJ!)O(^P;!I%TA98>(R_a9BnVJ|X=TWu20nXR&N$PzZ#m7aVnOR1+JH;5dw)F+h zZ8Y`Sauf~uAMo6Nz_W(F2ETnvdWI$e#B|8BWL1j1I}w44;~hkP7~hUmbqs5q#-NXD zRE%Xv@%@gQV$a-_U=Mb?Nq6ig;d7z$?#51esBawGx)bYP zvQ{}g{MFMzGr6q5)p| z#x~?1;d2Lj(bjd?T>+=8E#FP0+tIit5|BhM2<%K5Fm~z`XU>z} z?IWH^N`c&V@>A>?S+xQwhab#@;v6I~6=_n~G&-}uZ5hpo>|M+KyE>2O4|u4E*Wi`U zQqb|&ug`PPVI?A}LOsMCC)-;>wdxQ^P?d+9$%{<)vJx7SJN3<^SL|C*#`Ko_V?3Li zp+i>&7YC?uV#kmFg17hsevwvUq)cr4v$C56jd#tr`a1D?>~_bDVwkP`yfEB&a4k#f zlg%@Rt84jU9+cx0X`%q$Z&c*6&{Ev@>(vTVCcvRt-Ew-qVtLtWb-OtR&dAU!BKg~$IH<6GZlpWu)declX<*${=$Uw%{pP@H)b8bjN&z-&d zgD=uU?Z*`)QLPkXspISMQ{3z^K_x0Gfm5xgFp0KsxQ8Wwx;9V zcWo}fW^zGCZ;;ZFPn#f*>|lV{8%2OTJdPD#B2|R+>SppC;ZW&#PP4M$E6~-$J(|_H zbk)f*_4F(c%Q#}t$@OKG(&0E87p3%g-vNmY&yo&_vggPcuxB!@JJJG!2a4%h*YFE{ zV_eoM3;4*7eNz|H0na||^=TS?@qXe`?F-U~X>pFjcc-F;tl-&1VBByX%ne8v;HCct z`||yfdS(1;sk7F@rE8~gZos)LUQFkE>17&k)k>*lBYaG9dbCt++uu}26bSQsvBj~d zZGb~t$qK%WG;m-U4=^HpL#=zoV|n@)ywxA@%#dM`4c6?$@QP0djbXp-!D+h*)UR$< zY1*JR2{0#*!Yyn34%4+Z$EMt|z=h3(#)~Y}Bn~h{2gyrO)CtIdsD^TtZg^a`MeV}&CP9WT>EDXu?fca_I!jgfU6)i!#x*5SEJgey?Y`*eF zkc)auH@e(PnsV)HOaF2E3pV+;WL|2x3$D1wcMl7HS_fV=xdT}{z*p5T`8D{46|U9I z5?4;rB4bD&SV2Tz3wTL={(`qoU`r$cy>x%{R_&y^*;ZE-wW zu>hrzh_-Gs=y2@$@dxH2v=8Q;U!Ivl@q8FIPy)Pn9;hr97V-e{u(ooU>_uJBt9fO$ ziQiOP7-<`&VZg!0(LOOl98NKR{r#iC%<^*=GeNKFw*^wTGi3?r88 zfs2M38BgLiK6>Jb%!Riql3WM9yN*^dLQ^qn0>8Qx!BF$Q<__#XH&nJmILtx+Jf=IQ zt}NwU5<(K?9aHHo3{K0+jMh8-%1F{!)>z zjohA{m-R>8mYynpvKL7xDCdnY$m^jA0dW1}kW|L^N~n-Fz0LeqvMoMIKhFPhxA`M@ zp*GD(ZH(OP7U{_vjMNk~DBHxUtKna(In25&wt_^JJw3Z5=aqs|1PdOxfmtfGbTqJx z$+~SVMu*8?qYO{fzrY$Hx<8 zp$~aePgY$1lFmXaRLSA)Iz1B|8IljFDY6nNB9Hi}ylKeL$ycGa!N9>Cxkn=m# zdjR%7eV(n zZuJ|r|9U%0_G@oHI-X*uqhGAaPc$8ME`2#$fTNF5cj##;CyG56OqzZ%t0#OvGKl;?Wp9fi2~f+MX*|w%Tsbzs zF<-c=fU+#R_zT`Hg)Izd`F)F1Bj$LeO?}=kek7d|h|h29jbn70HqR5O;?-LJscmL7 zDl*2+JHj~mNeFr!9vTg`7dSCXvPD+ggrcdc0NoM@h&d-<2KvEjb6%pscD7P`t`pkF z2kVj?lJW3lIK6N6e(@zV1}j)?ybx@+KlnRI1zt#T8K{lmBXeZPg2Fd}9ej9}&EL_O z8xvqsgVe7|y?Y9+5RaAXeT31nW-SZ9k(S7~a!rn#5O4G@B|KDaaCgb31fR#mWi5)x_E*m0ab8KwZnk`~Y)(R0^*wu@a^m)+OKj4M`fS)RQ4L(!)sEDi})>d_&ns4x1Js@mQsuqy+{bNpm*w@V!qCzxuk97(*uMWWRJ1mRVv6wxc$L^tKqc z$1iOy_l=u8Dv`rE1#80?a^`w~qVuSL1~Yl$vZ=-pnA26S8E&x7FGfs(Q@p*lE+KM0 z`TB)3+t}YdUL*!?B^<)PzVn9Oa_|y^Uw=YwB$I*yoGoQxz&i?Vw7b0w}4$7J5( z&J4XsVFjMVo#TD4Hfq(Qz?MucmjxGNG@p7z=b66j8xzP+1svZN_Bya(;H**D*`%uy zJpKU>1nvNeFD!cv{#N!S-ZZLalsM%s=O|=;zZWmm0ep{EVN|w20J6Fo4>K^nnc!?x zrHNLY8EV&Q16xgOv&}ebrQ6UEiq=mG_3AHphd24dTs&d;sECE|a1>29MdY?| z%?+2_Wr<*-_Kmv&ZcS>|Z%I>OwhXg7M60O@>k#C_WiQ8nyhARg-cf4?#*a|&ja?zr z4Y?n}M);Ttsqf>pBg(=)-n;F;JFJU+LlCJ7&Apa195M=XA8b(jq5kJAzvKAGi%UX@ z%-ADnQNbAqX;XHC{%U}%pZ>0;$MLt1{dLUVIv&%D7n3}Rz5E2ytW}5|Dx-5_A7jII z2gFq(#pK|HR$Z^su~IxwD6Hlj@JA%3s&Oi94AeRfXXKZ>--8ntcOL>LYS)u+w)G~F zXQ|=99o#*dhMBxEi%0-Hh@ZrV&|TV>zVXHja=WvRtJraKD;nA6THofczu=wz_pBGUM}F|) zb`w=Z`D_a#DJgIeTM0)aTUp@CV7?G(`sLQyX_`!|xcQ(5ST6By0mso2uM>qsv4Gp1 zNY-=0`v~ZiMvm>qEVuG^rs=w(mPL)D=~&2%ZT>bvjyEHnI1bPDP()7MF)-X0GZKDj zuXF|C)WwLpbKA1kCk^}STx%gb^U_li9*3{qeL{wa2m2K+j1a=XzgB5>+M_CvL@ki$s&UG}WiX1)Q9gq~ zXSO`xr!BCpsl6W>6%!igh@Kqt18WWCEM-qU@MfSfUES1We%KC7 zt`(^7oU%IhsA6851W&od{n%yUZ~Y5%*o-$8DvQ6h%BIypzY=FU<*oH9F-pyHvctmy z14%dN$sI}bn$jdJ%^*+5D!hInTrStO=Bd!yPpFZ>ePy!oEu5~LOLjJ7yKO(kQHCY$ zQig^9F{j7mN8u>WKvJvsOBMP+5Yt$`B<*puiE}>ZwT>y-4;pT<`KX+I3s=*7^be=! zh7w2yAHFye!+&=4*m67*IcyZ=#=mGvpV41~t+>162ygl~e-p^u0k~hczUHp0^eg;? zP@r3>j591Er%>W8niU-S{pkS3hby@p>2+=p_|>x`9b;UsU6?fLk=x|XEe4(kM)C?o zCZc~6nQ!s!U+yj`j$eS&%xSlF1Pw+3Da?y;HEy}Z8hl#gK-~!U0HINxi=gOY1CfI@ z<3L3GkiAaG#g~(`x&F^OvM(H?rwg7VhS4TK@8{5wXTfiW%-*u0f{&rlop4*_H~HJ@ zfg0;h@)!vksWkg!3Cn)W{_U<_ve5Mnk%)CCVR%g7JNJ9Uqz_QLpi3ZD=6UPGB2?1T zftFCSxP;FjJwghy=?&G3w8r)}aSln|ZmGf76mjn5t^!Eapf#qIj+uQd+Y}U+0Y_vW z$3zp48((m6GTfW=zNNEGU7ewHo2R{LM{=8(3x$-%#lc~JQ^MG9 zV>mc&^Df0K7)^5wr&$juBurm z75Z{g5FL`zfN}~&>7x_k)yOdOJ5iu#BxA_S&{bUg| z5j17odo+l$<&xT2P%MmGx)DLPN5IHf$~C?ajjpM&Y^4Sa`_) zV=+MH4j}c+-q%uh#z9tvVPo!%p^`gd8-E#@l4*lO_|Ck@&)aq{y=GdPH$P2yUnXTh z{nX$}5tk+kEdV0K!iBcgd+0h7oX}&q{|nwNB~K8LI%RbRo&_NY_ST_O#B?WpvWJpF zPTARn=*aqZnzUh|KH~D~-S#ixST=YA$L}3s4N@0(*zTiQOJPHTZ(YJjkwhz1xt|NX zS=r$|a@f?LR_t(@4CE>sExYyKBg`^Wks<4x-Fe$j#w>pbYxGm<2S4XYWpO9KX~~-f zb#Bk+faZXnEHB!|r5G^)%Sw`~x1y+yTHl488_m{-wv^ zt%B<_zwNBF7)8HpH4j6K8v-7bgE$!yP+y(Bxn$17*IrfTzW&*qhdQh z`4FFI!rT?L2>uBS_^SHoj=qn{x9b&MU`wne4aVwm=nzwIn@ONxm&RPa+fjM^8qSyxKC`4L9hcYQ*#%d{ zX~1&J=Q+)oMtEvCh&ym$uwzV z+cRShv7cec75s_|5SZ#D`7e#8(QtPb;^E&+T00^Ox3W*kPFude8r7z~A53uy*78%Q~ripyDJ|Qb~w5t*~<~S=@;(;f8VEeqwv`%6j=oUMO@?vrM3cR z1RC}&>HFhFpPQemWc{$>VJ_ zG{jrHhs5G7EliI`*A@CDRc4S4Nd0#7J45iSr7LA;1g8Vi&2XqS&4NwBv@!ok9mw1Pq<-@4wbUzEU^2w? zZ%|J@(EM)y6rhf#t?kCAHG?SNVuNMRUa>PaUGHLppRGe*Y_Lue6fL5-T#s5KQT(+- z43qby#~JhYU+|uPz&jyzAR#^>Ya_n-D%IB?NIqkC7Mn=+(ZkQnS500+rwY?sc-y;W z3fKC+&==f~H#iQrC_?tI<5p&#chDQ|X$^Q~SWo{UU1w1DoY!->tvfWgN2=zP>!vICYDc2H^Id?Fi4I+e-XZYQpJQ%qZ)T* z(G3HtpbZ=fFmlgITQD11sx?)1D`0%RhV0wrd3fL3kk+5W)Dei7tS~|fdlHxZxD~R| z_`m&lZc#^svx2)9oV7&^T>7^-0A%g};Cp9ZgVz>)QWJJharPyhHK`FN%omtcFg=aK zqSSd;CLo4^gP+{bE@&mDFowO{dfCx7hNWWWzr`);DJ`!Z=MJn8DSrM7-s=ze)1u;A zDGrhL6v)`?PmOvC4#__jnLWpy&QCnfc1nz;w)Gj%I2ej)YsPp}kz4sOlN<9x*|J!_ z&BAXY4fp@h2Hrv?c*U(pLw>VQ&;K&~piedu0ZWBBe>lY69*WUm%8Rcf|Fn~1MO>ff z`CRI1fvM|AK>U4b^WX;Ww!bY1G-sv`jC4O(Y;k0z)2ym@L}|rVGJFxloS^~u{bY@zv$Ce4m;!mM0(*9L-ISAaCW;6rv{pGA2>oB~I zWeJTh$w#TSR!@xjHqG?{M?2}Zx9*zC3`7b7bWJhoKgAajJBrHKkLVb}nfx5_&-xB; z{g2{-&>aAL;^J%YNY^hAs^YMy`c`7|gzKaHyyif3C=*{+c*&btJU=Dc(Gw)I0~=;{ z4`e|Y^56O-gY$7-U_sF%^TJ!WkaqRIUjBmj{sVqNE8p44bamV}>$j0MrQKl15W@amWjy;Y3o@na&=vx$Hg zc;Q1Xe|M_^N)YwRvOxo~CC}gX0jD{W;$&d+{9CJJHqp_(7|RLocHnBj6_^S9HQ;o)cJ`Njw1`jTG-gB+gb*(6@?ri_N+Y5sxP=@=B(r-a3K2QT z5wqgG)QL}SH=IjMXFhNBGvz;02SRrMsS9qtmO5;YTZ=Epn}M?J=&1Zytuu#sh=twG z7q#LyVcgK~?hbs^!Wgi9q3*Pq+c!Z#m zgelTA@?Eh5O5|Gg)Rw{g3$Zar+559)h9D`H8XFAW`dF)?;BpHG7ku~l1)X28%usCi zw}Zre%rN3AfHO<&^HB6_G`fMulq8UOE#+L|v&s}&R~BJS*}Qa;jr&1h#&yzBI`FqZ zSbmrvI;?q;`pMH!p`#@&-E!jwqK(@IE|aZ7J#7wVD!{1jcANRa2`{Vwd|MV1Dg$l_s_J`0+*BJBo+2 zOT9aI>bsSPn(2CI2W@nsyLJngaFe5N-a`V%;_`|<4p6M)%KqMjb;ita7bsfh63%a> z{{at#?f~G?c3*=x>e}!)(9EJ%Iaa*p#@*#esECke^HD~(*?J+IpZD70nO>!_4vCjL zyt}{eTEg4M{zwZ0!-8-Bkd!voD;`7v@fSSke+Nj?eSWyzt<=Zl55uCS=dKRq>ecu! zvpqfyUZ{g>X<2YG{;U)Kg~ULGcaErod1}QI`9KWNp-N zOJa9T!xs9|MH!qCxq~1)lv*=IdBMyrxPqPMeH@k91o_=W zQWIzpm~lKD&L29kv+S3;3=Cn^s$NU6?>A!Jq;3_Fg-P|IYW#F2S2+fk1^#YWM4~=M zuRF^U&UZR|wld)=E|qfhGn_bZWztJWD!Zo+nrj$Qg}PG`p>f;MU^N&)d5Z~(*Cag4 zjGM}4C%@H^8Dhc5P^+x*B@>Re zAB1ZuMlzp++n{01mD?&e*Prg%)M`FCs_29q8WTs#ND|axNHrk!!G^b}m1^ad{&X|l z_BJ0vT!Q=y-tUj%pUP}%S;-o$=r;>j2vcZ7RW3Lx`M;D1Q=gZ!3AV6o=iZ~?6N6IH zSgMx365yg-pt8}6;fm*E`K*%NEw@#TBZ8}e{;?uvtZ({Ix>&=&E}A)29Va7yA~rDdaWt{=k5lY5=6Z#orBAntQ?GH zQXp*OZJL3&5yYDAuL2m$^V7^?RUwB!MRAGvwBxRig?FQulkqPPOYcV(XNLsJwWO*~ zrIF)Zh~`Lq;eO~5Cu8)ySN^ZLXCJ*bckknux^6hVVGGq^C)#{VyxSk;HowYo) zcN>%LtxhB515PX7B;RF=V4~FpC%LIF1quznr$E;#zpN_Sr-%AW+&@9gj0E(KTYd{i zluK!;YEqs1l6Pp*BSK3di5e5qX~0i5-4m4jJI)6cPc|`D8D~g`Z{mIkRh#Cg<>p=xs_rR2D#b2J9%cdbU+w{al#V0;!DT~2M)md@iee6mQB7;;?7at{ zix=0dm0nTBL88-z}*tnUX=;=X2L~a@77P_~3z$ zRsk9(kVg`wF_eI|u9}Mc>p2uckPpKZW?PktJ3abLV>ybWYH(l`f@8?G7r=!>eIk?bf#P zuPZ#Y-sr&m1t0hayg=We*9IDqY4>JGAxcPz-A1yilN>*N>i z5O=vcIU|41{p_!f?eX*pV`(EBFN-!&8U{aNU3@GAv94($8Pq2URMc4G5S@|RquJ!ow(0iy}=Ou;9nms&;7vTOH!f%p}}uz-sg zv15%S`t#tDH=zmLUA*G zo&8QwD9ol6IviRDn*V~S_`gl=Du2Lp-n<4+gf`$70m@A6-P&eHsboerk#ld(9QJ`@ zftZwdkEuYyVk5lR{)O+&pj8ba2l8do0C{?7SXXSkBdLjrptY$9>|gLfDc~ePRfgh@ z=q%S6eJkeXzG}12EDv&#@|~G(zOizceu?<4Hcxh%{!zJ9+7c2Aljq6%Rvjm-2AD?c zpUn_L84s?u1HemWkG=4+6iQQbFUPJoizJ5%Hg^oNKE*=f*s#+LI)YbPpliyV6Nbf7 z-7IOJiUrxbZKk6U-?UFTOZ|^OXhG&gql!+lQ|9(B6NPZ~}>WC~V zJpI?(&+cD)d;92^ut!JI{!U-*V2PLxKAECrH5LXh2Z`Y5B?){&bsCVpbflA^AW3zr*0RaazIg20~`$D z5@I(}!}wRTxass$6dj22camM?xTki0KMQDD?AX~qSEKNFZpHX3lIZ?W*!1Ks_Ahnh zzN($)G4#Dod-pfJ$Ge26doI7G4Bj|;s(cru%4#w1l&6?Ug|;q2xb+B5lBXv?WWOCrwejvg^tL2lGrHvf* zXsD{+;w!IbOY>xSn=>MQ_yF{c4EugX1Y>FR&BjZ<|BND~orh1hrTx3l=c8)})b*y(3b5|p(zm4R z^1iyk?F#UJ!H4_-|0VY%6qzOq5#ccjqcZl3gZNqNiAMqJPN6*rwjsT`oUR;06b!6g zUphls-cV?4vCQAw0Ow{A3!1U}fQw;Q8c8(D_%t5%z&czrfoAkK-TTXW8WZ!Rq7HK} z^HqE5el|v24%kkto6zwshg|3$YO``YLeWHj-Jv*Sc}tulP_7nm=@N3eZDRP!ghbN1 zZN-aAe`BPPa7Nw1@vvnF0sWklW~)v6d|xY(P4xLE^a(owX@zKy+mfZq_25{>i2EX< zJK$12WAV=iPvFvX5(OoOJyI?L1 zLbH!kZQ)r-p&mHhbyyI0!JQpSk3Xm@Ff01fwaFoy~+>ZfZ-DcO$Hq@A7f#wdaT-UACTn2NM(&*xH&I7i$6%nDRB8@# z^mWh8MNxs4D0{MPEYRbvR9*&FDj@_vn<4%M|2e^NngrzaMVPu0xj`S%$Gu(+w=k~y zw&~({fNJ1SP&oj*y89cl;g1w4#2iQXR6)FjyuN8>>h1l{b4=>e1qe}JBy*8OHR+J9 zN9FM#APmi0MciIoe#)Hj6A|kFZe+*rQ$B8K_6*^6pVfAN^0vsc@So`s@{i;@gOGAu zaR^dESTzP210@2e$gw+ADrZN18U`h43wAn&1n?kT;rP9#&wK6YsWwlK5IpdoMh#EZ zhb#4nRHfh(D_C6&d&-?~8L}#ycWZ$zrwbz-m&6d*(5Z3V@TUwh8GAY99UfH+t{M3S z9s8O%WQCuGX3**}xdUPyrO)&TcvqHDk#%CDaz?N@xQF6)k$;{#{(r2DFg(PoEgdx5 z9%cE-rN2#nm(D=bE#_6h2aSQYhL+Cn$i#+MoBiUWa;xhP*)kJaX(36#+E6G;_nWP~ z101Y+C^w4xhy0QL0uTG&kYsF%MgKUlRfg(U=?n$iJLqexS=iDKr)8LfXV-G0+Do}* zsZ6pv5awY=I1~Kt=j)&>>=R9}LjLXM0E zX{I&VH>}BSc$Fba#}#}?l(Hcc8XO9D+Ig}7YFk#}FfvSJdxfxG2=tT+>=H6{ChLN#elV3JM5yP&eL z=2#CV-Wk*QTWcqGz#jKUDW9Ua|D$vua|cj5Bl2sdkH9{%jdeTfSbS+j3Rwn|&Z+FN zqs)^NsCluH{H9_&g{cF_g7_Zu*8$F%vB!;K(20kl+dGTo@+p!YE0NkVc;vs}!~a;! zWZ;YHZq41a_1?P9QB~B9{tiE~Vk;s^H?fdRZ&P)fm_3yiip-gXg_ zzFoyf6*Em`=Ir7QAh&dMbsiOEikpE_k8xMsV7$Yad7MYo(~0RZ=36ko%lOvbenJ-& z6zO^8F@y5-{Db;8$wc)M-zcsILQ^&njTHzNQoy=QVGP_@Hu$LX!}_Ud}7 z$WVybstA?Ac3u&@CF&pxzD!LtDkXOSMINLvNyq_s0n-Fom1!j=Wd_#gC*VD8{e93E zL~NQbnM3KU)ZoA9?vX~)!{*MEde`I)rP}o;>qH~j)HK{~X~+WA__YgzJ=w`2DfyOJ>Za9T4k<6jHzl;M)U4<)*snw({O zxqip-jk1*PH|dn^OZxO|%W1pFXb+AA{06pEs1-+-xooKOJ*7{BX;Bx5jRdD?;gs^q zFdQmK+Nc5rSmw#*VKK2&)%N$0cLazBQtIE{b-}5ew0DJ4l2S^JMH6GMMWBEY( ziN5ZQrmQ3%e;U-k;3NNlr_Ql4c59&qo)+}SL82LwRB9_6lb?Rt?gCy5H?@UvtCO^? za2kEkW#cK?$l!7Jt_&JSOe9el>{vp3a*jhENFFHj5d%+`L$lceRgLsKRR#(^+X`1I zj!LnCiqQ;_fI-RWbj`0a3==!Ck%W>so~{mxB+@<~+2|{_$*)0>bL+r`sr>#dv*bfD zzj#C!Tsnp+eZUG=PW+Ij}b*-Ih zxr)V5D)PqA+!W4$g_9I!qXhT=1poiNJsR(|w=Yo2+$)XPWa?a=+~jdE${?{q-Sm0s zA*PX>mo{9yq{b#JANcr!qg@R+5Ba`WYiA`v6Nd^Ju9hd2>#kR!mZJS79`%QK9a^eK z-&echCH>{`&;*X3tY01bcQvN!`UXaEH@7&b@$`j^E_dtI)J{-!*k&~M6Azt7+6cfFM=NaTK- zED^da4*vcvA;I2JCDQZaP>|cgb2$hip9{Z;?$M(ls*g^ZAJEsRt@Zf|cOP@%^?)A! zZ;!j~AE|p2y_P!p4>H!!ZjB6_G-FMUU{6d-ZQ`j~n3Gk6x1)H@d@xde!%9+}zw#&B z2K>FVDn~X|ec*DL%X_`n^j5=u3;a4p{|i3)5BOj{6QRsnrK7y_Cx&|(&+%t)4YoAo zH-53-gl&Uj?c3yw#ROIGb~S@Jo?8Wos%~QYmf!w(>#oZ{3Zw8|m;(z47Rf=I3Xxn~ zzR%jwW~^jpPb5ynGxX?kC5yk!B#YaCvA7?no!C#xt$Z~782_4e5vjOd&`}I z>F-mJ_k!AYr*>>D*&QN5B1}ixa88JW@*N8B7*$wQBySmmyHlqmv|DXbh~~CB87itS z%T5+*%O-WdqMLEEAU(b8zSYJE@Gt5zOsS8l*3t6Io(IOYDIoGp6yWt=FC`04di{Rg zUy*q*MOSA@s~m$?lN~Jjmba=tRH}4V9Aj^sB;0r7thO1}(?`U8%B5EqYzUKRi*f7Ao%ij{93|6&l-JB1{k#* z94aGdNGSJjDB%Q7^IXCq(f?gbqyGmyCFN`I->83Y_=!UmLpf??u#m04v-{n7#D&pU z>WpbF^f-?lSYYnptZ{8Eug_LuN&wE&1P;*>6wjZzK2E@euTtgDi1`>uz%<*Ubx zh&8j?Z7Zehs{J3EvucgrYx;SwU+YZu{+>9tG~%LH4H-U7Hds01nYV}38N{uoQW4zR zmI|c>v*-o}a^t6XP<_gYcA1=LTSTHmy{LC2plH2B(AmFhmW`Mr}q&uj_7&} zi}#RuuZA#4RL=TC?WDxLUE@IWq(6Y0>M?d3Y6i_WAr{6;)qQyxt>B4?-(@-q6%gbX zwr1r}msg(pjQEdTIbTTI59m;~-;AL%RBxu$m`5Yd_Ad7#0{uF}2C!fLV!Tvtgj3V} zueoo~yf*h9<90FXQxP>4My|Lb2J0_5?0>`f4ZVYYnHQ8a<~7z z{Y+>1kv6gnjWkss;XaR%#xxg#g9;4%BTt%vR*6{>FHzQY%oDJ);C(P1m5+-dv4Wk{ zQRx_zkalj=amJg)1c|RWd&EKf0aPDoBqqOKqpG|Oll@fE*%qM@Q3SP}f0+~C2$BZ+)minh&^xK6s z(+Q03^`Zb+H8u`ojW+l6Yz(N6b>oWT0wAYB4yKF8DMZr8)$ODNh zDXE*Izy-1Yf{*_Le$4^MyulF2gn-wNcJR+CbJYiQHNUJqni%e1wGu>~1-xkP-a$VS$B{04RIsD(OUY;bs6wZm8-{U$F zrY)r=nM=C!_Bo@4-4rjU7Y5lN-t*@^kz0Cbp_^O=K1GSS*h?GRH)5?zH_*n6myN|~ zz~mV7y9W3+1Ldqmtt~P%n+4%Zfo=0Fv>q=8u1^$S*!__A-OHRTO&ZOgW_cJlPTTB! zE>($cK3o>VnRw>fx`nMN{Bv+O`U5_f| z^$W=Ywircp%}(xSkL3a)J_b=-R<~d_EaTl9H2et?TGD~)2oj_?f59jG0sl4_cZ!I$ ztd$HXDw*e}l>Xc<&V%`!aX7|1*pVMAxmfEt7CcubzI!e$cP#@4R^~xgkxqZ0@0#O) z?^n`v#|8|+@JFVw$dV`of#<#a`n99uJpV|@ljnc(+lWn6ipt+NC8`(7kSWh+#rcLJ z+xHBgE`}3xjDcXPw5W4v739)M32e`*T=^{Zt?4jjAvQEhSYm|E+gpf?5>rI(g91ne zvwA>j?%nsAFa6Xus(R@?H^YhG9g8yvCWkkk=Z$lf?bN|Q@NH+*k_oX^N)H^1p8<`$ zk3Du(6iVP^aE+DXA|bEK`5tq;28s*i%oc=*_yT29+{Zae_(%vB7r5Z5L9y})G{k?v z1DQL3;$1jigBLo8rYdS7BW;kGBVsczeG3_N&3~cTa2j(pQ}#t#jud&9R3@s#^?I5! zB4eV%d(n^Pv@{NP)e?4m!l|ekO%wMo_{2ZpN2;s)zv^<{MN8Mw()DFNr3HYP7;U#R zgF#dnknZlzO*fL#4bt6R zQi^m*Bi-G3zr*!;j>o_7?y<+W)|_*V=}YMnnZrGV6ebH&c&FWS_&u@43{g<1Z#mQ?UyOx-WGHL)UI;!)7subHPlccdbLn;*Mw>Njgl7-K?0TiU+AvYyZ&QI$898I<7{)0gyCAR?@*EUA-EhaOIh>8zA8=pK zl?hbwat$-L$m=c~^TIAgg!E*xPIBHqg+h~T!iF+Z;nke3?)Ib2W?SM-$H zbalU;i)vH)GqPeoR37b03=27JU4eez8GaYA{itw)6;-(GoZ)$-ycq1OjPW4lw|0AW zcDLjDrW~$gc7Kw{3tXBJop5A5rbX<6`%To8XR2@sQrMnyD2HYUm0YZA>Py8NyI6aoOTLDZ2LfoR7$(Qezs!d zLySL$D44Ap)2xy(EB{gpe)k*cl*jzjrW+xHC~8K9;rArO83h>(gl4}Y=Dh{aw{OQA z7G{o;bTq8vTYU#${H!0zld5_CkvfpM14x~K=WnSuk}-p2sF%THY7f_DSjJ-W6f-Wm z_efH5N|c;tg`DGYQCRoVk>^(?#A8HApJ?ga=3#KsaanItyBih;5#GGR{R2MfRqEFT zU^1%VQ*#@7Kds(zGMC;DQP;rM&5%?{j1g3^Oc zxDtP&I}VVqPIN#Noaw*F5URc|sJpl#BN&SR1hxL8pz0dNRbxiD&Huxh=JfO4S9s@q zq=57#-Tl+9W{-B#x`85;M_eOQvMJD$iUFcvq1J?O*-zxMzY{;0B23mhfDh6N=$!!YQyW6|h$P}1`{Rm^} zSV><{2>xYPMoBE8xwe{kqb`ocg!hBfA>SA85BTI)@YJK~7Q5p!LvH!e-DdOKKCJ-? zB>d36*x_42;7f0^;n($wLe=wlWBsr~x^%r|XQyUl{U`NSA9jkoCWRPx>3|ox6BVQ> zNb0@4jup4oFaC;x6GJk~<|PlI*yVSh$`~}2Ls1Kc z38{LNOSr4a1bi_iWZLE-bwnVme+C$pNt8!7xnVMn54_m|3v;@8Dn9n4=qNSbS5i%k zYAoeZP*p(?zn6nEYR{jl(DUBUQ=;aDo{dt1wV3HkTP!|0{s%mexdVXj6aE{#4%rFo z+le9ZR+%@0tAQc=S4y7(C{7oTnCvAVP>y58YUFtHKz$VOBh?6U2{^&5|*{qLNr)xl8P3TIT72awlw?BH6KC>NzZr&Knyj>7e zfqDq5V5FWSvTQy2t6!?kh4>wRFQy~y$dZl;Jewl6seKL`l>vYwh)Dn5_ghM!@+O+v#Jx< zm+y*hz+rZ_{5#@;Qt~e|18kyz5i}>v21aOvy}Y@@N~+ja+a`z1D>J3{Sy|60u_x5s=nutTY8pKD2qXAIJoT0M7SaL3 zlSxf1qG)+DvIld|qYwJ@F}g1z1yt4=d{!fDWI8Y7Y@>9bK)?&Na{jWigLpm2g^+{$ z#-mV`Z4e5$n454gCZRjik=(s77>e@Z!ozkvB`?NgV2#F5IW-X#`)hqx$xfM@bo zNz!ioI>0tW*`q?c&6{g{quUJnVg{74G$)I)+;0jHBb;Xn}F5B%6D@cHk)71B0Rs=Wxd7RN03h7@q?LhA>+o8)!DSOio8?R zvmWvhK@PAyO=A&t_Ls*ajdj+47Y_F>bQyE=3JWD*2qVIvk5rhSW zO3!K=6BMc-{=#Z|Kg+qEVAT)Nj(b_idvo@XqBm=7JD|d*!d8OTCL2=TZ`@&-t8pPxEo238LCNfa5#C zSAg2k6abHj4wbroIF3Lcmtqb1exyUvZjGKLUJhfT>#O2KQdDvwhO_g1_6X>n^H3+7 zl9X_KXV}xc~p?b z-4^Wmk@IRb9MY~;cT_aJ&>C;93EnS`1a=gQY@RbskM+^grR&r9iJgu_J#U+OkFaU%xsi!Q(YR)uN!GG#INQSmXW&!rd?loebU5c7<9 z22I{JK1%cleEKVRuW%e|=?o!54vhT%nZaR7%Da!nV;_Y4ojT#I6#8MDd)?03tVu_49tKShe9BYizYKUsum97 zE{J#N5~y6gvuRa1y~97!#*&b9SCP%KfdR{jclR=nY#^vX)*k?mIaj0@2vE|zS-KEI z3;0~lc7V2Ig?s6f%qu;m-76xSW>-fgd=RB#Dtb5W@-Z}(3n!~$K6DH+mgqA>%g=UH z;7rvS_%iP}9(c#rZ6ZNv5^x_3NcI^x1ri)mdYl-LD3O55MCNz{<6;vg@76p7PN zFpE@nf7cTBCQfJ}%x(VPRq$4?;4zf`1`h>4-{cl$e|g~d{bVaO=0!+lK8QLrBqQsT z!-yrjx;_Qyk`?;wrFVKSAvdU$-708{9-}ZdqLIHsMF(ZeGs(VaKN87Zr)*?H zb*TU~p<7*#Iq6xJu5R4C+d&=iM5p-l``-QaLYcmAN0QFKJnNX&%9USv zpDDCHfWyrmT9_-QHaV4V@I1TI0^vzkP7+CS-O&m2ZEFJ^q9+{o!ptjA)Tv?aKZ^ga zxsR&;ZSEp(2q^o-X8)Rp7H0-1kr2TESmSlA#W~lX>U~^a(x0@m*@Pqen+<$oE^sZ znxuxX$@QtjxgbW!d2`kxiE=C;B1 z$Ib;qO40iJmCZs5(b#X*;zDsPCV=uG6}==(xA(KRN=6m@TjFilUqk%30~URwox9VI zJfx)RSLdqkXB_@Nx*CdS@ytaaRv`zPdUbqSvwN~PKoGSzK$N@5GYJoT5%K!$$Cke2 zns3&ubrxfH?6yOTA@g-q-wN{S!oM%`yMS`UA>KW?%X1rSC24CTjd+Vdbq~5rBLZ_H zO|fbzpGM!Zz@(<@85GEa>J!8mSbE{erkOlj_ZJ!wB zQAB3Phiz`uG49KHj*n z9kyM%z_F}DSB^Q1v!8y&3o;M`?)H018_}QEE0PtL&Y7E?jh#)IQCv?V`H^aW>oBq7 zgqSXP?Ygt)Uo@s03v6Tjg48!SVhXF`a9nUWQ_FSj>0JZrVNT72)iBce6&@*rs)Wx1t6isxk{f;Ya7HP>w@6=Fl-I*wy{w?W`g`)Yjc zE=>E@b)41b_z6<>n$onhKteM$B>5lkIj`WCy|I4V3re(mNhqdJqjb{oS#S3C;HoSK zqAyJg^OxKnKnG}73kK16yS7aWJi3}vK=3$v<1ZEH{n%nGU4Q~3(ReB|+3)Y%=VoNZ4wh{7|f~W|*+vUpY zJLwI_&ot}8zAWk!R8L%qP;))@w6?(7`W1S7CFy$jUvnoi`PyzP9fl*3d}&7r7gU2wP7=FE7|_Rip46PgMw;9&yuo#X_#l7xx2}&{RdImF1hE_O zve$U&8U!rt1eo#gxe3k-En-_F{qP z4@>)sD}jd-x8aLofy>QgQrF4v)aQ+>8WugC!n}7u=9?6!rhs&rkaBgYr*sR4X*n1E7Zc^&aVypdGnLJRKtXM*36N^TZ zoY2bqAF1&+S_LuqJ7GkU|f z_oF=|DNrIz6GKWr(#KYdAz52Xy5#siQ$gao>Yh_b##s^l{sguva~kW8TsA}f2YkUR z_!DSj^&h)PJn=S51-m&?Vy;-AjHAA%kx4Wix&x7Xx%Fz|%Xu+80qVJ@PiU}%VbwJX z9d|D{Eq2-n#LbuKyueBz;Tp#GUY|z_Ay#_hVj@ZO*~AiVrBZEXpF%3lxxXL0S4;WA zGn`b$DCkeRM5K0c<@OZumS@w6lD;8z6x6>K1WZCIopqYgA^l#mh*JwaZCl(G4wFU|8H-RHr!t9Y)wSd)ZVeEVM{j@@joD4Gm)-Xy5!| z&EUWstNUMbw{`y8+~KadK3qx?WH)=J!^tBcfQXD@9Sl+v7|rffF03&n&Y^~!JuP_Z zOs!{OW+DT7Ea?-e9c_Zs6`0%DLS(<)uF?D<{`Hl3)I>~ycG--Iub$0P;G6Q{D6B^Q zh8coTXEz8&NUh%-8pLBGv))`&*TrYn}lF$Mh*{k83y}|jy-s^YBB=DKvlB%?H zmirqMsFxBOIE7R(VMBk2_1?Mf{X*B+jH%!mm$fa_m9+p)E&UwwcY=gdNx%0 zp@yHRF&gX+7sN;mA?A&)hM|sDVX)xAL$&C>jxlo@R6tSdJ$ktIy8cyh=#Stp7&Gws zA8{>rm9bLMt7!j#FMI_b;+F#>1j`3 zE0~Y-Tm3R}^0-8sw=N1Vrlsi6_UpvvjV+iq^a>N#ag#=PGPd3EDPiaaVs5Q9e+_*%}00tdle*Yuj~4QyEZvpEjfW1HR}Le7D8& z;b>DLb4o{Ym2q+#=DW_^#HgwbhixesZoNjyL-djdOHh`3>EkM(aDOU8Rx@t-##`{%he2JS2ROd!8%e7cfl&> z|C>Dkr0xKUf8+Nzc*>>4Eg@Zq?ENoE?D_QC-v?zxdgX}{qQ6u=$(cijuR>5)=JgDl z$)?E@g4u?L*mvY83^f>N4Eu(3eR;vx{`T$<_~KXaSMORI;a!_P!GL6IM)=a8ARPOB z*aL79q5AVClZTs8H_HpaydhempG9+`+g>tZaqID7zj@xO%XkvRKXjCNBMPn%NkhHS zq2xsZ^OES3xgl0)Mb%(M{{Hdt@<7#m>25> z-13YX1oP!Bq96wAFUAgcyKU|&_SG+zZ&s4k(r1+^@iy1awr-g(RX@x{(CP{uVS2!< z<0J)ZJUh(zFXBx|JHh8%MMqUcApn0nbNami2P#|7MEW8 zH=fF~>;cwVQm{(HcnH`FpKArH+Tgj^Q%2m2V56ryZr^5>ApWnpcLx4#?(_}t;z_~* zmC6gF%EGvR`wKl2Zy( zZI~hsT;Km8UXq;41T<99>q&DR*t4&r^^;C0s908$9F#N zP~2H7gPX+#os#GA<0M03IXuZg`;){D

mr1JN9PlBX*{LJ&HQB-33z6&*9ag$`YR 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 delta 78191 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 LhkgzdNFVioBsb;S From 29d321b5e11d2e1f8a88ff169e2c56830e88fba9 Mon Sep 17 00:00:00 2001 From: Anna Shaleva Date: Wed, 22 Apr 2020 20:42:38 +0300 Subject: [PATCH 4/7] *: drop miner transaction 1. Completely remove miner transaction 2. Change validation rule for block: block without transactions is valid. --- pkg/consensus/block_test.go | 2 +- pkg/consensus/consensus.go | 42 +---------- pkg/consensus/consensus_test.go | 23 +++--- pkg/consensus/payload_test.go | 4 +- pkg/consensus/prepare_request.go | 4 - pkg/consensus/recovery_message_test.go | 2 - pkg/core/block/block.go | 15 ---- pkg/core/block/block_test.go | 21 +----- pkg/core/blockchain.go | 7 +- pkg/core/blockchain_test.go | 2 +- pkg/core/helper_test.go | 67 +++-------------- pkg/core/mempool/mem_pool_test.go | 43 +++++++---- pkg/core/native_contract_test.go | 9 +-- pkg/core/transaction/miner.go | 38 ---------- pkg/core/transaction/miner_test.go | 21 ------ pkg/core/transaction/transaction.go | 5 -- pkg/core/transaction/transaction_test.go | 6 -- pkg/core/transaction/type.go | 5 -- pkg/core/util.go | 4 - pkg/core/util_test.go | 2 +- pkg/network/server.go | 3 - pkg/rpc/client/rpc_test.go | 91 ++++++++++++----------- pkg/rpc/server/server_test.go | 26 ++++--- pkg/rpc/server/testdata/testblocks.acc | Bin 205297 -> 113846 bytes 24 files changed, 128 insertions(+), 314 deletions(-) delete mode 100644 pkg/core/transaction/miner.go delete mode 100644 pkg/core/transaction/miner_test.go diff --git a/pkg/consensus/block_test.go b/pkg/consensus/block_test.go index b95072601..fb84ae629 100644 --- a/pkg/consensus/block_test.go +++ b/pkg/consensus/block_test.go @@ -48,7 +48,7 @@ func TestNeoBlock_Setters(t *testing.T) { b.SetPrevHash(util.Uint256{9, 8, 7}) require.Equal(t, util.Uint256{9, 8, 7}, b.PrevHash()) - txx := []block.Transaction{transaction.NewMinerTX()} + txx := []block.Transaction{transaction.NewIssueTX()} b.SetTransactions(txx) require.Equal(t, txx, b.Transactions()) } diff --git a/pkg/consensus/consensus.go b/pkg/consensus/consensus.go index 151160622..06774e0fb 100644 --- a/pkg/consensus/consensus.go +++ b/pkg/consensus/consensus.go @@ -2,7 +2,6 @@ package consensus import ( "errors" - "math/rand" "sort" "time" @@ -10,7 +9,6 @@ import ( "github.com/nspcc-dev/dbft/block" "github.com/nspcc-dev/dbft/crypto" "github.com/nspcc-dev/dbft/payload" - "github.com/nspcc-dev/neo-go/pkg/core" coreb "github.com/nspcc-dev/neo-go/pkg/core/block" "github.com/nspcc-dev/neo-go/pkg/core/blockchainer" "github.com/nspcc-dev/neo-go/pkg/core/mempool" @@ -276,7 +274,6 @@ func (s *service) OnPayload(cp *Payload) { switch cp.Type() { case payload.PrepareRequestType: req := cp.GetPrepareRequest().(*prepareRequest) - s.txx.Add(&req.minerTx) s.lastProposal = req.transactionHashes } @@ -316,12 +313,6 @@ func (s *service) GetPayload(h util.Uint256) *Payload { } func (s *service) broadcast(p payload.ConsensusPayload) { - switch p.Type() { - case payload.PrepareRequestType: - pr := p.GetPrepareRequest().(*prepareRequest) - pr.minerTx = *s.txx.Get(pr.transactionHashes[0]).(*transaction.Transaction) - } - if err := p.(*Payload).Sign(s.dbft.Priv.(*privateKey)); err != nil { s.log.Warn("can't sign consensus payload", zap.Error(err)) } @@ -442,40 +433,11 @@ func (s *service) getVerifiedTx(count int) []block.Transaction { txx = s.Config.Chain.ApplyPolicyToTxSet(txx) } - res := make([]block.Transaction, len(txx)+1) - var netFee util.Fixed8 + res := make([]block.Transaction, len(txx)) for i := range txx { - res[i+1] = txx[i].Tx - netFee += txx[i].Fee + res[i] = txx[i].Tx } - var txOuts []transaction.Output - if netFee != 0 { - sh := s.wallet.GetChangeAddress() - if sh.Equals(util.Uint160{}) { - pk := s.dbft.Pub.(*publicKey) - sh = pk.GetScriptHash() - } - txOuts = []transaction.Output{{ - AssetID: core.UtilityTokenID(), - Amount: netFee, - ScriptHash: sh, - }} - } - for { - minerTx := transaction.NewMinerTX() - minerTx.Outputs = txOuts - minerTx.ValidUntilBlock = s.dbft.BlockIndex - minerTx.Nonce = rand.Uint32() - res[0] = minerTx - - if tx, _, _ := s.Chain.GetTransaction(res[0].Hash()); tx == nil { - break - } - } - - s.txx.Add(res[0]) - return res } diff --git a/pkg/consensus/consensus_test.go b/pkg/consensus/consensus_test.go index 01699a3ed..eaaacaa03 100644 --- a/pkg/consensus/consensus_test.go +++ b/pkg/consensus/consensus_test.go @@ -22,7 +22,7 @@ import ( func TestNewService(t *testing.T) { srv := newTestService(t) - tx := transaction.NewMinerTX() + tx := transaction.NewContractTX() tx.ValidUntilBlock = 1 addSender(t, tx) signTx(t, tx) @@ -30,8 +30,8 @@ func TestNewService(t *testing.T) { var txx []block.Transaction require.NotPanics(t, func() { txx = srv.getVerifiedTx(1) }) - require.Len(t, txx, 2) - require.Equal(t, tx, txx[1]) + require.Len(t, txx, 1) + require.Equal(t, tx, txx[0]) srv.Chain.Close() } @@ -39,7 +39,8 @@ func TestService_GetVerified(t *testing.T) { srv := newTestService(t) var txs []*transaction.Transaction for i := 0; i < 4; i++ { - tx := transaction.NewMinerTXWithNonce(123 + uint32(i)) + tx := transaction.NewContractTX() + tx.Nonce = 123 + uint32(i) tx.ValidUntilBlock = 1 txs = append(txs, tx) } @@ -52,7 +53,9 @@ func TestService_GetVerified(t *testing.T) { p := new(Payload) p.message = &message{} p.SetType(payload.PrepareRequestType) - p.SetPayload(&prepareRequest{transactionHashes: hashes, minerTx: *transaction.NewMinerTXWithNonce(999)}) + tx := transaction.NewContractTX() + tx.Nonce = 999 + p.SetPayload(&prepareRequest{transactionHashes: hashes}) p.SetValidatorIndex(1) priv, _ := getTestValidator(1) @@ -65,8 +68,8 @@ func TestService_GetVerified(t *testing.T) { t.Run("new transactions will be proposed in case of failure", func(t *testing.T) { txx := srv.getVerifiedTx(10) - require.Equal(t, 2, len(txx), "there is only 1 tx in mempool") - require.Equal(t, txs[3], txx[1]) + require.Equal(t, 1, len(txx), "there is only 1 tx in mempool") + require.Equal(t, txs[3], txx[0]) }) t.Run("more than half of the last proposal will be reused", func(t *testing.T) { @@ -117,7 +120,8 @@ func TestService_getTx(t *testing.T) { srv := newTestService(t) t.Run("transaction in mempool", func(t *testing.T) { - tx := transaction.NewMinerTXWithNonce(1234) + tx := transaction.NewContractTX() + tx.Nonce = 1234 tx.ValidUntilBlock = 1 addSender(t, tx) signTx(t, tx) @@ -133,7 +137,8 @@ func TestService_getTx(t *testing.T) { }) t.Run("transaction in local cache", func(t *testing.T) { - tx := transaction.NewMinerTXWithNonce(4321) + tx := transaction.NewContractTX() + tx.Nonce = 4321 tx.ValidUntilBlock = 1 h := tx.Hash() diff --git a/pkg/consensus/payload_test.go b/pkg/consensus/payload_test.go index 16d21a081..c5563beea 100644 --- a/pkg/consensus/payload_test.go +++ b/pkg/consensus/payload_test.go @@ -246,11 +246,9 @@ func randomPrepareRequest(t *testing.T) *prepareRequest { timestamp: rand.Uint64(), nonce: rand.Uint64(), transactionHashes: make([]util.Uint256, txCount), - minerTx: *transaction.NewMinerTX(), } - req.transactionHashes[0] = req.minerTx.Hash() - for i := 1; i < txCount; i++ { + for i := 0; i < txCount; i++ { req.transactionHashes[i] = random.Uint256() } req.nextConsensus = random.Uint160() diff --git a/pkg/consensus/prepare_request.go b/pkg/consensus/prepare_request.go index b9b5ec76d..fb1d314f9 100644 --- a/pkg/consensus/prepare_request.go +++ b/pkg/consensus/prepare_request.go @@ -2,7 +2,6 @@ package consensus import ( "github.com/nspcc-dev/dbft/payload" - "github.com/nspcc-dev/neo-go/pkg/core/transaction" "github.com/nspcc-dev/neo-go/pkg/io" "github.com/nspcc-dev/neo-go/pkg/util" ) @@ -12,7 +11,6 @@ type prepareRequest struct { timestamp uint64 nonce uint64 transactionHashes []util.Uint256 - minerTx transaction.Transaction nextConsensus util.Uint160 } @@ -24,7 +22,6 @@ func (p *prepareRequest) EncodeBinary(w *io.BinWriter) { w.WriteU64LE(p.nonce) w.WriteBytes(p.nextConsensus[:]) w.WriteArray(p.transactionHashes) - p.minerTx.EncodeBinary(w) } // DecodeBinary implements io.Serializable interface. @@ -33,7 +30,6 @@ func (p *prepareRequest) DecodeBinary(r *io.BinReader) { p.nonce = r.ReadU64LE() r.ReadBytes(p.nextConsensus[:]) r.ReadArray(&p.transactionHashes) - p.minerTx.DecodeBinary(r) } // Timestamp implements payload.PrepareRequest interface. diff --git a/pkg/consensus/recovery_message_test.go b/pkg/consensus/recovery_message_test.go index 195b392ee..203edf45c 100644 --- a/pkg/consensus/recovery_message_test.go +++ b/pkg/consensus/recovery_message_test.go @@ -5,7 +5,6 @@ import ( "github.com/nspcc-dev/dbft/crypto" "github.com/nspcc-dev/dbft/payload" - "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/util" "github.com/stretchr/testify/require" @@ -32,7 +31,6 @@ func TestRecoveryMessage_Setters(t *testing.T) { timestamp: 87, nonce: 321, transactionHashes: []util.Uint256{{1}}, - minerTx: *transaction.NewMinerTX(), nextConsensus: util.Uint160{1, 2}, } p1 := new(Payload) diff --git a/pkg/core/block/block.go b/pkg/core/block/block.go index 846069335..c06d0c6de 100644 --- a/pkg/core/block/block.go +++ b/pkg/core/block/block.go @@ -2,7 +2,6 @@ package block import ( "errors" - "fmt" "github.com/Workiva/go-datastructures/queue" "github.com/nspcc-dev/neo-go/pkg/core/transaction" @@ -57,20 +56,6 @@ func (b *Block) RebuildMerkleRoot() error { // Verify verifies the integrity of the block. func (b *Block) Verify() error { - // There has to be some transaction inside. - if len(b.Transactions) == 0 { - return errors.New("no transactions") - } - // The first TX has to be a miner transaction. - if b.Transactions[0].Type != transaction.MinerType { - return fmt.Errorf("the first transaction is %s", b.Transactions[0].Type) - } - // If the first TX is a minerTX then all others cant. - for _, tx := range b.Transactions[1:] { - if tx.Type == transaction.MinerType { - return fmt.Errorf("miner transaction %s is not the first one", tx.Hash().StringLE()) - } - } merkle, err := b.computeMerkleTree() if err != nil { return err diff --git a/pkg/core/block/block_test.go b/pkg/core/block/block_test.go index 534002903..f3461ffbd 100644 --- a/pkg/core/block/block_test.go +++ b/pkg/core/block/block_test.go @@ -84,7 +84,6 @@ func newDumbBlock() *Block { Nonce: 1111, }, Transactions: []*transaction.Transaction{ - transaction.NewMinerTX(), transaction.NewIssueTX(), }, } @@ -102,25 +101,9 @@ func TestBlockVerify(t *testing.T) { assert.Nil(t, block.RebuildMerkleRoot()) assert.Nil(t, block.Verify()) - block.Transactions = []*transaction.Transaction{ - transaction.NewIssueTX(), - transaction.NewMinerTX(), - } + block.Transactions = []*transaction.Transaction{} assert.NoError(t, block.RebuildMerkleRoot()) - assert.NotNil(t, block.Verify()) - - block.Transactions = []*transaction.Transaction{ - transaction.NewIssueTX(), - transaction.NewMinerTX(), - } - assert.NoError(t, block.RebuildMerkleRoot()) - assert.NotNil(t, block.Verify()) - block.Transactions = []*transaction.Transaction{ - transaction.NewMinerTX(), - transaction.NewIssueTX(), - transaction.NewIssueTX(), - } - assert.NotNil(t, block.Verify()) + assert.Nil(t, block.Verify()) } //TODO NEO3.0: Update binary diff --git a/pkg/core/blockchain.go b/pkg/core/blockchain.go index af99c5de1..06ca8a4d6 100644 --- a/pkg/core/blockchain.go +++ b/pkg/core/blockchain.go @@ -914,9 +914,6 @@ func (bc *Blockchain) GetBlock(hash util.Uint256) (*block.Block, error) { if err != nil { return nil, err } - if len(block.Transactions) == 0 { - return nil, fmt.Errorf("only header is available") - } for _, tx := range block.Transactions { stx, _, err := bc.dao.GetTransaction(tx.Hash()) if err != nil { @@ -1118,7 +1115,7 @@ func (bc *Blockchain) FeePerByte(t *transaction.Transaction) util.Fixed8 { // NetworkFee returns network fee. func (bc *Blockchain) NetworkFee(t *transaction.Transaction) util.Fixed8 { // https://github.com/neo-project/neo/blob/master-2.x/neo/Network/P2P/Payloads/ClaimTransaction.cs#L16 - if t.Type == transaction.ClaimType || t.Type == transaction.MinerType { + if t.Type == transaction.ClaimType { return 0 } @@ -1455,7 +1452,7 @@ func (bc *Blockchain) verifyResults(t *transaction.Transaction, results []*trans } switch t.Type { - case transaction.MinerType, transaction.ClaimType: + case transaction.ClaimType: for _, r := range resultsIssue { if r.AssetID != UtilityTokenID() { return errors.New("miner or claim tx issues non-utility tokens") diff --git a/pkg/core/blockchain_test.go b/pkg/core/blockchain_test.go index 9724d755f..a106d4fba 100644 --- a/pkg/core/blockchain_test.go +++ b/pkg/core/blockchain_test.go @@ -97,7 +97,7 @@ func TestScriptFromWitness(t *testing.T) { func TestGetHeader(t *testing.T) { bc := newTestChain(t) - tx := transaction.NewMinerTX() + tx := transaction.NewContractTX() tx.ValidUntilBlock = bc.BlockHeight() + 1 assert.Nil(t, addSender(tx)) assert.Nil(t, signTx(bc, tx)) diff --git a/pkg/core/helper_test.go b/pkg/core/helper_test.go index 8853e3571..ea0f00f60 100644 --- a/pkg/core/helper_test.go +++ b/pkg/core/helper_test.go @@ -83,17 +83,7 @@ func (bc *Blockchain) genBlocks(n int) ([]*block.Block, error) { lastHash := bc.topBlock.Load().(*block.Block).Hash() lastIndex := bc.topBlock.Load().(*block.Block).Index for i := 0; i < n; i++ { - minerTx := transaction.NewMinerTXWithNonce(uint32(1234 + i)) - minerTx.ValidUntilBlock = lastIndex + uint32(i) + 1 - err := addSender(minerTx) - if err != nil { - return nil, err - } - err = signTx(bc, minerTx) - if err != nil { - return nil, err - } - blocks[i] = newBlock(bc.config, uint32(i)+lastIndex+1, lastHash, minerTx) + blocks[i] = newBlock(bc.config, uint32(i)+lastIndex+1, lastHash) if err := bc.AddBlock(blocks[i]); err != nil { return blocks, err } @@ -146,7 +136,6 @@ func newDumbBlock() *block.Block { Nonce: 1111, }, Transactions: []*transaction.Transaction{ - {Type: transaction.MinerType}, {Type: transaction.IssueType}, }, } @@ -181,13 +170,6 @@ func TestCreateBasicChain(t *testing.T) { return testNonce } - // Creates new miner tx with specified validUntilBlock field - nextMinerTx := func(validUntilBlock uint32) *transaction.Transaction { - minerTx := transaction.NewMinerTXWithNonce(getNextNonce()) - minerTx.ValidUntilBlock = validUntilBlock - return minerTx - } - var neoAmount = util.Fixed8FromInt64(99999000) var neoRemainder = util.Fixed8FromInt64(100000000) - neoAmount bc := newTestChain(t) @@ -201,8 +183,8 @@ func TestCreateBasicChain(t *testing.T) { // use output of issue tx from genesis block as an input genesisBlock, err := bc.GetBlock(bc.GetHeaderHash(0)) require.NoError(t, err) - require.Equal(t, 5, len(genesisBlock.Transactions)) - h := genesisBlock.Transactions[3].Hash() + require.Equal(t, 4, len(genesisBlock.Transactions)) + h := genesisBlock.Transactions[2].Hash() txMoveNeo.AddInput(&transaction.Input{ PrevHash: h, PrevIndex: 0, @@ -225,12 +207,8 @@ func TestCreateBasicChain(t *testing.T) { Position: 1, }) txMoveNeo.Data = new(transaction.ContractTX) - - minerTx := nextMinerTx(validUntilBlock) - minerTx.Sender = neoOwner - - require.NoError(t, signTx(bc, minerTx, txMoveNeo)) - b := bc.newBlock(minerTx, txMoveNeo) + require.NoError(t, signTx(bc, txMoveNeo)) + b := bc.newBlock(txMoveNeo) require.NoError(t, bc.AddBlock(b)) t.Logf("txMoveNeo: %s", txMoveNeo.Hash().StringLE()) @@ -264,10 +242,7 @@ func TestCreateBasicChain(t *testing.T) { }) txNeoRound.Data = new(transaction.ContractTX) require.NoError(t, acc0.SignTx(txNeoRound)) - minerTx = nextMinerTx(validUntilBlock) - minerTx.Sender = priv0ScriptHash - require.NoError(t, acc0.SignTx(minerTx)) - b = bc.newBlock(minerTx, txNeoRound) + b = bc.newBlock(txNeoRound) require.NoError(t, bc.AddBlock(b)) t.Logf("txNeoRound: %s", txNeoRound.Hash().StringLE()) @@ -291,10 +266,7 @@ func TestCreateBasicChain(t *testing.T) { Position: 0, }) require.NoError(t, acc0.SignTx(txClaim)) - minerTx = nextMinerTx(validUntilBlock) - minerTx.Sender = priv0ScriptHash - require.NoError(t, acc0.SignTx(minerTx)) - b = bc.newBlock(minerTx, txClaim) + b = bc.newBlock(txClaim) require.NoError(t, bc.AddBlock(b)) t.Logf("txClaim: %s", txClaim.Hash().StringLE()) @@ -337,10 +309,7 @@ func TestCreateBasicChain(t *testing.T) { }) gasOwned -= invFee require.NoError(t, acc0.SignTx(txDeploy)) - minerTx = nextMinerTx(validUntilBlock) - minerTx.Sender = priv0ScriptHash - require.NoError(t, acc0.SignTx(minerTx)) - b = bc.newBlock(minerTx, txDeploy) + b = bc.newBlock(txDeploy) require.NoError(t, bc.AddBlock(b)) t.Logf("txDeploy: %s", txDeploy.Hash().StringLE()) @@ -353,10 +322,7 @@ func TestCreateBasicChain(t *testing.T) { txInv.ValidUntilBlock = validUntilBlock txInv.Sender = priv0ScriptHash require.NoError(t, acc0.SignTx(txInv)) - minerTx = nextMinerTx(validUntilBlock) - minerTx.Sender = priv0ScriptHash - require.NoError(t, acc0.SignTx(minerTx)) - b = bc.newBlock(minerTx, txInv) + b = bc.newBlock(txInv) require.NoError(t, bc.AddBlock(b)) t.Logf("txInv: %s", txInv.Hash().StringLE()) @@ -382,10 +348,7 @@ func TestCreateBasicChain(t *testing.T) { }) require.NoError(t, acc0.SignTx(txNeo0to1)) - minerTx = nextMinerTx(validUntilBlock) - minerTx.Sender = priv0ScriptHash - require.NoError(t, acc0.SignTx(minerTx)) - b = bc.newBlock(minerTx, txNeo0to1) + b = bc.newBlock(txNeo0to1) require.NoError(t, bc.AddBlock(b)) sh := hash.Hash160(avm) @@ -402,10 +365,7 @@ func TestCreateBasicChain(t *testing.T) { transferTx.Sender = priv0ScriptHash require.NoError(t, acc0.SignTx(transferTx)) - minerTx = nextMinerTx(validUntilBlock) - minerTx.Sender = priv0ScriptHash - require.NoError(t, acc0.SignTx(minerTx)) - b = bc.newBlock(minerTx, initTx, transferTx) + b = bc.newBlock(initTx, transferTx) require.NoError(t, bc.AddBlock(b)) transferTx = newNEP5Transfer(sh, priv0.GetScriptHash(), priv1.GetScriptHash(), 123) @@ -414,10 +374,7 @@ func TestCreateBasicChain(t *testing.T) { transferTx.Sender = priv0ScriptHash require.NoError(t, acc0.SignTx(transferTx)) - minerTx = nextMinerTx(validUntilBlock) - minerTx.Sender = priv0ScriptHash - require.NoError(t, acc0.SignTx(minerTx)) - b = bc.newBlock(minerTx, transferTx) + b = bc.newBlock(transferTx) require.NoError(t, bc.AddBlock(b)) if saveChain { diff --git a/pkg/core/mempool/mem_pool_test.go b/pkg/core/mempool/mem_pool_test.go index bf5f2486c..bd6bd47fb 100644 --- a/pkg/core/mempool/mem_pool_test.go +++ b/pkg/core/mempool/mem_pool_test.go @@ -36,7 +36,8 @@ func (fs *FeerStub) SystemFee(*transaction.Transaction) util.Fixed8 { func testMemPoolAddRemoveWithFeer(t *testing.T, fs Feer) { mp := NewMemPool(10) - tx := transaction.NewMinerTXWithNonce(0) + tx := transaction.NewContractTX() + tx.Nonce = 0 _, _, ok := mp.TryGetValue(tx.Hash()) require.Equal(t, false, ok) require.NoError(t, mp.Add(tx, fs)) @@ -72,8 +73,8 @@ func TestMemPoolAddRemoveWithInputsAndClaims(t *testing.T) { mpLessClaims := func(i, j int) bool { return mp.claims[i].Cmp(mp.claims[j]) < 0 } - - txm1 := transaction.NewMinerTXWithNonce(1) + txm1 := transaction.NewContractTX() + txm1.Nonce = 1 txc1, claim1 := newClaimTX() for i := 0; i < 5; i++ { txm1.Inputs = append(txm1.Inputs, transaction.Input{PrevHash: hash1, PrevIndex: uint16(100 - i)}) @@ -87,7 +88,8 @@ func TestMemPoolAddRemoveWithInputsAndClaims(t *testing.T) { assert.Equal(t, len(claim1.Claims), len(mp.claims)) assert.True(t, sort.SliceIsSorted(mp.claims, mpLessClaims)) - txm2 := transaction.NewMinerTXWithNonce(1) + txm2 := transaction.NewContractTX() + txm2.Nonce = 1 txc2, claim2 := newClaimTX() for i := 0; i < 10; i++ { txm2.Inputs = append(txm2.Inputs, transaction.Input{PrevHash: hash2, PrevIndex: uint16(i)}) @@ -128,19 +130,22 @@ func TestMemPoolAddRemoveWithInputsAndClaims(t *testing.T) { func TestMemPoolVerifyInputs(t *testing.T) { mp := NewMemPool(10) - tx := transaction.NewMinerTXWithNonce(1) + tx := transaction.NewContractTX() + tx.Nonce = 1 inhash1 := random.Uint256() tx.Inputs = append(tx.Inputs, transaction.Input{PrevHash: inhash1, PrevIndex: 0}) require.Equal(t, true, mp.Verify(tx)) require.NoError(t, mp.Add(tx, &FeerStub{})) - tx2 := transaction.NewMinerTXWithNonce(2) + tx2 := transaction.NewContractTX() + tx2.Nonce = 2 inhash2 := random.Uint256() tx2.Inputs = append(tx2.Inputs, transaction.Input{PrevHash: inhash2, PrevIndex: 0}) require.Equal(t, true, mp.Verify(tx2)) require.NoError(t, mp.Add(tx2, &FeerStub{})) - tx3 := transaction.NewMinerTXWithNonce(3) + tx3 := transaction.NewContractTX() + tx3.Nonce = 3 // Different index number, but the same PrevHash as in tx1. tx3.Inputs = append(tx3.Inputs, transaction.Input{PrevHash: inhash1, PrevIndex: 1}) require.Equal(t, true, mp.Verify(tx3)) @@ -211,7 +216,8 @@ func TestOverCapacity(t *testing.T) { mp := NewMemPool(mempoolSize) for i := 0; i < mempoolSize; i++ { - tx := transaction.NewMinerTXWithNonce(uint32(i)) + tx := transaction.NewContractTX() + tx.Nonce = uint32(i) require.NoError(t, mp.Add(tx, fs)) } txcnt := uint32(mempoolSize) @@ -231,7 +237,8 @@ func TestOverCapacity(t *testing.T) { // Fees are also prioritized. fs.netFee = util.Fixed8FromFloat(0.0001) for i := 0; i < mempoolSize-1; i++ { - tx := transaction.NewMinerTXWithNonce(txcnt) + tx := transaction.NewContractTX() + tx.Nonce = txcnt txcnt++ require.NoError(t, mp.Add(tx, fs)) require.Equal(t, mempoolSize, mp.Count()) @@ -239,7 +246,8 @@ func TestOverCapacity(t *testing.T) { } // Less prioritized txes are not allowed anymore. fs.netFee = util.Fixed8FromFloat(0.00001) - tx := transaction.NewMinerTXWithNonce(txcnt) + tx := transaction.NewContractTX() + tx.Nonce = txcnt txcnt++ require.Error(t, mp.Add(tx, fs)) require.Equal(t, mempoolSize, mp.Count()) @@ -250,7 +258,8 @@ func TestOverCapacity(t *testing.T) { // Low net fee, but higher per-byte fee is still a better combination. fs.perByteFee = util.Fixed8FromFloat(0.001) - tx = transaction.NewMinerTXWithNonce(txcnt) + tx = transaction.NewContractTX() + tx.Nonce = txcnt txcnt++ require.NoError(t, mp.Add(tx, fs)) require.Equal(t, mempoolSize, mp.Count()) @@ -259,7 +268,8 @@ func TestOverCapacity(t *testing.T) { // High priority always wins over low priority. fs.lowPriority = false for i := 0; i < mempoolSize; i++ { - tx := transaction.NewMinerTXWithNonce(txcnt) + tx := transaction.NewContractTX() + tx.Nonce = txcnt txcnt++ require.NoError(t, mp.Add(tx, fs)) require.Equal(t, mempoolSize, mp.Count()) @@ -267,7 +277,8 @@ func TestOverCapacity(t *testing.T) { } // Good luck with low priority now. fs.lowPriority = true - tx = transaction.NewMinerTXWithNonce(txcnt) + tx = transaction.NewContractTX() + tx.Nonce = txcnt require.Error(t, mp.Add(tx, fs)) require.Equal(t, mempoolSize, mp.Count()) require.Equal(t, true, sort.IsSorted(sort.Reverse(mp.verifiedTxes))) @@ -280,7 +291,8 @@ func TestGetVerified(t *testing.T) { txes := make([]*transaction.Transaction, 0, mempoolSize) for i := 0; i < mempoolSize; i++ { - tx := transaction.NewMinerTXWithNonce(uint32(i)) + tx := transaction.NewContractTX() + tx.Nonce = uint32(i) txes = append(txes, tx) require.NoError(t, mp.Add(tx, fs)) } @@ -305,7 +317,8 @@ func TestRemoveStale(t *testing.T) { txes1 := make([]*transaction.Transaction, 0, mempoolSize/2) txes2 := make([]*transaction.Transaction, 0, mempoolSize/2) for i := 0; i < mempoolSize; i++ { - tx := transaction.NewMinerTXWithNonce(uint32(i)) + tx := transaction.NewContractTX() + tx.Nonce = uint32(i) if i%2 == 0 { txes1 = append(txes1, tx) } else { diff --git a/pkg/core/native_contract_test.go b/pkg/core/native_contract_test.go index 4e17a36b6..90e422483 100644 --- a/pkg/core/native_contract_test.go +++ b/pkg/core/native_contract_test.go @@ -2,7 +2,6 @@ package core import ( "errors" - "math/rand" "testing" "github.com/nspcc-dev/neo-go/pkg/core/interop" @@ -90,13 +89,11 @@ func TestNativeContract_Invoke(t *testing.T) { emit.AppCallWithOperationAndArgs(w.BinWriter, tn.Metadata().Hash, "sum", int64(14), int64(28)) script := w.Bytes() tx := transaction.NewInvocationTX(script, 0) - mn := transaction.NewMinerTXWithNonce(rand.Uint32()) validUntil := chain.blockHeight + 1 tx.ValidUntilBlock = validUntil - mn.ValidUntilBlock = validUntil - require.NoError(t, addSender(tx, mn)) - require.NoError(t, signTx(chain, tx, mn)) - b := chain.newBlock(mn, tx) + require.NoError(t, addSender(tx)) + require.NoError(t, signTx(chain, tx)) + b := chain.newBlock(tx) require.NoError(t, chain.AddBlock(b)) res, err := chain.GetAppExecResult(tx.Hash()) diff --git a/pkg/core/transaction/miner.go b/pkg/core/transaction/miner.go deleted file mode 100644 index 6fc262d8d..000000000 --- a/pkg/core/transaction/miner.go +++ /dev/null @@ -1,38 +0,0 @@ -package transaction - -import ( - "math/rand" - - "github.com/nspcc-dev/neo-go/pkg/io" -) - -// MinerTX represents a miner transaction. -type MinerTX struct{} - -// NewMinerTX creates Transaction of MinerType type. -func NewMinerTX() *Transaction { - return NewMinerTXWithNonce(rand.Uint32()) -} - -// NewMinerTXWithNonce creates Transaction of MinerType type with specified nonce. -func NewMinerTXWithNonce(nonce uint32) *Transaction { - return &Transaction{ - Type: MinerType, - Version: 0, - Nonce: nonce, - Data: &MinerTX{}, - Attributes: []Attribute{}, - Inputs: []Input{}, - Outputs: []Output{}, - Scripts: []Witness{}, - Trimmed: false, - } -} - -// DecodeBinary implements Serializable interface. -func (tx *MinerTX) DecodeBinary(r *io.BinReader) { -} - -// EncodeBinary implements Serializable interface. -func (tx *MinerTX) EncodeBinary(w *io.BinWriter) { -} diff --git a/pkg/core/transaction/miner_test.go b/pkg/core/transaction/miner_test.go deleted file mode 100644 index b15814952..000000000 --- a/pkg/core/transaction/miner_test.go +++ /dev/null @@ -1,21 +0,0 @@ -package transaction - -// TODO NEO3.0: Update binary -/* -func TestEncodeDecodeMiner(t *testing.T) { - // transaction from mainnet a1f219dc6be4c35eca172e65e02d4591045220221b1543f1a4b67b9e9442c264 - rawtx := "0000fcd30e22000001e72d286979ee6cb1b7e65dfddfb2e384100b8d148e7758de42e4168b71792c60c8000000000000001f72e68b4e39602912106d53b229378a082784b200" - tx := decodeTransaction(rawtx, t) - assert.Equal(t, MinerType, tx.Type) - assert.IsType(t, tx.Data, &MinerTX{}) - assert.Equal(t, 0, int(tx.Version)) - assert.Equal(t, uint32(571397116), tx.Nonce) - - assert.Equal(t, "a1f219dc6be4c35eca172e65e02d4591045220221b1543f1a4b67b9e9442c264", tx.Hash().StringLE()) - - // Encode - data, err := testserdes.EncodeBinary(tx) - assert.NoError(t, err) - assert.Equal(t, rawtx, hex.EncodeToString(data)) -} -*/ diff --git a/pkg/core/transaction/transaction.go b/pkg/core/transaction/transaction.go index c404a5e29..160270ed2 100644 --- a/pkg/core/transaction/transaction.go +++ b/pkg/core/transaction/transaction.go @@ -148,9 +148,6 @@ func (t *Transaction) decodeData(r *io.BinReader) { case InvocationType: t.Data = &InvocationTX{Version: t.Version} t.Data.(*InvocationTX).DecodeBinary(r) - case MinerType: - t.Data = &MinerTX{} - t.Data.(*MinerTX).DecodeBinary(r) case ClaimType: t.Data = &ClaimTX{} t.Data.(*ClaimTX).DecodeBinary(r) @@ -335,8 +332,6 @@ func (t *Transaction) UnmarshalJSON(data []byte) error { } t.Sender = sender switch tx.Type { - case MinerType: - t.Data = &MinerTX{} case ClaimType: t.Data = &ClaimTX{ Claims: tx.Claims, diff --git a/pkg/core/transaction/transaction_test.go b/pkg/core/transaction/transaction_test.go index 9050026ee..78e0a9d94 100644 --- a/pkg/core/transaction/transaction_test.go +++ b/pkg/core/transaction/transaction_test.go @@ -120,12 +120,6 @@ func TestMarshalUnmarshalJSONContractTX(t *testing.T) { testserdes.MarshalUnmarshalJSON(t, tx, new(Transaction)) } -func TestMarshalUnmarshalJSONMinerTX(t *testing.T) { - tx := NewMinerTX() - - testserdes.MarshalUnmarshalJSON(t, tx, new(Transaction)) -} - func TestMarshalUnmarshalJSONClaimTX(t *testing.T) { tx := &Transaction{ Type: ClaimType, diff --git a/pkg/core/transaction/type.go b/pkg/core/transaction/type.go index 8c3ab94a8..bf5d34420 100644 --- a/pkg/core/transaction/type.go +++ b/pkg/core/transaction/type.go @@ -11,7 +11,6 @@ type TXType uint8 // Constants for all valid transaction types. const ( - MinerType TXType = 0x00 IssueType TXType = 0x01 ClaimType TXType = 0x02 RegisterType TXType = 0x40 @@ -22,8 +21,6 @@ const ( // String implements the stringer interface. func (t TXType) String() string { switch t { - case MinerType: - return "MinerTransaction" case IssueType: return "IssueTransaction" case ClaimType: @@ -58,8 +55,6 @@ func (t *TXType) UnmarshalJSON(data []byte) error { // TXTypeFromString searches for TXType by string name. func TXTypeFromString(jsonString string) (TXType, error) { switch jsonString = strings.TrimSpace(jsonString); jsonString { - case "MinerTransaction": - return MinerType, nil case "IssueTransaction": return IssueType, nil case "ClaimTransaction": diff --git a/pkg/core/util.go b/pkg/core/util.go index e0d0fedf0..1c998d724 100644 --- a/pkg/core/util.go +++ b/pkg/core/util.go @@ -59,9 +59,6 @@ func createGenesisBlock(cfg config.ProtocolConfiguration) (*block.Block, error) } scriptOut := hash.Hash160(rawScript) - minerTx := transaction.NewMinerTXWithNonce(2083236893) - minerTx.Sender = hash.Hash160([]byte{byte(opcode.PUSH1)}) - issueTx := transaction.NewIssueTX() // TODO NEO3.0: nonce should be constant to avoid variability of genesis block issueTx.Nonce = 0 @@ -83,7 +80,6 @@ func createGenesisBlock(cfg config.ProtocolConfiguration) (*block.Block, error) b := &block.Block{ Base: base, Transactions: []*transaction.Transaction{ - minerTx, &governingTokenTX, &utilityTokenTX, issueTx, diff --git a/pkg/core/util_test.go b/pkg/core/util_test.go index 7b033406a..5bf66555d 100644 --- a/pkg/core/util_test.go +++ b/pkg/core/util_test.go @@ -20,7 +20,7 @@ func TestGenesisBlockMainNet(t *testing.T) { // have been changed. Consequently, hash of the genesis block has been changed. // Update expected genesis block hash for better times. // Old hash is "d42561e3d30e15be6400b6df2f328e02d2bf6354c41dce433bc57687c82144bf" - expect := "4dce83edc5bb9cbdf23d37cfb81dd3c8fc0c331c608d2d893289ae36a62a41eb" + expect := "16ffda4cc6a9b0a0ca63f1571f7724418c43f014e2eb4e8614b4938ccf0f20f6" assert.Equal(t, expect, block.Hash().StringLE()) } diff --git a/pkg/network/server.go b/pkg/network/server.go index 729995067..638a86319 100644 --- a/pkg/network/server.go +++ b/pkg/network/server.go @@ -803,9 +803,6 @@ func (s *Server) relayBlock(b *block.Block) { // verifyAndPoolTX verifies the TX and adds it to the local mempool. func (s *Server) verifyAndPoolTX(t *transaction.Transaction) RelayReason { - if t.Type == transaction.MinerType { - return RelayInvalid - } if err := s.chain.PoolTx(t); err != nil { switch err { case core.ErrAlreadyExists: diff --git a/pkg/rpc/client/rpc_test.go b/pkg/rpc/client/rpc_test.go index 675d644d5..d56168c28 100644 --- a/pkg/rpc/client/rpc_test.go +++ b/pkg/rpc/client/rpc_test.go @@ -136,17 +136,17 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ invoke: func(c *Client) (interface{}, error) { return c.GetBlockByIndex(5) }, - serverResponse: `{"id":1,"jsonrpc":"2.0","result":"0000000062af8cd56d179044215cc8611f75bd96d896f1026c5b42994ae7707df8d82bd3c9f774f449fec7135b506faffaaeee603e2b82e01dec7d0f706789aa1bb983ae0ec7a25e0000000005000000e903736ceceeceae1806eee0e3ec61e7cce476ce01fd08010c408e48ace06fdd7d9bf536b6cb683f7edd336c60a707df8110f69121273fe7e0353e574c55abf2961ac4f7f2bfef44af07e6121f42e5e2115517b29060e3a7dd3e0c40d56609addaa61f06d9df159f7008ffb889d605742baaf7f95a8283469d6e5a4a76c5814f24efa0452e3c6723d88e43833e917551808d05aca8d46a17f25c72440c40fa0b66a2a41933e39685f7cbf45ba0cef286b3eed5f7d1cb60db4bac3a9c55212efb5b1f4a4c5512b2562f8e0a2ebfbc8951734ca53243ec963bd6839773f5910c40c1c0de79304d8ad7e204dceb880325694e5c34abb25ff23beb61e931ecf384e4f06c13a5ea56273c400ecac9408a3eb8e8cf3b0b358f7b2b6ac5120bb5c7763594130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb020057040000000000000000d5040000e903736ceceeceae1806eee0e3ec61e7cce476ce0500000000000001fd08010c40a9c72069ad0365a8f0787a236ec60293a9846172e9cdeaeb665586d6c72545bcfa694422f8ccd3e76bce7e27ac8099cc9b3f6322bcfeaf971c9b481a1a308a350c4048f7c2a176a7c8eb73f881aacb0a5bc52bb3b2eeeb2341031496aaadbc043dda02d8c79935ac27ecda0dc7c2561af056946e82ff1a819b56461ad32fce83ab960c4036a238579bbe505150f2ea2e4172eb83cfd614af00c1cfe36791a1eb12cb5565f37668fa09a0fcb2528fffe377c96ec9d63d18aa19a5d6c24c5c97034d1811250c4007c3826543bc03b3b6cecf48fb30ff24033c1aad7a946ac6c54e7fa90173ff3b0fe181936079fc0e7030bdde2b655ae3a7101b8a0bd85fc98de83bb72739a9ce94130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"}`, + serverResponse: `{"id":1,"jsonrpc":"2.0","result":"000000005b25cf560918b13cc7a10071cf616426a103d58498171567aaa116af69179aa3c05c359ade4316392d69d5ca01f8860f8bdebbe1a8f752edd68d9a6a2d204fe752cca25e0000000005000000e903736ceceeceae1806eee0e3ec61e7cce476ce01fd08010c407f70912fdcd0ce9a70963110eb39ef73ed02512ea63bc1c55577474df8f364a874999b16666888f8a3ca69873054a31ab42dd1fee1ed8605ff65edb39797e34e0c40d59459cb1cc8270d9a813aa444852a5d7714aed0b25373ec07549349c6db32b6c8c2e43cdd7b1ad2a4154cb5ff1222d9d7010877016a59775abdd2c08f253c850c4048b65cb58e0d58f2dd0f5db3b195c5784933d6179d8317217ba46f9deac9a667bffb1afd0dd86bdae6267af4c2605f7401849a0b980fcecfeae95df7f5ca6e140c406d9b1942c5aa80070ad484b3dd76421a3f46327670bea94e3ecb3a94eef8843a75195b55872a7c503acb01ab368cdaa11a9e5fb80d55bbd6b861233ba84edcf894130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb020057040000000000008000d5040000e903736ceceeceae1806eee0e3ec61e7cce476ce0500000000000001fd08010c40ae62dadb95b21628921adb9ee14e8c1f20d68b9d6ffba218f8e403af70126449435a53525cd6f1d1c871e64a91025866cd8a413ec70e3cde0ddf62931aa22baa0c40c3e09fc8ad46789d645240634ef40bd180e0dba75beae07a37dc2e899b68b4b3b3a67d076ea9444ed143dbb3264702914a4662ff95859d32c9b5bb5bdc9ec1d60c40b2511115482bd860d85f57103fb8cce2cb45ba8461d4e164685b426cb5df1525e6f09dd7aa23db0fec2241bde7c925e22f3cba3824ea461455515dc2a1455f5e0c40c0aee2528e7fd75a0434f4d67da58507e8d349ca29e01e7eafa9f283e8b8c05d06587db7234f111730c14c8a4bfb7a1ffd9493b9696c71e68966c6bf4a832ab794130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"}`, result: func(c *Client) interface{} { return &block.Block{} }, check: func(t *testing.T, c *Client, result interface{}) { res, ok := result.(*block.Block) require.True(t, ok) assert.Equal(t, uint32(0), res.Version) - assert.Equal(t, "424b08395ea83eb09604a6c8e76e95574b657e219fe2c3e2f1574176581bf7e9", res.Hash().StringLE()) - assert.Equal(t, "d32bd8f87d70e74a99425b6c02f196d896bd751f61c85c214490176dd58caf62", res.PrevHash.StringLE()) - assert.Equal(t, "ae83b91baa8967700f7dec1de0822b3e60eeaefaaf6f505b13c7fe49f474f7c9", res.MerkleRoot.StringLE()) + assert.Equal(t, "81b74dcfc3a42ef331eec2486231aba300ec9a95b024b0151214c76305d409bb", res.Hash().StringLE()) + assert.Equal(t, "a39a1769af16a1aa6715179884d503a1266461cf7100a1c73cb1180956cf255b", res.PrevHash.StringLE()) + assert.Equal(t, "e74f202d6a9a8dd6ed52f7a8e1bbde8b0f86f801cad5692d391643de9a355cc0", res.MerkleRoot.StringLE()) assert.Equal(t, 1, len(res.Transactions)) - assert.Equal(t, "ae63e96d984673b038c83cfcb94323e37bdab29a53921823544b50df9f7edb54", res.Transactions[0].Hash().StringLE()) + assert.Equal(t, "69d95138263dc54c07826ef1d76f9eb32ff6bf7fc3fc3281194b46ec7683ceb3", res.Transactions[0].Hash().StringLE()) }, }, { @@ -154,25 +154,25 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ invoke: func(c *Client) (i interface{}, err error) { return c.GetBlockByIndexVerbose(5) }, - serverResponse: `{"id":1,"jsonrpc":"2.0","result":{"hash":"0x424b08395ea83eb09604a6c8e76e95574b657e219fe2c3e2f1574176581bf7e9","size":977,"version":0,"nextblockhash":"0xc2ce96d861414ad229101cc9afaec4ae500f730a2180b54bd14a8dd6147bc8c3","previousblockhash":"0xd32bd8f87d70e74a99425b6c02f196d896bd751f61c85c214490176dd58caf62","merkleroot":"0xae83b91baa8967700f7dec1de0822b3e60eeaefaaf6f505b13c7fe49f474f7c9","time":1587726094,"index":5,"consensus_data":{"primary":0,"nonce":"0000000000000457"},"nextconsensus":"Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy","confirmations":203,"script":{"invocation":"0c408e48ace06fdd7d9bf536b6cb683f7edd336c60a707df8110f69121273fe7e0353e574c55abf2961ac4f7f2bfef44af07e6121f42e5e2115517b29060e3a7dd3e0c40d56609addaa61f06d9df159f7008ffb889d605742baaf7f95a8283469d6e5a4a76c5814f24efa0452e3c6723d88e43833e917551808d05aca8d46a17f25c72440c40fa0b66a2a41933e39685f7cbf45ba0cef286b3eed5f7d1cb60db4bac3a9c55212efb5b1f4a4c5512b2562f8e0a2ebfbc8951734ca53243ec963bd6839773f5910c40c1c0de79304d8ad7e204dceb880325694e5c34abb25ff23beb61e931ecf384e4f06c13a5ea56273c400ecac9408a3eb8e8cf3b0b358f7b2b6ac5120bb5c77635","verification":"130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"},"tx":[{"sys_fee":"0","net_fee":"0","txid":"0xae63e96d984673b038c83cfcb94323e37bdab29a53921823544b50df9f7edb54","size":450,"type":"MinerTransaction","version":0,"nonce":1237,"sender":"Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy","valid_until_block":5,"attributes":[],"vin":[],"vout":[],"scripts":[{"invocation":"0c40a9c72069ad0365a8f0787a236ec60293a9846172e9cdeaeb665586d6c72545bcfa694422f8ccd3e76bce7e27ac8099cc9b3f6322bcfeaf971c9b481a1a308a350c4048f7c2a176a7c8eb73f881aacb0a5bc52bb3b2eeeb2341031496aaadbc043dda02d8c79935ac27ecda0dc7c2561af056946e82ff1a819b56461ad32fce83ab960c4036a238579bbe505150f2ea2e4172eb83cfd614af00c1cfe36791a1eb12cb5565f37668fa09a0fcb2528fffe377c96ec9d63d18aa19a5d6c24c5c97034d1811250c4007c3826543bc03b3b6cecf48fb30ff24033c1aad7a946ac6c54e7fa90173ff3b0fe181936079fc0e7030bdde2b655ae3a7101b8a0bd85fc98de83bb72739a9ce","verification":"130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"}]}]}}`, + serverResponse: `{"id":1,"jsonrpc":"2.0","result":{"hash":"0x81b74dcfc3a42ef331eec2486231aba300ec9a95b024b0151214c76305d409bb","size":977,"version":0,"nextblockhash":"0xd08e408909ae24de3470a3f231f966e15719910cb7b1a30f356b3e784c1ddf6a","previousblockhash":"0xa39a1769af16a1aa6715179884d503a1266461cf7100a1c73cb1180956cf255b","merkleroot":"0xe74f202d6a9a8dd6ed52f7a8e1bbde8b0f86f801cad5692d391643de9a355cc0","time":1587727442,"index":5,"consensus_data":{"primary":0,"nonce":"0000000000000457"},"nextconsensus":"Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy","confirmations":203,"script":{"invocation":"0c407f70912fdcd0ce9a70963110eb39ef73ed02512ea63bc1c55577474df8f364a874999b16666888f8a3ca69873054a31ab42dd1fee1ed8605ff65edb39797e34e0c40d59459cb1cc8270d9a813aa444852a5d7714aed0b25373ec07549349c6db32b6c8c2e43cdd7b1ad2a4154cb5ff1222d9d7010877016a59775abdd2c08f253c850c4048b65cb58e0d58f2dd0f5db3b195c5784933d6179d8317217ba46f9deac9a667bffb1afd0dd86bdae6267af4c2605f7401849a0b980fcecfeae95df7f5ca6e140c406d9b1942c5aa80070ad484b3dd76421a3f46327670bea94e3ecb3a94eef8843a75195b55872a7c503acb01ab368cdaa11a9e5fb80d55bbd6b861233ba84edcf8","verification":"130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"},"tx":[{"sys_fee":"0","net_fee":"0","txid":"0x69d95138263dc54c07826ef1d76f9eb32ff6bf7fc3fc3281194b46ec7683ceb3","size":450,"type":"ContractTransaction","version":0,"nonce":1237,"sender":"Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy","valid_until_block":5,"attributes":[],"vin":[],"vout":[],"scripts":[{"invocation":"0c40ae62dadb95b21628921adb9ee14e8c1f20d68b9d6ffba218f8e403af70126449435a53525cd6f1d1c871e64a91025866cd8a413ec70e3cde0ddf62931aa22baa0c40c3e09fc8ad46789d645240634ef40bd180e0dba75beae07a37dc2e899b68b4b3b3a67d076ea9444ed143dbb3264702914a4662ff95859d32c9b5bb5bdc9ec1d60c40b2511115482bd860d85f57103fb8cce2cb45ba8461d4e164685b426cb5df1525e6f09dd7aa23db0fec2241bde7c925e22f3cba3824ea461455515dc2a1455f5e0c40c0aee2528e7fd75a0434f4d67da58507e8d349ca29e01e7eafa9f283e8b8c05d06587db7234f111730c14c8a4bfb7a1ffd9493b9696c71e68966c6bf4a832ab7","verification":"130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"}]}]}}`, result: func(c *Client) interface{} { - hash, err := util.Uint256DecodeStringLE("424b08395ea83eb09604a6c8e76e95574b657e219fe2c3e2f1574176581bf7e9") + hash, err := util.Uint256DecodeStringLE("81b74dcfc3a42ef331eec2486231aba300ec9a95b024b0151214c76305d409bb") if err != nil { panic(err) } - nextBlockHash, err := util.Uint256DecodeStringLE("c2ce96d861414ad229101cc9afaec4ae500f730a2180b54bd14a8dd6147bc8c3") + nextBlockHash, err := util.Uint256DecodeStringLE("d08e408909ae24de3470a3f231f966e15719910cb7b1a30f356b3e784c1ddf6a") if err != nil { panic(err) } - prevBlockHash, err := util.Uint256DecodeStringLE("d32bd8f87d70e74a99425b6c02f196d896bd751f61c85c214490176dd58caf62") + prevBlockHash, err := util.Uint256DecodeStringLE("a39a1769af16a1aa6715179884d503a1266461cf7100a1c73cb1180956cf255b") if err != nil { panic(err) } - merkleRoot, err := util.Uint256DecodeStringLE("ae83b91baa8967700f7dec1de0822b3e60eeaefaaf6f505b13c7fe49f474f7c9") + merkleRoot, err := util.Uint256DecodeStringLE("e74f202d6a9a8dd6ed52f7a8e1bbde8b0f86f801cad5692d391643de9a355cc0") if err != nil { panic(err) } - invScript, err := hex.DecodeString("0c408e48ace06fdd7d9bf536b6cb683f7edd336c60a707df8110f69121273fe7e0353e574c55abf2961ac4f7f2bfef44af07e6121f42e5e2115517b29060e3a7dd3e0c40d56609addaa61f06d9df159f7008ffb889d605742baaf7f95a8283469d6e5a4a76c5814f24efa0452e3c6723d88e43833e917551808d05aca8d46a17f25c72440c40fa0b66a2a41933e39685f7cbf45ba0cef286b3eed5f7d1cb60db4bac3a9c55212efb5b1f4a4c5512b2562f8e0a2ebfbc8951734ca53243ec963bd6839773f5910c40c1c0de79304d8ad7e204dceb880325694e5c34abb25ff23beb61e931ecf384e4f06c13a5ea56273c400ecac9408a3eb8e8cf3b0b358f7b2b6ac5120bb5c77635") + invScript, err := hex.DecodeString("0c407f70912fdcd0ce9a70963110eb39ef73ed02512ea63bc1c55577474df8f364a874999b16666888f8a3ca69873054a31ab42dd1fee1ed8605ff65edb39797e34e0c40d59459cb1cc8270d9a813aa444852a5d7714aed0b25373ec07549349c6db32b6c8c2e43cdd7b1ad2a4154cb5ff1222d9d7010877016a59775abdd2c08f253c850c4048b65cb58e0d58f2dd0f5db3b195c5784933d6179d8317217ba46f9deac9a667bffb1afd0dd86bdae6267af4c2605f7401849a0b980fcecfeae95df7f5ca6e140c406d9b1942c5aa80070ad484b3dd76421a3f46327670bea94e3ecb3a94eef8843a75195b55872a7c503acb01ab368cdaa11a9e5fb80d55bbd6b861233ba84edcf8") if err != nil { panic(err) } @@ -184,7 +184,7 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ if err != nil { panic(err) } - txInvScript, err := hex.DecodeString("0c40a9c72069ad0365a8f0787a236ec60293a9846172e9cdeaeb665586d6c72545bcfa694422f8ccd3e76bce7e27ac8099cc9b3f6322bcfeaf971c9b481a1a308a350c4048f7c2a176a7c8eb73f881aacb0a5bc52bb3b2eeeb2341031496aaadbc043dda02d8c79935ac27ecda0dc7c2561af056946e82ff1a819b56461ad32fce83ab960c4036a238579bbe505150f2ea2e4172eb83cfd614af00c1cfe36791a1eb12cb5565f37668fa09a0fcb2528fffe377c96ec9d63d18aa19a5d6c24c5c97034d1811250c4007c3826543bc03b3b6cecf48fb30ff24033c1aad7a946ac6c54e7fa90173ff3b0fe181936079fc0e7030bdde2b655ae3a7101b8a0bd85fc98de83bb72739a9ce") + txInvScript, err := hex.DecodeString("0c40ae62dadb95b21628921adb9ee14e8c1f20d68b9d6ffba218f8e403af70126449435a53525cd6f1d1c871e64a91025866cd8a413ec70e3cde0ddf62931aa22baa0c40c3e09fc8ad46789d645240634ef40bd180e0dba75beae07a37dc2e899b68b4b3b3a67d076ea9444ed143dbb3264702914a4662ff95859d32c9b5bb5bdc9ec1d60c40b2511115482bd860d85f57103fb8cce2cb45ba8461d4e164685b426cb5df1525e6f09dd7aa23db0fec2241bde7c925e22f3cba3824ea461455515dc2a1455f5e0c40c0aee2528e7fd75a0434f4d67da58507e8d349ca29e01e7eafa9f283e8b8c05d06587db7234f111730c14c8a4bfb7a1ffd9493b9696c71e68966c6bf4a832ab7") if err != nil { panic(err) } @@ -192,7 +192,8 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ if err != nil { panic(err) } - tx := transaction.NewMinerTXWithNonce(1237) + tx := transaction.NewContractTX() + tx.Nonce = 1237 tx.ValidUntilBlock = 5 tx.Sender = sender tx.Scripts = []transaction.Witness{ @@ -210,7 +211,7 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ NextBlockHash: &nextBlockHash, PreviousBlockHash: prevBlockHash, MerkleRoot: merkleRoot, - Time: 1587726094, + Time: 1587727442, Index: 5, NextConsensus: "Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy", Confirmations: 203, @@ -241,47 +242,47 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ } return c.GetBlockByHash(hash) }, - serverResponse: `{"id":1,"jsonrpc":"2.0","result":"0000000062af8cd56d179044215cc8611f75bd96d896f1026c5b42994ae7707df8d82bd3c9f774f449fec7135b506faffaaeee603e2b82e01dec7d0f706789aa1bb983ae0ec7a25e0000000005000000e903736ceceeceae1806eee0e3ec61e7cce476ce01fd08010c408e48ace06fdd7d9bf536b6cb683f7edd336c60a707df8110f69121273fe7e0353e574c55abf2961ac4f7f2bfef44af07e6121f42e5e2115517b29060e3a7dd3e0c40d56609addaa61f06d9df159f7008ffb889d605742baaf7f95a8283469d6e5a4a76c5814f24efa0452e3c6723d88e43833e917551808d05aca8d46a17f25c72440c40fa0b66a2a41933e39685f7cbf45ba0cef286b3eed5f7d1cb60db4bac3a9c55212efb5b1f4a4c5512b2562f8e0a2ebfbc8951734ca53243ec963bd6839773f5910c40c1c0de79304d8ad7e204dceb880325694e5c34abb25ff23beb61e931ecf384e4f06c13a5ea56273c400ecac9408a3eb8e8cf3b0b358f7b2b6ac5120bb5c7763594130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb020057040000000000000000d5040000e903736ceceeceae1806eee0e3ec61e7cce476ce0500000000000001fd08010c40a9c72069ad0365a8f0787a236ec60293a9846172e9cdeaeb665586d6c72545bcfa694422f8ccd3e76bce7e27ac8099cc9b3f6322bcfeaf971c9b481a1a308a350c4048f7c2a176a7c8eb73f881aacb0a5bc52bb3b2eeeb2341031496aaadbc043dda02d8c79935ac27ecda0dc7c2561af056946e82ff1a819b56461ad32fce83ab960c4036a238579bbe505150f2ea2e4172eb83cfd614af00c1cfe36791a1eb12cb5565f37668fa09a0fcb2528fffe377c96ec9d63d18aa19a5d6c24c5c97034d1811250c4007c3826543bc03b3b6cecf48fb30ff24033c1aad7a946ac6c54e7fa90173ff3b0fe181936079fc0e7030bdde2b655ae3a7101b8a0bd85fc98de83bb72739a9ce94130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"}`, + serverResponse: `{"id":1,"jsonrpc":"2.0","result":"000000005b25cf560918b13cc7a10071cf616426a103d58498171567aaa116af69179aa3c05c359ade4316392d69d5ca01f8860f8bdebbe1a8f752edd68d9a6a2d204fe752cca25e0000000005000000e903736ceceeceae1806eee0e3ec61e7cce476ce01fd08010c407f70912fdcd0ce9a70963110eb39ef73ed02512ea63bc1c55577474df8f364a874999b16666888f8a3ca69873054a31ab42dd1fee1ed8605ff65edb39797e34e0c40d59459cb1cc8270d9a813aa444852a5d7714aed0b25373ec07549349c6db32b6c8c2e43cdd7b1ad2a4154cb5ff1222d9d7010877016a59775abdd2c08f253c850c4048b65cb58e0d58f2dd0f5db3b195c5784933d6179d8317217ba46f9deac9a667bffb1afd0dd86bdae6267af4c2605f7401849a0b980fcecfeae95df7f5ca6e140c406d9b1942c5aa80070ad484b3dd76421a3f46327670bea94e3ecb3a94eef8843a75195b55872a7c503acb01ab368cdaa11a9e5fb80d55bbd6b861233ba84edcf894130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb020057040000000000008000d5040000e903736ceceeceae1806eee0e3ec61e7cce476ce0500000000000001fd08010c40ae62dadb95b21628921adb9ee14e8c1f20d68b9d6ffba218f8e403af70126449435a53525cd6f1d1c871e64a91025866cd8a413ec70e3cde0ddf62931aa22baa0c40c3e09fc8ad46789d645240634ef40bd180e0dba75beae07a37dc2e899b68b4b3b3a67d076ea9444ed143dbb3264702914a4662ff95859d32c9b5bb5bdc9ec1d60c40b2511115482bd860d85f57103fb8cce2cb45ba8461d4e164685b426cb5df1525e6f09dd7aa23db0fec2241bde7c925e22f3cba3824ea461455515dc2a1455f5e0c40c0aee2528e7fd75a0434f4d67da58507e8d349ca29e01e7eafa9f283e8b8c05d06587db7234f111730c14c8a4bfb7a1ffd9493b9696c71e68966c6bf4a832ab794130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"}`, result: func(c *Client) interface{} { return &block.Block{} }, check: func(t *testing.T, c *Client, result interface{}) { res, ok := result.(*block.Block) require.True(t, ok) assert.Equal(t, uint32(0), res.Version) - assert.Equal(t, "424b08395ea83eb09604a6c8e76e95574b657e219fe2c3e2f1574176581bf7e9", res.Hash().StringLE()) - assert.Equal(t, "d32bd8f87d70e74a99425b6c02f196d896bd751f61c85c214490176dd58caf62", res.PrevHash.StringLE()) - assert.Equal(t, "ae83b91baa8967700f7dec1de0822b3e60eeaefaaf6f505b13c7fe49f474f7c9", res.MerkleRoot.StringLE()) + assert.Equal(t, "81b74dcfc3a42ef331eec2486231aba300ec9a95b024b0151214c76305d409bb", res.Hash().StringLE()) + assert.Equal(t, "a39a1769af16a1aa6715179884d503a1266461cf7100a1c73cb1180956cf255b", res.PrevHash.StringLE()) + assert.Equal(t, "e74f202d6a9a8dd6ed52f7a8e1bbde8b0f86f801cad5692d391643de9a355cc0", res.MerkleRoot.StringLE()) assert.Equal(t, 1, len(res.Transactions)) - assert.Equal(t, "ae63e96d984673b038c83cfcb94323e37bdab29a53921823544b50df9f7edb54", res.Transactions[0].Hash().StringLE()) + assert.Equal(t, "69d95138263dc54c07826ef1d76f9eb32ff6bf7fc3fc3281194b46ec7683ceb3", res.Transactions[0].Hash().StringLE()) }, }, { name: "byHash_verbose_positive", invoke: func(c *Client) (i interface{}, err error) { - hash, err := util.Uint256DecodeStringLE("e9f71b58764157f1e2c3e29f217e654b57956ee7c8a60496b03ea85e39084b42") + hash, err := util.Uint256DecodeStringLE("bb09d40563c7141215b024b0959aec00a3ab316248c2ee31f32ea4c3cf4db781") if err != nil { panic(err) } return c.GetBlockByHashVerbose(hash) }, - serverResponse: `{"id":1,"jsonrpc":"2.0","result":{"hash":"0x424b08395ea83eb09604a6c8e76e95574b657e219fe2c3e2f1574176581bf7e9","size":977,"version":0,"nextblockhash":"0xc2ce96d861414ad229101cc9afaec4ae500f730a2180b54bd14a8dd6147bc8c3","previousblockhash":"0xd32bd8f87d70e74a99425b6c02f196d896bd751f61c85c214490176dd58caf62","merkleroot":"0xae83b91baa8967700f7dec1de0822b3e60eeaefaaf6f505b13c7fe49f474f7c9","time":1587726094,"index":5,"consensus_data":{"primary":0,"nonce":"0000000000000457"},"nextconsensus":"Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy","confirmations":203,"script":{"invocation":"0c408e48ace06fdd7d9bf536b6cb683f7edd336c60a707df8110f69121273fe7e0353e574c55abf2961ac4f7f2bfef44af07e6121f42e5e2115517b29060e3a7dd3e0c40d56609addaa61f06d9df159f7008ffb889d605742baaf7f95a8283469d6e5a4a76c5814f24efa0452e3c6723d88e43833e917551808d05aca8d46a17f25c72440c40fa0b66a2a41933e39685f7cbf45ba0cef286b3eed5f7d1cb60db4bac3a9c55212efb5b1f4a4c5512b2562f8e0a2ebfbc8951734ca53243ec963bd6839773f5910c40c1c0de79304d8ad7e204dceb880325694e5c34abb25ff23beb61e931ecf384e4f06c13a5ea56273c400ecac9408a3eb8e8cf3b0b358f7b2b6ac5120bb5c77635","verification":"130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"},"tx":[{"sys_fee":"0","net_fee":"0","txid":"0xae63e96d984673b038c83cfcb94323e37bdab29a53921823544b50df9f7edb54","size":450,"type":"MinerTransaction","version":0,"nonce":1237,"sender":"Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy","valid_until_block":5,"attributes":[],"vin":[],"vout":[],"scripts":[{"invocation":"0c40a9c72069ad0365a8f0787a236ec60293a9846172e9cdeaeb665586d6c72545bcfa694422f8ccd3e76bce7e27ac8099cc9b3f6322bcfeaf971c9b481a1a308a350c4048f7c2a176a7c8eb73f881aacb0a5bc52bb3b2eeeb2341031496aaadbc043dda02d8c79935ac27ecda0dc7c2561af056946e82ff1a819b56461ad32fce83ab960c4036a238579bbe505150f2ea2e4172eb83cfd614af00c1cfe36791a1eb12cb5565f37668fa09a0fcb2528fffe377c96ec9d63d18aa19a5d6c24c5c97034d1811250c4007c3826543bc03b3b6cecf48fb30ff24033c1aad7a946ac6c54e7fa90173ff3b0fe181936079fc0e7030bdde2b655ae3a7101b8a0bd85fc98de83bb72739a9ce","verification":"130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"}]}]}}`, + serverResponse: `{"id":1,"jsonrpc":"2.0","result":{"hash":"0x81b74dcfc3a42ef331eec2486231aba300ec9a95b024b0151214c76305d409bb","size":977,"version":0,"nextblockhash":"0xd08e408909ae24de3470a3f231f966e15719910cb7b1a30f356b3e784c1ddf6a","previousblockhash":"0xa39a1769af16a1aa6715179884d503a1266461cf7100a1c73cb1180956cf255b","merkleroot":"0xe74f202d6a9a8dd6ed52f7a8e1bbde8b0f86f801cad5692d391643de9a355cc0","time":1587727442,"index":5,"consensus_data":{"primary":0,"nonce":"0000000000000457"},"nextconsensus":"Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy","confirmations":203,"script":{"invocation":"0c407f70912fdcd0ce9a70963110eb39ef73ed02512ea63bc1c55577474df8f364a874999b16666888f8a3ca69873054a31ab42dd1fee1ed8605ff65edb39797e34e0c40d59459cb1cc8270d9a813aa444852a5d7714aed0b25373ec07549349c6db32b6c8c2e43cdd7b1ad2a4154cb5ff1222d9d7010877016a59775abdd2c08f253c850c4048b65cb58e0d58f2dd0f5db3b195c5784933d6179d8317217ba46f9deac9a667bffb1afd0dd86bdae6267af4c2605f7401849a0b980fcecfeae95df7f5ca6e140c406d9b1942c5aa80070ad484b3dd76421a3f46327670bea94e3ecb3a94eef8843a75195b55872a7c503acb01ab368cdaa11a9e5fb80d55bbd6b861233ba84edcf8","verification":"130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"},"tx":[{"sys_fee":"0","net_fee":"0","txid":"0x69d95138263dc54c07826ef1d76f9eb32ff6bf7fc3fc3281194b46ec7683ceb3","size":450,"type":"ContractTransaction","version":0,"nonce":1237,"sender":"Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy","valid_until_block":5,"attributes":[],"vin":[],"vout":[],"scripts":[{"invocation":"0c40ae62dadb95b21628921adb9ee14e8c1f20d68b9d6ffba218f8e403af70126449435a53525cd6f1d1c871e64a91025866cd8a413ec70e3cde0ddf62931aa22baa0c40c3e09fc8ad46789d645240634ef40bd180e0dba75beae07a37dc2e899b68b4b3b3a67d076ea9444ed143dbb3264702914a4662ff95859d32c9b5bb5bdc9ec1d60c40b2511115482bd860d85f57103fb8cce2cb45ba8461d4e164685b426cb5df1525e6f09dd7aa23db0fec2241bde7c925e22f3cba3824ea461455515dc2a1455f5e0c40c0aee2528e7fd75a0434f4d67da58507e8d349ca29e01e7eafa9f283e8b8c05d06587db7234f111730c14c8a4bfb7a1ffd9493b9696c71e68966c6bf4a832ab7","verification":"130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"}]}]}}`, result: func(c *Client) interface{} { - hash, err := util.Uint256DecodeStringLE("424b08395ea83eb09604a6c8e76e95574b657e219fe2c3e2f1574176581bf7e9") + hash, err := util.Uint256DecodeStringLE("81b74dcfc3a42ef331eec2486231aba300ec9a95b024b0151214c76305d409bb") if err != nil { panic(err) } - nextBlockHash, err := util.Uint256DecodeStringLE("c2ce96d861414ad229101cc9afaec4ae500f730a2180b54bd14a8dd6147bc8c3") + nextBlockHash, err := util.Uint256DecodeStringLE("d08e408909ae24de3470a3f231f966e15719910cb7b1a30f356b3e784c1ddf6a") if err != nil { panic(err) } - prevBlockHash, err := util.Uint256DecodeStringLE("d32bd8f87d70e74a99425b6c02f196d896bd751f61c85c214490176dd58caf62") + prevBlockHash, err := util.Uint256DecodeStringLE("a39a1769af16a1aa6715179884d503a1266461cf7100a1c73cb1180956cf255b") if err != nil { panic(err) } - merkleRoot, err := util.Uint256DecodeStringLE("ae83b91baa8967700f7dec1de0822b3e60eeaefaaf6f505b13c7fe49f474f7c9") + merkleRoot, err := util.Uint256DecodeStringLE("e74f202d6a9a8dd6ed52f7a8e1bbde8b0f86f801cad5692d391643de9a355cc0") if err != nil { panic(err) } - invScript, err := hex.DecodeString("0c408e48ace06fdd7d9bf536b6cb683f7edd336c60a707df8110f69121273fe7e0353e574c55abf2961ac4f7f2bfef44af07e6121f42e5e2115517b29060e3a7dd3e0c40d56609addaa61f06d9df159f7008ffb889d605742baaf7f95a8283469d6e5a4a76c5814f24efa0452e3c6723d88e43833e917551808d05aca8d46a17f25c72440c40fa0b66a2a41933e39685f7cbf45ba0cef286b3eed5f7d1cb60db4bac3a9c55212efb5b1f4a4c5512b2562f8e0a2ebfbc8951734ca53243ec963bd6839773f5910c40c1c0de79304d8ad7e204dceb880325694e5c34abb25ff23beb61e931ecf384e4f06c13a5ea56273c400ecac9408a3eb8e8cf3b0b358f7b2b6ac5120bb5c77635") + invScript, err := hex.DecodeString("0c407f70912fdcd0ce9a70963110eb39ef73ed02512ea63bc1c55577474df8f364a874999b16666888f8a3ca69873054a31ab42dd1fee1ed8605ff65edb39797e34e0c40d59459cb1cc8270d9a813aa444852a5d7714aed0b25373ec07549349c6db32b6c8c2e43cdd7b1ad2a4154cb5ff1222d9d7010877016a59775abdd2c08f253c850c4048b65cb58e0d58f2dd0f5db3b195c5784933d6179d8317217ba46f9deac9a667bffb1afd0dd86bdae6267af4c2605f7401849a0b980fcecfeae95df7f5ca6e140c406d9b1942c5aa80070ad484b3dd76421a3f46327670bea94e3ecb3a94eef8843a75195b55872a7c503acb01ab368cdaa11a9e5fb80d55bbd6b861233ba84edcf8") if err != nil { panic(err) } @@ -293,7 +294,7 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ if err != nil { panic(err) } - txInvScript, err := hex.DecodeString("0c40a9c72069ad0365a8f0787a236ec60293a9846172e9cdeaeb665586d6c72545bcfa694422f8ccd3e76bce7e27ac8099cc9b3f6322bcfeaf971c9b481a1a308a350c4048f7c2a176a7c8eb73f881aacb0a5bc52bb3b2eeeb2341031496aaadbc043dda02d8c79935ac27ecda0dc7c2561af056946e82ff1a819b56461ad32fce83ab960c4036a238579bbe505150f2ea2e4172eb83cfd614af00c1cfe36791a1eb12cb5565f37668fa09a0fcb2528fffe377c96ec9d63d18aa19a5d6c24c5c97034d1811250c4007c3826543bc03b3b6cecf48fb30ff24033c1aad7a946ac6c54e7fa90173ff3b0fe181936079fc0e7030bdde2b655ae3a7101b8a0bd85fc98de83bb72739a9ce") + txInvScript, err := hex.DecodeString("0c40ae62dadb95b21628921adb9ee14e8c1f20d68b9d6ffba218f8e403af70126449435a53525cd6f1d1c871e64a91025866cd8a413ec70e3cde0ddf62931aa22baa0c40c3e09fc8ad46789d645240634ef40bd180e0dba75beae07a37dc2e899b68b4b3b3a67d076ea9444ed143dbb3264702914a4662ff95859d32c9b5bb5bdc9ec1d60c40b2511115482bd860d85f57103fb8cce2cb45ba8461d4e164685b426cb5df1525e6f09dd7aa23db0fec2241bde7c925e22f3cba3824ea461455515dc2a1455f5e0c40c0aee2528e7fd75a0434f4d67da58507e8d349ca29e01e7eafa9f283e8b8c05d06587db7234f111730c14c8a4bfb7a1ffd9493b9696c71e68966c6bf4a832ab7") if err != nil { panic(err) } @@ -301,7 +302,8 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ if err != nil { panic(err) } - tx := transaction.NewMinerTXWithNonce(1237) + tx := transaction.NewContractTX() + tx.Nonce = 1237 tx.ValidUntilBlock = 5 tx.Sender = sender tx.Scripts = []transaction.Witness{ @@ -319,7 +321,7 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ NextBlockHash: &nextBlockHash, PreviousBlockHash: prevBlockHash, MerkleRoot: merkleRoot, - Time: 1587726094, + Time: 1587727442, Index: 5, NextConsensus: "Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy", Confirmations: 203, @@ -651,51 +653,52 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ { name: "positive", invoke: func(c *Client) (i interface{}, err error) { - hash, err := util.Uint256DecodeStringLE("675b5bd2a90a1f5e74b2e4386162240318f86534f4d3061722ba78b4fe10fe53") + hash, err := util.Uint256DecodeStringLE("b3ce8376ec464b198132fcc37fbff62fb39e6fd7f16e82074cc53d263851d969") if err != nil { panic(err) } return c.GetRawTransaction(hash) }, - serverResponse: `{"id":1,"jsonrpc":"2.0","result":"0000d5040000d60ac443bb800fb08261e75fa5925d747d4858610500000000000001fd040140947358ca2dd7543c3ff3f6ea1389a72c3d5ee99f47a9d0ef70bd84a9f57384e76271efc682f6741568c55907b1794b9f520f7d35f39382303bf0206945b5009a409f467419a886aebe6b482e6d5787981d98b58b82959a2858045bf5683665a5c25c502481b2d9655c902c5dcc147546bed58175c2ed16f328cc21e999e19741554063cab34f1613932947a1c346416b12b1ca724198016acc5fd760597539eed74f2069cfe2a8383e99595aefa3234d79d64a39e3f4c64e8cea800469a6f790999c408e2438fab244bdb79e67f6dab9cde0063e523bd0c175657a66e84897cd15eec8bf358661666679bf50334664872616faa366825f36873b16dd2add64c418cd5794534c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e4c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd624c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc24c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee6995450683073b3bb"}`, + serverResponse: `{"id":1,"jsonrpc":"2.0","result":"8000d5040000e903736ceceeceae1806eee0e3ec61e7cce476ce0500000000000001fd08010c40ae62dadb95b21628921adb9ee14e8c1f20d68b9d6ffba218f8e403af70126449435a53525cd6f1d1c871e64a91025866cd8a413ec70e3cde0ddf62931aa22baa0c40c3e09fc8ad46789d645240634ef40bd180e0dba75beae07a37dc2e899b68b4b3b3a67d076ea9444ed143dbb3264702914a4662ff95859d32c9b5bb5bdc9ec1d60c40b2511115482bd860d85f57103fb8cce2cb45ba8461d4e164685b426cb5df1525e6f09dd7aa23db0fec2241bde7c925e22f3cba3824ea461455515dc2a1455f5e0c40c0aee2528e7fd75a0434f4d67da58507e8d349ca29e01e7eafa9f283e8b8c05d06587db7234f111730c14c8a4bfb7a1ffd9493b9696c71e68966c6bf4a832ab794130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"}`, result: func(c *Client) interface{} { return &transaction.Transaction{} }, check: func(t *testing.T, c *Client, result interface{}) { res, ok := result.(*transaction.Transaction) require.True(t, ok) assert.Equal(t, uint8(0), res.Version) - assert.Equal(t, "675b5bd2a90a1f5e74b2e4386162240318f86534f4d3061722ba78b4fe10fe53", res.Hash().StringBE()) - assert.Equal(t, transaction.MinerType, res.Type) + assert.Equal(t, "b3ce8376ec464b198132fcc37fbff62fb39e6fd7f16e82074cc53d263851d969", res.Hash().StringBE()) + assert.Equal(t, transaction.ContractType, res.Type) assert.Equal(t, false, res.Trimmed) }, }, { name: "verbose_positive", invoke: func(c *Client) (interface{}, error) { - hash, err := util.Uint256DecodeStringLE("265f271088384b2f696e34bea0c8e02cf226351800c0866c1586be521536e579") + hash, err := util.Uint256DecodeStringLE("b3ce8376ec464b198132fcc37fbff62fb39e6fd7f16e82074cc53d263851d969") if err != nil { panic(err) } return c.GetRawTransactionVerbose(hash) }, - serverResponse: `{"jsonrpc":"2.0","id":1,"result":{"sys_fee":"0","net_fee":"0","blockhash":"0x66d1c140fbdc0eaa47e69a6a9c5034ebc3a449db98da565191ab863d1a079906","confirmations":205,"blocktime":1587379353,"txid":"0x79e5361552be86156c86c000183526f22ce0c8a0be346e692f4b388810275f26","size":437,"type":"MinerTransaction","version":0,"nonce":1237,"sender":"AZ81H31DMWzbSnFDLFkzh9vHwaDLayV7fU","valid_until_block":5,"attributes":[],"vin":[],"vout":[],"scripts":[{"invocation":"40f50121bb6ec9d8e0d1c15eea66b2ff7b51bb1bc4b3da27d9eac1d46b59e6a319bb1db4eb710c7f1931b0c2deaa2389a0fc3fe8c761cec40906b7973450c43173402dc082417a6815e722216de0b857eda6c846bf435088d543d2ab89f1dd92488e87b4d2c6508b0db945cbe6968e85c1c6d57274bfc898e82876c5cb08613da5d64053100f0162a41709a37305c300e7d6ac0d46575aab98dade7375b8d9ca980086594f1288dc68da0e0e42913d1c68024f63442a79c9478971d3ad93c5467ec53040a1c3a772a88b09cba8cc8ec3b46c0c0db6ac86519a7fd7db29b43d34e804a22d8839eaeb35e2a1e05d591fbad4ae290b90c6dc02dddbe28b2b3bf0fec2a337dd","verification":"532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae"}]}}`, + serverResponse: `{"jsonrpc":"2.0","id":1,"result":{"sys_fee":"0","net_fee":"0","blockhash":"0x81b74dcfc3a42ef331eec2486231aba300ec9a95b024b0151214c76305d409bb","confirmations":205,"blocktime":1587727442,"txid":"0x69d95138263dc54c07826ef1d76f9eb32ff6bf7fc3fc3281194b46ec7683ceb3","size":450,"type":"ContractTransaction","version":0,"nonce":1237,"sender":"Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy","valid_until_block":5,"attributes":[],"vin":[],"vout":[],"scripts":[{"invocation":"0c40ae62dadb95b21628921adb9ee14e8c1f20d68b9d6ffba218f8e403af70126449435a53525cd6f1d1c871e64a91025866cd8a413ec70e3cde0ddf62931aa22baa0c40c3e09fc8ad46789d645240634ef40bd180e0dba75beae07a37dc2e899b68b4b3b3a67d076ea9444ed143dbb3264702914a4662ff95859d32c9b5bb5bdc9ec1d60c40b2511115482bd860d85f57103fb8cce2cb45ba8461d4e164685b426cb5df1525e6f09dd7aa23db0fec2241bde7c925e22f3cba3824ea461455515dc2a1455f5e0c40c0aee2528e7fd75a0434f4d67da58507e8d349ca29e01e7eafa9f283e8b8c05d06587db7234f111730c14c8a4bfb7a1ffd9493b9696c71e68966c6bf4a832ab7","verification":"130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb"}]}}`, result: func(c *Client) interface{} { - blockHash, err := util.Uint256DecodeStringLE("66d1c140fbdc0eaa47e69a6a9c5034ebc3a449db98da565191ab863d1a079906") + blockHash, err := util.Uint256DecodeStringLE("81b74dcfc3a42ef331eec2486231aba300ec9a95b024b0151214c76305d409bb") if err != nil { panic(err) } - sender, err := address.StringToUint160("AZ81H31DMWzbSnFDLFkzh9vHwaDLayV7fU") + sender, err := address.StringToUint160("Ad1wDxzcRiRSryvJobNV211Tv7UUiziPXy") if err != nil { panic(err) } - invocation, err := hex.DecodeString("40f50121bb6ec9d8e0d1c15eea66b2ff7b51bb1bc4b3da27d9eac1d46b59e6a319bb1db4eb710c7f1931b0c2deaa2389a0fc3fe8c761cec40906b7973450c43173402dc082417a6815e722216de0b857eda6c846bf435088d543d2ab89f1dd92488e87b4d2c6508b0db945cbe6968e85c1c6d57274bfc898e82876c5cb08613da5d64053100f0162a41709a37305c300e7d6ac0d46575aab98dade7375b8d9ca980086594f1288dc68da0e0e42913d1c68024f63442a79c9478971d3ad93c5467ec53040a1c3a772a88b09cba8cc8ec3b46c0c0db6ac86519a7fd7db29b43d34e804a22d8839eaeb35e2a1e05d591fbad4ae290b90c6dc02dddbe28b2b3bf0fec2a337dd") + invocation, err := hex.DecodeString("0c40ae62dadb95b21628921adb9ee14e8c1f20d68b9d6ffba218f8e403af70126449435a53525cd6f1d1c871e64a91025866cd8a413ec70e3cde0ddf62931aa22baa0c40c3e09fc8ad46789d645240634ef40bd180e0dba75beae07a37dc2e899b68b4b3b3a67d076ea9444ed143dbb3264702914a4662ff95859d32c9b5bb5bdc9ec1d60c40b2511115482bd860d85f57103fb8cce2cb45ba8461d4e164685b426cb5df1525e6f09dd7aa23db0fec2241bde7c925e22f3cba3824ea461455515dc2a1455f5e0c40c0aee2528e7fd75a0434f4d67da58507e8d349ca29e01e7eafa9f283e8b8c05d06587db7234f111730c14c8a4bfb7a1ffd9493b9696c71e68966c6bf4a832ab7") if err != nil { panic(err) } - verification, err := hex.DecodeString("532102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd622102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc22103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee69954ae") + verification, err := hex.DecodeString("130c2102103a7f7dd016558597f7960d27c516a4394fd968b9e65155eb4b013e4040406e0c2102a7bc55fe8684e0119768d104ba30795bdcc86619e864add26156723ed185cd620c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20c2103d90c07df63e690ce77912e10ab51acc944b66860237b608c4f8f8309e71ee699140b683073b3bb") if err != nil { panic(err) } - tx := transaction.NewMinerTXWithNonce(1237) + tx := transaction.NewContractTX() + tx.Nonce = 1237 tx.ValidUntilBlock = 5 tx.Sender = sender tx.Scripts = []transaction.Witness{ @@ -714,7 +717,7 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ NetFee: 0, Blockhash: blockHash, Confirmations: 205, - Timestamp: uint64(1587379353), + Timestamp: uint64(1587727442), }, } }, @@ -909,7 +912,7 @@ var rpcClientTestCases = map[string][]rpcClientTestCase{ { name: "positive", invoke: func(c *Client) (interface{}, error) { - return nil, c.SendRawTransaction(transaction.NewMinerTX()) + return nil, c.SendRawTransaction(transaction.NewContractTX()) }, serverResponse: `{"jsonrpc":"2.0","id":1,"result":true}`, result: func(c *Client) interface{} { @@ -1030,7 +1033,7 @@ var rpcClientErrorCases = map[string][]rpcClientErrorCase{ { name: "sendrawtransaction_bad_server_answer", invoke: func(c *Client) (interface{}, error) { - return nil, c.SendRawTransaction(transaction.NewMinerTX()) + return nil, c.SendRawTransaction(transaction.NewContractTX()) }, }, { @@ -1416,7 +1419,7 @@ var rpcClientErrorCases = map[string][]rpcClientErrorCase{ { name: "sendrawtransaction_unmarshalling_error", invoke: func(c *Client) (interface{}, error) { - return nil, c.SendRawTransaction(transaction.NewMinerTX()) + return nil, c.SendRawTransaction(transaction.NewContractTX()) }, }, { diff --git a/pkg/rpc/server/server_test.go b/pkg/rpc/server/server_test.go index 22e214490..77b669db6 100644 --- a/pkg/rpc/server/server_test.go +++ b/pkg/rpc/server/server_test.go @@ -53,12 +53,12 @@ var rpcTestCases = map[string][]rpcTestCase{ "getapplicationlog": { { name: "positive", - params: `["4108062977676178e8453a8ef84a702e01bb35af8a65c7529d04704fcb5f1e0e"]`, + params: `["fe1a3678b16eca35209acf85397708eb0f1668e4045ad4cd5d2453d3bc0a0a6d"]`, result: func(e *executor) interface{} { return &result.ApplicationLog{} }, check: func(t *testing.T, e *executor, acc interface{}) { res, ok := acc.(*result.ApplicationLog) require.True(t, ok) - expectedTxHash, err := util.Uint256DecodeStringLE("4108062977676178e8453a8ef84a702e01bb35af8a65c7529d04704fcb5f1e0e") + expectedTxHash, err := util.Uint256DecodeStringLE("fe1a3678b16eca35209acf85397708eb0f1668e4045ad4cd5d2453d3bc0a0a6d") require.NoError(t, err) assert.Equal(t, expectedTxHash, res.TxHash) assert.Equal(t, 1, len(res.Executions)) @@ -338,11 +338,11 @@ var rpcTestCases = map[string][]rpcTestCase{ assert.Equal(t, block.Hash(), res.Hash) for i := range res.Tx { tx := res.Tx[i] - require.Equal(t, transaction.MinerType, tx.Transaction.Type) + require.Equal(t, transaction.ContractType, tx.Transaction.Type) - miner := block.Transactions[i] + actualTx := block.Transactions[i] require.True(t, ok) - require.Equal(t, miner.Nonce, tx.Transaction.Nonce) + require.Equal(t, actualTx.Nonce, tx.Transaction.Nonce) require.Equal(t, block.Transactions[i].Hash(), tx.Transaction.Hash()) } }, @@ -743,7 +743,7 @@ var rpcTestCases = map[string][]rpcTestCase{ "sendrawtransaction": { { name: "positive", - params: `["80001300000075a94799633ed955dd85a8af314a5b435ab51903b00400000001eb15931b0544cbb9a283f934ab89a23e73cf90b9ca097bb327a0bcdcddf8ce2e010001f5bc5a9ac7b85a47be381260a06b5a1e7a667ce8f7d7c8baa5cfc6465571377a0030d3dec386230075a94799633ed955dd85a8af314a5b435ab5190301420c4082632495e555507a056eae951ad1893f27163dde40505340f6cf9578e20c3d7ec0c7e00f93cb2e770a7ce3e8a2910deabdd01fd966507a7a29106dd2add583ee290c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20b680a906ad4"]`, + params: `["80000b00000075a94799633ed955dd85a8af314a5b435ab51903b004000000011e4db58df4326140a371d0b0cabecea70226b93157dfb561c73ba8db599ebcb6010001f5bc5a9ac7b85a47be381260a06b5a1e7a667ce8f7d7c8baa5cfc6465571377a0030d3dec386230075a94799633ed955dd85a8af314a5b435ab5190301420c401b3040b6eea83bfbd555554c94e7a0e6077922769f3ac19c1183e14dfd1d6ef6a87658b5499921ac59ae2d2acac10d8f0f6147620e27616bb5b7305fb36b6ce0290c2102b3622bf4017bdfe317c58aed5f4c753f206b7db896046fa7d774bbc4bf7f8dc20b680a906ad4"]`, result: func(e *executor) interface{} { v := true return &v @@ -857,7 +857,8 @@ func TestRPC(t *testing.T) { require.NoError(t, err) newTx := func() *transaction.Transaction { height := chain.BlockHeight() - tx := transaction.NewMinerTXWithNonce(height + 1) + tx := transaction.NewContractTX() + tx.Nonce = height + 1 tx.ValidUntilBlock = height + 10 tx.Sender = acc.PrivateKey().GetScriptHash() require.NoError(t, acc.SignTx(tx)) @@ -882,7 +883,7 @@ func TestRPC(t *testing.T) { t.Run("getrawtransaction", func(t *testing.T) { block, _ := chain.GetBlock(chain.GetHeaderHash(0)) - TXHash := block.Transactions[1].Hash() + TXHash := block.Transactions[0].Hash() rpc := fmt.Sprintf(`{"jsonrpc": "2.0", "id": 1, "method": "getrawtransaction", "params": ["%s"]}"`, TXHash.StringLE()) body := doRPCCall(rpc, handler, t) result := checkErrGetResult(t, body, false) @@ -894,7 +895,7 @@ func TestRPC(t *testing.T) { t.Run("getrawtransaction 2 arguments", func(t *testing.T) { block, _ := chain.GetBlock(chain.GetHeaderHash(0)) - TXHash := block.Transactions[1].Hash() + TXHash := block.Transactions[0].Hash() rpc := fmt.Sprintf(`{"jsonrpc": "2.0", "id": 1, "method": "getrawtransaction", "params": ["%s", 0]}"`, TXHash.StringLE()) body := doRPCCall(rpc, handler, t) result := checkErrGetResult(t, body, false) @@ -906,7 +907,7 @@ func TestRPC(t *testing.T) { t.Run("getrawtransaction 2 arguments, verbose", func(t *testing.T) { block, _ := chain.GetBlock(chain.GetHeaderHash(0)) - TXHash := block.Transactions[1].Hash() + TXHash := block.Transactions[0].Hash() rpc := fmt.Sprintf(`{"jsonrpc": "2.0", "id": 1, "method": "getrawtransaction", "params": ["%s", 1]}"`, TXHash.StringLE()) body := doRPCCall(rpc, handler, t) txOut := checkErrGetResult(t, body, false) @@ -979,7 +980,8 @@ func TestRPC(t *testing.T) { t.Run("gettxout", func(t *testing.T) { block, _ := chain.GetBlock(chain.GetHeaderHash(0)) - tx := block.Transactions[3] + require.Equal(t, 4, len(block.Transactions)) + tx := block.Transactions[2] rpc := fmt.Sprintf(`{"jsonrpc": "2.0", "id": 1, "method": "gettxout", "params": [%s, %d]}"`, `"`+tx.Hash().StringLE()+`"`, 0) body := doRPCCall(rpc, handler, t) @@ -1002,7 +1004,7 @@ func TestRPC(t *testing.T) { expected = append(expected, tx.Tx.Hash()) } for i := 0; i < 5; i++ { - tx := transaction.NewMinerTX() + tx := transaction.NewContractTX() assert.NoError(t, mp.Add(tx, &FeerStub{})) expected = append(expected, tx.Hash()) } diff --git a/pkg/rpc/server/testdata/testblocks.acc b/pkg/rpc/server/testdata/testblocks.acc index f09535357a0e6b19b6b56da87ea6f2282b0eb4f4..1885c851b4d677204000a2f7d78340405f5fff87 100644 GIT binary patch literal 113846 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 From 6db4ca874d144fb85f1147f5006a5b877d147ba8 Mon Sep 17 00:00:00 2001 From: Anna Shaleva Date: Thu, 23 Apr 2020 11:52:31 +0300 Subject: [PATCH 5/7] consensus: replace NewBlock() with NewBlockFromContext(ctx *Context) We have to set ConsensusData.PrimaryIndex field of Block, so this value can be retrieved from consensus context. --- go.mod | 2 +- go.sum | 2 ++ pkg/consensus/block.go | 5 +++++ pkg/consensus/consensus.go | 30 +++++++++++++++++++++++++++++- 4 files changed, 37 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 636d7071e..72ea01ca8 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/go-redis/redis v6.10.2+incompatible github.com/go-yaml/yaml v2.1.0+incompatible github.com/mr-tron/base58 v1.1.2 - github.com/nspcc-dev/dbft v0.0.0-20200427132226-15a7927772a4 + github.com/nspcc-dev/dbft v0.0.0-20200427132226-342f23599814 github.com/nspcc-dev/rfc6979 v0.2.0 github.com/pkg/errors v0.8.1 github.com/prometheus/client_golang v1.2.1 diff --git a/go.sum b/go.sum index 7f8283738..27dd966ef 100644 --- a/go.sum +++ b/go.sum @@ -133,6 +133,8 @@ github.com/nspcc-dev/dbft v0.0.0-20200303183127-36d3da79c682 h1:63OWUolW4GcjJR7c github.com/nspcc-dev/dbft v0.0.0-20200303183127-36d3da79c682/go.mod h1:1FYQXSbb6/9HQIkoF8XO7W/S8N7AZRkBsgwbcXRvk0E= github.com/nspcc-dev/dbft v0.0.0-20200427132226-15a7927772a4 h1:3cFSp4v2u9+S7K1GdLUOP1680EiGEHSBvSI6G2n8XzY= github.com/nspcc-dev/dbft v0.0.0-20200427132226-15a7927772a4/go.mod h1:1FYQXSbb6/9HQIkoF8XO7W/S8N7AZRkBsgwbcXRvk0E= +github.com/nspcc-dev/dbft v0.0.0-20200427132226-342f23599814 h1:iNqBioi0RU2VX9UiGl/GfQKBbZrDWq5KSxQG+dgTaqo= +github.com/nspcc-dev/dbft v0.0.0-20200427132226-342f23599814/go.mod h1:1FYQXSbb6/9HQIkoF8XO7W/S8N7AZRkBsgwbcXRvk0E= github.com/nspcc-dev/dbft v0.0.0-20200427132226-660464796c11 h1:sledsmRo0wzgWNCZir5/CeM0PjhHVP8khnGtOfBCFWk= github.com/nspcc-dev/dbft v0.0.0-20200427132226-660464796c11/go.mod h1:1FYQXSbb6/9HQIkoF8XO7W/S8N7AZRkBsgwbcXRvk0E= github.com/nspcc-dev/neo-go v0.73.1-pre.0.20200303142215-f5a1b928ce09/go.mod h1:pPYwPZ2ks+uMnlRLUyXOpLieaDQSEaf4NM3zHVbRjmg= diff --git a/pkg/consensus/block.go b/pkg/consensus/block.go index cd6ccb5d6..820cd8979 100644 --- a/pkg/consensus/block.go +++ b/pkg/consensus/block.go @@ -99,3 +99,8 @@ func (n *neoBlock) SetNextConsensus(h util.Uint160) { n.Block.NextConsensus = h // Signature implements block.Block interface. func (n *neoBlock) Signature() []byte { return n.signature } + +// SetPrimaryIndex is an auxiliary setter for ConsensusData's PrimaryIndex +func (n *neoBlock) SetPrimaryIndex(primaryIndex uint32) { + n.Block.ConsensusData.PrimaryIndex = primaryIndex +} diff --git a/pkg/consensus/consensus.go b/pkg/consensus/consensus.go index 06774e0fb..d31b9a8a9 100644 --- a/pkg/consensus/consensus.go +++ b/pkg/consensus/consensus.go @@ -8,6 +8,7 @@ import ( "github.com/nspcc-dev/dbft" "github.com/nspcc-dev/dbft/block" "github.com/nspcc-dev/dbft/crypto" + "github.com/nspcc-dev/dbft/merkle" "github.com/nspcc-dev/dbft/payload" coreb "github.com/nspcc-dev/neo-go/pkg/core/block" "github.com/nspcc-dev/neo-go/pkg/core/blockchainer" @@ -134,7 +135,7 @@ func NewService(cfg Config) (Service, error) { dbft.WithVerifyBlock(srv.verifyBlock), dbft.WithGetBlock(srv.getBlock), dbft.WithWatchOnly(func() bool { return false }), - dbft.WithNewBlock(func() block.Block { return new(neoBlock) }), + dbft.WithNewBlockFromContext(newBlockFromContext), dbft.WithCurrentHeight(cfg.Chain.BlockHeight), dbft.WithCurrentBlockHash(cfg.Chain.CurrentBlockHash), dbft.WithGetValidators(srv.getValidators), @@ -478,3 +479,30 @@ func convertKeys(validators []crypto.PublicKey) (pubs []*keys.PublicKey) { return } + +func newBlockFromContext(ctx *dbft.Context) block.Block { + block := new(neoBlock) + if ctx.TransactionHashes == nil { + return nil + } + + block.Block.Timestamp = ctx.Timestamp / 1000000 + block.Block.Index = ctx.BlockIndex + block.Block.NextConsensus = ctx.NextConsensus + block.Block.PrevHash = ctx.PrevHash + block.Block.Version = ctx.Version + block.Block.ConsensusData.Nonce = ctx.Nonce + + primaryIndex := uint32(ctx.PrimaryIndex) + block.Block.ConsensusData.PrimaryIndex = primaryIndex + consensusData := coreb.ConsensusData{ + PrimaryIndex: primaryIndex, + Nonce: ctx.Nonce, + } + + if len(ctx.TransactionHashes) != 0 { + mt := merkle.NewMerkleTree(append([]util.Uint256{consensusData.Hash()}, ctx.TransactionHashes...)...) + block.Block.MerkleRoot = mt.Root().Hash + } + return block +} From dbda7215997d0c9e79ddfdbffbd91d6bf148e13d Mon Sep 17 00:00:00 2001 From: Anna Shaleva Date: Fri, 24 Apr 2020 19:33:45 +0300 Subject: [PATCH 6/7] consensus.Block: removed unnecessary setters As far as we have consensus context in NewBlockFromContext, we don't need them anymore. --- go.mod | 2 +- go.sum | 2 ++ pkg/consensus/block.go | 26 -------------------------- pkg/consensus/block_test.go | 22 +++++++++------------- 4 files changed, 12 insertions(+), 40 deletions(-) diff --git a/go.mod b/go.mod index 72ea01ca8..9f503d101 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( github.com/go-redis/redis v6.10.2+incompatible github.com/go-yaml/yaml v2.1.0+incompatible github.com/mr-tron/base58 v1.1.2 - github.com/nspcc-dev/dbft v0.0.0-20200427132226-342f23599814 + github.com/nspcc-dev/dbft v0.0.0-20200427132226-05feeca847dd github.com/nspcc-dev/rfc6979 v0.2.0 github.com/pkg/errors v0.8.1 github.com/prometheus/client_golang v1.2.1 diff --git a/go.sum b/go.sum index 27dd966ef..68831bf15 100644 --- a/go.sum +++ b/go.sum @@ -131,6 +131,8 @@ github.com/nspcc-dev/dbft v0.0.0-20200219114139-199d286ed6c1 h1:yEx9WznS+rjE0jl0 github.com/nspcc-dev/dbft v0.0.0-20200219114139-199d286ed6c1/go.mod h1:O0qtn62prQSqizzoagHmuuKoz8QMkU3SzBoKdEvm3aQ= github.com/nspcc-dev/dbft v0.0.0-20200303183127-36d3da79c682 h1:63OWUolW4GcjJR7cThq8hLnMLTwL+sjO3Qf4fo4sx8w= github.com/nspcc-dev/dbft v0.0.0-20200303183127-36d3da79c682/go.mod h1:1FYQXSbb6/9HQIkoF8XO7W/S8N7AZRkBsgwbcXRvk0E= +github.com/nspcc-dev/dbft v0.0.0-20200427132226-05feeca847dd h1:4XKbXahJWlhjVx2cETQz9edHQfe3BQ2JjNdvSKFBelY= +github.com/nspcc-dev/dbft v0.0.0-20200427132226-05feeca847dd/go.mod h1:1FYQXSbb6/9HQIkoF8XO7W/S8N7AZRkBsgwbcXRvk0E= github.com/nspcc-dev/dbft v0.0.0-20200427132226-15a7927772a4 h1:3cFSp4v2u9+S7K1GdLUOP1680EiGEHSBvSI6G2n8XzY= github.com/nspcc-dev/dbft v0.0.0-20200427132226-15a7927772a4/go.mod h1:1FYQXSbb6/9HQIkoF8XO7W/S8N7AZRkBsgwbcXRvk0E= github.com/nspcc-dev/dbft v0.0.0-20200427132226-342f23599814 h1:iNqBioi0RU2VX9UiGl/GfQKBbZrDWq5KSxQG+dgTaqo= diff --git a/pkg/consensus/block.go b/pkg/consensus/block.go index 820cd8979..cc4a77f99 100644 --- a/pkg/consensus/block.go +++ b/pkg/consensus/block.go @@ -58,49 +58,23 @@ func (n *neoBlock) SetTransactions(txes []block.Transaction) { // Version implements block.Block interface. func (n *neoBlock) Version() uint32 { return n.Block.Version } -// SetVersion implements block.Block interface. -func (n *neoBlock) SetVersion(v uint32) { n.Block.Version = v } - // PrevHash implements block.Block interface. func (n *neoBlock) PrevHash() util.Uint256 { return n.Block.PrevHash } -// SetPrevHash implements block.Block interface. -func (n *neoBlock) SetPrevHash(h util.Uint256) { n.Block.PrevHash = h } - // MerkleRoot implements block.Block interface. func (n *neoBlock) MerkleRoot() util.Uint256 { return n.Block.MerkleRoot } -// SetMerkleRoot implements block.Block interface. -func (n *neoBlock) SetMerkleRoot(r util.Uint256) { n.Block.MerkleRoot = r } - // Timestamp implements block.Block interface. func (n *neoBlock) Timestamp() uint64 { return n.Block.Timestamp * 1000000 } -// SetTimestamp implements block.Block interface. -func (n *neoBlock) SetTimestamp(ts uint64) { n.Block.Timestamp = ts / 1000000 } - // Index implements block.Block interface. func (n *neoBlock) Index() uint32 { return n.Block.Index } -// SetIndex implements block.Block interface. -func (n *neoBlock) SetIndex(i uint32) { n.Block.Index = i } - // ConsensusData implements block.Block interface. func (n *neoBlock) ConsensusData() uint64 { return n.Block.ConsensusData.Nonce } -// SetConsensusData implements block.Block interface. -func (n *neoBlock) SetConsensusData(nonce uint64) { n.Block.ConsensusData.Nonce = nonce } - // NextConsensus implements block.Block interface. func (n *neoBlock) NextConsensus() util.Uint160 { return n.Block.NextConsensus } -// SetNextConsensus implements block.Block interface. -func (n *neoBlock) SetNextConsensus(h util.Uint160) { n.Block.NextConsensus = h } - // Signature implements block.Block interface. func (n *neoBlock) Signature() []byte { return n.signature } - -// SetPrimaryIndex is an auxiliary setter for ConsensusData's PrimaryIndex -func (n *neoBlock) SetPrimaryIndex(primaryIndex uint32) { - n.Block.ConsensusData.PrimaryIndex = primaryIndex -} diff --git a/pkg/consensus/block_test.go b/pkg/consensus/block_test.go index fb84ae629..6e1d91f4e 100644 --- a/pkg/consensus/block_test.go +++ b/pkg/consensus/block_test.go @@ -22,30 +22,26 @@ func TestNeoBlock_Sign(t *testing.T) { func TestNeoBlock_Setters(t *testing.T) { b := new(neoBlock) - b.SetVersion(1) + b.Block.Version = 1 require.EqualValues(t, 1, b.Version()) - b.SetIndex(12) + b.Block.Index = 12 require.EqualValues(t, 12, b.Index()) - b.SetTimestamp(777) - // 777ns -> 0ms -> 0ns - require.EqualValues(t, 0, b.Timestamp()) + b.Block.Timestamp = 777 + // 777ms -> 777000000ns + require.EqualValues(t, 777000000, b.Timestamp()) - b.SetTimestamp(7777777) - // 7777777ns -> 7ms -> 7000000ns - require.EqualValues(t, 7000000, b.Timestamp()) - - b.SetConsensusData(456) + b.Block.ConsensusData.Nonce = 456 require.EqualValues(t, 456, b.ConsensusData()) - b.SetMerkleRoot(util.Uint256{1, 2, 3, 4}) + b.Block.MerkleRoot = util.Uint256{1, 2, 3, 4} require.Equal(t, util.Uint256{1, 2, 3, 4}, b.MerkleRoot()) - b.SetNextConsensus(util.Uint160{9, 2}) + b.Block.NextConsensus = util.Uint160{9, 2} require.Equal(t, util.Uint160{9, 2}, b.NextConsensus()) - b.SetPrevHash(util.Uint256{9, 8, 7}) + b.Block.PrevHash = util.Uint256{9, 8, 7} require.Equal(t, util.Uint256{9, 8, 7}, b.PrevHash()) txx := []block.Transaction{transaction.NewIssueTX()} From fa467ce62851d8d317f564e4ea54d44feaf495f2 Mon Sep 17 00:00:00 2001 From: Anna Shaleva Date: Mon, 27 Apr 2020 09:25:23 +0300 Subject: [PATCH 7/7] core: add txes duplication check on block.DecodeBinary --- pkg/core/block/block.go | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/pkg/core/block/block.go b/pkg/core/block/block.go index c06d0c6de..a9715d71e 100644 --- a/pkg/core/block/block.go +++ b/pkg/core/block/block.go @@ -56,6 +56,17 @@ func (b *Block) RebuildMerkleRoot() error { // Verify verifies the integrity of the block. func (b *Block) Verify() error { + if b.Transactions != nil { + hashes := map[util.Uint256]bool{} + for _, tx := range b.Transactions { + if !hashes[tx.Hash()] { + hashes[tx.Hash()] = true + } else { + return errors.New("transaction duplication is not allowed") + } + } + } + merkle, err := b.computeMerkleTree() if err != nil { return err @@ -142,15 +153,7 @@ func (b *Block) DecodeBinary(br *io.BinReader) { txes[i] = tx } b.Transactions = txes - merkle, err := b.computeMerkleTree() - if err != nil { - br.Err = err - return - } - if !b.MerkleRoot.Equals(merkle.Root()) { - br.Err = errors.New("MerkleRoot mismatch") - return - } + br.Err = b.Verify() } // EncodeBinary encodes the block to the given BinWriter, implementing