Commit Graph

218 Commits

Author SHA1 Message Date
Sergi Delgado Segura
6884db9f58 Updates logger codebase-wise to match the Logger updates
Logger instances now specify the logger prefix so the logger can be properly loaded, fixing the issues with the cli file logger
2020-01-23 18:16:25 +01:00
Sergi Delgado Segura
418b7b49ab Creates main function and updates config to add data folder
pisad can now be run easier from other files (simplifies e2e testing)
2020-01-23 16:27:18 +01:00
Sergi Delgado Segura
245d5b49f3 Updates config files
Removes unused values from pisa config file and adds cli config file
2020-01-23 16:23:07 +01:00
Sergi Delgado Segura
03f0a270d8 Modifies when the flag is cleared
Now the only time a triggered flag has to be cleared is when a tracker is removed, otherwise the flag is never created.
2020-01-22 16:24:32 +01:00
Sergi Delgado Segura
272e61922d Move triggered flag clearing to the Watcher when a triggered appointment cannot make it to the mempool
When an appointment was triggered a flag was set in the Watcher, and removed later on in the Responder if the transaction ended up being rejected. That's pretty annoying. Since we have information about whether a transaction has made it to the mempool or not via the Carrier's receipt, this can be all done in the Watcher, which makes more sense and reduces the interaction with the db (1 write if succeeds, 0 otherwise instead of 1 write if succeeds, 2 otherwise).
2020-01-22 16:20:08 +01:00
Sergi Delgado Segura
fd6c85ced2 Moves logs to be consistent with the rest of db logs. Adds missing docs and adds an exception if the db is alredy being used 2020-01-22 15:21:55 +01:00
Sergi Delgado Segura
74a9dad071 Updates Watcher to use new Cleaner functions and reformats filter_valid_breaches to return a list of valid and invalid breaches. 2020-01-21 19:11:15 +01:00
Sergi Delgado Segura
33f2ab35d8 Updates responder to use new Cleaner functions 2020-01-21 19:11:02 +01:00
Sergi Delgado Segura
a95e301713 Renames some DBManager methods and adds new functionality
- Refactors store_update_locator_map name to create_append_locator_map, which is a better fit.
- Adds update_locator_map method to update maps by removing some uuids (store_update_locator_map was not covering this, what was misleading).
- Adds missing docs.
2020-01-21 19:09:39 +01:00
Sergi Delgado Segura
5ead43163c Refactors Cleaner to improve its modularity and fixes some small bugs
- Improves code modularity.
- Separates flag_triggered from delete_appointment, which was pretty misleading (and causing some minor bugs) and make them work with lists intead of single objects.
- Removes unused import
2020-01-21 19:06:51 +01:00
Sergi Delgado Segura
0f887feb4d Deletes appointment from Watcher's db if a tracker cannot be added
There was a bug in the Responder where, if a tracker could not be added (e.g. malformed tx) the data was dropped but never removed from the Watcher's db. This is due to flagging appointments as triggered instead of deleting them from the Watcher's db straight away (in order to deal with reorgs in the future).

