zebra/zebra-chain/src
teor 2ac6921d60
feat(mine): Add an internal Zcash miner to Zebra (#8136)
* Patch equihash to use the solver branch

* Add an internal-miner feature and set up its dependencies

* Remove 'Experimental' from mining RPC docs

* Fix a nightly clippy::question_mark lint

* Move a byte array utility function to zebra-chain

* fixup! Add an internal-miner feature and set up its dependencies

* Add an equihash::Solution::solve() method with difficulty checks

* Check solution is valid before returning it

* Add a TODO to check for peers before mining

* Move config validation into GetBlockTemplateRpcImpl::new()

* fixup! fixup! Add an internal-miner feature and set up its dependencies

* Use the same generic constraints for GetBlockTemplateRpcImpl struct and impls

* Start adding an internal miner component

* Add the miner task to the start command

* Add basic miner code

* Split out a method to mine one block

* Spawn to a blocking thread

* Wait until a valid template is available

* Handle shutdown

* Run mining on low priority threads

* Ignore some invalid solutions

* Use a difference nonce for each solver thread

* Update TODOs

* Change the patch into a renamed dependency to simplify crate releases

* Clean up instrumentation and TODOs

* Make RPC instances cloneable and clean up generics

* Make LongPollId Copy so it's easier to use

* Add API to restart mining if there's a new block template

* Actually restart mining if there's a new block template

* Tidy instrumentation

* fixup! Move config validation into GetBlockTemplateRpcImpl::new()

* fixup! Make RPC instances cloneable and clean up generics

* Run the template generator and one miner concurrently

* Reduce logging

* Fix a bug in getblocktemplate RPC tip change detection

* Work around some watch channel change bugs

* Rate-limit template changes in the receiver

* Run one mining solver per available core

* Use updated C code with double-free protection

* Update to the latest solver branch

* Return and submit all valid solutions

* Document what INPUT_LENGTH means

* Fix watch channel change detection

* Don't return early when a mining task fails

* Spawn async miner tasks to avoid cooperative blocking, deadlocks, and improve shutdown responsiveness

* Make existing parallelism docs and configs consistent

* Add a mining parallelism config

* Use the minimum of the configured or available threads for mining

* Ignore optional feature fields in tests

* Downgrade some frequent logs to debug

* Document new zebrad features and tasks

* Describe the internal-miner feature in the CHANGELOG

* Update dependency to de-duplicate equihash solutions

* Use futures::StreamExt instead of TryStreamExt

* Fix a panic message typo
2024-01-11 14:41:01 +00:00
..
amount build(deps): bump insta from 1.15.0 to 1.17.1 (#4884) 2022-08-04 15:44:44 +00:00
block feat(mine): Add an internal Zcash miner to Zebra (#8136) 2024-01-11 14:41:01 +00:00
chain_sync_status fix(test): Move test-only code to test-only modules (#5777) 2022-12-08 01:06:11 +00:00
chain_tip change(chain): Refactor the handling of height differences (#6330) 2023-03-29 23:06:31 +00:00
diagnostic fix(net): Fix potential network hangs, and reduce code complexity (#7859) 2023-11-16 19:53:24 +00:00
fmt cleanup(clippy): Use inline format strings (#5489) 2022-10-27 13:25:18 +00:00
history_tree refactor(anchorSapling): Change type to force consensus rule validation (#3544) 2022-02-17 03:20:22 +00:00
orchard tests(sinsemilla): Minor changes to sinsemilla tests (#8128) 2024-01-01 23:21:13 +00:00
parallel change(state): Make the types for finalized blocks consistent (#7923) 2023-11-08 22:06:16 +00:00
parameters Fix an incorrect consensus-critical comment (#7774) 2023-10-19 22:18:22 +00:00
primitives feat(mine): Add an internal Zcash miner to Zebra (#8136) 2024-01-11 14:41:01 +00:00
sapling change(scan): Refactor scanning tests (#8047) 2023-12-06 01:57:01 +00:00
serialization test(scan): Add typed database format snapshots to the scanner (#8083) 2023-12-12 22:34:59 +00:00
sprout change(state): Make the types for finalized blocks consistent (#7923) 2023-11-08 22:06:16 +00:00
transaction change(deps): Run `cargo update` (#7429) 2023-08-31 00:49:01 +00:00
transparent cleanup(deps): Bump sha2 and secp256k1 to remove duplicate dependencies (#7238) 2023-07-18 07:13:40 +00:00
value_balance cleanup(rust): Fix new nightly clippy warnings (#7135) 2023-07-05 07:11:27 +00:00
work feat(mine): Add an internal Zcash miner to Zebra (#8136) 2024-01-11 14:41:01 +00:00
amount.rs change(scan): Refactor scanning tests (#8047) 2023-12-06 01:57:01 +00:00
block.rs Fix new nightly clippy and rustc lints (#7860) 2023-10-27 19:35:57 +00:00
chain_sync_status.rs fix(test): Move test-only code to test-only modules (#5777) 2022-12-08 01:06:11 +00:00
chain_tip.rs change(chain): Refactor the handling of height differences (#6330) 2023-03-29 23:06:31 +00:00
diagnostic.rs fix(panic): Stop panicking on async task cancellation on shutdown in network and state futures (#7219) 2023-07-18 04:53:26 +00:00
error.rs fix(errors): Handle randomness generation and invalid random values as errors in cryptographic code (#6385) 2023-04-20 17:49:21 +00:00
fmt.rs change(scan): Refactor scanning tests (#8047) 2023-12-06 01:57:01 +00:00
history_tree.rs Move history tree and value balance to typed column families (#8115) 2023-12-20 23:20:57 +00:00
lib.rs Move history tree and value balance to typed column families (#8115) 2023-12-20 23:20:57 +00:00
orchard.rs cleanup(cryptography): Remove unused shielded key and address code (#5476) 2022-10-29 20:59:55 +00:00
parallel.rs 1. fix(perf): Run CPU-intensive state updates in parallel rayon threads (#4802) 2022-07-22 12:19:11 -04:00
parameters.rs Cleanup a few arbitrary impls (#2222) 2021-05-28 09:49:28 -03:00
primitives.rs feat(mine): Add an internal Zcash miner to Zebra (#8136) 2024-01-11 14:41:01 +00:00
sapling.rs change(scan): Refactor scanning tests (#8047) 2023-12-06 01:57:01 +00:00
serialization.rs Halborn 2023 02 20 (#6297) 2023-03-13 18:10:15 +00:00
shutdown.rs Fix shutdown panics (#1637) 2021-02-03 19:03:28 +10:00
sprout.rs cleanup(cryptography): Remove unused shielded key and address code (#5476) 2022-10-29 20:59:55 +00:00
subtree.rs change(state): Refactor the naming of note commitment subtrees (#7855) 2023-10-30 20:06:54 +00:00
transaction.rs Fix new nightly clippy and rustc lints (#7860) 2023-10-27 19:35:57 +00:00
transparent.rs fix(build): add elasticsearch feature to block serialize (#6709) 2023-06-14 19:01:39 +00:00
value_balance.rs fix(state): Limit the retrieval of note commitment subtrees (#7734) 2023-10-12 20:00:43 +00:00
work.rs Replace primitives_types with uint (#2350) 2021-06-18 15:35:05 -03:00