Commit Graph

931 Commits

Author SHA1 Message Date
TomZ 89eee0d333 Fix semi-mem-leak in the UTXO DB
we only save a subsection of stuff in memory on each round of saving,
but I set the counter to zero on how long to wait for the next save.
This makes us save more often till we actually saved most stuff, avoiding
buildups of caches until we do the periodic big flush.
2018-11-11 16:47:45 +01:00
TomZ cff66cc6cc Rename variable for readability 2018-11-08 18:27:09 +01:00
TomZ 2ef243a43a Add more basic support for the novHF
this adds sigop counting for the new opcodes and
flags enabling based on block-height.
2018-11-08 17:37:22 +01:00
TomZ 695044ffc0 Import new OP_CHECKDATASIG/VERIFY 2018-11-08 10:48:53 +01:00
TomZ b8a6c54a51 Make block-height hard fork detection easy 2018-11-03 19:31:22 +01:00
TomZ 7b76d177e8 Remove chain obfuscation misfeature. 2018-11-02 20:42:45 +01:00
TomZ 1bf8574ad5 Add seeder 2018-10-30 20:57:57 +01:00
TomZ d63b2fd955 Make versioning more modern 2018-10-30 11:21:43 +01:00
TomZ d8dfec2c26 Make test a bit more stable 2018-10-22 13:08:35 +02:00
TomZ e50384f421 Make invalidateblock work a bit better 2018-10-22 00:08:11 +02:00
TomZ 030ee2c99b fix concurrent access 2018-10-21 20:57:09 +02:00
TomZ 90f635e8ec Add a test for a cornercase of appendHeader and fix it. 2018-10-21 20:38:34 +02:00
TomZ fdd693541e Make the UTXO have some limits "configurable"
This change makes the limits be static variables, which means they are
only settable once for a process. The only usecase so far is to use much
smaller limits in testing situations.
2018-10-21 13:21:24 +02:00
TomZ d8adc57786 Make pruning atomic swap the old for the new DB
This allows queries like RPC and mempool-accept to continue
even during a prune (we just use the 'old' DB) and when its
done the last active query will delete the old DB.

This assumes a sane filesystem where you can rename a file that
is in use.
2018-10-21 10:52:40 +02:00
TomZ d616c70678 Fix possible memleak 2018-10-13 21:33:31 +02:00
TomZ 82d2651d4f Fix copy/paste error and add some more sanity checks
Also fix insert() usage in unit test to not hit that new assert
2018-10-13 21:33:17 +02:00
TomZ 669338402c Don't let exceptions change behaviour 2018-10-13 20:50:45 +02:00
TomZ 76383d6961 Reject due to double spend 2018-10-13 00:19:12 +02:00
TomZ d17e297e0a fix misdiagnosed error RPC message 2018-10-12 23:55:49 +02:00
TomZ 66efccc81b Better logging 2018-10-12 23:13:42 +02:00
TomZ 492e1ded3d upgrade some of the most printed wallet debug lines 2018-10-11 21:45:40 +02:00
TomZ 5e91b276d3 Fix off-by one that made unit tests fail on 1-core dockers. 2018-10-11 21:45:40 +02:00
TomZ 9ccb1c1463 Cleanups and fixes 2018-10-11 19:50:09 +02:00
TomZ e033eb6e85 Use scoped var instead of global 2018-10-11 16:26:55 +02:00
TomZ 627a0758a4 fix reindex-required detection 2018-10-11 16:26:47 +02:00
TomZ 1b8c1a586f Allow API server to be disabled via option 2018-10-11 16:26:36 +02:00
TomZ 3fbc2e89f1 Speed up UTXO, replace mutex with lock-free list 2018-10-08 22:30:21 +02:00
TomZ 72edc63afb Fixes in comments 2018-10-08 22:30:21 +02:00
TomZ be1c403586 port unit test and add benchmark 2018-10-08 22:30:21 +02:00
TomZ a2928b91eb Simplify
On all mature operating systems and filesystems creation of a 1GB file
will not actually use that data, only when we start using blocks does
the disk space get used.
As such this is a premature optimization that Core added and I ported to
Flowee which this commit removes.

