Commit Graph

2310 Commits

Author SHA1 Message Date
David Burkett 952bdcc4c8 Fixing doc (#3330) 2020-05-19 13:25:41 -04:00
Quentin Le Sceller 28644a63cf Fix miminum share difficulty in Stratum Server (#3323) 2020-05-19 11:07:33 -04:00
hashmap 93f5de3d29 Introduce a pause after calling Cursive.step (#3326)
Currently we call it in a loop without any delays which burns cpu cycles for little value.
On my machine I see decrease of cpu usage from 12% to 6% on a synced node after applying this fix.
2020-05-16 17:12:45 +02:00
Antioch Peverell 133a8da53e Refactor bucket_transactions() and evict_transaction() (#3319) 2020-05-14 14:21:41 -04:00
hashmap 2c62111561 Remove some unwraps in LMDB client (#3313) 2020-05-13 16:18:55 +02:00
Quentin Le Sceller e826cd82f9 Update (#3324) 2020-05-12 11:48:18 -04:00
hashmap 2397407dc4 Always return a typed structure from lmdb store (#3312)
We have a method get which returns a Vec, it's used in cases when we can't implement FromLmdbBytes or Readable on a desired type, eg when both traits and type are external for the current crate. This approach requires an extra allocation of a Vec, this PR introduces a method which accepts desirialzer as closure, which allows to desrialize in place without an intermidiate heap allocation.

It's still possible to get a Vec if needed, just pass a Vec constructor to get_with.
2020-05-05 11:00:23 +02:00
Antioch Peverell c82199bb97 cleanup weird egde_bits handling in tests (#3316) 2020-05-04 12:40:16 +01:00
hashmap 8a22fb516a Reduce number of allocations in to_key calls (#3311)
We have to make an extra allocation per db get request because key generation function to_key takes Vec. Taking byte slice (AsRef<[u8]> to be precise) also simplifes the code a bit.
2020-04-30 17:47:44 +02:00
hashmap a82041d0ed Refactor Readable trait (#3309)
Currently Writable accepts trait Write as a type parameter but Readable
takes Read as a trait object, which is not symmetrical and also less performant. This PR changes Readable trait and all places where it's used
2020-04-30 17:42:19 +02:00
hashmap 9e51e86538 Use generic types instead of trait objects in tx pool (#3308)
Tx pool takes some parameters as trait objects. It's not an idiomatic Rust code, in this particular case we should use generic types. Trait object makes sense when we accept in runtime different concrete types which implement the trait as a value of the same field. It's not the case here. Trait objects come with a price - instead of method dispatch in compile time we have to accept runtime dispatch. My guess we did it to not clutter the code with type parameters, which is understandable but still suboptimal.
2020-04-30 17:41:49 +02:00
Quentin Le Sceller 061bf3d08f Add depreciation warning (#3310) 2020-04-28 12:17:34 -04:00
Quentin Le Sceller be4779c923 Less cloning and pattern simplifications (#3305)
* Cleanup 
* Pattern simplification
2020-04-24 11:19:34 +02:00
hashmap 6556dd585d Pass byte slice to to_hex (#3307)
Currently we pass a Vec. This requires an extra allocation and copy of all elements if a caller doesn't have a Vec already, which is at least 95% of cases.
Another, a smaller issue, we have a function util::to_hex and some structs implement to_hex() on top of it, so we have a mix of it in the code. This PR introduces a trait and a blanket impl for AsRef<[u8]> which brings a uniform API (obj.to_hex()). One unfortunate case is arrays of size bigger than 32 - Rust doesn't implement AsRef for them so it requires an ugly hack (&array[..]).to_hex().
2020-04-24 11:18:26 +02:00
hashmap d8c6eef485 Refactor SyncState (#3297)
* Refactor SyncState

Method sync_error() retrun type was simplified.
update_txhashset_download() was  made type safe, which eliminates a runtime enum variant's  check, added an atomic status update
2020-04-20 12:30:04 +02:00
hashmap e64e90623b Reduce number of allocations in Headers message read (#3301)
We allocate 17 vectors (in the heap) per 512 headers, this PR reduces the number to 1 by resuing the buffer for headers and eliminating the need in the vector of indices
2020-04-18 14:07:26 +01:00
hashmap 0da88f7046 Don't swallow errors in body_sync (#3300)
We handle them inside but it makes the code more cluttered
2020-04-18 13:51:18 +01:00
Quentin Le Sceller 4024ee3839 Update Cursive to 0.14 and update backend. (#3291)
* Update Cursive to 0.14

* Replace ncurses backend with crossterm

* Update to latest Cursive code

* Remove git patch
2020-04-17 15:41:55 -04:00
jaspervdm cf128eb220 Fix rare panic in TUI (#3294) 2020-04-15 10:19:11 -04:00
Quentin Le Sceller e76dda6676 Use latest hosted agent for CI (#3278)
* Use latest hosted agent for CI
2020-04-14 09:25:10 -04:00
MCM-Mike d7e6ac6cfe Update seed.rs (#3282)
added mainnet-seed.grinnode.live
2020-04-13 15:38:39 -04:00
Yeastplume b2609b7214 Update rust-secp256k1 to v0.7.9 (#3293) 2020-04-10 18:44:02 +01:00
Antioch Peverell bab9f41343 go back to storing header_head in the db (#3268)
* go back to storing header_head in the db

* simplify and cleanup
2020-04-10 16:12:53 +01:00
goyle 34ff103bb0 Update link to podcast featuring tromp (#3283) 2020-03-30 11:10:42 -05:00
Antioch Peverell e49eecae5c Cleanup path handling with AsRef<Path> (#3284)
* AsRef<Path>

* bump
2020-03-30 11:35:21 +01:00
jaspervdm 7385e8ce7f Update API docs (#3277) 2020-03-28 12:53:20 +01:00
Yeastplume d036332028 Include new libsecp256k1 version (#3279) 2020-03-26 16:12:41 +00:00
jaspervdm 2fe0869321 Use croaring-mw with 'compat' feature (#3274) 2020-03-23 21:12:58 +01:00
jaspervdm 6bdf31f23d Remove unused code in message handling (#3269) 2020-03-13 12:50:35 +01:00
Antioch Peverell 3bbf60ee92 simplify when block_sums and spent_index are added to the db (#3253)
* simplify when block_sums and spent_index are added to the db

* fix pool tests

* cleanup
2020-03-10 14:58:32 +00:00
Antioch Peverell 8ca381a9c2 cleanup util::from_hex() (#3265)
* cleanup our from_hex()

* fix keychain tests

* add test coverage for empty hex string
2020-03-10 10:36:18 +00:00
Yeastplume ee5fe1ac63 Use smaller LMDB Allocation Size in non-production modes (#3264)
* add option to override lmdb allocation size in testing

* simplify to use global::is_production_mode
2020-03-10 09:30:12 +00:00
Yeastplume 31bd2d923a Add better LMDB error output (#3263) 2020-03-09 14:04:06 +01:00
jaspervdm d5b523248b API: don't error on missing output (#3256)
* Node API: don't error on missing output

* Propagate errors from get_output*

* Rename is_unspent and small refactor

* Forgot to rename function in tests

* Change Batch get_output_pos_height type signature
2020-03-04 23:42:10 +01:00
Antioch Peverell 5f5b1d2f13 no need to rehash with index to compare output with input spending it (#3260)
* no need to rehash with index to compare output with input spending it

* compare output identifier when checking is_unspent()

* output identifier from cleanup
2020-03-04 08:36:33 +00:00
Antioch Peverell 2527006e8d keep output and rangeproof mmrs together (#3254) 2020-03-03 15:32:01 +00:00
Yeastplume b73fc0bb9b Version bump for next development release 2020-03-02 12:27:16 +00:00
Yeastplume 533da2d192 version bump for 3.1.0 release (#3258) 2020-03-02 10:38:56 +00:00
Antioch Peverell ef755a5c49 bump to 3.1.0-beta.3 (#3252) 2020-02-28 12:42:08 +00:00
Antioch Peverell bcf0e0b4eb we need to be lenient when deleting entries from the output_pos index (may be missing) (#3251) 2020-02-28 12:41:40 +00:00
Antioch Peverell 5071084445 bump version to 3.1.0-beta.2 (#3244) 2020-02-27 09:35:44 +00:00
Antioch Peverell f2380585a7 explicit read_timeout and write_timeout during hand/shake (#3249)
* explicit read_timeout and write_timeout during hand/shake

* longer timeout for reading Hand and Shake messages to give peer time to send it over
2020-02-27 07:49:38 +00:00
Antioch Peverell 5cb0aac55e only apply full rewind to bitmap, not per block (#3246) 2020-02-26 19:15:13 +00:00
Antioch Peverell 8a15007c8a ignore error from set_read_timeout (#3243) 2020-02-25 20:23:32 +00:00
Antioch Peverell 6855241a56 handle mpsc channel disconnect from peer_write thread (#3241)
* handle mpsc channel disconnect from peer_write thread
also actually shutdown the writer when we say we are going to

* fix - we need to break here
2020-02-25 19:15:27 +00:00
jaspervdm 6bdeefd27e Fix warnings (#3240) 2020-02-25 18:33:50 +01:00
Jakob Abfalter bcf3e4e4e4 [Docs] Rangeproof output documentation (#3234)
* [Docs] Added output byte documentation of the rangeproofs

* [Doc] Adjusted wording on bulletproof byte documentation
2020-02-25 18:20:55 +01:00
Antioch Peverell 3790b2cba5 cleanup unused import (#3238) 2020-02-24 16:08:16 +01:00
Antioch Peverell cb2b909090 Block input bitmap rework (#3236)
* first pass at rewind_single_block
and reworking rewind to simply iterate over blocks, rewinding each incrementally

* commit

* commit

* cleanup

* add test coverage for output_pos index transactional semantics during rewind

* commit

* do not store commitments in spent_index
just use the order of the inputs in the block

* compare key with commitment when cleaning output_pos index

* remove unused OutputPos struct
2020-02-24 09:48:51 +00:00
Quentin Le Sceller ef853ae469 Update croaring (#3233) 2020-02-21 15:24:48 +00:00