neoneo-go/pkg/core
Roman Khimov 70aed34d77 interop/contract: fix state rollbacks for nested contexts
Our wrapping optimization relied on the caller context having a TRY block,
but each context (including internal calls!) has an exception handling stack
of its own, which means that for an invocation stack of

    entry
    A.someMethodFromEntry()   # this one has a TRY
    A.internalMethodViaCALL() # this one doesn't
    B.someMethod()

we get `HasTryBlock() == false` for `A.internalMethodViaCALL()` context, which
leads to missing wrapper and missing rollbacks if B is to THROW. What this
patch does instead is it checks for any context within contract boundaries.

Fixes #3045.

Signed-off-by: Roman Khimov <roman@nspcc.ru>
2023-06-29 11:58:12 +03:00
..
block block: JSONize tx-less block as [] instead of null 2022-07-21 13:15:31 +03:00
chaindump config: add a special Blockchain type to configure Blockchain 2022-12-07 17:35:53 +03:00
dao core: store magic in the DB version, fix #2847 2023-01-11 12:05:05 +03:00
fee vm: add PUSHT and PUSHF opcodes 2022-12-02 10:02:33 +03:00
interop interop/contract: fix state rollbacks for nested contexts 2023-06-29 11:58:12 +03:00
mempool *: adjust subscription-related doc 2023-01-17 17:11:19 +03:00
mempoolevent [#2442] English Check 2022-05-04 19:48:27 +03:00
mpt golangci: enable/fix misspell 2022-09-02 18:36:26 +03:00
native native: simplify code somewhat, get Metadata() only once 2022-12-16 23:48:04 +03:00
state Merge pull request #2872 from nspcc-dev/fix-missing-exception-in-applog 2023-01-12 12:49:00 +07:00
stateroot stateroot: fix spelling and enhance FindStates doc, fix #2925 2023-03-15 22:55:19 +03:00
statesync config: replace VerifyBlocks with SkipBlockVerification 2022-12-07 17:35:56 +03:00
storage *: add nolint comments to multiple errors wrapping 2023-03-15 16:38:01 +03:00
test_data core: refactor helper test contracts generation 2022-03-30 11:46:29 +03:00
transaction *: fix Neo and NeoGo misuses 2022-12-07 17:29:09 +03:00
basic_chain_test.go config: add a special Blockchain type to configure Blockchain 2022-12-07 17:35:53 +03:00
bench_test.go core: make GetHeaderHash accept uint32 2022-11-25 14:30:51 +03:00
blockchain.go *: add nolint comments to multiple errors wrapping 2023-03-15 16:38:01 +03:00
blockchain_core_test.go config: add a special Blockchain type to configure Blockchain 2022-12-07 17:35:53 +03:00
blockchain_neotest_test.go core: store magic in the DB version, fix #2847 2023-01-11 12:05:05 +03:00
doc.go *: apply go 1.19 formatter heuristics 2022-08-09 15:37:52 +03:00
headerhashes.go core: don't always store all hashes in memory 2022-11-25 14:30:51 +03:00
helper_test.go config: add a special Blockchain type to configure Blockchain 2022-12-07 17:35:53 +03:00
interops.go runtime: implement System.Runtime.LoadScript, fix #2701 2022-11-25 15:11:49 +03:00
native_designate_test.go core: add some comment for TestDesignate_DesignateAsRole 2022-06-08 23:11:14 +03:00
prometheus.go core: make GetHeaderHash accept uint32 2022-11-25 14:30:51 +03:00
util.go core: simplify header hash list restoration logic 2022-11-25 13:08:03 +03:00
util_test.go core: export CreateGenesisBlock 2022-06-08 18:20:34 +03:00