Additionally, increase the block file size to 1GiB
2018-10-05 20:49:44 +02:00
TomZ 7511b0e47f Have an upper limit for the amount of files we keep open 2018-10-05 20:27:42 +02:00
TomZ f94dc926db Logging updates
Add informational log at startup about header-height
2018-09-25 18:24:49 +02:00
TomZ a22cae12ae Make having open mapped files more smart.
Instead of having a magic 10 open files, we now have a scheduled
run that closes all mapped files 30 seconds after last usage.
This allows many files to be opened with extremely low overhead and
cost (they are not actually loaded until needed, and even then only
per 4K page).
2018-09-25 18:22:57 +02:00
TomZ 0fe7749733 Make finding config file more sane
We inherited the design from Core that you can put in your config
file which chain you will follow (testnet, regtest).
This has the effect that you can't have different config files for
different chains and that we always read the fallback location for
all chains. Especially the last one is just harmful.

So, regtest/testnet can only be selected from commandline.
If you choose one of those, it will look for a flowee.conf in the
related subdir (flowee/regtest/flowee.conf for instance) and NOT
for the global one. The global one is only ever read for mainnet.
2018-09-25 18:22:57 +02:00
TomZ 0627585647 Fix debug level 2018-09-25 00:07:00 +02:00
TomZ 9fc1ef6705 Fix clang warnings 2018-09-25 00:07:00 +02:00
TomZ 9aec9e5eeb Merge branch 'master' into UnspentOutputDB 2018-09-24 21:25:34 +02:00
TomZ e1c9da3c86 Update benchmark data collection for UTXO 2018-09-24 21:24:40 +02:00
TomZ a28ffd18bb Write less txid's to the DB file and write shorter ones.
When pruning we sort leafs by txid / output and refrain from
writing the txid repeatedly for outputs of the same tx.
Additionally, use the fact that we only ever get to a leaf via
a bucket and since the first 64 bits of a txid is there, skip
repeating them when writing to disk.
Last, make pruning have different strategies.

This should shrink the utxo by about 40%
2018-09-24 21:24:28 +02:00
TomZ 1e9d9b3ea2 Fix system call, its in bytes not in ints 2018-09-24 21:23:27 +02:00
TomZ 343b0345eb Remove dead code 2018-09-24 21:23:27 +02:00
TomZ 39154aa625 Make startup/shutdown a bit more logical
Actually delete the asio io_service when we are done with it since that
will delete any left over tasks in the queue.
This makes deletion order more predictable.
2018-09-24 21:23:27 +02:00
TomZ 571d84ae0e Remove dead code. 2018-09-24 21:23:27 +02:00
TomZ c6acb41cc1 Fix validation engine sometimes hanging on shutdown. 2018-09-24 21:23:27 +02:00
TomZ 4d2f5130d4 Minor logging fix
show users that have configured the block size too low that this why
they get no new data.
2018-09-24 21:23:27 +02:00
TomZ 371ac9849c Fix case where reindex thought it was done
After we extract all block-headers from the files and we then shut down
the node this makes sure that we avoid thinking we finished because
there are no more jobs.
This so that a restarting node has the opportunity to continue indexing.
2018-09-24 21:23:27 +02:00
TomZ 16be66df67 Make logging a bit better (block validation)
when far behind don't print every single new block / header found,
only print every 1000th or so.
2018-09-24 21:23:27 +02:00
TomZ e7e4a43084 Make UTXO auto-prune 2018-09-20 22:03:44 +02:00
TomZ 02a7c1d2f6 Refactor pruner to lib from DBA tools 2018-09-20 22:03:44 +02:00
TomZ 13c2a64f56 Identify another usecase of utxo rollback and fix
Including unit test
2018-09-20 21:55:07 +02:00