Commit graph

25 commits

Author SHA1 Message Date
Nathaniel
f9fcffbb4d
Safety Check: Part 2 -- Implement and Integrate Checks
Implement a safety check mechanism on object_database, based on the
safety_check_policy abstract interface. Create two standard
implementations of the safety_check_policy interface, one
(null_safety_check) which allows all modifications unconditionally, and
the other (database_lock_safety_check) which allows modifications only
when unlocked.

Integrate these safety checks into chain::database and plugins, so that
the consensus databases are locked at all times except during core
consensus code pathways. Also ensures that databases are re-locked when
calling code outside of consensus pathways from consensus pathways.

To make this work, it was necessary to move two objects from the
consensus object spaces to a new API object space. The
operation_history_object and account_transaction_history_object were
moved to the API object space, as they are not actually used by
consensus and are maintained by a plugin (which can no longer modify the
consensus object spaces, due to the safety checks).

Finally, add a mechanism to application and chain::database, which
allows the chain to start in "unit testing mode" and allows unchecked
actions upon the database within delimited scopes. This was necessary
because many tests edit the database directly to set up the environment
for their respective tests. This mode is activated by database_fixture so
tests can utilize it conveniently, but it is architecturally difficult to
enable this mode in production, i.e. from a plugin.
2022-03-12 14:04:08 -06:00
Nathaniel
f667fda2e4
Merge remote-tracking branch 'origin/beatrice' into to-upstream 2022-01-26 13:16:02 -06:00
serkixenos
f9a40c647e Increase replay's writing to database threshold 2021-12-16 22:27:34 -04:00
Pavel Baykov
3612e1ec23 35 bug fix: when blockchain replay is attempted blocks file increases in size 2021-12-01 21:57:46 +00:00
sierra19XX
b99a19bd72
NFT Lottery (#384) 2021-01-28 20:27:54 +01:00
serkixenos
ee553f3968
Flush chain database during replay (#412) 2021-01-26 21:41:58 +01:00
Nathan Hourt
14f627c014
Ref #1506: Isolate chain/protocol to its own library 2020-08-23 14:37:00 -05:00
gladcow
d99ef0c1f9 fix global objects usage during replay 2019-11-08 15:42:09 +03:00
abitmore
4f54b13074 Added header inclusions in db_management.cpp 2019-11-08 15:42:09 +03:00
abitmore
1939cd127b Added getter for core dynamic data object 2019-11-08 15:42:09 +03:00
abitmore
dcc6902720 Added getter for witness schedule object 2019-11-08 15:42:09 +03:00
abitmore
04102d549c Change static refs to member pointers of db class 2019-11-08 15:39:16 +03:00
Alfredo Garcia
d911b3db69
Merge branch 'develop' into GRPH-75 2019-09-17 15:53:18 -03:00
John Jones
b3c64c83b2 prevent segfault when destructing application obj 2019-09-12 14:59:18 +03:00
cifer
0bcf6d4d65 Fix #436 object_database created outside of witness data directory 2019-09-12 14:59:18 +03:00
gladcow
7b259ba2d3 exclude second undo_db.enable() call in some cases 2019-09-03 08:07:46 +03:00
Peter Conrad
b45a6ca147 Prevent unsigned integer underflow 2019-09-02 17:19:21 +03:00
Peter Conrad
3bee3f29a2 Log starting block number of replay 2019-09-02 17:19:21 +03:00
Peter Conrad
a0052d4bd3 Enable undo + fork database for final blocks in a replay
Dont remove blocks from block db when popping blocks, handle edge case in replay wrt fork_db, adapted unit tests
2019-09-02 17:19:21 +03:00
Peter Conrad
17417037c6 Moved reindex logic into database / chain_database, make use of additional blocks in block_database
Fixed tests wrt db.open
2019-09-02 17:19:21 +03:00
Prabhjot Singh
aa3128fe89 Merged beatrice into 5050 2019-07-30 11:43:31 -04:00
kstdl
8cb335a515 fixed indices sorting and lottery end checking by date 2018-01-10 12:06:34 +03:00
kstdl
fdd77ef5af minor logic changes. added db_api and cli_wallet methods 2017-12-11 17:42:55 +03:00
kstdl
930ddb06c1 lottery end implemented 2017-12-06 10:40:52 +03:00
kstdl
342e6db610 inital 2017-05-25 12:13:59 +03:00