Commit graph

2523 commits

Author SHA1 Message Date
Yeastplume
3524b70211 remove potential double read lock during compaction 2022-09-01 12:11:49 +01:00
Yeastplume
6412fd1a8e Merge branch 'master' into pibd_impl 2022-07-28 11:12:43 +01:00
Yeastplume
6d25382ff5
derive debug for ServerStats (#3731) 2022-07-28 12:08:14 +02:00
Yeastplume
e13c9d1534 merge from master (thiserror conversion update) 2022-07-14 11:56:18 +01:00
Yeastplume
a14a8e3123
Thiserror changeover (#3728)
* WIP remove failure from all `Cargo.toml`

* WIP remove `extern crate failure_derive`

* Use `thiserror` to fix all errors

* StoreErr is still a tuple

* Remove another set of unnecessary `.into()`s

* update fuzz tests

* update pool/fuzz dependencies in cargo.lock

* small changes based on feedback

Co-authored-by: trevyn <trevyn-git@protonmail.com>
2022-07-14 11:08:13 +01:00
cekickafa
03b007c20e
Updated contributing.md links. (#3727)
* Update CONTRIBUTING.md

- Changed grin support link to keybase grincoin#support channel
- Changed Grin lobby link to keybase grincoin#general channel
- Changed developer channel to keybase grincoin#dev
- Changed @grincoincil twitter account to reddit/grincoin channel for news and developments.
- Added doc.grin.mw link for general grin information.

* edited grin doc link item.

* removed space in a link.

* fixed developers chat channel
2022-07-02 13:41:22 +02:00
Quentin Le Sceller
33124c2d1c
Fix CI for macOS (#3726) 2022-07-01 12:16:15 +01:00
Yeastplume
a441b78891
move all PIBD-related constants into pibd_params modules (#3711) 2022-06-03 12:05:36 +01:00
Yeastplume
41f3aafb9a
Merge DNSSeed scope changes into pibd impl branch (#3708)
* update Cargo.lock for next release

* visibility scope tweaks to aid seed test utilities (#3707)
2022-05-16 10:11:31 +01:00
Yeastplume
9d92f34614
visibility scope tweaks to aid seed test utilities (#3707) 2022-05-12 13:59:34 +01:00
Yeastplume
5efd70a17b
[PIBD_IMPL] BitmapAccumulator Serialization Fix (#3705)
* fix for writing / calculating incorrect length for negative indices

* update capabilities with new version of PIBD hist

* remove incorrect comment

* fix capabilities flag, trace output

* test fix
2022-04-20 13:44:53 +01:00
Yeastplume
aa2a2a98df
add pibd abort timeout case (#3704) 2022-04-05 12:46:05 +01:00
Yeastplume
eda31ab9e5
documentation updates + todo fixes (#3703) 2022-04-01 13:42:12 +01:00
Yeastplume
6a7b66b329
[PIBD_IMPL] Catch-Up functionality + Fixes based on testing (#3702)
* ensure desegmenter attempts to apply correct block after a resumte

* ensure txhashset's committed implementation takes into account output bitmap for summing purposes

* remove check to de-apply outputs during segment application

* return removal of spent outputs during pibd

* remove unneeded status

* remove uneeded change to rewind function
2022-03-30 13:47:42 +01:00
yeastplume
50450ba71a update Cargo.lock for next release 2022-03-22 14:17:31 +00:00
yeastplume
145d819445 update Cargo.lock for next release 2022-03-22 14:15:51 +00:00
Yeastplume
09d6f41c09
fix for deadlock issue (#3700) 2022-03-09 16:07:50 +00:00
Yeastplume
b08a6dd528
revert to previous method of applying segments (#3699) 2022-03-02 17:06:05 +00:00
Yeastplume
21b1ac50d7
[PIBD_IMPL] Thread simplification + More TUI Updates + Stop State Propagation (#3698)
* change pibd stat display to show progress as a percentage of downloaded leaves

* attempt some inline rp validation

* propagate shutdown state through kernel validation

* change validation loop timing

* simplify validator threading

* add more detailed tracking of kernel history validation to tui, allow stop state during

* adding more stop state + tui progress indication

* remove progressive validate

* test fix
2022-03-01 13:52:16 +00:00
Yeastplume
bf48e52374
[PIBD_IMPL] Update number of simultaneous peer requests for segments (#3696)
* cleanup of segment request list

* allow for more simultaneous requests during state sync

* up number of simultaneous peer requests for segments
2022-02-24 15:20:35 +00:00
Yeastplume
5630cf2e10
[PIBD_IMPL] PIBD Stats + Retry on validation errors (#3694)
* start to add stats and reset chain state after errors detected

* add functions to reset prune list when resetting chain pibd state

* debug statement

* remove test function
2022-02-17 14:10:56 +00:00
Yeastplume
3ea233d5eb
[PIBD_IMPL] Finalize PIBD download and move state to chain validation (#3692)
* investigations as to why a slight rewind is needed on startup during PIBD

* move validation code into desegmenter validation thread (for now)

* ensure genesis entries in pmmrs are removed if they're removed in the first segment

* validation all working except for verifying kernel sums

* remove unneeded pmmr rollbacks on resume now root cause was found

* updates to remove unpruned leaves from leaf set when rebuilding pmmr

* remove + 1 to segment traversal iter length
2022-02-15 13:04:14 +00:00
Yeastplume
169e106e70
[PIBD_IMPL] PIBD tree sync via network and kill/resume functionality (#3691)
* add functions to determing latest verifiable block height for the given pibd state

* attempting to allow for pibd to resume after killing process

* fix to ensure prune list is properly flushed during pibd sync

* removal of unneeded code

* ignore test for now (fix before full merge)
2022-02-08 12:24:07 +00:00
Yeastplume
24202f0442
[PIBD_IMPL] PMMR Reassembly from Segments (#3690)
* update pibd copy test to use new desgmenter structure

* begin reconstruction of output pmmr

* clean up hash/leaf insertion logic

* push pruned subtree appears to be working, now also calculates left hand hashes correctly

* factor out ordering of segment/hash order array

* refactor for pmmr application code

* test of chain copy appears to be working

* add rangeproof functions to desegmenter

* add kernel functions, attempt refactor

* small test cleanup, reconstruction of live chain working in manual copy test
2022-01-28 11:32:54 +00:00
Yeastplume
436bacf17e
[PIBD_IMPL] Bitmap accumulator reconstruction + TxHashset set reconstruction (#3689)
* application of received bitmap segments to local accumulator

* add all required elements to send/receive output segment requests and responses

* testing of output sync

* add special cases to pmmr segment request
2022-01-25 10:38:13 +00:00
Yeastplume
41a86b4cd9
[PIBD_IMPL] PIBD Desegmenter State (#3688)
* add functions to desegmenter to report next desired segments, begin to add state to determine which segments have been requested

* add segmentidentifier type to id requested segments uniquely

* make a call on where to keep track of which PIBD segments have been requested

* move segmenttype definition, add functions to manipulate peer segment list

* remove desegmenter state enum

* change chain desegmenter function to provide rwlock

* trace, warning cleanup

* udpate to test compliation
2022-01-20 09:57:21 +00:00
Yeastplume
009a02eec1
add pibd receive messages to network, and basic calls to desegmenter from each (#3686) 2022-01-17 10:08:58 +00:00
Yeastplume
89730b7d6d
[PIBD_IMPL] Introduce PIBD state into sync workflow (#3685)
* experimental addition of pibd download state for testnet only

* fixes to bitmap number of segments calculation + conversion of bitmap accumulator to bitmap

* attempt to call a test message

* add p2p methods for receiving bitmap segment and applying to desegmenter associated with chain

* fixes to state sync
2022-01-12 13:02:59 +00:00
Yeastplume
78c9794d30
TUI Freeze Fix - Add manually maintained hash to difficulty iterator (#3684)
* add manually managed hash to difficulty iterator

* text fix

* fix for hash-of-hash, review feedback
2022-01-07 14:23:58 +00:00
deevope
a3eebbc0ab
verify-chain node client arg (#3678)
* add parameter fast_validation to the api

* arg `verify-chain` on node client

* arg verify chain + read_timeout parameter

* change timeout to 2hours

* update with tromp review

* 2nd comment from tromp
2022-01-07 13:45:48 +00:00
deevope
c92d2e9fba
graceful api shutdown (#3677) 2022-01-07 13:24:54 +00:00
Yeastplume
2237f42144
Handle attempts to get block headers at invalid heights (#3683)
* handle attempts to get block headers at invalid heights

* compare requested height against header pmmr size

* gte
2021-12-31 09:47:04 +00:00
deevope
382e914c50
make fn rewind_hash pub (#3674) 2021-12-13 12:18:37 +00:00
Yeastplume
63c65605bb
[SYNC PERFORMANCE] Adjust DifficultyIterator to no longer deserialize PoW proof nonces (#3671)
* replace bitvec with more efficient bitpack algorithm

* optimise proof_unpack_len

* move proof pack length calculation

* small refactor

* first pass attempt at not deserializing proof nonces in difficulty iter

* another 10 seconds gained by not deserialising the proof from the difficulty iterator

* add new deser parameters to tests where needed

* add skip_proof variants to store

* remove hash from difficulty iterator struct, rename HeaderInfo to HeaderDifficultyInfo

* replace bitvec with more efficient bitpack algorithm

* optimise proof_unpack_len

* move proof pack length calculation

* small refactor

* first pass attempt at not deserializing proof nonces in difficulty iter

* another 10 seconds gained by not deserialising the proof from the difficulty iterator

* add new deser parameters to tests where needed

* add skip_proof variants to store

* remove hash from difficulty iterator struct, rename HeaderInfo to HeaderDifficultyInfo
2021-12-10 11:39:39 +00:00
Yeastplume
7725a05ac1
[SYNC PERFORMANCE] Replace header proof serialisation with more efficient algorithm (#3670)
* replace bitvec with more efficient bitpack algorithm

* optimise proof_unpack_len

* move proof pack length calculation

* small refactor

* integrate suggestions in #3670

* finish compressing compression function

* remove ordering cmp from pack function

* remainder fix for new logic

* remove println statements

* remove ordering import warning
2021-12-06 16:35:23 +00:00
John Tromp
c6f25e9929
Spdupverifypow (#3672)
* speed up cuckatoo verify

* speed up cuckaroo verify

* speed up cuckarood verify

* speed up cuckaroom verify

* speed up cuckarooz verify
2021-12-06 12:22:44 +00:00
Yeastplume
2f5cfbe4eb
[PIBD] PMMR Desegmenter Structure (Pt. 1) (#3667)
* initial commit of WIP pibd explorations

* correct calling for obtaining and validating first segment

* update test to properly iterate through each segment of the test pmmrs, validating each segment as it goes

* updated test to fully segment and validate PMMRs from compacted and uncompacted sample data. Also contains method of running test againt live chain data

* remove logger change

* change test file name

* change test file name

* change directory reference in test for CI

* add initial (experimental) structure for PIBD desegmenting

* move bitmap desegmentation logic into desegmenter

* added txhashset methods to apply pibd segments (note this only works for fully unpruned trees atm)

* change last_pos to mmr_size

* fix to pmmr::peaks call

* don't verify POW when copying headers

* prepare for commit of work thus far'

* update test paths

* few updates based on early review
2021-12-02 10:43:38 +00:00
John Tromp
53414ae105
Fixmmr part2 (#3666)
* use 0-based positions in  methods pmmr_leaf_to_insertion_index and bintree_postorder_height; add round_up_to_leaf_pos method

* use 0-based positions in method insertion_to_pmmr_index

* use 0-based positions in method is_leaf

* use 0-based positions in method family()

* use 0-based positions in method is_left_sibling

* use 0-based positions in method family_branch

* use 0-based positions in methods bintree_{left,right}most

* use 0-based positions in method bintree_pos_iter

* use 0-based positions in method bintree_range

* use 0-based positions in method bintree_leaf_pos_iter

* rename last_pos in MMR related structs to size

* use 0-based positions in method prune

* use 0-based positions in method push and apply_output return value

* use 0-based position argument of method merkle_proof

* use 0-based outputs in method pmmr::peaks

* fix peaks() code comments

* refix peaks() code comments

* use 0-based positions in method get_peak_from_file

* use 0-based positions in methods get_data_from_file

* use 0-based positions in methods get_from_file

* use 0-based positions in methods get_data

* use 0-based positions in methods get_hash

* use 0-based positions in method peak_path

* use 0-based positions in method bag_the_rhs

* use 0-based positions in method Backend::remove

* use 0-based positions in method leaf_pos_iter

* use 0-based positions in method self.LeafSet::includes

* use 0-based positions in methods self.LeafSet::{add,remove}

* use 0-based positions in methods is_pruned,is_pruned_root,is_compacted

* use 0-based positions in methods PruneList::append

* use 0-based positions in methods append_pruned_subtree

* use 0-based positions in method calculate_next_leaf_shift

* use 0-based positions in method append_single

* use 0-based positions in method calculate_next_shift

* use 0-based positions in method segment_pos_range

* use 0-based positions in method reconstruct_root

* use 0-based positions in method validate_with

* use 0-based positions in method validate

* rename size (formerly last_pos) to mmr_size

* use 0-based positions in Segment's hash_pos and leaf_pos

* minimize use of saturating_sub(1) and rename some pos/idx to size

* use 0-based positions in methods get_output_pos

* use 0-based positions in method get_unspent_output_at

* use 0-based positions in method get_header_hash

* use 0-based positions in methods MerkleProof::verify{,_consume}

* use 0-based positions in method cleanup_subtree

* don't allow 0 in prunelist bitmap

* use 0-based positions in methods get_{,leaf_}shift

* rename some 1-based pos to pos1; identify TODO

* Address yeastplume's PR review comments
2021-11-26 11:25:10 +00:00
Yeastplume
c8275f7e57
[PIBD] Chain Segmenter Validation Test + Block Archive Horizon Change (#3665)
* initial commit of WIP pibd explorations

* correct calling for obtaining and validating first segment

* update test to properly iterate through each segment of the test pmmrs, validating each segment as it goes

* updated test to fully segment and validate PMMRs from compacted and uncompacted sample data. Also contains method of running test againt live chain data

* remove logger change

* change test file name

* change test file name

* change directory reference in test for CI

* remove +1 from segment count

* prediction comment change

* add ignore of full-chain test
2021-11-23 12:38:52 +00:00
John Tromp
4aaa3344e6
refactor pmmr functions, improve efficiency; panic on 0 pos1 (#3663) 2021-11-12 11:11:50 +00:00
Yeastplume
3f4f165e0b
PMMR Backend Support for append_pruned_root (Continued) (#3659)
* refactor prune_list with aim of allowing pruned subtree appending

* add test coverage around pmmr::is_leaf() and pmmr::bintree_leaf_pos_iter()

* comments

* cleanup

* implement append pruned subtree for prune_list

* commit

* we can now append to prune_list

* fix our prune_list corruption...

* rework how we rewrite the prune list during compaction

* test coverage for improved prune list api

* continuing to merge

* finish merge, tests passing again

* add function pmmr_leaf_to_insertion_index, and modify bintree_lef_pos_iter to use it. Note there's still an unwrap that needs to be dealt with sanely

* change pmmr_leaf_to_insertion_index to simpler version + handle conversion between 1 and 0 based in bintree_leaf_pos_iter

Co-authored-by: antiochp <30642645+antiochp@users.noreply.github.com>
2021-11-09 15:34:10 +00:00
Quentin Le Sceller
3ae4c75569
Update digest, hmac, ripemd160, sha2 and pbkdf2 crates (#3655) 2021-11-02 15:40:31 +00:00
Yeastplume
0170f03e4a
Rust 2021 Macro Warning Cleanup (#3658)
* small warning cleanup

* remove unused imports in tests
2021-11-02 15:10:01 +00:00
Quentin Le Sceller
2e2149859f
bump to 5.2.0-alpha.1 on master (#3652) 2021-08-19 09:06:52 +02:00
Quentin Le Sceller
1cb222786a
Change connection name for CI Release (#3653) 2021-08-18 15:45:52 +02:00
Quentin Le Sceller
11e5efc089
Tagging v5.1.1 release (#3651) 2021-08-17 20:57:13 +02:00
Quentin Le Sceller
172143f7ea
Fix ROARING_ARCH environment variable (#3644) 2021-06-10 09:42:04 -04:00
Alesio Kanani
4155555f80
Spelling Improvements (#3642)
* Spelling Improvement
2021-05-13 14:07:14 -04:00
John Tromp
f51b6e1376
implement fix past fees RFC with fee shift since genesis (#3629) 2021-05-11 16:39:09 +01:00
Antioch Peverell
a9f1dd7bcd
bump to 5.2.0-alpha.1 on master (#3640) 2021-05-06 13:46:03 +01:00