Commit Graph

369 Commits

Author SHA1 Message Date
Antioch Peverell 7b07fe99a7 bump 0.4.1 -> 0.4.2 so we can watch the HF (#2057) 2018-11-30 11:20:12 +00:00
Antioch Peverell f05d3dd920 decouple outputs from output MMR (#2044) 2018-11-29 10:17:44 +00:00
Antioch Peverell 8e62130a7a decouple kernels from the kernel MMR (#2043) 2018-11-29 10:01:59 +00:00
Antioch Peverell 8e3a3e1a40 Replace "header by height" index with reads into the header MMR (#2030)
* replace header_by_height index with reads into the header MMR

* rustfmt

* cleanup

* cleanup chain tests

* fix locate_headers to stop on our max header

* fix the deadlock in comact_blocks_db...

* cleanup and docs/comments
2018-11-29 09:26:24 +00:00
Ignotus Peverell 28e0d97e64 Cuckatoo size shift upgrade schedule (#2024)
* Cuckatoo size shift upgrade schedule
* Move the schedule into graph_weight instead of messing with min edge bits
* Cleanup and fixes now that we have an agreed upon schedule
2018-11-28 14:05:55 -08:00
Antioch Peverell 60cbcbd96b Get rid of block hashes cache (#2018)
check_known_head and check_known_orphans catches majority of cases
2018-11-28 09:48:50 -08:00
Antioch Peverell 79d540cf86 Header MMR Refactor (#2028)
* refactor header MMR to use regular backend
this lets us store header hashes in the mmr data file
the hashes in the hash file are "hash with index"

* rustfmt

* get_header_hash(pos) on header extension

* rustfmt

* cleanup

* cleanup

* comments

* cleanup

* fixup testelem so tests work
2018-11-27 12:32:39 +00:00
Antioch Peverell 1ea82d9abe Refactor is_orphan and is_fork during block processing (#2015)
* refactor check_prev logic in process_block

* rustfmt
2018-11-25 10:22:19 +00:00
Ignotus Peverell c5b9d867ae Cuckaroo Testnet4 hard fork (#1997)
* PoW context is now properly picked depending on the chain type,
edge bits and block height. Height const for T4 hard fork leaving
a couple weeks to have miners in place. Removed now unused Cuckoo context.
* Simplified block siphash
* Fix servers crate compilation
* Tiny bit cleaner block siphash. Maybe.
* Cuckatoo min edge bits update for T4 and mainnet
* Fix header size tests, Cuckatoo31 default means one more bit per edge
* Remove redundant param from verify_size
2018-11-24 12:33:17 -08:00
Antioch Peverell c299f709e0 Remove header cache (remove need to invalidate the cache for orphans) (#2009)
* wip

* remove "header cache" from our store
we have cache invalidation issues...
2018-11-23 15:49:23 +00:00
Antioch Peverell 66f2545186 Block accepted reorg aware (#2003)
* block_accepted via adapter is now reorg aware
we skip reconciling the txpool is block is not most work
we skip reconciling the reorg_cache is not a reorg

* rustfmt

* logging tweaks

* rework block_accepted interface

* rustfmt

* rework reorg determination

* introduce BlockStatus to represent next vs reorg vs fork

* rustfmt

* cleanup logging

* log from adapter, even during sync
2018-11-21 14:35:38 +00:00
hashmap a011450825 Remove unsafe from chain (#1990)
Now roaring bitmap implements Sync and Send, we don't need to implement
it manually for Chain
2018-11-15 23:27:42 +01:00
Antioch Peverell 207621b545 Tx kernel entry (#1957)
* Wrap tx kernels in tx kernel entries when storing them in the MMR.
Decouples the storage impl of kernels.

* rustfmt
2018-11-11 16:03:03 +01:00
Gary Yu 9af9ca9518 refactor the state_sync to handle the long fork (#1902)
* split horizon into two explicit values for cut through and txhashset request

* let node which has 2-7 days of history be able to handle forks larger than 2 days

* add test simulate_long_fork

* add pause/resume feature on p2p for tests

* refactor the state_sync

* ignore the test case simulate_long_fork for normal Travis-CI

* refactor function check_txhashset_needed to be shared with body_sync

* fix: state TxHashsetDone should allow header sync
2018-11-10 11:27:52 +08:00
Antioch Peverell 39ebb33ba1 bump 0.4.0 -> 0.4.1 (tx kernel broadcast support) (#1950) 2018-11-09 14:57:25 +00:00
Antioch Peverell 26d449a08b only rewind and reapply on header extension if necessary (#1930)
* only rewind and reapply on header extension if necessary

* use head of full block chain
2018-11-05 19:59:39 +00:00
Gary Yu 1b264d3554 protection of parallel requests of TxHashSetRequest (#1923)
* protection of parallel requests of TxHashSetRequest

* fix: adapt the test of test_unexpected_zip
2018-11-05 22:56:45 +08:00
Antioch Peverell d3a8613e43 use hash_file abstraction for pmmr backend (#1925)
* use HashFile (wraps an AppendOnlyFile) in the PMMR backend

* rustfmt

* cleanup

* rustfmt
2018-11-05 12:01:24 +00:00
Antioch Peverell d23dec73d0 PMMRable cleanup (#1910)
* cleanup pmmrable and len()
introduce FixedLength trait with a const LEN
make Hash impl FixedLength for consistency

* rustfmt

* store tests cleanup

* rustfmt

* whats going on with those comments and rustfmt?
2018-11-01 20:14:46 +00:00
hashmap 368e1a461e Tiny store crate cleanup (#1899) 2018-11-01 12:34:47 +01:00
Antioch Peverell 12be191ecd validate root of header MMR when processing headers (during sync and full blocks) (#1836)
validate root of header MMR when processing headers (during sync and full blocks) (#1836)
2018-11-01 09:51:32 +00:00
Antioch Peverell d51522a9cd Genesis is height 0 (not height 1) (#1896) 2018-10-31 13:24:21 -07:00
Antioch Peverell bc0128ab88 be careful resetting sync_head (#1885)
* be careful resetting sync_head
make sure we have the header corresponding to header_head
and that nothing is corrupted from an earlier shutdown

* add logging when resetting heads due to missing header
2018-10-31 10:29:23 +00:00
Ignotus Peverell 46051ee174 improve minimum difficulty handling (#1791)
* rename MIN_DIFFICULTY to UNIT_DIFFICULTY; define Difficulty::unit, fix INITIAL_DIFFICULTY
* improve minimum difficulty handling
* replace all Difficulty::one by ::min
* revert secondary scaling default in HeaderInfo; rename scaling_difficulty; refactor difficulty_data_to_vector
2018-10-27 10:37:44 -07:00
Ignotus Peverell 1121a38bd5 Logger fix 2018-10-26 15:35:21 -07:00
Ignotus Peverell c083312ad4 Improve crate descriptors to be more cargo-friendly (#1844)
* Update secp dependency to use crates.io version
* Add more details to various Cargo.toml
* Remove use of env variables that aren't reliably provided by cargo
2018-10-25 17:44:50 -07:00
Ignotus Peverell a42d66efff Merge branch 'master' into unitdiff 2018-10-25 14:20:41 -07:00
hashmap 3efa7bdac9 Small style changes in core crate (#1816) 2018-10-23 21:09:16 +02:00
Antioch Peverell a433725b5d Actually cleanup old blocks if archive_mode=false (#1814)
* actually cleanup old blocks if not in archive mode

* rustfmt
2018-10-23 13:59:43 +01:00
Antioch Peverell 38cbd6eafb full node == fast sync (no full archival guarantees) (#1809)
* wip - fast sync only

* wip

* cleanup

* cleanup

* cleanup comments in default config file around capabilities

* fixup p2p tests
2018-10-23 13:01:19 +01:00
eupn 1195071f5b Replace logging backend to log4rs and add log rotation (#1789)
* Replace logging backend to flexi-logger and add log rotation
* Changed flexi_logger to log4rs
* Disable logging level filtering in Root logger
* Support different logging levels for file and stdout
* Don't log messages from modules other than Grin-related
* Fix formatting
* Place backed up compressed log copies into log file directory
* Increase default log file size to 16 MiB
* Add comment to config file on log_max_size option
2018-10-21 13:30:56 -07:00
Gary Yu 0d06561a91 replace stdlib RwLock and Mutex with parking_lot (#1793)
* replace all stdlib RwLock with parking_lot RwLock

* replace stdlib Mutex with parking_lot Mutex

* rustfmt
2018-10-20 08:13:07 +08:00
John Tromp e1b5d7f3c2 revert secondary scaling default in HeaderInfo; rename scaling_difficulty; refactor difficulty_data_to_vector 2018-10-19 21:39:54 +02:00
John Tromp 846b38308c replace all Difficulty::one by ::min 2018-10-18 21:18:16 +02:00
John Tromp 41293e9ef7 improve minimum difficulty handling 2018-10-18 20:37:33 +02:00
yeastplume 6980278b95 merge T4 into master - rustfmt 2018-10-18 11:23:22 +01:00
yeastplume f94ede9af3 merge T4 into master 2018-10-18 11:23:04 +01:00
Antioch Peverell fbf955dd11 Commit to prev_root in block headers (#1764)
* commit to prev_root in block headers

* prev_root ready to go, mergeable onto testnet4
2018-10-17 10:06:38 +01:00
John Tromp 8540e4f723 [T4] tweaks and fixes (#1766)
* refactor consensus.rs, tweaking some values
* move scale() there
* fix set_header_nonce bug
* remove maturity soft-fork code
* increase diff target precision
* fix weight comments and try resolve PR conflict
2018-10-16 16:14:22 -07:00
Quentin Le Sceller 701f0b9b60 Remove unecessary check in pipe.rs (#1763) 2018-10-16 12:04:00 -07:00
John Tromp 34646ddf51 [T4] Rename all shiftsize / cuckoo_size to edge_bits and change value for T4 (#1752)
* replace all size_shift / cuckoo_size by edge_bits and change some constants for T4
* replace remaining occurrences of sizeshift
2018-10-15 16:14:23 -07:00
Ignotus Peverell 3c6b5a0a9c Fix chain tests missing difficulty scaling 2018-10-15 22:24:13 +00:00
Antioch Peverell 86c1d7683b The Header MMR (One MMR To Rule Them All) (#1716) (#1747)
* header MMR in use within txhashset itself
works with fast sync
not yet in place for initial header sync

* add the (currently unused) sync_head mmr

* use sync MMR during fast sync
rebuild header MMR after we validate full txhashset after download

* support missing header MMR (rebuild as necessary) for legacy nodes

* rename to HashOnly

* cleanup backend.append()

* simplify vec_backend to match simpler append api
2018-10-15 19:24:01 +01:00
Antioch Peverell 8b7a20f8b0 The Header MMR (One MMR To Rule Them All) (#1716)
* header MMR in use within txhashset itself
works with fast sync
not yet in place for initial header sync

* add the (currently unused) sync_head mmr

* use sync MMR during fast sync
rebuild header MMR after we validate full txhashset after download

* support missing header MMR (rebuild as necessary) for legacy nodes

* rustfmt

* comments/docs

* rustfmt

* cleanup DBBackend

* cleanup DBBackend

* cleanup

* rename to HashOnly

* rustfmt

* cleanup backend.append()

* simply pmmr append api
no need to pass position when appending

* cleanup

* simplify vec_backend to match simpler append api

* rustfmt

* docs/comments

* rustfmt

* cleanup
2018-10-15 17:16:34 +01:00
yeastplume 9423865f92 update cargo versioning 2018-10-15 10:34:33 +00:00
Ignotus Peverell 43f4f92730 [T4] Secondary proof of work difficulty adjustments (#1709)
* First pass at secondary proof of work difficulty adjustments
* Core and chain test fixes
* Next difficulty calc now needs a height. Scaling calculation fixes. Setting scaling on mined block.
* Change factor to u32 instead of u64.
* Cleanup structs used by next_difficulty
* Fix header size calc with u32 scaling
2018-10-13 13:57:01 -07:00
Antioch Peverell 4dff68ab61 Remove kernel sum header (#1723)
We maintain this locally in block_sums in the db (sums can be rebuilt from local data)
2018-10-12 18:15:29 -07:00
Ignotus Peverell 805cc24e73 Removed kernel sum from header. Fixes #1568 2018-10-13 00:57:08 +00:00
Antioch Peverell 9adbaf55a1 reset_sync_head on setup_head, no need for reset_head (#1725) 2018-10-11 13:13:03 +01:00
Antioch Peverell df0dc91891 Chain init reset sync head (#1724)
* fix: binary auto release feature broken (#1714)

* fix a mistake on script

* reset_sync_head on setup_head, no need for reset_head
2018-10-11 12:28:07 +01:00