Age | Commit message (Collapse) | Author |
|
Longer term workaround for chainstate corruption from negative versions.
|
|
- rename URL into URI in paymentserver where correct
- add some missing Qt-coding-stuff in paymentserver
- change QSpinBox to QLineEdit as base for BitcoinAmountField in .ui files
(as this is the result when converting the BAF back into base)
- remove some c_str() and replace with QString::fromStdString()
- remove several new-lines
- remove unneeded spaces
- indentation fixes
|
|
This also makes negative transaction versions non-standard.
This avoids an issue triggered in block 256818 where transactions with
negative version numbers were incorrectly serialized into the UTXO set.
On restart nodes detect the inconsistency and refuse to start so long as
a block with these transactions is inside the self-consistency check
window, logging "coin database inconsistencies found". The software
recommends reindexing, but reindexing does not correct the problem.
This should be fixed by changing the chainstate serialization, but
working around it seems harmless for now because the version is not
used by any network rule currently.
A patch free workaround is to start with -checklevel=2 which skips
the consistency checks, but the IsStandard change is important for
miners in order to protect unpatched nodes.
|
|
|
|
|
|
This resulted in just passing all transactions to filtered wallets
which worked surprisingly well, except where it didn't.
|
|
This reduces a peer's ability to attack network resources by
using a full bloom filter, but without reducing the usability
of bloom filters. It sets a default match everything filter
for peers and it generalizes a prior optimization to
cover more cases.
|
|
|
|
|
|
Detect any sufficiently long fork and alert the user just like any other alert
|
|
|
|
Simplify storage of orphan transactions, fix CVE-2013-4627
|
|
Prepare for mempool testing in pull-tester and fix multi-block transaction resurrection
|
|
Orphan transactions were stored as a CDataStream pointer;
this changes the mapOrphanTransactions data structures to
store orphans as a CTransaction.
This also fixes CVE-2013-4627 by always re-serializing
transactions before relaying them.
|
|
This reverts commit c40a5aaaf484855a4350fd702e8e72fd21a68155.
|
|
Public functions referenced elsewhere are added to miner.h.
|
|
* Fix UpdateCoins() definition in main.h
* Remove pwalletMain reference from BitcoinMiner(), as it is passed
a wallet argument.
|
|
Replace the loop macro with while (true). The #define caused
problems for Qt.
|
|
|
|
|
|
|
|
|
|
Such a fork is defined as being at least 7 blocks long and
having a tip which is within 72 blocks of our best block.
|
|
Log reason for non-standard transaction rejection
|
|
Wallet registration locks in main.cpp + UnregisterAllWallet() function
|
|
Move core implementations to core.cpp
|
|
Fixes a memory exhaustion attack on low-memory peers.
|
|
|
|
UnregisterAllWallets function.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
main.h
|
|
|
|
in main.h
|
|
RPC: add 'verifychain' to verify chain database at runtime
|
|
|
|
Refactor fee rules to make them actually readable.
|
|
|
|
|
|
The new class is accessed via the Params() method and holds
most things that vary between main, test and regtest networks.
The regtest mode has two purposes, one is to run the
bitcoind/bitcoinj comparison tool which compares two separate
implementations of the Bitcoin protocol looking for divergence.
The other is that when run, you get a local node which can mine
a single block instantly, which is highly convenient for testing
apps during development as there's no need to wait 10 minutes for
a block on the testnet.
|
|
Move out of main.h to improve compile times and add documentation
for what the methods do.
|
|
This (nearly) doesn't change fee rules at all:
* To make it into the fee transaction area, the dPriority comparison
changed from < to <=
* We now just ignore transactions > MAX_BLOCK_SIZE/4 instead of
doing some calculations to require increasingly large fees as
size increases.
|
|
|
|
|
|
|
|
the mempool instance.
Removed AreInputsStandard from CTransaction, made it a regular function in main.
Moved CTransaction::GetOutputFor to CCoinsViewCache.
Moved GetLegacySigOpCount and GetP2SHSigOpCount out of CTransaction into regular functions in main.
Moved GetValueIn and HaveInputs from CTransaction into CCoinsViewCache.
Moved AllowFree, ClientCheckInputs, CheckInputs, UpdateCoins, and CheckTransaction out of CTransaction and into main.
Moved IsStandard and IsFinal out of CTransaction and put them in main as IsStandardTx and IsFinalTx. Moved GetValueOut out of CTransaction into main. Moved CTxIn, CTxOut, and CTransaction into core.
Added minimum fee parameter to CTxOut::IsDust() temporarily until CTransaction is moved to core.h so that CTxOut needn't know about CTransaction.
|