dcrd/internal/mining
Dave Collins e972ac4e84
multi: Implement DCP0010 subsidy consensus vote.
This implements the agenda for voting on the modified subsidy split
defined in DCP0010 along with consensus tests.

In particular, once the vote has passed and is active, the PoW subsidy
will be 10% of the block reward and the PoS subsidy will be 80%.  The
Treasury subsidy will remain at 10%.

In terms of the overall effects, this includes updates to:
- The validation logic for votes, coinbases, and overall block subsidy
- Enforcement when considering candidate votes for acceptance to the
  mempool, relaying, and inclusion into block templates
- Mining template generation
- The output of the getblocksubsidy RPC

Also note that this does not implement the block version bump that will
ultimately be needed by the mining code since there are multiple
consensus votes gated behind it and will therefore be done separately.

The following is an overview of the changes:

- Introduce a convenience function for determining if the vote passed
  and is now active
- Add new methods to blockchain/standalone for calculating the work and
  stake vote subsidies according to either the original or modified
  values per a provided flag
- Modify vote validation to enforce the new stake vote subsidy in
  accordance with the state of the vote
- Modify coinbase validation to enforce the new work subsidy in
  accordance with the state of the vote
- Modify block validation logic to enforce the total overall subsidy in
  accordance with the state of the vote
- Add tests for determining if the agenda is active for both mainnet and
  testnet
- Add tests for getblocksubsidy RPC
- Add tests to ensure proper behavior for the modified subsidy splits as
  follows:
  - Ensure new blockchain validation semantics are enforced once the
    agenda is active
  - Ensure mempool correctly accepts and rejects votes in accordance
    with the state of the vote
2021-12-16 12:26:21 -06:00
..
cpuminer multi: Allow discrete mining with invalidated tip. 2021-12-03 12:05:15 -06:00
bgblktmplgenerator_test.go multi: Fix various typos. 2021-03-01 10:57:51 -06:00
bgblktmplgenerator.go mining: Convert to use new stdaddr package. 2021-04-09 13:39:15 -05:00
doc.go cpuminer: Refactor code to its own package. 2020-07-22 20:06:28 -05:00
error_test.go multi: avoid using subscriber lifecycle in catchup. 2021-10-12 18:52:50 -05:00
error.go mining: Fix error in comment. 2021-09-14 13:33:48 -05:00
interface.go mining: Remove leftover block manager facade iface. 2020-12-18 00:11:02 -06:00
log.go mining: Move to internal. 2020-07-20 18:07:59 -05:00
mining_harness_test.go multi: Implement DCP0010 subsidy consensus vote. 2021-12-16 12:26:21 -06:00
mining_test.go mining: Prevent unnecessary reorg with equal votes. 2021-12-08 18:29:42 -06:00
mining_view_test.go multi: DCP0009 Auto revocations consensus change. 2021-09-20 18:02:19 -05:00
mining_view.go multi: Start dcrutil v4 module dev cycle. 2020-12-16 16:30:24 -06:00
mining.go multi: Implement DCP0010 subsidy consensus vote. 2021-12-16 12:26:21 -06:00
policy_test.go mining: Move to internal. 2020-07-20 18:07:59 -05:00
policy.go multi: Start dcrutil v4 module dev cycle. 2020-12-16 16:30:24 -06:00
README.md mining: Move to internal. 2020-07-20 18:07:59 -05:00
tx_desc_graph.go multi: Start dcrutil v4 module dev cycle. 2020-12-16 16:30:24 -06:00
txpriorityqueue_test.go mining: Add auto revocation priority to tx queue. 2021-09-06 08:48:19 -05:00
txpriorityqueue.go mining: Add auto revocation priority to tx queue. 2021-09-06 08:48:19 -05:00

mining

Build Status ISC License Doc

Overview

This package is currently a work in progress.

License

Package mining is licensed under the copyfree ISC License.