native: fix native deploy process
It doesn't work for contracts enabled starting from non-nil hardfork: ``` --- FAIL: TestStateroot_GetLatestStateHeight (0.00s) logger.go:146: 2024-06-04T17:08:35.263+0300 INFO initial gas supply is not set or wrong, setting default value {"InitialGASSupply": "52000000"} logger.go:146: 2024-06-04T17:08:35.263+0300 INFO mempool size is not set or wrong, setting default value {"MemPoolSize": 50000} logger.go:146: 2024-06-04T17:08:35.263+0300 INFO P2PNotaryRequestPayloadPool size is not set or wrong, setting default value {"P2PNotaryRequestPayloadPoolSize": 1000} logger.go:146: 2024-06-04T17:08:35.263+0300 INFO MaxBlockSize is not set or wrong, setting default value {"MaxBlockSize": 262144} logger.go:146: 2024-06-04T17:08:35.263+0300 INFO MaxBlockSystemFee is not set or wrong, setting default value {"MaxBlockSystemFee": 900000000000} logger.go:146: 2024-06-04T17:08:35.263+0300 INFO MaxTransactionsPerBlock is not set or wrong, using default value {"MaxTransactionsPerBlock": 512} logger.go:146: 2024-06-04T17:08:35.263+0300 INFO MaxValidUntilBlockIncrement is not set or wrong, using default value {"MaxValidUntilBlockIncrement": 86400} logger.go:146: 2024-06-04T17:08:35.263+0300 INFO Hardforks are not set, using default value logger.go:146: 2024-06-04T17:08:35.266+0300 INFO no storage version found! creating genesis block chain.go:227: Error Trace: /home/anna/Documents/GitProjects/nspcc-dev/neo-go/pkg/neotest/chain/chain.go:227 /home/anna/Documents/GitProjects/nspcc-dev/neo-go/pkg/neotest/chain/chain.go:217 /home/anna/Documents/GitProjects/nspcc-dev/neo-go/pkg/services/stateroot/service_test.go:319 Error: Received unexpected error: onPersist failed: VM has failed: at instruction 0 (SYSCALL): native contract descriptor cache is not initialized: contract c1e14f19c3e60d0b9244d06dd7ba9b113135ec3b, hardfork Default Test: TestStateroot_GetLatestStateHeight FAIL coverage: 28.6% of statements ``` It happens because ActiveIn hardfork wasn't taken into account during `latestHF` computation. This commit also removes the reusage of `activeIn` variable in deploy procedure, it's misleading and not necessary startign from #3444. Signed-off-by: Anna Shaleva <shaleva.ann@nspcc.ru>
This commit is contained in:
parent
261816d7a5
commit
1720222a32
1 changed files with 4 additions and 2 deletions
|
@ -610,8 +610,6 @@ func (m *Management) OnPersist(ic *interop.Context) error {
|
|||
for _, hf := range config.Hardforks {
|
||||
if _, ok := activeHFs[hf]; ok && ic.IsHardforkActivation(hf) {
|
||||
isUpdate = true
|
||||
activation := hf // avoid loop variable pointer exporting.
|
||||
activeIn = &activation // reuse ActiveIn variable for the initialization hardfork.
|
||||
// Break immediately since native Initialize should be called starting from the first hardfork in a raw
|
||||
// (if there are multiple hardforks with the same enabling height).
|
||||
break
|
||||
|
@ -626,6 +624,10 @@ func (m *Management) OnPersist(ic *interop.Context) error {
|
|||
currentActiveHFs = append(currentActiveHFs, hf)
|
||||
}
|
||||
}
|
||||
// activeIn is not included into the activeHFs list.
|
||||
if activeIn != nil && activeIn.Cmp(latestHF) > 0 {
|
||||
latestHF = *activeIn
|
||||
}
|
||||
if !(isDeploy || isUpdate) {
|
||||
continue
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue