Replace outdated TODO comment questioning whether vMerkleBranch is
used. The field IS actively used:
- Set by InitMerkleBranch() in auxpow.cpp:42
- Verified in CAuxPow::check() in auxpow.cpp:100
- Serialized/deserialized for auxpow data
The new comment accurately documents the field's purpose.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add core_io function DecodeAuxPow implementing a save means to
parse a hex encoded auxpow string into a CAuxPow instance
- Parse both the hash and the hex in the receiving methods, and
return meaningful errors when they fail.
1. Providing a malformed hash now returns RPC_INVALID_PARAMETER
(-8) instead of the generic -1
2. Providing a malformed auxpow hex now returns
RPC_DESERIALIZATION_ERROR (-22) instead of the generic -1
1. Introduces a single cache for templated blocks CAuxBlockCache
that is indexed and searchable by both coinbase script and
block hash.
2. Integrates the new cache into AuxMiningCreateBlock and
AuxMiningSubmitBlock rpc helper functions
3. Modifies AuxMiningSubmitBlock to return the BIP-22 response
4. Modifies getauxblockbip22 to user AuxMiningSubmitBlock
Note that although we return the BIP-22 response in
AuxMiningSubmitBlock and getauxblockbip22, there is currently no
method or configuration that returns this over rpc. All methods
return a boolean response. This remains unchanged for backward
compatibility.
Aims to isolate auxpow code for readability and to make a clear
demarcation for this custom Dogecoin functionality. Only moves
code.
- Creates a header for mining/auxpow shared usage containing
common functions between these functions.
- Moves all auxpow RPC methods into rpc/auxpow.cpp
Does a checkout of the full commit history and checks the status
integrity of each subtree using the git-subtree-check.sh provided
in contrib/devtools. Default subtree remotes are defined in the
new file contrib/subtrees.json
- Fix breaking change on UPNP_GetValidIGD by macro condition on
MINIUPNPC_API_VERSION > 18
- Verbosely log what was returned by UPNP_GetValidIGD - because
we can detect whether a valid outbound connection was found to
and unroutable external IP. This helps troubleshooting
situations where for example an ISP uses CGNAT.
See miniupnp commit c0a50ce33e3b99ce8a96fd43049bb5b53ffac62f for
the full change.
Co-authored-by: Daniel Morante <daniel@morante.net>
This clarifies:
- what facilities are provided
- where to find code-signing keys
- where attestations can be found
- where to find full documentation for gitian builds
- openssl (was only needed for BIP70/71)
- http and network modules (Qt no longer implements any networking)
- qt socks integration (does not affect p2p socks routing)
This frees us from GitHub actions brownouts and early deprecation
by no longer using Microsoft-maintained images in favor of bare
images from Docker Hub. The latter keeps images available for a
longer time, regardless of whether or not Canonical directly
supports them.
Benefits:
- Decouples our release cycle from what Microsoft is willing to
spend support effort on.
- Reduces bloat in base images
Because the bare ubuntu images contain a lot less pre-installed
tooling, some changes in orchestration need to be made for this
to be successful, as well as some workarounds can be removed:
- All GitHub Actions base operating systems are set to
ubuntu-24.04, as all we use from this now is containerd.
- All docker images remain ubuntu:20.04 for now, as this is
needed for symbol compatibility (and for now, we use the same
version in Gitian builds)
- Until the base image used for GitHub Actions and the provided
containerd is providing sandboxed mounting on /proc, every
process that needs custom binfmts needs to be ran privileged.
Currently this means all windows builds need this.
see: https://lore.kernel.org/all/20211028103114.2849140-2-brauner@kernel.org/
- Staying on custom binfmts, the Microsoft-maintained image
contained mono runtimes and reduced compatibility with wine,
for which we had workarounds in place. These are no longer
needed and have been removed.
- For future troubleshooting, the currently installed binfmts
and the kernel version are verbosely displayed inside jobs
- Because GitHub Actions does not allow us to pass zero
arguments to container options, whenever there are none a
dummy environment value 1DOGE is set to 1DOGE.
- For macOS, the libbz2-dev library was missing from our system
dependencies, this was masked by it being installed by default
in the Microsoft-maintained image.
- Bare containers do not come configured with a timezone, so this
needed to be added to container initialization before any apt
calls are made.
- Because Microsoft runs the container under uid 1001, which does
not exist in the bare ubuntu:20.04 image, a special cleanup
step for the qa/cache needed to be made, or else the build
caches would fail to upload at the end of the CI run.
Completely removes BIP70 support from Dogecoin Qt code.
Also removes protobuf-compatibility tests as these rely on
paymentserverplus code and any TLS related configuration, and
the -enable-bip70 flag from init.cpp