Age | Commit message (Collapse) | Author |
|
header
e952d7557eaf2610e302e9d70381ef057d07f6bf netinfo: clarify client and server versions in header (Jon Atack)
Pull request description:
Clarify in -netinfo output that both the client and the server versions are provided.
before
```
Bitcoin Core v22.0.0rc3 - 70016/Satoshi:22.99.0/
```
after
```
Bitcoin Core client v22.0.0rc3 - server 70016/Satoshi:22.99.0/
```
Closes #22873.
ACKs for top commit:
benthecarman:
utACK e952d7557eaf2610e302e9d70381ef057d07f6bf
prayank23:
ACK https://github.com/bitcoin/bitcoin/pull/22894/commits/e952d7557eaf2610e302e9d70381ef057d07f6bf
Zero-1729:
tACK e952d7557eaf2610e302e9d70381ef057d07f6bf
Tree-SHA512: 3e817892d398aabacb1401fd5b1816c4d4f563b4f8cf1096bdb8b53f7c4ef82d4caee09f5c7724f1fe292f837434a332acefba735152ed24a238bb6f006df909
|
|
fa0937de35176fdcf637e1af16be4469725e60cc test: Rename bitcoin-util-test.py to util/test_runner.py (MarcoFalke)
fa050bbc0ad479063735b0325daa717ded404c8f test: Update test README and lint script (MarcoFalke)
Pull request description:
* Remove unused `yq`
* Update fuzzing docs
ACKs for top commit:
Saviour1001:
ACK <code>[fa0937d](https://github.com/bitcoin/bitcoin/pull/22861/commits/fa0937de35176fdcf637e1af16be4469725e60cc)</code>
practicalswift:
cr ACK fa0937de35176fdcf637e1af16be4469725e60cc
fanquake:
ACK fa0937de35176fdcf637e1af16be4469725e60cc
Tree-SHA512: 6b148d838e1fcf219ab92e579948e34ea7ce8b4692a3d28bb2a51aaa34cbc7cdbd79e72ce787b485fdf524e5b3521b033692583602d4e379bd160e0e41d66e28
|
|
msvc-autogen.py
d1267fdbb01120827785451d6468137a0bed46c5 build: Update default platform toolset in msvc-autogen.py (Hennadii Stepanov)
Pull request description:
The platform toolset was updated from v141 to v142 in #17364.
ACKs for top commit:
sipsorcery:
ACK d1267fdbb01120827785451d6468137a0bed46c5.
Tree-SHA512: 390dc4876948af7f6b9f26eb1e64262f6386c2541a4647a6cb7abd8f1283c63ffbf5efba5e67a8075f0085a0557fc3f1b41e70f3ede0e8cef60d0fe2d6bf3be8
|
|
unreadable
2b071265c37da22f15769945fd159b50a14792a3 error if settings.json exists, but is unreadable (Tyler Chambers)
Pull request description:
If settings.json exists, but is unreadable, we should error instead of overwriting.
Fixes #22571
ACKs for top commit:
Zero-1729:
tACK 2b071265c37da22f15769945fd159b50a14792a3
ShaMan239:
tACK 2b071265c37da22f15769945fd159b50a14792a3
prayank23:
tACK https://github.com/bitcoin/bitcoin/pull/22591/commits/2b071265c37da22f15769945fd159b50a14792a3
ryanofsky:
Code review ACK 2b071265c37da22f15769945fd159b50a14792a3. Thanks for the fix! Note that PR https://github.com/bitcoin-core/gui/pull/379 will change the appearance of dialogs shown in screenshots above. So it could be interesting to test the two PRs together (but current testing seems more than sufficient)
theStack:
ACK 2b071265c37da22f15769945fd159b50a14792a3 📁
Tree-SHA512: 6f7f96ce8a13213d0335198a2245d127264495c877105058d1503252435915b332a6e55068ac21088f4c0c017d564689f4956213328d5bdee81d73711efc5511
|
|
|
|
locale-independent alternatives (#18130 rebased)
696c76d6604c9c4faddfc4b6684e2788bb577ba6 tests: Add TrimString(...) tests (practicalswift)
4bf18b089e1bb1f3ab513cbdf6674bd1074f4621 Replace use of boost::trim_right with locale-independent TrimString (Ben Woosley)
93551862a18965bcee0c883c54807e8726e2f50f Replace use of boost::trim use with locale-independent TrimString (Ben Woosley)
Pull request description:
This is [#18130 rebased](https://github.com/bitcoin/bitcoin/pull/18130#issuecomment-900158759).
> `TrimString` is an existing alternative.
> Note `TrimString` uses `" \f\n\r\t\v"` as the pattern, which is consistent with the default behavior of `std::isspace`. See: https://en.cppreference.com/w/cpp/string/byte/isspace
ACKs for top commit:
jb55:
utACK 696c76d6604c9c4faddfc4b6684e2788bb577ba6
practicalswift:
ACK 696c76d6604c9c4faddfc4b6684e2788bb577ba6
jonatack:
ACK 696c76d6604c9c4faddfc4b6684e2788bb577ba6
theStack:
Code-review ACK 696c76d6604c9c4faddfc4b6684e2788bb577ba6
Tree-SHA512: 6a70e3777602dfa65a60353e5c6874eb951e4a806844cd4bdaa4237cad980a4f61ec205defc05a29f9707776835975838f6cc635259c42adfe37ceb02ba9358d
|
|
The platform toolset was updated from v141 to v142 in #17364.
|
|
fa7e6c56f58678b310898a158053ee9ff8b27fe7 Add LIFETIMEBOUND to InitializeChainstate (MarcoFalke)
fa5c896724bb359b4b9a3f89580272bfe5980c1b Add LIFETIMEBOUND to CScript where needed (MarcoFalke)
Pull request description:
Without this, stack-use-after-scope can only be detected at runtime with ASan or code review, both of which are expensive.
Use `LIFETIMEBOUND` to turn this error into a compile warning.
See https://releases.llvm.org/12.0.0/tools/clang/docs/AttributeReference.html#lifetimebound
Example:
```cpp
const CScript a{WITH_LOCK(::cs_main, return CScript{} << OP_0 << OP_1)};
```
Before: (no warning)
After:
```
warning: returning reference to local temporary object [-Wreturn-stack-address]
const CScript a{WITH_LOCK(::cs_main, return CScript{} << OP_0 << OP_1)};
^~~~~~~~~
./sync.h:276:65: note: expanded from macro 'WITH_LOCK'
#define WITH_LOCK(cs, code) [&]() -> decltype(auto) { LOCK(cs); code; }()
^~~~
ACKs for top commit:
theuni:
utACK fa7e6c56f58678b310898a158053ee9ff8b27fe7.
jonatack:
Light ACK fa7e6c56f58678b310898a158053ee9ff8b27fe7 debug build with clang 13, reproduced the example compiler warning in the pull description, and briefly looked at `clang::lifetimebound` support in earlier versions of clang; it is in clang 7 (https://releases.llvm.org/7.0.0/tools/clang/docs/AttributeReference.html#lifetimebound-clang-lifetimebound), did not see references to it in earlier docs
Tree-SHA512: e915acdc4532445205b7703fab61a5d682231ace78ecfb274cb8523ca2bddefd85828f50ac047cfb1afaff92a331f5f7b5a1472539f999e30f7cf8ac8c3222f3
|
|
tx test
fa1b08eb1413d547b5e322f20e6907b2f827a162 test: Always clear reject reason in IsStandard tx test (MarcoFalke)
Pull request description:
For some tests the reject reason wasn't cleared between runs and thus subsequent tests might (theoretically) fail to verify the correct reject reason.
ACKs for top commit:
benthecarman:
ACK fa1b08eb1413d547b5e322f20e6907b2f827a162
theStack:
Code-review ACK fa1b08eb1413d547b5e322f20e6907b2f827a162
Tree-SHA512: fcb727a690f92a4cf06127c302ba464f1e8cb997498e4f7fd9e210d193559b07e6efdb9d5c8a0bef3fe643bdfd5fedd431aaace20978dd49e56b8e770cb9f930
|
|
|
|
|
|
files added #21207
b11a195ef450bd138aa03204a5e74fdd3ddced26 refactor: Detach wallet transaction methods (followup for move-only) (Russell Yanofsky)
Pull request description:
This makes `CWallet` and `CWalletTx` methods in `spend.cpp` and `receive.cpp` files into standalone functions.
It's a followup to [#21207 MOVEONLY: CWallet transaction code out of wallet.cpp/.h](https://github.com/bitcoin/bitcoin/pull/21207), which moved code from `wallet.cpp` to new `spend.cpp` and `receive.cpp` files.
There are no changes in behavior. This is just making methods into functions and removing circular dependencies created by #21207. There are no comment or documentation changes, either. Removed comments from `transaction.h` are just migrated to `spend.h`, `receive.h`, and `wallet.h`.
---
This commit was split off from #21206 so there are a few earlier review comments there
ACKs for top commit:
achow101:
ACK b11a195ef450bd138aa03204a5e74fdd3ddced26
Sjors:
utACK b11a195ef450bd138aa03204a5e74fdd3ddced26
meshcollider:
light ACK b11a195ef450bd138aa03204a5e74fdd3ddced26
Tree-SHA512: 75ce818d3f03b728b14b12e2d21bd20b7be73978601989cb37ff98254393300d1bb7823281449cd3d9e40756d67d42bd9a46bbdafd2e8baa95aaf2cb1c84549f
|
|
ea98d9c2eff86e6537f35ac4381ac169daacde36 rpc: fix/add missing RPCExamples for "Util" RPCs (Sebastian Falbesoner)
Pull request description:
Similar to https://github.com/bitcoin/bitcoin/pull/18398, this PR gives the RPCExamples in the RPC category "Util" (that currently contains `createmultisig`, `deriveaddresses`, `estimatesmartfee`, `getdescriptorinfo`, `signmessagewithprivkey`, `validateaddress`, `verifymessage`) some love by fixing one broken and adding three missing examples:
- fixed `HelpExampleRpc` for `createmultisig` (disturbing escape characters and quotation marks)
- added missing `HelpExampleRpc` for
- `deriveaddresses` (also put descriptor in a new string constant)
- `estimatesmartfee`
- `getdescriptorinfo` (also put descriptor in a new string constant)
Output for `createmultisig` example on the master branch:
```
$ curl --user __cookie__ --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "createmultisig", "params": [2, "[\"03789ed0bb717d88f7d321a368d905e7430207ebbd82bd342cf11ae157a7ace5fd\",\"03dbc6764b8884a92e871274b87583e6d5c2a58819473e17e107ef3f6aa5a61626\"]"]}' -H 'content-type: text/plain;' http://127.0.0.1:8332/
Enter host password for user '__cookie__':
{"result":null,"error":{"code":-1,"message":"JSON value is not an array as expected"},"id":"curltest"}
```
Output for `createmultisig` example on the PR branch:
```
$ curl --user __cookie__ --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "createmultisig", "params": [2, ["03789ed0bb717d88f7d321a368d905e7430207ebbd82bd342cf11ae157a7ace5fd","03dbc6764b8884a92e871274b87583e6d5c2a58819473e17e107ef3f6aa5a61626"]]}' -H 'content-type: text/plain;' http://127.0.0.1:8332/
Enter host password for user '__cookie__':
{"result":{"address":"3QsFXpFJf2ZY6GLWVoNFFd2xSDwdS713qX","redeemScript":"522103789ed0bb717d88f7d321a368d905e7430207ebbd82bd342cf11ae157a7ace5fd2103dbc6764b8884a92e871274b87583e6d5c2a58819473e17e107ef3f6aa5a6162652ae","descriptor":"sh(multi(2,03789ed0bb717d88f7d321a368d905e7430207ebbd82bd342cf11ae157a7ace5fd,03dbc6764b8884a92e871274b87583e6d5c2a58819473e17e107ef3f6aa5a61626))#4djp057k"},"error":null,"id":"curltest"}
```
ACKs for top commit:
jonatack:
ACK ea98d9c2eff86e6537f35ac4381ac169daacde36 looked at the code, rebased to master, ran the helps, did not try running the added json-rpc examples
Tree-SHA512: d6ecb6da66f19517065453357d210102e2cc9f1f8037aeb6a9177ff036d0c21773dddf5e0acdbc71edbbde3026e4d1e7ce7c0935cd3e023c60f34e1b173b3299
|
|
relay_enabled} and relaytxes data
218862a01848f69d54380c780bb5eae6dfdb1416 Display peers in -netinfo that we don't relay addresses to (Jon Atack)
3834e23b251ed7b4a47bbb981faba65b97ecbba0 Display peers in -netinfo that request we not relay transactions (Jon Atack)
0a9ee3a2c787e97213a0456b0d6253c549b71e09 Simplify a few conditionals in -netinfo (Jon Atack)
5eeea8e2575a36587e70743af3bd7c2d87b8cf36 Add addr_processed and addr_rate_limited stats to -netinfo (Jon Atack)
Pull request description:
Update CLI -netinfo to display the getpeerinfo `addr_processed`, `addr_rate_limited`, `addr_relay_enabled` and `relaytxes` data with auto-adjusting column widths.
```
$ ./src/bitcoin-cli -netinfo help
txn Time since last novel transaction received from the peer and accepted into our mempool, in minutes
"*" - the peer requested we not relay transactions to it (relaytxes is false)
addrp Total number of addresses processed, excluding those dropped due to rate limiting
"." - we do not relay addresses to this peer (addr_relay_enabled is false)
addrl Total number of addresses dropped due to rate limiting
```
![Screenshot from 2021-08-22 14-31-40](https://user-images.githubusercontent.com/2415484/130355514-f6fd4f21-79d6-463b-9791-de01ebef20b1.png)
ACKs for top commit:
0xB10C:
Code review and tested ACK 218862a01848f69d54380c780bb5eae6dfdb1416
Zero-1729:
re-tACK 218862a01848f69d54380c780bb5eae6dfdb1416
vasild:
ACK 218862a01848f69d54380c780bb5eae6dfdb1416
jarolrod:
tACK 218862a01848f69d54380c780bb5eae6dfdb1416
Tree-SHA512: bb9da4bdd71859b234f6e4c2c46257a57ef0d0e0b363d2b8fded128bcaa28132f64a0a4651c622e1de1e3b7c05c7587a4369e9e79799895884fda9745c63409d
|
|
replaced via parent
fa2e9de59f189fe37c3eeb63d79e09983e40a993 test: Check that non-signaling BIP125 tx can be replaced via parent (MarcoFalke)
Pull request description:
While `optout_child_tx` in the `test_no_inherited_signaling` test is reported as "bip125-replaceable", it is not *directly* replaceable. For example by bumping the fee of `optout_child_tx`. However, it is still replaceable *indirectly* via it's BIP-125 signalling parent.
Clarify this by extending the test.
ACKs for top commit:
mjdietzx:
Tested ACK fa2e9de59f189fe37c3eeb63d79e09983e40a993
josibake:
ACK https://github.com/bitcoin/bitcoin/commit/fa2e9de59f189fe37c3eeb63d79e09983e40a993
Tree-SHA512: b3608beae743dcb6152df4d2cfe1c0af6b4404ba3837f73e1d1431bd7c637f0c7fab0379aaab2218d5cd63e71070a079c0595ec031056058e8d3c933c2bae0a9
|
|
To normalize the name of all three test runners (fuzz, functional, util).
|
|
|
|
ab9c34237ab7b056394e0bd1f7cb131ffd95754c release: remove gitian (fanquake)
Pull request description:
Note that this doesn't yet touch any glibc back compat related code.
ACKs for top commit:
laanwj:
Code review ACK ab9c34237ab7b056394e0bd1f7cb131ffd95754c
Tree-SHA512: 8e2fe3ec1097f54bb11ab9136b43818d90eab5dbb0a663ad6a552966ada4bdb49cc12ff4e66f0ec0ec5400bda5c81f3a3ce70a9ebb6fe1e0db612da9f00a51a7
|
|
ae4ad1a1259886fe32a447749700fc132f387930 msvc: update bitcoin_config.h defines (fanquake)
Pull request description:
While not many of these are used, some, like `HAVE_DLLEXPORT_ATTRIBUTE`, are used when creating libbitcoinconsensus.
Given this file is static, also just remove everything that is commented out.
ACKs for top commit:
sipsorcery:
tACK ae4ad1a1259886fe32a447749700fc132f387930.
Tree-SHA512: fe9bb3381f9219617092fde57c7db25e8f9a5a2ecb9a77a8d61d9ae74ffecd93024aaa17fb6685cda74d20efc5975feb12f9817bceb895f91b79fc5cbee895ca
|
|
|
|
97cea1a93a26d535f9bad038b559e50437ea54f7 policy: unit test Segwit dust thresholds (Antoine Poinsot)
Pull request description:
This is the unit testing part of #22779, hence without the threshold modification.
ACKs for top commit:
MarcoFalke:
cr ACK 97cea1a93a26d535f9bad038b559e50437ea54f7
benthecarman:
crACK 97cea1a93a26d535f9bad038b559e50437ea54f7
Tree-SHA512: 96fb194709ae44364455eb920ed3ecff2e11e5327e0a72b9eeec9f9445894302099a0c4ffb1e0c8d4d523c0bfe06c57f1ebb0c03cf3389a73f518e3b174c45aa
|
|
|
|
Note the only use of readStdin is fed to DecodeHexTx, which fails in
IsHex on non-hex characters as recorded in p_util_hexdigit.
|
|
|
|
plugin for Linux
5559cf1460c98eb6998d99784f27de85f95f14d0 doc: Add packages that provide Qt Wayland plugin for Linux (Hennadii Stepanov)
Pull request description:
When building on Linux using system packages (without depends) the support of Wayland protocol for modern desktop environments (e.g., GNOME, KDE Plasma) depends on the presence of the installed Qt Wayland plugin which is loaded dynamically at the GUI startup.
1. On Debian/Ubuntu, the [`qtwayland5`](https://packages.ubuntu.com/focal/qtwayland5) package is required (also see this [patch](https://codereview.qt-project.org/c/qt/qtbase/+/231227), and this [doc](https://wiki.debian.org/Wayland#Qt_.28supported_since_5.29)):
- with `qtwayland5` installed:
```
$ QT_QPA_PLATFORM="wayland;xcb" ./src/qt/bitcoin-qt -printtoconsole
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
2021-08-05T09:51:31Z Bitcoin Core version v22.99.0-c4b42aa4ffa1 (release build)
2021-08-05T09:51:31Z Qt 5.11.3 (dynamic), plugin=wayland (dynamic)
2021-08-05T09:51:31Z No static plugins.
2021-08-05T09:51:31Z Style: fusion / QFusionStyle
2021-08-05T09:51:31Z System: Debian GNU/Linux 10 (buster), x86_64-little_endian-lp64
...
```
- without `qtwayland5`:
```
$ QT_QPA_PLATFORM="wayland;xcb" ./src/qt/bitcoin-qt -printtoconsole
Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
qt.qpa.plugin: Could not find the Qt platform plugin "wayland" in ""
2021-08-05T09:48:55Z Bitcoin Core version v22.99.0-c4b42aa4ffa1 (release build)
2021-08-05T09:48:55Z Qt 5.11.3 (dynamic), plugin=xcb (dynamic)
2021-08-05T09:48:55Z No static plugins.
2021-08-05T09:48:55Z Style: fusion / QFusionStyle
2021-08-05T09:48:55Z System: Debian GNU/Linux 10 (buster), x86_64-little_endian-lp64
2021-08-05T09:48:55Z Screen: XWAYLAND0 1920x1200, pixel ratio=1.0
...
```
2. On Fedora, the [`qt5-qtwayland`](https://fedora.pkgs.org/34/fedora-x86_64/qt5-qtwayland-5.15.2-4.fc34.x86_64.rpm.html) package is required:
- with `qt5-qtwayland` installed:
```
$ ./src/qt/bitcoin-qt -printtoconsole
QSocketNotifier: Can only be used with threads started with QThread
2021-08-05T08:41:03Z Bitcoin Core version v22.99.0-c4b42aa4ffa1 (release build)
2021-08-05T08:41:03Z Qt 5.15.2 (dynamic), plugin=wayland (dynamic)
2021-08-05T08:41:03Z No static plugins.
2021-08-05T08:41:03Z Style: fusion / QFusionStyle
2021-08-05T08:41:03Z System: Fedora 34 (Workstation Edition), x86_64-little_endian-lp64
...
```
- without `qt5-qtwayland`:
```
$ ./src/qt/bitcoin-qt -printtoconsole
qt.qpa.plugin: Could not find the Qt platform plugin "wayland" in ""
2021-08-05T07:50:41Z Bitcoin Core version v22.99.0-c4b42aa4ffa1 (release build)
2021-08-05T07:50:41Z Qt 5.15.2 (dynamic), plugin=xcb (dynamic)
2021-08-05T07:50:41Z No static plugins.
2021-08-05T07:50:41Z Style: fusion / QFusionStyle
2021-08-05T07:50:41Z System: Fedora 34 (Workstation Edition), x86_64-little_endian-lp64
2021-08-05T07:50:41Z Screen: XWAYLAND0 1920x1200, pixel ratio=1.0
...
```
ACKs for top commit:
fanquake:
ACK 5559cf1460c98eb6998d99784f27de85f95f14d0 - I don't think there's any harm to point this out in our Linux build docs. It's not changing our binaries or dependencies in any way.
Tree-SHA512: e26856586b29540b55c12905a091408e95ce59ea2c952520086b41138c955fba1b78e95e868f75205af07c6eccae51644177f7165d837ae058aaf0c0abf3ccf5
|
|
While not many of these are used, some, like HAVE_DLLEXPORT_ATTRIBUTE, are used
when creating libbitcoinconsensus.
Given this file is static, also just remove everything that is commented out.
|
|
fa18553d382a7d8c447cd6698b36e293fb7ecf1f fuzz: Remove addrdb fuzz target (MarcoFalke)
Pull request description:
The target has several issues:
* It is named incorrectly (`addrdb`, but it constructs a `CBanEntry`)
* It doesn't do anything meaningful, other than consuming one integer and passing it to a constructor
* It consumes CPU time that can be used for the other targets
* It is redundant with the banman fuzz target
Fix all by removing it.
ACKs for top commit:
amitiuttarwar:
ACK fa18553d382a7d8c447cd6698b36e293fb7ecf1f, thanks for the cleanup
Tree-SHA512: 3f8944d3f80913bf466c03062fed070e96073fb72d0938b2bc9a2586960c86879d6f251e16fd81cfeb4e6685ff9eef6bccb25cd3901b218a100c90f25a3c9240
|
|
56a42f10f452f0ac0e3e333646a8effcbebf6b30 Stricter BIP32 decoding and test vector 5 (Pieter Wuille)
Pull request description:
This adds detection for various edge cases when decoding BIP32 extended pubkeys/privkeys, and tests them using the proposed https://github.com/bitcoin/bips/pull/921 BIP32 test vector 5.
ACKs for top commit:
darosior:
utACK 56a42f10f452f0ac0e3e333646a8effcbebf6b30 -- Had to implement essentially the same fix in python-bip32.
kristapsk:
ACK 56a42f10f452f0ac0e3e333646a8effcbebf6b30. Checked that test vectors are the same as in BIP32 and that tests pass.
Tree-SHA512: 5cc800cc9dc10e43ae89b659ce4f44026d04ec3cabac4eb5122d2e72ec2ed66cd5ace8c7502259e469a9ecaa5ecca2457e55dfe5fedba59948ecbf6673af67a7
|
|
76f031b050a4bca093845d45e0d05f56d7242ae1 build: fix unoptimized libraries in depends (fanquake)
Pull request description:
We need to append-to rather than set CXXFLAGS, otherwise we loose `-O2` & `-pipe` from our defaults. Currently this results in zeromq being built without optimizations at all (or whatever the compiler would default too, essentially always `-O0`).
Bdb is the same, for the CXX portion of its code. C code has been built with `-O2`. Boost has actually been unaffected because it receives `-O3` from it's own build flags.
Noticed while reworking #22380. For bdb & zeromq, I assume (haven't checked) this has been the case since #7165.
You can inspect the effcts in bitcoind comparing a function from a unoptimised library, i.e libzmq.
Build bitcoind with zeromq from depends (7be143a960e2bb9ac81144f55c45731c1bb209c5):
```
gmake -C depends NO_QT=1 NO_UPNP=1 NO_NATPMP=1 NO_WALLET=1 -j9
./autogen.sh
CONFIG_SITE=/path/to/share/config.site ./configure
gmake -C src bitcoind -j9
```
Find a zeromq function:
```bash
nm -C src/bitcoind | rg zmq
...
000000010053a7e0 T _zmq_ctx_new
```
Disassemble it:
```bash
lldb src/bitcoind
disassemble -a 000000010053a7e0
...
bitcoind`zmq_ctx_new:
bitcoind[0x10053a7e0] <+0>: pushq %rbp
bitcoind[0x10053a7e1] <+1>: movq %rsp, %rbp
bitcoind[0x10053a7e4] <+4>: subq $0x50, %rsp
bitcoind[0x10053a7e8] <+8>: callq 0x1004b2ee0 ; zmq::initialize_network()
bitcoind[0x10053a7ed] <+13>: testb $0x1, %al
bitcoind[0x10053a7ef] <+15>: jne 0x10053a802 ; <+34>
bitcoind[0x10053a7f5] <+21>: movq $0x0, -0x8(%rbp)
bitcoind[0x10053a7fd] <+29>: jmp 0x10053a8e8 ; <+264>
bitcoind[0x10053a802] <+34>: movq 0xadab7(%rip), %rsi ; (void *)0x0000000000000000
bitcoind[0x10053a809] <+41>: movl $0x2b8, %edi ; imm = 0x2B8
bitcoind[0x10053a80e] <+46>: callq 0x100556c58 ; symbol stub for: operator new(unsigned long, std::nothrow_t const&)
bitcoind[0x10053a813] <+51>: xorl %ecx, %ecx
bitcoind[0x10053a815] <+53>: movl %ecx, %edx
bitcoind[0x10053a817] <+55>: movb $0x0, -0x19(%rbp)
bitcoind[0x10053a81b] <+59>: cmpq $0x0, %rax
bitcoind[0x10053a81f] <+63>: movq %rax, -0x38(%rbp)
bitcoind[0x10053a823] <+67>: movq %rdx, -0x40(%rbp)
bitcoind[0x10053a827] <+71>: je 0x10053a858 ; <+120>
bitcoind[0x10053a82d] <+77>: movq -0x38(%rbp), %rax
bitcoind[0x10053a831] <+81>: movq %rax, -0x18(%rbp)
bitcoind[0x10053a835] <+85>: movb $0x1, -0x19(%rbp)
bitcoind[0x10053a839] <+89>: movq -0x38(%rbp), %rdi
bitcoind[0x10053a83d] <+93>: movq %rax, -0x48(%rbp)
bitcoind[0x10053a841] <+97>: callq 0x100497aa0 ; zmq::ctx_t::ctx_t()
bitcoind[0x10053a846] <+102>: jmp 0x10053a84b ; <+107>
bitcoind[0x10053a84b] <+107>: movq -0x48(%rbp), %rax
bitcoind[0x10053a84f] <+111>: movq %rax, -0x40(%rbp)
bitcoind[0x10053a853] <+115>: jmp 0x10053a858 ; <+120>
bitcoind[0x10053a858] <+120>: movq -0x40(%rbp), %rax
bitcoind[0x10053a85c] <+124>: movq %rax, -0x10(%rbp)
bitcoind[0x10053a860] <+128>: cmpq $0x0, -0x10(%rbp)
bitcoind[0x10053a865] <+133>: je 0x10053a8e0 ; <+256>
bitcoind[0x10053a86b] <+139>: movq -0x10(%rbp), %rdi
bitcoind[0x10053a86f] <+143>: callq 0x100497ee0 ; zmq::ctx_t::valid() const
bitcoind[0x10053a874] <+148>: testb $0x1, %al
bitcoind[0x10053a876] <+150>: jne 0x10053a8db ; <+251>
bitcoind[0x10053a87c] <+156>: movq -0x10(%rbp), %rax
bitcoind[0x10053a880] <+160>: cmpq $0x0, %rax
bitcoind[0x10053a884] <+164>: movq %rax, -0x50(%rbp)
bitcoind[0x10053a888] <+168>: je 0x10053a8a3 ; <+195>
bitcoind[0x10053a88e] <+174>: movq -0x50(%rbp), %rdi
bitcoind[0x10053a892] <+178>: callq 0x100497ec0 ; zmq::ctx_t::~ctx_t()
bitcoind[0x10053a897] <+183>: movq -0x50(%rbp), %rax
bitcoind[0x10053a89b] <+187>: movq %rax, %rdi
bitcoind[0x10053a89e] <+190>: callq 0x100556c3a ; symbol stub for: operator delete(void*)
bitcoind[0x10053a8a3] <+195>: movq $0x0, -0x8(%rbp)
bitcoind[0x10053a8ab] <+203>: jmp 0x10053a8e8 ; <+264>
bitcoind[0x10053a8b0] <+208>: movq %rax, -0x28(%rbp)
bitcoind[0x10053a8b4] <+212>: movl %edx, -0x2c(%rbp)
bitcoind[0x10053a8b7] <+215>: testb $0x1, -0x19(%rbp)
bitcoind[0x10053a8bb] <+219>: jne 0x10053a8c6 ; <+230>
bitcoind[0x10053a8c1] <+225>: jmp 0x10053a8d6 ; <+246>
bitcoind[0x10053a8c6] <+230>: movq 0xad9f3(%rip), %rsi ; (void *)0x0000000000000000
bitcoind[0x10053a8cd] <+237>: movq -0x18(%rbp), %rdi
bitcoind[0x10053a8d1] <+241>: callq 0x100556c40 ; symbol stub for: operator delete(void*, std::nothrow_t const&)
bitcoind[0x10053a8d6] <+246>: jmp 0x10053a8f2 ; <+274>
bitcoind[0x10053a8db] <+251>: jmp 0x10053a8e0 ; <+256>
bitcoind[0x10053a8e0] <+256>: movq -0x10(%rbp), %rax
bitcoind[0x10053a8e4] <+260>: movq %rax, -0x8(%rbp)
bitcoind[0x10053a8e8] <+264>: movq -0x8(%rbp), %rax
bitcoind[0x10053a8ec] <+268>: addq $0x50, %rsp
bitcoind[0x10053a8f0] <+272>: popq %rbp
bitcoind[0x10053a8f1] <+273>: retq
bitcoind[0x10053a8f2] <+274>: movq -0x28(%rbp), %rdi
bitcoind[0x10053a8f6] <+278>: callq 0x100556856 ; symbol stub for: _Unwind_Resume
bitcoind[0x10053a8fb] <+283>: ud2
bitcoind[0x10053a8fd] <+285>: nopl (%rax)
```
Cleanup and repeat after changing the zeromq cxxflags to be `$(package)_cxxflags+=-std=c++17`:
```bash
gmake clean
gmake -C depends NO_QT=1 NO_UPNP=1 NO_NATPMP=1 NO_WALLET=1 -j9
gmake -C src bitcoind -j9
nm -C src/bitcoind | rg zmq
...
00000001004d5170 T _zmq_ctx_new
```
Disassemble the same function which has now been built with `-O2`:
```bash
lldb src/bitcoind
disassemble -a 00000001004d5170
...
bitcoind`zmq_ctx_new:
bitcoind[0x1004d5170] <+0>: pushq %rbp
bitcoind[0x1004d5171] <+1>: movq %rsp, %rbp
bitcoind[0x1004d5174] <+4>: pushq %r14
bitcoind[0x1004d5176] <+6>: pushq %rbx
bitcoind[0x1004d5177] <+7>: callq 0x10049cbc0 ; zmq::initialize_network()
bitcoind[0x1004d517c] <+12>: testb %al, %al
bitcoind[0x1004d517e] <+14>: je 0x1004d51bd ; <+77>
bitcoind[0x1004d5180] <+16>: movq 0xab139(%rip), %rsi ; (void *)0x0000000000000000
bitcoind[0x1004d5187] <+23>: movl $0x2b8, %edi ; imm = 0x2B8
bitcoind[0x1004d518c] <+28>: callq 0x1004f0e5a ; symbol stub for: operator new(unsigned long, std::nothrow_t const&)
bitcoind[0x1004d5191] <+33>: testq %rax, %rax
bitcoind[0x1004d5194] <+36>: je 0x1004d51bd ; <+77>
bitcoind[0x1004d5196] <+38>: movq %rax, %rbx
bitcoind[0x1004d5199] <+41>: movq %rax, %rdi
bitcoind[0x1004d519c] <+44>: callq 0x100493400 ; zmq::ctx_t::ctx_t()
bitcoind[0x1004d51a1] <+49>: movq %rbx, %rdi
bitcoind[0x1004d51a4] <+52>: callq 0x1004936e0 ; zmq::ctx_t::valid() const
bitcoind[0x1004d51a9] <+57>: testb %al, %al
bitcoind[0x1004d51ab] <+59>: jne 0x1004d51bf ; <+79>
bitcoind[0x1004d51ad] <+61>: movq %rbx, %rdi
bitcoind[0x1004d51b0] <+64>: callq 0x1004936d0 ; zmq::ctx_t::~ctx_t()
bitcoind[0x1004d51b5] <+69>: movq %rbx, %rdi
bitcoind[0x1004d51b8] <+72>: callq 0x1004f0e42 ; symbol stub for: operator delete(void*)
bitcoind[0x1004d51bd] <+77>: xorl %ebx, %ebx
bitcoind[0x1004d51bf] <+79>: movq %rbx, %rax
bitcoind[0x1004d51c2] <+82>: popq %rbx
bitcoind[0x1004d51c3] <+83>: popq %r14
bitcoind[0x1004d51c5] <+85>: popq %rbp
bitcoind[0x1004d51c6] <+86>: retq
bitcoind[0x1004d51c7] <+87>: movq %rax, %r14
bitcoind[0x1004d51ca] <+90>: movq 0xab0ef(%rip), %rsi ; (void *)0x0000000000000000
bitcoind[0x1004d51d1] <+97>: movq %rbx, %rdi
bitcoind[0x1004d51d4] <+100>: callq 0x1004f0e48 ; symbol stub for: operator delete(void*, std::nothrow_t const&)
bitcoind[0x1004d51d9] <+105>: movq %r14, %rdi
bitcoind[0x1004d51dc] <+108>: callq 0x1004f0a6a ; symbol stub for: _Unwind_Resume
bitcoind[0x1004d51e1] <+113>: ud2
bitcoind[0x1004d51e3] <+115>: nopw %cs:(%rax,%rax)
bitcoind[0x1004d51ed] <+125>: nopl (%rax)
```
ACKs for top commit:
theuni:
ACK 76f031b050a4bca093845d45e0d05f56d7242ae1.
Tree-SHA512: 0f71d98387d88f36bd22fd4204f8116efc6d540b45a722281483f1f19f36a26daa197458006af6a35d80a52dd8f13c714c4c816ad6c279d6e52872c948fab987
|
|
`FORCE_VERSION`
96cc6bb04f7e173e1f7637b780ac00fc75486671 guix/prelude: Override VERSION with FORCE_VERSION (Carl Dong)
Pull request description:
```
Previously, if the builder exported $VERSION in their environment (as
past Gitian-building docs told them to), but their HEAD does not
actually point to v$VERSION, their build outputs will differ from those
of other builders.
This is because the contrib/guix/guix-* scripts only ever act on the
current git worktree, and does not try to check out $VERSION if $VERSION
is set in the environment.
Setting $VERSION only makes the scripts pretend like the current
worktree is $VERSION.
This problem was seen in jonatack's attestation for all.SHA256SUMS,
where only his bitcoin-22.0rc3-osx-signed.dmg differed from everyone
else's.
Here is my deduced sequence of events:
1. Aug 27th: He guix-builds 22.0rc3 and uploads his attestations up to
guix.sigs
2. Aug 30th, sometime after POSIX time 1630310848: he pulls the latest
changes from master in the same worktree where he guix-built 22.0rc3
and ends up at 7be143a960e2
3. Aug 30th, sometime before POSIX time 1630315907: With his worktree
still on 7be143a960e2, he guix-codesigns. Normally, this would result
in outputs going in guix-build-7be143a960e2, but he had
VERSION=22.0rc3 in his environment, so the guix-* scripts pretended
like he was building 22.0rc3, and used 22.0rc3's guix-build directory
to locate un-codesigned outputs and dump codesigned ones.
However, our SOURCE_DATE_EPOCH defaults to the POSIX time of HEAD
(7be143a960e2), which made all timestamps in the resulting codesigned
DMG 1630310848, 7be143a960e2's POSIX timestamp. This differs from the
POSIX timestamp of 22.0rc3, which is 1630348517. Note that the
windows codesigning procedure does not consider SOURCE_DATE_EPOCH.
We resolve this by only allowing VERSION overrides via the FORCE_VERSION
environment variable.
```
Please ignore the branch name, it's not relevant to the change.
ACKs for top commit:
fanquake:
ACK 96cc6bb04f7e173e1f7637b780ac00fc75486671 - Also makes sense given there are Guix build guides recommending to set `VERSION` as part of the process. i.e https://gist.github.com/hebasto/7293726cbfcd0b58e1cfd5418316cee3.
Tree-SHA512: 9dca3fc637ce11049286a3ebee3cd61cce2125fc51d31cf472fbed7f659e1846fc44062753e0e71bfaec9e7fbab6f040bb88d9d4bc4f8acb28c6890563584acf
|
|
d9d3ec07cfe45cfa55028cc879dc8a55aecb4d3c Consolidate XOnlyPubKey lookup hack (Andrew Chow)
Pull request description:
The places where we need to lookup information for a XOnlyPubKey
currently implement a hack which makes both serializations of the full
pubkey in order to try the CKeyIDs for the lookup functions. Instead of
duplicating this everywhere it is needed, we can consolidate the CKeyID
generation into a function, and then have wrappers around GetPubKey,
GetKey, and GetKeyOrigin which takes the XOnlyPubKey, retrieves all of
the CKeyIDs (using the new GetKeyIDs() function in XOnlyPubKey), and
tries their respective underlying lookup function.
Split from #22364
ACKs for top commit:
S3RK:
Code Review reACK d9d3ec0
Zero-1729:
re-crACK d9d3ec0
theStack:
re-ACK d9d3ec07cfe45cfa55028cc879dc8a55aecb4d3c
meshcollider:
Code review + functional test run ACK d9d3ec07cfe45cfa55028cc879dc8a55aecb4d3c
Tree-SHA512: 21a7f6d37fad74483a38006f82b3558337fe9ed30e0b4392e6fff82c22251a42ac996b43f06cdaa9289ee34a768e181d87aa4208b5538e36ae4977954e1fa6a0
|
|
d2a09c83554cec864a27e704cf2a0d513691a567 doc: mention bech32m/BIP350 in doc/descriptors.md (Pieter Wuille)
Pull request description:
As it says on the tin.
ACKs for top commit:
0xB10C:
ACK d2a09c83554cec864a27e704cf2a0d513691a567
fanquake:
ACK d2a09c83554cec864a27e704cf2a0d513691a567 - can be backported for coherent documentation. Bech32m support was backported into branches back to the 0.19.
Tree-SHA512: a75d8bbf1ab062ec19e14cbe38dd0405a08c58e5dd4e9d94881f2c5efd52cc22dc755eae8d21bbda066feb099d93312b65557900bc2e65a70ba0412614cf0135
|
|
improve rpc_rawtransaction
387355bb9482a09c1fc9b137bea56745a93b7dfd test, refactor: rpc_rawtransaction PEP8 (Jon Atack)
7d5cec2e498dc059ff1d74a2b60764db45923264 refactor: separate the rpc_rawtransaction tests into functions (Jon Atack)
409779df95f886b08dbf6d44219e2fbeb3405a43 move-only: regroup similar rpc_rawtransaction tests together (Jon Atack)
d861040dd24a321e1ceec1f07c7bb80d59779081 test: remove no longer needed (ASCII art) comments (Jon Atack)
14398b30d6242db14670b3286f988b2badda83fb test: add and harmonize getrawtransaction logging (Jon Atack)
85d8869cf89fedf243748e3e15b3ed39de1b0385 test: run 2nd getrawtransaction section with/without -txindex (Jon Atack)
00977407732969593800d15de39abbb7e0250abc refactor: txid to constant in rpc_rawtransaction to isolate tests (Jon Atack)
8c19d1329f1f28000ca32d826cecf04680c6be69 refactor: dedup/reorg createrawtransaction sequence number tests (Jon Atack)
7f073594c9f5b518dc1fb66dfb0189e8803e3545 Test src/node/transaction::GetTransaction() without -txindex (Jon Atack)
Pull request description:
Following up on https://github.com/bitcoin/bitcoin/pull/22383#pullrequestreview-698583510, this pull adds missing `src/node/transaction::GetTransaction()` test coverage for combinations of `-txindex` and `blockhash` and does some refactoring of the test file.
ACKs for top commit:
mjdietzx:
reACK 387355bb9482a09c1fc9b137bea56745a93b7dfd
josibake:
reACK https://github.com/bitcoin/bitcoin/pull/22437/commits/387355bb9482a09c1fc9b137bea56745a93b7dfd
MarcoFalke:
Approach ACK 387355bb9482a09c1fc9b137bea56745a93b7dfd 🔆
Tree-SHA512: b47c4ff87d69c61434e5729c954b338bc13744eddaba0879ca9f5f42243ba2cb4640d94c5f74de9f2735a8bf5e66b3d1c3bd3b7c26cd7324da7d3270ce87c6fd
|
|
|
|
Followup to commit "MOVEONLY: CWallet transaction code out of
wallet.cpp/.h" that detaches and renames some CWalletTx methods, making
into them into standalone functions or CWallet methods instead.
There are no changes in behavior and no code changes that aren't purely
mechanical. It just gives spend and receive functions more consistent
names and removes the circular dependencies added by the earlier
MOVEONLY commit.
There are also no comment or documentation changes. Removed comments
from transaction.h are just migrated to spend.h, receive.h, and
wallet.h.
|
|
fa3bd9de99ee2bdfce2010e9367391a146e41878 Remove CBanEntry::SetNull (MarcoFalke)
fab53ff1e5a995f40a110d6f9e1214f263908b46 Remove unused SERIALIZE_METHODS for CBanEntry (MarcoFalke)
Pull request description:
It would be confusing to keep unused and dead code.
ACKs for top commit:
ryanofsky:
Code review ACK fa3bd9de99ee2bdfce2010e9367391a146e41878.
theStack:
Code-review ACK fa3bd9de99ee2bdfce2010e9367391a146e41878
Tree-SHA512: 85ab8de2ad1ada08e745806f2992def08bf8ead268caed7700a9fc61e3c7646e4ed7ae50a6d591c5bb9467f8999ea063ce5b5bd4fa0d58d8fc9d89e5a91f35a5
|
|
use based on waste metric
86beee05795216738f51fa744539336503c26fd9 Use waste metric for deciding which selection to use (Andrew Chow)
b3df0caf7c291a316298e54e73426c765e61c129 tests: Test GetSelectionWaste (Andrew Chow)
4f5ad43b1e05cd7b403f87aae4c4d42e5aea810b Add waste metric calculation function (Andrew Chow)
935b3ddf72aa390087684e03166c707f5b173434 scripted-diff: tests: Use KnapsackSolver directly (Andrew Chow)
6a023a6f904efe38dacd662d919aba74f066b1dc tests: Add KnapsackGroupOutputs helper function (Andrew Chow)
d5069fc1aa7d335f3043227f843cbb9d8ba1507b tests: Use SelectCoinsBnB directly instead of AttemptSelection (Andrew Chow)
54de7b47463d98f860167d4e0b7e4ebb3926b59c Allow the long term feerate to be configured, default of 10 sat/vb (Andrew Chow)
Pull request description:
Branch and Bound introduced a metric that we call waste. This metric is used as part of bounding the search tree, but it can be generalized to all coin selection solutions, including those with change. As such, this PR introduces the waste metric at a higher level so that we can run both of our coin selection algorithms (BnB and KnapsackSolver) and choose the one which has the least waste. In the event that both find a solution with the same change, we choose the one that spends more inputs.
Also this PR sets the long term feerate to 10 sat/vb rather than using the 1008 block estimate. This allows the long term feerate to be the feerate that we switch between consolidating and optimizing for fees. This also removes a bug where the long term feerate would incorrectly be set to the fallback fee. While this doesn't matter prior to this PR, it does have an effect following this. The long term feerate can be configured by the user through a new `-consolidatefeerate` option.
ACKs for top commit:
Xekyo:
reACK 86beee0 via git range-diff fe47558...86beee0
meshcollider:
re-utACK 86beee05795216738f51fa744539336503c26fd9
Tree-SHA512: 54b154b346538eca68ae2a3b83a033b495c1605c14f842bfc43ded2256b110983ce674c647fe753cf0305b1b178403d8d60d6d4203c7a712bec784be52e90d42
|
|
85b15ddc8ff499fe21d8ab35ece3994f8878b3de [refactor] [addrman] Update constant comments (John Newbery)
af9638a0fbb79bec743f4d2275b89e9573cfdc0a [move-only] Extract constants from addrman .h to .cpp (Amiti Uttarwar)
7dc443a62d3c98d8d0849d83060e940356fe32a3 [addrman] Change addrman #define constants to be constexprs (Amiti Uttarwar)
a65053f1d44c72c43754a5d5aeb684fc1fca0300 [addrman] Move CAddrMan::Unserialize to cpp file (John Newbery)
1622543cf42feb810d8ea9e7b3238d21f1427c17 [addrman] Move CAddrMan::Serialize to cpp file (John Newbery)
Pull request description:
Moving the serialization code from the header to the cpp helps clarify interfaces vs internals, as well as speed up the compilation of the whole program with a smaller header file.
ACKs for top commit:
jnewbery:
Code review ACK 85b15ddc8ff499fe21d8ab35ece3994f8878b3de
0xB10C:
Code review ACK 85b15ddc8
mzumsande:
Code Review ACK 85b15ddc8ff499fe21d8ab35ece3994f8878b3de (+ performed some light testing)
Tree-SHA512: a1aac25155601dd0ffd073b37388d9062c3d82c499821bd7ee883286cbc5dc0c7ae87f127c127778dae290006b98166640dc974d1953f3f34c53a67cf7b21613
|
|
|
|
|
|
|
|
|
|
|
|
(and make the 'string "Flase"' test clearer as requested by reviewers)
|
|
|
|
|
|
|
|
|
|
|
|
Previously, if the builder exported $VERSION in their environment (as
past Gitian-building docs told them to), but their HEAD does not
actually point to v$VERSION, their build outputs will differ from those
of other builders.
This is because the contrib/guix/guix-* scripts only ever act on the
current git worktree, and does not try to check out $VERSION if $VERSION
is set in the environment.
Setting $VERSION only makes the scripts pretend like the current
worktree is $VERSION.
This problem was seen in jonatack's attestation for all.SHA256SUMS,
where only his bitcoin-22.0rc3-osx-signed.dmg differed from everyone
else's.
Here is my deduced sequence of events:
1. Aug 27th: He guix-builds 22.0rc3 and uploads his attestations up to
guix.sigs
2. Aug 30th, sometime after POSIX time 1630310848: he pulls the latest
changes from master in the same worktree where he guix-built 22.0rc3
and ends up at 7be143a960e2
3. Aug 30th, sometime before POSIX time 1630315907: With his worktree
still on 7be143a960e2, he guix-codesigns. Normally, this would result
in outputs going in guix-build-7be143a960e2, but he had
VERSION=22.0rc3 in his environment, so the guix-* scripts pretended
like he was building 22.0rc3, and used 22.0rc3's guix-build directory
to locate un-codesigned outputs and dump codesigned ones.
However, our SOURCE_DATE_EPOCH defaults to the POSIX time of HEAD
(7be143a960e2), which made all timestamps in the resulting codesigned
DMG 1630310848, 7be143a960e2's POSIX timestamp. This differs from the
POSIX timestamp of 22.0rc3, which is 1630348517. Note that the
windows codesigning procedure does not consider SOURCE_DATE_EPOCH.
We resolve this by only allowing VERSION overrides via the FORCE_VERSION
environment variable.
|