aboutsummaryrefslogtreecommitdiff
path: root/src/miner.cpp
AgeCommit message (Collapse)Author
2017-03-30Update benchmarking with package statisticsSuhas Daftuar
Github-Pull: #9959 Rebased-From: 011124a2b278c5a60bad5f1b0b4abbf7ebc95aa0
2017-03-30Add benchmarking for CreateNewBlockSuhas Daftuar
Github-Pull: #9959 Rebased-From: 42cd8c890fb2d65274f26edf95b6d52ac41fcab8
2017-03-30Mining: return early when block is almost fullSuhas Daftuar
Github-Pull: #9959 Rebased-From: eed816af6c68c0c67f5fc05472a3927db62f8a18
2017-03-16Don't require segwit in getblocktemplate for segwit signalling or miningSuhas Daftuar
Segwit's version bit will be signalled for all invocations of CreateNewBlock, and not specifying segwit only will cause CreateNewBlock to skip transactions with witness from being selected. Github-Pull: #9955 Rebased-From: abe7b3d3abe10e3554b770f40824174b3b217490
2017-01-27Refactor: Remove using namespace <xxx> from src/*.cpp.Karl-Johan Alm
2017-01-04Introduce -blockmintxfeeAlex Morcos
2016-12-31Increment MIT Licence copyright header year on files modified in 2016isle2983
Edited via: $ contrib/devtools/copyright_header.py update .
2016-12-23Introduce (and use) an IsArgSet accessor methodMatt Corallo
2016-12-04Move CTxInWitness inside CTxInPieter Wuille
2016-12-02Rename the remaining main.{h,cpp} to validation.{h,cpp}Matt Corallo
2016-11-19Introduce convenience type CTransactionRefPieter Wuille
2016-11-19Make CBlock::vtx a vector of shared_ptr<CTransaction>Pieter Wuille
2016-11-17Merge #8838: Calculate size and weight of block correctly in CreateNewBlock()Wladimir J. van der Laan
5f274a1 log block size and weight correctly. (jnewbery)
2016-10-18Merge #8223: [c++11] Use std::unique_ptr for block creation.Wladimir J. van der Laan
9fce062 [c++11] Use std::unique_ptr for block creation. (Daniel Kraft)
2016-10-03log block size and weight correctly.jnewbery
2016-07-25Merge #8362: Scale legacy sigop count in CreateNewBlockWladimir J. van der Laan
682aa0f Scale legacy sigop count in CreateNewBlock (Suhas Daftuar)
2016-07-18Rename "block cost" to "block weight"Suhas Daftuar
2016-07-18Scale legacy sigop count in CreateNewBlockSuhas Daftuar
2016-06-30Remove -blockminsize optionSuhas Daftuar
2016-06-30Remove addScoreTxs()Suhas Daftuar
2016-06-30Exclude witness transactions in addPackageTxs() pre-segwit activationSuhas Daftuar
2016-06-27CreateNewBlock: add support for size-accounting to addPackageTxsSuhas Daftuar
Includes a change to not continue to use size-accounting in addScoreTxs or addPackageTxs just because addPriorityTxs() is used.
2016-06-22BIP141: Other consensus critical limits, and BIP145Pieter Wuille
Includes changes by Suhas Daftuar, Luke-jr, and mruddy.
2016-06-22BIP141: Commitment structure and deploymentPieter Wuille
Includes a fix by Suhas Daftuar and LongShao007
2016-06-18[c++11] Use std::unique_ptr for block creation.Daniel Kraft
CreateNewBlock returns a pointer for which the caller takes ownership. Use std::unique_ptr to make this explicit and simplify handling of these objects in getblocktemplate.
2016-06-16Use ancestor-feerate based transaction selection for miningSuhas Daftuar
Includes changes by Pieter Wuille
2016-06-01FIX: correctly measure size of priority blockAlex Morcos
2016-05-24FIX: Account for txs already added to block in addPriorityTxsAlex Morcos
2016-05-18Refactor CreateNewBlock to be a method of the BlockAssembler classAlex Morcos
2016-04-28auto_ptr → unique_ptrWladimir J. van der Laan
Change the few occurrences of the deprecated `auto_ptr` to c++11 `unique_ptr`. Silences the deprecation warnings. Also add a missing `std::` for consistency.
2016-03-15BIP9 ImplementationPieter Wuille
Inspired by former implementations by Eric Lombrozo and Rusty Russell, and based on code by Jorge Timon.
2016-03-14Merge #7507: Remove internal minerWladimir J. van der Laan
8d1de43 Remove internal miner (Leviathn)
2016-02-16Add tags to mempool's mapTx indicesSuhas Daftuar
2016-02-10Remove internal minerLeviathn
This code removes the internal miner which is only useful on Testnet. This leaves the internal miner that is useful on RegTest intact.
2015-12-13Bump copyright headers to 2015MarcoFalke
2015-12-02Update miner.cpp: Fix typo in commentantonio-fr
2015-12-01Rewrite CreateNewBlockAlex Morcos
Use the score index on the mempool to only add sorted txs in order. Remove much of the validation while building the block, relying on mempool to be consistent and only contain txs that can be mined. The mempool is assumed to be consistent as far as not containing txs which spend non-existent outputs or double spends, and scripts are valid. Finality of txs is still checked (except not coinbase maturity, assumed in mempool). Still TestBlockValidity in case mempool consistency breaks and return error state if an invalid block was created. Unit tests are modified to realize that invalid blocks can now be constructed if the mempool breaks its consistency assumptions and also updated to have the right fees, since the cached value is now used for block construction. Conflicts: src/miner.cpp
2015-11-28Merge pull request #6508Pieter Wuille
eece63f Switch blocks to a constant-space Merkle root/branch algorithm. (Pieter Wuille) ee60e56 Add merkle.{h,cpp}, generic merkle root/branch algorithm (Pieter Wuille)
2015-11-28Constrain constant values to a single location in codeLuke Dashjr
2015-11-27Switch blocks to a constant-space Merkle root/branch algorithm.Pieter Wuille
This switches the Merkle tree logic for blocks to one that runs in constant (small) space. The old code is moved to tests, and a new test is added that for various combinations of block sizes, transaction positions to compute a branch for, and mutations: * Verifies that the old code and new code agree for the Merkle root. * Verifies that the old code and new code agree for the Merkle branch. * Verifies that the computed Merkle branch is valid. * Verifies that mutations don't change the Merkle root. * Verifies that mutations are correctly detected.
2015-11-11Chainparams: Explicit CChainParams arg for miner:Jorge Timón
-BitcoinMiner -CreateNewBlock -GenerateBitcoins -ProcessBlockFound
2015-11-11Chainparams: Explicit CChainParams arg for main (pre miner):Jorge Timón
-ProcessNewBlock -TestBlockValidity
2015-11-03Restore MedianTimePast for locktime.Gregory Maxwell
Revert "Revert "Add rules--presently disabled--for using GetMedianTimePast as endpoint for lock-time calculations"" This reverts commit 40cd32e835092c3158175511da5193193ec54939. After careful analysis it was determined that the change was, in fact, safe and several people were suffering momentary confusion about locktime semantics.
2015-11-01Revert "Add rules--presently disabled--for using GetMedianTimePast as ↵Gregory Maxwell
endpoint for lock-time calculations" This reverts commit 9d55050773d57c0e12005e524f2e54d9e622c6e2. As noted by Luke-Jr, under some conditions this will accept transactions which are invalid by the network rules. This happens when the current block time is head of the median time past and a transaction's locktime is in the middle. This could be addressed by changing the rule to MAX(this_block_time, MTP+offset) but this solution and the particular offset used deserve some consideration.
2015-10-23Add rules--presently disabled--for using GetMedianTimePast as endpoint for ↵Mark Friedenbach
lock-time calculations The lock-time code currently uses CBlock::nTime as the cutoff point for time based locked transactions. This has the unfortunate outcome of creating a perverse incentive for miners to lie about the time of a block in order to collect more fees by including transactions that by wall clock determination have not yet matured. By using CBlockIndex::GetMedianTimePast from the prior block instead, the self-interested miner no longer gains from generating blocks with fraudulent timestamps. Users can compensate for this change by simply adding an hour (3600 seconds) to their time-based lock times. If enforced, this would be a soft-fork change. This commit only adds the functionality on an unexecuted code path, without changing the behaviour of Bitcoin Core.
2015-09-22Do not store Merkle branches in the wallet.Pieter Wuille
Assume that when a wallet transaction has a valid block hash and transaction position in it, the transaction is actually there. We're already trusting wallet data in a much more fundamental way anyway. To prevent backward compatibility issues, a new record is used for storing the block locator in the wallet. Old wallets will see a wallet file synchronized up to the genesis block, and rescan automatically.
2015-09-19TxMemPool: Change mapTx to a boost::multi_index_containerAshley Holman
Indexes on: - Tx Hash - Fee Rate (fee-per-kb)
2015-08-18Fix crash when mining with empty keypool.Daniel Kraft
Since the introduction of the ScriptForMining callback, the mining functions (setgenerate and generate) crash with an assertion failure (due to a NULL pointer script returned) if the keypool is empty. Fix this by giving a proper error.
2015-08-08Add some const declarations where they are appropriate.Daniel Kraft
Declare some arguments of functions as "const" pointers where they are not meant to be modified.
2015-08-06Merge pull request #6177Wladimir J. van der Laan
ef8dfe4 Prevent block.nTime from decreasing (Mark Friedenbach)