Tom Trevethan
694c51a39f
Merge 3212d104f4 into merged_master (Bitcoin PR bitcoin/bitcoin#23829 )
2025-04-01 15:23:27 +00:00
Byron Hambly
b4405ba453
Merge e9262ea32a into merged_master (Bitcoin PR bitcoin/bitcoin#26750 )
2025-03-31 16:37:52 +02:00
Byron Hambly
8499b13762
lint: fix lint issues
2024-12-03 14:02:33 +02:00
James Dorfman
3361822d32
Merge 59ac8bacd5 into merged_master (Bitcoin PR bitcoin/bitcoin#24804 )
2024-08-09 16:39:33 +00:00
Byron Hambly
fdfefc520a
Merge af0b578041 into merged_master (Bitcoin PR bitcoin/bitcoin#24187 )
2023-06-30 16:06:00 +00:00
Byron Hambly
5931d7d47c
Merge d4e92d8436 into merged_master (Bitcoin PR bitcoin/bitcoin#23508 )
2023-06-29 11:46:17 +00:00
Byron Hambly
47626b5a64
Merge 623745ca74 into merged_master (Bitcoin PR bitcoin/bitcoin#23912 )
2023-06-14 15:44:11 +00:00
Pasta
f2fc03ec85
refactor: use braced init for integer constants instead of c style casts
2023-01-03 19:31:29 -06:00
Hennadii Stepanov
306ccd4927
scripted-diff: Bump copyright headers
...
-BEGIN VERIFY SCRIPT-
./contrib/devtools/copyright_header.py update ./
-END VERIFY SCRIPT-
Commits of previous years:
- 2021: f47dda2c58
- 2020: fa0074e2d8
- 2019: aaaaad6ac9
2022-12-24 23:49:50 +00:00
Glenn Willen
aed755128c
Restore changes to ComputeBlockVersion from #1062 and #1075 , mistakenly dropped in merging.
2022-06-27 13:36:12 -07:00
Adam Jonas
308dd2e93e
Sanity assert GetAncestor() != nullptr where appropriate
...
Add sanity asserts for return value of `CBlockIndex::GetAncestor()` where appropriate.
In validation.cpp `CheckSequenceLocks`, check the return value of `tip->GetAncestor(maxInputHeight)` stored into `lp->maxInputBlock`. If it ever returns `nullptr` because the ancestor isn't found, it's going to be a bad bug to keep going, since a `LockPoints` object with the `maxInputBlock` member set to `nullptr` signifies no relative lock time.
In the other places, the added asserts would prevent accidental dereferencing of a null pointer which is undefined behavior.
Co-Authored-By: Aurèle Oulès <aurele@oules.com>
Co-Authored-By: danra <danra@users.noreply.github.com>
2022-05-05 15:55:44 +02:00
Anthony Towns
5179656ef8
trivial: comment tweaks
2022-01-28 18:07:08 +10:00
MarcoFalke
d4e92d8436
Merge bitcoin/bitcoin#23508 : Add getdeploymentinfo RPC
...
a380922891 Release notes for getdeploymentinfo rpc (Anthony Towns)
240cad09ba rpc: getdeploymentinfo: include signalling info (Anthony Towns)
376c0c6dae rpc: getdeploymentinfo: include block hash/height (Anthony Towns)
a7469bcd35 rpc: getdeploymentinfo: change stats to always refer to current period (Anthony Towns)
7f15c1841b rpc: getdeploymentinfo: allow specifying a blockhash other than tip (Anthony Towns)
fd826130a0 rpc: move softfork info from getblockchaininfo to getdeploymentinfo (Anthony Towns)
Pull request description:
The aim of this PR is to improve the ability to monitor soft fork status. It first moves the softfork section from getblockchaininfo into a new RPC named getdeploymentinfo, which is then also able to query the status of forks at an arbitrary block rather than only at the tip. In addition, bip9 status is changed to indicate the status of the given block, rather than just for the next block, and an additional field is included to indicate whether each block in the signalling period signaled.
ACKs for top commit:
laanwj:
Code review and lightly tested ACK a380922891
Sjors:
tACK a380922891
fjahr:
tACK a380922891
Tree-SHA512: 7417d733b47629f229c5128586569909250481a3e94356c52fe67a03fd42cd81745246e384b98c4115fb61587714c879e4bc3e5f5c74407d9f8f6773472a33cb
2022-01-28 08:46:03 +01:00
Anthony Towns
240cad09ba
rpc: getdeploymentinfo: include signalling info
2022-01-15 04:37:56 +10:00
Anthony Towns
a7469bcd35
rpc: getdeploymentinfo: change stats to always refer to current period
...
On a period boundary, getdeploymentinfo (and previously getblockchaininfo)
would report the status and statistics for the next block rather than
the current block. Change this to always report the status/statistics
of the current block, but add status-next to report the status for the
next block.
2022-01-15 04:37:56 +10:00
Hennadii Stepanov
f47dda2c58
scripted-diff: Bump copyright headers
...
-BEGIN VERIFY SCRIPT-
./contrib/devtools/copyright_header.py update ./
-END VERIFY SCRIPT-
Commits of previous years:
* 2020: fa0074e2d8
* 2019: aaaaad6ac9
2021-12-30 19:36:57 +02:00
Andrew Poelstra
5d8b55ce47
Merge f7f9555792 into merged_master (Elements PR ElementsProject/elements#1044 )
2021-09-18 23:15:14 +00:00
Andrew Poelstra
bec6bcf31b
versionbits: allow specific deployments to override the signalling/threshold values
2021-09-15 17:48:12 +00:00
Andrew Poelstra
47164a1e9c
Merge ddc6979b8b into merged_master (Bitcoin PR bitcoin/bitcoin#19438 )
2021-07-30 16:16:50 +00:00
Andrew Poelstra
6d4961766a
Merge 2cd834e6c0 into merged_master (Bitcoin PR #21377 )
2021-06-30 16:24:18 +00:00
Anthony Towns
c5f36725e8
[refactor] Move ComputeBlockVersion into VersionBitsCache
...
This also changes ComputeBlockVersion to take the versionbits cache
mutex once, rather than once for each versionbits deployment.
2021-06-30 08:19:12 +10:00
Anthony Towns
4a69b4dbe0
[move-only] Move ComputeBlockVersion from validation to versionbits
2021-06-30 08:19:12 +10:00
Anthony Towns
0cfd6c6a8f
[refactor] versionbits: make VersionBitsCache a full class
...
Moves the VersionBits* functions to be methods of the cache class,
and makes the cache and its lock private to the class.
2021-06-30 08:19:12 +10:00
Anthony Towns
eccd736f3d
versionbits: Use dedicated lock instead of cs_main
2021-06-29 17:11:12 +10:00
Anthony Towns
f054f6bcd2
versionbits: simplify state transitions
...
This removes the DEFINED->FAILED transition and changes the
STARTED->FAILED transition to only occur if signalling didn't pass the
threshold. This ensures that it is always possible for activation to
occur, no matter what settings are chosen, or the speed at which blocks
are found.
2021-04-12 11:14:49 +10:00
Anthony Towns
55ac5f568a
versionbits: Add explicit NEVER_ACTIVE deployments
...
Previously we used deployments that would timeout prior to Bitcoin's
invention, which allowed the deployment to still be activated in unit
tests. This switches those deployments to be truly never active.
2021-04-12 11:14:49 +10:00
Anthony Towns
73d4a70639
versionbits: Add support for delayed activation
2021-04-12 11:14:49 +10:00
Andrew Poelstra
009bc2fdfb
Merge 99813a9745 into merged_master (Bitcoin PR #17829 )
2020-11-14 16:52:02 +00:00
Andrew Poelstra
19ad9587c8
Merge ccf6697e3b into merged_master (Elements PR #780 )
2020-11-09 23:10:11 +00:00
MarcoFalke
aaaaad6ac9
scripted-diff: Bump copyright of files changed in 2019
...
-BEGIN VERIFY SCRIPT-
./contrib/devtools/copyright_header.py update ./
-END VERIFY SCRIPT-
2019-12-30 10:42:20 +13:00
Gregory Sanders
6fc3fe04ef
Change elements mode to activating BIP9 signaling based on height
2019-11-13 16:07:29 -05:00
Antoine Riard
6576a8765f
doc: Improve versionbits.h documentation
2019-08-15 11:02:55 -04:00
Jorge Timón
875a47cc41
MOVEONLY: Move versionbits info out of versionbits.o
2018-10-12 20:51:54 +02:00
Jorge Timón
980b38f8a1
MOVEONLY: Move versionbits info out of versionbits.o
2018-09-23 22:55:11 +02:00
DrahtBot
eb7daf4d60
Update copyright headers to 2018
2018-07-27 07:15:02 -04:00
practicalswift
1f45e2164a
scripted-diff: Convert 11 enums into scoped enums (C++11)
...
-BEGIN VERIFY SCRIPT-
sed -i 's/enum DBErrors/enum class DBErrors/g' src/wallet/walletdb.h
git grep -l DB_ | xargs sed -i 's/DB_\(LOAD_OK\|CORRUPT\|NONCRITICAL_ERROR\|TOO_NEW\|LOAD_FAIL\|NEED_REWRITE\)/DBErrors::\1/g'
sed -i 's/^ DBErrors::/ /g' src/wallet/walletdb.h
sed -i 's/enum VerifyResult/enum class VerifyResult/g' src/wallet/db.h
sed -i 's/\(VERIFY_OK\|RECOVER_OK\|RECOVER_FAIL\)/VerifyResult::\1/g' src/wallet/db.cpp
sed -i 's/enum ThresholdState/enum class ThresholdState/g' src/versionbits.h
git grep -l THRESHOLD_ | xargs sed -i 's/THRESHOLD_\(DEFINED\|STARTED\|LOCKED_IN\|ACTIVE\|FAILED\)/ThresholdState::\1/g'
sed -i 's/^ ThresholdState::/ /g' src/versionbits.h
sed -i 's/enum SigVersion/enum class SigVersion/g' src/script/interpreter.h
git grep -l SIGVERSION_ | xargs sed -i 's/SIGVERSION_\(BASE\|WITNESS_V0\)/SigVersion::\1/g'
sed -i 's/^ SigVersion::/ /g' src/script/interpreter.h
sed -i 's/enum RetFormat {/enum class RetFormat {/g' src/rest.cpp
sed -i 's/RF_\(UNDEF\|BINARY\|HEX\|JSON\)/RetFormat::\1/g' src/rest.cpp
sed -i 's/^ RetFormat::/ /g' src/rest.cpp
sed -i 's/enum HelpMessageMode {/enum class HelpMessageMode {/g' src/init.h
git grep -l HMM_ | xargs sed -i 's/HMM_BITCOIN/HelpMessageMode::BITCOIN/g'
sed -i 's/^ HelpMessageMode::/ /g' src/init.h
sed -i 's/enum FeeEstimateHorizon/enum class FeeEstimateHorizon/g' src/policy/fees.h
sed -i 's/enum RBFTransactionState/enum class RBFTransactionState/g' src/policy/rbf.h
git grep -l RBF_ | xargs sed -i 's/RBF_TRANSACTIONSTATE_\(UNKNOWN\|REPLACEABLE_BIP125\|FINAL\)/RBFTransactionState::\1/g'
sed -i 's/^ RBFTransactionState::/ /g' src/policy/rbf.h
sed -i 's/enum BlockSource {/enum class BlockSource {/g' src/qt/clientmodel.h
git grep -l BLOCK_SOURCE_ | xargs sed -i 's/BLOCK_SOURCE_\(NONE\|REINDEX\|DISK\|NETWORK\)/BlockSource::\1/g'
sed -i 's/^ BlockSource::/ /g' src/qt/clientmodel.h
sed -i 's/enum FlushStateMode {/enum class FlushStateMode {/g' src/validation.cpp
sed -i 's/FLUSH_STATE_\(NONE\|IF_NEEDED\|PERIODIC\|ALWAYS\)/FlushStateMode::\1/g' src/validation.cpp
sed -i 's/^ FlushStateMode::/ /g' src/validation.cpp
sed -i 's/enum WitnessMode {/enum class WitnessMode {/g' src/test/script_tests.cpp
sed -i 's/WITNESS_\(NONE\|PKH\|SH\)/WitnessMode::\1/g' src/test/script_tests.cpp
sed -i 's/^ WitnessMode::/ /g' src/test/script_tests.cpp
-END VERIFY SCRIPT-
2018-03-09 15:03:40 +01:00
Akira Takizawa
595a7bab23
Increment MIT Licence copyright header year on files modified in 2017
2018-01-03 02:26:56 +09:00
MeshCollider
1a445343f6
scripted-diff: Replace #include "" with #include <> (ryanofsky)
...
-BEGIN VERIFY SCRIPT-
for f in \
src/*.cpp \
src/*.h \
src/bench/*.cpp \
src/bench/*.h \
src/compat/*.cpp \
src/compat/*.h \
src/consensus/*.cpp \
src/consensus/*.h \
src/crypto/*.cpp \
src/crypto/*.h \
src/crypto/ctaes/*.h \
src/policy/*.cpp \
src/policy/*.h \
src/primitives/*.cpp \
src/primitives/*.h \
src/qt/*.cpp \
src/qt/*.h \
src/qt/test/*.cpp \
src/qt/test/*.h \
src/rpc/*.cpp \
src/rpc/*.h \
src/script/*.cpp \
src/script/*.h \
src/support/*.cpp \
src/support/*.h \
src/support/allocators/*.h \
src/test/*.cpp \
src/test/*.h \
src/wallet/*.cpp \
src/wallet/*.h \
src/wallet/test/*.cpp \
src/wallet/test/*.h \
src/zmq/*.cpp \
src/zmq/*.h
do
base=${f%/*}/ relbase=${base#src/} sed -i "s:#include \"\(.*\)\"\(.*\):if test -e \$base'\\1'; then echo \"#include <\"\$relbase\"\\1>\\2\"; else echo \"#include <\\1>\\2\"; fi:e" $f
done
-END VERIFY SCRIPT-
2017-11-16 08:23:01 +13:00
Pieter Wuille
d07ee77ab9
Always-active versionbits support
2017-11-06 19:19:10 -08:00
practicalswift
64fb0ac016
Declare single-argument (non-converting) constructors "explicit"
...
In order to avoid unintended implicit conversions.
2017-08-16 16:33:25 +02:00
MarcoFalke
a46a671e25
Merge #10957 : Avoid returning a BIP9Stats object with uninitialized values
...
3eb53b867 Avoid returning a BIP9Stats object with uninitialized values (practicalswift)
Pull request description:
Uninitialized data potentially used in `rpc/blockchain.cpp`:
```
static UniValue BIP9SoftForkDesc(const Consensus::Params& consensusParams, Consensus::DeploymentPos id)
{
...
const ThresholdState thresholdState = VersionBitsTipState(consensusParams, id);
...
if (THRESHOLD_STARTED == thresholdState)
{
UniValue statsUV(UniValue::VOBJ);
BIP9Stats statsStruct = VersionBitsTipStatistics(consensusParams, id);
statsUV.push_back(Pair("period", statsStruct.period));
statsUV.push_back(Pair("threshold", statsStruct.threshold));
statsUV.push_back(Pair("elapsed", statsStruct.elapsed));
statsUV.push_back(Pair("count", statsStruct.count));
statsUV.push_back(Pair("possible", statsStruct.possible));
rv.push_back(Pair("statistics", statsUV));
}
...
return rv;
}
```
Friendly ping @pinheadmz :-)
Tree-SHA512: cc1debe11d81157b9fa8e6064bfec199524cd1e2d0230ff35f45d97ecabbc664df8423edb1c9e4ba3daf19bbd51ab87bb50e5e5cd279be1d2aa1f7d8b300f148
2017-08-16 02:45:19 +02:00
practicalswift
90d4d89230
scripted-diff: Use the C++11 keyword nullptr to denote the pointer literal instead of the macro NULL
...
-BEGIN VERIFY SCRIPT-
sed -i 's/\<NULL\>/nullptr/g' src/*.cpp src/*.h src/*/*.cpp src/*/*.h src/qt/*/*.cpp src/qt/*/*.h src/wallet/*/*.cpp src/wallet/*/*.h src/support/allocators/*.h
sed -i 's/Prefer nullptr, otherwise SAFECOOKIE./Prefer NULL, otherwise SAFECOOKIE./g' src/torcontrol.cpp
sed -i 's/tor: Using nullptr authentication/tor: Using NULL authentication/g' src/torcontrol.cpp
sed -i 's/METHODS=nullptr/METHODS=NULL/g' src/test/torcontrol_tests.cpp src/torcontrol.cpp
sed -i 's/nullptr certificates/NULL certificates/g' src/qt/paymentserver.cpp
sed -i 's/"nullptr"/"NULL"/g' src/torcontrol.cpp src/test/torcontrol_tests.cpp
-END VERIFY SCRIPT-
2017-08-07 07:36:37 +02:00
practicalswift
3eb53b8671
Avoid returning a BIP9Stats object with uninitialized values
...
Uninitialized data potentially used in `rpc/blockchain.cpp`:
```
static UniValue BIP9SoftForkDesc(const Consensus::Params& consensusParams, Consensus::DeploymentPos id)
{
...
const ThresholdState thresholdState = VersionBitsTipState(consensusParams, id);
...
if (THRESHOLD_STARTED == thresholdState)
{
UniValue statsUV(UniValue::VOBJ);
BIP9Stats statsStruct = VersionBitsTipStatistics(consensusParams, id);
statsUV.push_back(Pair("period", statsStruct.period));
statsUV.push_back(Pair("threshold", statsStruct.threshold));
statsUV.push_back(Pair("elapsed", statsStruct.elapsed));
statsUV.push_back(Pair("count", statsStruct.count));
statsUV.push_back(Pair("possible", statsStruct.possible));
rv.push_back(Pair("statistics", statsUV));
}
...
return rv;
}
```
2017-08-01 23:00:11 +02:00
practicalswift
aa95947ded
Use the override specifier (C++11) where we expect to be overriding the virtual function of a base class
2017-06-28 02:12:06 +02:00
Wladimir J. van der Laan
f3f1e2e7d3
Merge #9544 : [trivial] Add end of namespace comments. Improve consistency.
...
5a9b508 [trivial] Add end of namespace comments (practicalswift)
Tree-SHA512: 92b0fcae4d1d3f4da9e97569ae84ef2d6e09625a5815cd0e5f0eb6dd2ecba9852fa85c184c5ae9de5117050330ce995e9867b451fa8cd5512169025990541a2b
2017-06-26 13:40:26 +02:00
practicalswift
5a9b508279
[trivial] Add end of namespace comments
2017-05-31 22:21:25 +02:00
Jorge Timón
b463bc9215
scripted-diff: s/BIP9DeploymentInfo/VBDeploymentInfo/
...
-BEGIN VERIFY SCRIPT-
sed -i 's/BIP9DeploymentInfo/VBDeploymentInfo/' ./src/*.h ./src/*.cpp ./src/*/*.h ./src/*/*.cpp ./src/*/*/*.h ./src/*/*/*.cpp ;
-END VERIFY SCRIPT-
2017-05-30 19:21:52 +02:00
Matthew Zipkin
557c9a68fb
RPC: getblockchaininfo: BIP9 stats
...
add RPC tests for BIP9 counting stats
2017-03-24 16:57:05 -07:00
Suhas Daftuar
abe7b3d3ab
Don't require segwit in getblocktemplate for segwit signalling or mining
...
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.
2017-03-14 06:43:37 -04:00
mruddy
fc146095d2
RPC: augment getblockchaininfo bip9_softforks data
2016-10-19 09:08:39 -04:00