If that approach is not followed, and appointments are removed from the Watcher's db once they are passed to the Responder, this should be removed since it would be redundant.
2020-01-17 17:47:45 +01:00
Sergi Delgado Segura
dad70eb780 Moves update_delete_locator_map functionality to its own method. 2020-01-17 17:47:05 +01:00
Sergi Delgado Segura
07c9b7d19e Updates error message for RPC_VERIFY_REJECTED rpc error. 2020-01-17 17:46:14 +01:00
Sergi Delgado Segura
b32a867283 Moves db_manager instantiation before checking the connection with bitcoin
As it was until now, if the connection with bitcoind failed, the  command would have also failed, since the db_manager was not yet defined.
2020-01-17 15:32:30 +01:00
Sergi Delgado Segura
90e1245a84 Fixes some bugs based on E2E testing 2020-01-16 17:08:44 +01:00
Sergi Delgado Segura
3dc1fbcb86 Specifies minimum version for bitcoind_mock 2020-01-15 16:34:17 +01:00
Sergi Delgado Segura
0ddace6256 Updates requirements and adds dev requirements 2020-01-15 15:48:30 +01:00
Sergi Delgado Segura
a49f86dd88 Merge branch 'master' into 64-data-to-disk 2020-01-15 12:44:29 +01:00
Sergi Delgado Segura
42a957f555 Merge branch 'master' into chainmonitor 2020-01-15 11:38:32 +01:00
Sergi Delgado Segura
6bf2cb5379 Merge branch 'master' into isolate-config 2020-01-15 10:15:48 +01:00
Turtle
40d7ca1912 Refactor add_appointment cli code 2020-01-15 03:35:31 -05:00
Turtle
1188ddda17 Add load_config function 2020-01-15 03:10:21 -05:00
Sergi Delgado Segura
eb71ab8fc4 Adds missing args on docs and adds polling_delta parm to monitor_chain 2020-01-13 15:42:27 +01:00
Sergi Delgado Segura
1a26d7d6a3 Fixes typos based on @orbitalturtle comments 2020-01-13 15:31:54 +01:00
Turtle
c22bf220f0 Move config options used by inspector to the constructor 2020-01-13 02:23:07 -05:00
Turtle
7aa74d5953 Move config options used by watcher and responder to the constructor 2020-01-13 02:23:02 -05:00
Sergi Delgado Segura
5196f5df29 Removes most appointment data from memory
Data used to be stored both in memory and disk (db). This commits modifies the Watcher, Responder and Cleaner so they only keep the needed maps and load information from disk when necessary.
2020-01-09 18:18:26 +01:00
Sergi Delgado Segura
d9cccfb26a Refactors the API to used the new triggered functions 2020-01-09 18:15:43 +01:00
Sergi Delgado Segura
f6af67be87 Refactors db_manager to have a new entry type for the triggered appointmnets. Adds methods to create, load a and remove this new entries 2020-01-09 18:14:19 +01:00
Sergi Delgado Segura
dfc90cd930 Sets ChainMonitor terminate on shutdown and removes unused imports 2020-01-07 16:31:17 +01:00
Sergi Delgado Segura
31b4c2e993 Bug fix and moves update condition to update_state
The tip update was performed in the wrong order, so tips never made it to last_tips
2020-01-07 16:08:43 +01:00
Sergi Delgado Segura
9bb69d1f5a Uses conf parameters instead of hardcoded values for the ChainMonitor and includes docstrings 2020-01-06 13:33:17 +01:00
Sergi Delgado Segura
b2272aa4ea Adds ChainMonitor config parameters 2020-01-06 13:32:25 +01:00
Sergi Delgado Segura
e5514cefce Updates old docs/comments regarding zmq 2020-01-06 12:27:02 +01:00
Sergi Delgado Segura
3889d30e31 Minor refactor
Runs chain_monitor as daemon so it terminates along with the main thread. Reorders attack_responder so it is in the same stanza as attack_watcher
2020-01-03 13:35:52 +01:00
Sergi Delgado Segura
c594018dce Bug fix: Properly initializes Responder 2020-01-03 11:37:26 +01:00
Sergi Delgado Segura
8fab59975f Adds basic ChainMonitor to the system
ChainMonitor is the actor in charge of checking new blocks. It improves from the previous zmq_subscriber by also doing polling and, therefore, making sure that no blocks are missed.

Documentation and tests are still required. Partially covers #31
2020-01-02 16:15:27 +01:00
Sergi Delgado Segura
747f4bb888 Simplifies get_missed_blocks
get_missed_blocks is always called after calling find_last_common_ancestor, so the later was called twice returning the same value as the input. It does not seem to be any reason for it atm.
2020-01-02 12:05:07 +01:00
Sergi Delgado Segura
3ff10ea1bf Makes all BLockProcessor methods static 2020-01-02 11:21:01 +01:00
Sergi Delgado Segura
5ce5936fc0 Fixes bootstrap from backed up data 2019-12-27 12:22:07 +01:00
Sergi Delgado Segura
ea681850a8 Adds some ChainMaester functionallity to the BlockProcessor
The ChainMaester functionallity has been split into the new bitcoind mock and the blockprocessor (there's ChainMaester no more 😢)
2019-12-23 06:45:24 +01:00
Sergi Delgado Segura
531523c534 Refactors the API to run using dispatch instead of decorate
The API was never made an object since I couldn't find a way or working around the Flask decorators.

By using dispatch we can get around the issues in #14 and will be able to create better mocks for the API
2019-12-17 17:04:57 +01:00
Sergi Delgado Segura
5c585a7a02 Refactors code to use appointment from common based on f4a1e34e2f4d75226c7e313b83ff5ae06c8c89ca 2019-12-17 16:22:23 +01:00
Sergi Delgado Segura
a69f1ba28b Moves appointment to common and creates serialize
Appointment serialization used to be part of the cryptographer (signature_format) but it makes more sense to be an appointment method. Therefore cli also need Appointment

Also fixes comments based on reviews
2019-12-17 16:21:54 +01:00
Sergi Delgado Segura
46a7fa824f Removes unnecessary encoding when unhexlifying
binascii.unhexlify(x) is equal to binascii.unhexlify(x.encode())
2019-12-17 11:35:28 +01:00
Sergi Delgado Segura
1184b4648a Fixes logs and removes redundant tailing dots 2019-12-16 19:45:30 +01:00
Sergi Delgado Segura
a9df67d787 Properly fromats console logs 2019-12-16 19:44:50 +01:00
Sergi Delgado Segura
77b191dde2 Moves Logger to common 2019-12-16 14:15:30 +01:00
Sergi Delgado Segura
bc250bd814 Gives some default values to sample_conf 2019-12-16 11:06:11 +01:00
Sergi Delgado Segura
0574898bae Adds circule-ci config + updates requirements 2019-12-16 10:57:16 +01:00