neoneo-go/pkg/core
Anna Shaleva eccf639803 core: add InitializeCache method to NEO native contracts
There might be a case when cached contract values store nil (e.g.
after restoring chain from dump). We should always initialize cached
values irrespective to the (NEO).Initialize method.

This commit fixes a bug introduced in 83e94d3
when 4-nodes privnet is failing after restoring from dump:
```
$ docker logs neo_go_node_one
=> Try to restore blocks before running node
2020-09-30T11:55:49.122Z	INFO	no storage version found! creating genesis block
2020-09-30T11:55:49.124Z	INFO	service hasn't started since it's disabled	{"service": "Pprof"}
2020-09-30T11:55:49.124Z	INFO	service hasn't started since it's disabled	{"service": "Prometheus"}
2020-09-30T11:55:49.124Z	INFO	skipped genesis block	{"hash": "3792eaa22c196399a114666fd491c4b9ac52491d9abb1f633a8036a8ac81e4db"}
2020-09-30T11:55:49.141Z	INFO	shutting down service	{"service": "Pprof", "endpoint": ":30001"}
2020-09-30T11:55:49.141Z	INFO	shutting down service	{"service": "Prometheus", "endpoint": ":40001"}
2020-09-30T11:55:49.141Z	INFO	blockchain persist completed	{"persistedBlocks": 3, "persistedKeys": 146, "headerHeight": 3, "blockHeight": 3, "took": "324.27µs"}
2020-09-30T11:55:49.150Z	INFO	restoring blockchain	{"version": "0.1.0"}
2020-09-30T11:55:49.150Z	INFO	service hasn't started since it's disabled	{"service": "Prometheus"}
2020-09-30T11:55:49.151Z	INFO	service hasn't started since it's disabled	{"service": "Pprof"}
2020-09-30T11:55:49.443Z	INFO	starting rpc-server	{"endpoint": ":30333"}
2020-09-30T11:55:49.443Z	INFO	node started	{"blockHeight": 3, "headerHeight": 3}

    _   ____________        __________
   / | / / ____/ __ \      / ____/ __ \
  /  |/ / __/ / / / /_____/ / __/ / / /
 / /|  / /___/ /_/ /_____/ /_/ / /_/ /
/_/ |_/_____/\____/      \____/\____/

/NEO-GO:/

2020-09-30T11:55:49.444Z	INFO	new peer connected	{"addr": "172.23.0.5:39638", "peerCount": 1}
2020-09-30T11:55:49.444Z	INFO	new peer connected	{"addr": "172.23.0.5:20333", "peerCount": 2}
2020-09-30T11:55:49.444Z	WARN	peer disconnected	{"addr": "172.23.0.5:20333", "reason": "identical node id", "peerCount": 1}
2020-09-30T11:55:49.445Z	WARN	peer disconnected	{"addr": "172.23.0.5:39638", "reason": "identical node id", "peerCount": 0}
2020-09-30T11:55:49.445Z	INFO	new peer connected	{"addr": "172.23.0.3:20335", "peerCount": 1}
2020-09-30T11:55:49.445Z	INFO	new peer connected	{"addr": "172.23.0.2:20334", "peerCount": 2}
2020-09-30T11:55:49.445Z	INFO	started protocol	{"addr": "172.23.0.3:20335", "userAgent": "/NEO-GO:/", "startHeight": 3, "id": 1339919829}
2020-09-30T11:55:49.445Z	INFO	new peer connected	{"addr": "172.23.0.4:20336", "peerCount": 3}
2020-09-30T11:55:49.445Z	INFO	started protocol	{"addr": "172.23.0.4:20336", "userAgent": "/NEO-GO:/", "startHeight": 3, "id": 4036722359}
2020-09-30T11:55:49.445Z	INFO	node reached synchronized state, starting consensus
2020-09-30T11:55:49.445Z	INFO	started protocol	{"addr": "172.23.0.2:20334", "userAgent": "/NEO-GO:/", "startHeight": 3, "id": 1557367037}
panic: runtime error: integer divide by zero

goroutine 132 [running]:
github.com/nspcc-dev/dbft.(*Context).GetPrimaryIndex(...)
	github.com/nspcc-dev/dbft@v0.0.0-20200925163137-8f3b9ab3b720/context.go:83
github.com/nspcc-dev/dbft.(*Context).reset(0xc0000e0780, 0x0)
	github.com/nspcc-dev/dbft@v0.0.0-20200925163137-8f3b9ab3b720/context.go:208 +0x64b
github.com/nspcc-dev/dbft.(*DBFT).InitializeConsensus(0xc0000e0780, 0x964800)
	github.com/nspcc-dev/dbft@v0.0.0-20200925163137-8f3b9ab3b720/dbft.go:87 +0x51
github.com/nspcc-dev/dbft.(*DBFT).Start(0xc0000e0780)
	github.com/nspcc-dev/dbft@v0.0.0-20200925163137-8f3b9ab3b720/dbft.go:81 +0x4b
github.com/nspcc-dev/neo-go/pkg/consensus.(*service).Start(0xc0001a2160)
	github.com/nspcc-dev/neo-go/pkg/consensus/consensus.go:206 +0x56
github.com/nspcc-dev/neo-go/pkg/network.(*Server).tryStartConsensus(0xc0000ec500)
	github.com/nspcc-dev/neo-go/pkg/network/server.go:311 +0xda
github.com/nspcc-dev/neo-go/pkg/network.(*Server).handleMessage(0xc0000ec500, 0x104d800, 0xc000222090, 0xc0000a6f10, 0x0, 0x0)
	github.com/nspcc-dev/neo-go/pkg/network/server.go:781 +0xa7a
github.com/nspcc-dev/neo-go/pkg/network.(*TCPPeer).handleConn(0xc000222090)
	github.com/nspcc-dev/neo-go/pkg/network/tcp_peer.go:162 +0x2e7
created by github.com/nspcc-dev/neo-go/pkg/network.(*TCPTransport).Dial
	github.com/nspcc-dev/neo-go/pkg/network/tcp_transport.go:40 +0x1ac
```
2020-10-02 17:03:06 +03:00
..
block block: remove Verify() 2020-09-16 12:50:13 +03:00
blockchainer core/rpc: add continue flag to iterating functions 2020-09-21 22:23:34 +03:00
dao state: store the length of NEP5TransferLog in the first byte 2020-09-21 21:51:11 +03:00
interop Merge pull request #1439 from nspcc-dev/core/verify_tx_witnesses_fix 2020-09-29 18:11:39 +03:00
mempool mempool: don't create new big.Int in tryAddSendersFee() if possible 2020-09-10 15:35:19 +03:00
mpt mpt: fix comment typo 2020-09-21 17:54:11 +03:00
native core: add InitializeCache method to NEO native contracts 2020-10-02 17:03:06 +03:00
state core: update claimable GAS calculation 2020-09-23 14:12:42 +03:00
storage storage: add bloom filter to leveldb 2020-09-09 20:46:31 +03:00
test_data block: update binary test data 2020-08-18 14:52:30 +03:00
transaction transaction: rename FeeOnly to None 2020-10-01 15:28:19 +03:00
blockchain.go core: add InitializeCache method to NEO native contracts 2020-10-02 17:03:06 +03:00
blockchain_test.go Merge pull request #1450 from nspcc-dev/fix/witnessscope 2020-10-01 16:46:07 +03:00
doc.go core: add Blockchain event subscription mechanism 2020-05-25 00:27:39 +03:00
gas_price.go *: move syscall handling out of VM 2020-07-29 13:41:08 +03:00
helper_test.go core: take into account size fee during verifyTxWitnesses 2020-09-30 21:40:04 +03:00
interop_neo.go core/interop: add base58 encoding/decoding syscalls 2020-08-23 17:19:56 +03:00
interop_neo_test.go crypto/consensus: sign hashes and cache them for consensus payloads 2020-09-09 20:46:31 +03:00
interop_system.go core: move contractCall* to a separate package 2020-09-25 16:32:10 +03:00
interop_system_test.go core: move contractCall* to a separate package 2020-09-25 16:32:10 +03:00
interops.go core: move contractCall* to a separate package 2020-09-25 16:32:10 +03:00
interops_test.go core: add VM into interop context 2020-08-07 16:15:24 +03:00
native_contract_test.go core: move contractCall* to a separate package 2020-09-25 16:32:10 +03:00
native_neo_test.go Merge pull request #1435 from nspcc-dev/checkwitness-calling-script-hash 2020-09-29 12:49:09 +03:00
native_oracle_test.go interop/runtime: allow calling script hash to pass CheckWitness 2020-09-29 09:56:19 +03:00
native_policy_test.go *: fix ineffassign where the value should really be used 2020-08-14 12:08:57 +03:00
opcode_price.go core: add prices for TRY* opcodes 2020-07-29 13:41:08 +03:00
prometheus.go core: add state height to prometheus metrics 2020-07-30 12:42:15 +03:00
util.go Merge pull request #1450 from nspcc-dev/fix/witnessscope 2020-10-01 16:46:07 +03:00
util_test.go core: remove unnecessary comment 2020-08-04 17:34:06 +03:00