Tests 5 scenarios:
1. Notifying for a new transaction into mempool
2. Notifying again for a mined known transaction
3. Notifying for a reversal and subsequent remine
4. Notifying for a reversal and subsequent doublespend
5. Notifying for a transaction that wasn't in mempool first
For 7019ead, a separate CI job was created because bionic's gcc-7
didn't have sha512 intrinsics support. Now that we've moved to a
focal build system, the experimental CI job for aarch64 can be ran
as a single job again.
We do not need libx11 to compile Qt with some very minor patches.
Removing this removes attack surface from dogecoin-qt and reduces
future maintenance cost.
- Removes packages:
- libX11
- libXext
- xextproto
- xtrans
- Patches Qt to not try to include X11 anywhere
- Removes x11-xcb check from bitcoin_qt.m4
- Remove permission to depend on libX11*so in release binaries
Backported-from: 1ec30b8f
aa53cb7a
92456991
0c55d8b5
689d3b4a
Co-Authored-By: Carl Dong <contact@carldong.me>
dbus is not used by qt in depends per documentation of the
-dbus-runtime configuration flag - it uses the packaged interface
and can be removed as a managed dependency.
Since dbus interfaces are only used on linux, remove it from the
windows and macOS configurations.
Backported-from: e8fabd92
6fdf5dab
Co-authored-by: fanquake <fanquake@gmail.com>
Remove functionality of Qt that we do not need, resulting in a
smaller dogecoin-qt binary and a reduced attack surface.
- removes all image support except png
(xpm is needed for qt binary build tools)
- no longer use Qt's built-in libjpeg
- disable all unused features
Items that cannot be removed vs Bitcoin Core:
For paper wallets:
- printer dialogs and pdf
- html rendering
For BIP70 payment requests:
- network configuration
- openssl
- socks5 support
Adds a lint job to the CI where we can do sanity analysis on
included files to help spot errors on non-cpp source files
that may cause problems during runtime.
This first job implements contrib/devtools/check-translations.py
that alerts the repository of errors in the translation files in
src/qt/locale. Errors in a translation file are otherwise only
becoming visible during runtime.
remove misinformation, this belongs in the dogecoin/docs/build-unix.md page, not under cross compilation for windows. Installing these linux libraries and interfere with libs cross-compiled from /dogecoin/depends/packages m4's. This line can be put in the build-unix.md, but it definitely doesnt belong here.
Reasons for the change:
1) Type Safety:
nullptr is a keyword introduced in modern C++. It's designed to be type-safe, meaning it can only represent a null pointer value.
NULL, on the other hand, is typically defined as 0. It's a macro and is not type-safe. This means you can unintentionally assign NULL to an integer variable without any compiler warnings.
2) Explicit Null Pointer Value:
nullptr is explicitly defined to represent a null pointer value. It's clear and unambiguous.
NULL is usually defined as 0, which can lead to ambiguity. For instance, when comparing a pointer to an integer, it's unclear whether you're checking for a null pointer or a zero integer value.
3) Consistency with C++:
nullptr is consistent with the principles of modern C++. C++ is a strongly typed language, and nullptr is designed to be a type-safe representation of a null pointer.
NULL is a legacy from C and is essentially a macro for 0. It doesn't align as well with the type-safe nature of C++.
Fixes the detection of bdb on brew enabled systems by using
dogecoin_find_bdb53.m4 parametrization and checking if the
brew-located files actually work.
Searches brew installed packages in the order: 5.x, 4.x, default.
The reason for this order is that 4.x is still fully readable by
5.3.27NC that is distributed by default, and therefore prefered
over newer-than 5.x versions.
This logs either positional arguments or named arguments if no
positional arguments exist when using --tracerpc to allow deep
examination of calls that use named arguments.
The __call__ function rejects any calls made using both positional
and named arguments, therefore we can print either in this
construction.
Throughout the codebase we use std::shared_ptr, except for some
instances in the miner code, where we use boost::shared_ptr for
sharing a wallet address with the miner and rpc across threads.
This patch removes all usage of boost::shared_ptr to instead use
std::shared_ptr, to reduce exposure to multiple shared pointer
implementations.