Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
bf41c3c
version: bump to v9.26.6 and update wallet image
JaredTate Jul 23, 2026
15b5ebc
build: improve MSVC and static Qt support
Shen Aug 1, 2026
3883c3a
paymaster: add protocol and peer services
Shen Aug 1, 2026
652ff3a
wallet: add Paymaster persistence and RPC workflows
Shen Aug 1, 2026
6de567e
qt: add Paymaster client and provider workflows
Shen Aug 1, 2026
c046701
test: cover Paymaster security and lifecycle flows
Shen Aug 1, 2026
be7a3ac
doc: describe Paymaster architecture and operation
Shen Aug 1, 2026
8cead61
test: remove obsolete accounting tests
Shen Aug 1, 2026
0719780
wallet: extend Paymaster provider lifecycle
Shen Aug 1, 2026
0fde6bd
qt: redesign Paymaster provider controls
Shen Aug 1, 2026
7abce79
test: cover Paymaster provider maintenance
Shen Aug 1, 2026
76794dd
doc: describe Paymaster provider management
Shen Aug 1, 2026
b0645a3
wallet: reject stale Paymaster capacity continuations
Shen Aug 2, 2026
bf90762
wallet: allow maintenance start past orphan capacity proofs
Shen Aug 2, 2026
e360513
qt: avoid stale Paymaster startup dialog
Shen Aug 2, 2026
ed46276
wallet: preserve Paymaster send history
Shen Aug 2, 2026
01b6955
qt: improve DigiDollar status and history UX
Shen Aug 2, 2026
a9589ec
wallet: correct DigiDollar ownership cache tests
Shen Aug 3, 2026
690ab38
build: fix secp256k1 autoreconf configuration
Shen Aug 3, 2026
f0de254
paymaster: add C++17 inequality operators
Shen Aug 3, 2026
bdd0d9d
fuzz: initialize ECC in Paymaster pool lifecycle target
Shen Aug 3, 2026
41b80e6
paymaster: harden P2P trust boundaries
Shen Aug 4, 2026
12ea600
paymaster: address security audit findings
Shen Aug 8, 2026
07f9e14
refactor: split Paymaster wallet domains
Shen Aug 8, 2026
215fdc3
test: harden Paymaster restart and persistence coverage
Shen Aug 8, 2026
87faa34
test: expand Paymaster compatibility coverage
Shen Aug 8, 2026
bdb91da
docs: record Paymaster compatibility coverage
Shen Aug 8, 2026
1e7324f
qt: keep Paymaster offer preview in green theme
Shen Aug 8, 2026
cbd1f53
wallet: document Paymaster persistence boundaries
Shen Aug 8, 2026
4e66b34
qt: harden and test Paymaster client workflow
Shen Aug 9, 2026
8a246c1
qt: fix Paymaster setup wizard theme
Shen Aug 9, 2026
bd27004
paymaster: Harden Qt workflows
Shen Aug 9, 2026
938f9a0
DOCS: organize release documentation
JaredTate Sep 11, 2026
bc9e6f4
Scripts Cleanup
JaredTate Sep 11, 2026
16da1f5
doc: publish current Paymaster developer reference
Shen Sep 11, 2026
ca292a0
v9.26.6 Wave 1: node crash, node deadlocks, $100k send/redeem cap, lo…
JaredTate Sep 12, 2026
89649e3
v9.26.6 Wave 2: one Thaw Day activation height, its predicate, status…
JaredTate Sep 12, 2026
2c1f09a
v9.26.6 Wave 3: activate mint protection and durable vault accounting…
JaredTate Sep 12, 2026
38895ed
v9.26.6 Wave 4: redeeming works again, mints are saved before they ar…
JaredTate Sep 12, 2026
46a7c0d
v9.26.6 Wave 5: the wallet tells the truth about DigiDollar, and chan…
JaredTate Sep 12, 2026
2bdd6e3
v9.26.6 Wave 6: clarify oracle names and mint support, and quiet rout…
JaredTate Sep 12, 2026
b544af7
v9.26.6 Wave 7: show startup progress and preserve required block his…
JaredTate Sep 12, 2026
41617cd
v9.26.6 Wave 8: a synced node keeps 1.5 GB less in memory, and diffic…
JaredTate Sep 12, 2026
cf8ecca
v9.26.6 Wave 9: add final verification and release guidance
JaredTate Sep 13, 2026
c9d6abd
v9.26.6 corrections: preserve accounting, wallet records, and oracle …
JaredTate Sep 13, 2026
28553b1
core: reduce memory use and startup work with Feather
JaredTate Sep 13, 2026
19c8b1c
v9.26.6rc1: verify saved supply and stabilize oracle startup
JaredTate Sep 13, 2026
d209781
v9.26.6rc1: schedule Thaw Day on mainnet and testnet
JaredTate Sep 14, 2026
1edb09a
DOCS: clarify v9.26.6 release notes and RAM guide
JaredTate Sep 14, 2026
390f71d
qt: show rc1 in the wallet version image
JaredTate Sep 14, 2026
653484d
consensus: read DigiDollar amounts from the chain, never from the wal…
JaredTate Sep 16, 2026
ec03c5c
wallet: log the skipped position reconcile only in the DigiDollar deb…
JaredTate Sep 16, 2026
e3ad0a4
v9.26.6rc2: version bump, release notes and wallet image
JaredTate Sep 16, 2026
998140e
thawday: land the Thaw Day rehearsal harness and record the rc2 lab pass
JaredTate Sep 16, 2026
89325d4
Merge v9.26.6rc2 into Paymaster integration
Shen Sep 19, 2026
a812cb9
refactor: isolate Paymaster integration code
Shen Sep 19, 2026
8bef3a3
fix: align Paymaster RPC schemas and tests
Shen Sep 19, 2026
354b711
test: cover Paymaster security boundaries
Shen Sep 19, 2026
be448f9
paymaster: automate recoverable pool setup
Shen Sep 20, 2026
8884764
Fix Paymaster capacity replay, transport hardening and regression tests
Shen Sep 23, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,4 @@
src/clientversion.cpp export-subst

# Keep executable build helpers usable after a Windows checkout or WSL copy.
*.sh text eol=lf
18 changes: 9 additions & 9 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,11 @@ jobs:
# your codebase is analyzed, see https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/codeql-code-scanning-for-compiled-languages
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6

# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
uses: github/codeql-action/init@v4
with:
languages: ${{ matrix.language }}
build-mode: ${{ matrix.build-mode }}
Expand All @@ -94,18 +94,18 @@ jobs:
# ℹ️ Command-line programs to run using the OS shell.
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
- if: matrix.build-mode == 'manual'
name: Quick build for CodeQL analysis
name: Build wallet and tests for CodeQL analysis
shell: bash
run: |
# Quick minimal build just for CodeQL analysis
# Match the simple Ubuntu 22.04 CI configuration
# C/C++ manual mode analyzes only compiled translation units. Keep
# wallet and tests enabled so Paymaster persistence, signing and RPC
# orchestration are present in the CodeQL database.
./autogen.sh
./configure --disable-wallet --disable-tests --disable-bench --disable-fuzz --disable-fuzz-binary \
./configure --disable-bench --disable-fuzz --disable-fuzz-binary \
--with-gui=no --disable-man --disable-zmq --without-utils --without-daemon
# Build all available libraries for analysis
make -j$(nproc) -C src
make -j$(nproc) -C src test/test_digibyte

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
uses: github/codeql-action/analyze@v4
with:
category: "/language:${{matrix.language}}"
22 changes: 22 additions & 0 deletions .github/workflows/dependency-review.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Copyright (c) 2026 The DigiByte Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

name: Dependency Review

on:
pull_request:

permissions:
contents: read

jobs:
dependency-review:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Reject newly introduced vulnerable dependencies
uses: actions/dependency-review-action@v4
with:
fail-on-severity: high
166 changes: 166 additions & 0 deletions .github/workflows/paymaster-security.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
# Copyright (c) 2026 The DigiByte Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

name: Paymaster Security

on:
pull_request:
paths:
- '.github/workflows/paymaster-security.yml'
- 'src/dandelion.cpp'
- 'src/net.cpp'
- 'src/net.h'
- 'src/net_processing.cpp'
- 'src/netbase.cpp'
- 'src/netbase.h'
- 'src/paymaster/**'
- 'src/protocol.cpp'
- 'src/protocol.h'
- 'src/rpc/net.cpp'
- 'src/rpc/digidollar.cpp'
- 'src/Makefile.am'
- 'src/Makefile.test.include'
- 'src/test/fuzz/paymaster_*.cpp'
- 'src/test/paymaster_*.cpp'
- 'src/wallet/paymaster*.cpp'
- 'src/wallet/paymaster*.h'
- 'src/wallet/db.h'
- 'src/wallet/digidollarwallet.cpp'
- 'src/wallet/rpc/paymaster*.cpp'
- 'src/wallet/rpc/paymaster*.h'
- 'src/wallet/spend.cpp'
- 'src/wallet/test/fuzz/paymaster_*.cpp'
- 'src/wallet/test/paymaster_*.cpp'
- 'src/wallet/walletdb.cpp'
- 'src/wallet/walletdb.h'
- 'test/functional/*paymaster*.py'
- 'test/functional/test_framework/paymaster.py'
schedule:
- cron: '17 3 * * 0'
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
asan-ubsan-unit:
name: ASan and UBSan Paymaster unit tests
runs-on: ubuntu-22.04
timeout-minutes: 90

steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
autoconf automake bsdmainutils build-essential clang libboost-dev \
libdb++-dev libevent-dev libminiupnpc-dev libnatpmp-dev \
libsqlite3-dev libtool pkg-config python3 systemtap-sdt-dev

- name: Configure sanitizer build
env:
CC: clang
CXX: clang++
run: |
./autogen.sh
./configure \
--with-sanitizers=address,undefined \
--disable-bench --disable-fuzz --disable-fuzz-binary \
--with-gui=no --disable-man --disable-zmq \
--without-utils --without-daemon

- name: Build unit test binary
run: make -j2 -C src test/test_digibyte

- name: Run Paymaster unit tests
env:
ASAN_OPTIONS: detect_leaks=1:halt_on_error=1
LSAN_OPTIONS: suppressions=${{ github.workspace }}/test/sanitizer_suppressions/lsan
UBSAN_OPTIONS: suppressions=${{ github.workspace }}/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:report_error_type=1
run: |
set -euo pipefail
# Include newly split suites (including wallet load/maintenance)
# automatically instead of maintaining a second suite inventory.
./src/test/test_digibyte \
'--run_test=paymaster_*' --log_level=test_suite --report_level=short \
2>&1 | tee paymaster-sanitizer.log

- name: Upload test log
if: always()
uses: actions/upload-artifact@v4
with:
name: paymaster-sanitizer-test-log
path: paymaster-sanitizer.log
if-no-files-found: ignore

sanitizer-fuzz:
name: Scheduled Paymaster sanitizer fuzzing
if: github.event_name != 'pull_request'
runs-on: ubuntu-22.04
timeout-minutes: 120

steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Install build dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
autoconf automake bsdmainutils build-essential clang libboost-dev \
libdb++-dev libevent-dev libminiupnpc-dev libnatpmp-dev \
libsqlite3-dev libtool pkg-config python3 systemtap-sdt-dev

- name: Configure fuzz build
env:
CC: clang
CXX: clang++
run: |
./autogen.sh
./configure \
--enable-fuzz \
--with-sanitizers=address,fuzzer,undefined \
--disable-bench --with-gui=no --disable-man --disable-zmq \
--without-utils --without-daemon

- name: Build fuzz binary
run: make -j2 -C src test/fuzz/fuzz

- name: Run bounded Paymaster campaigns
env:
ASAN_OPTIONS: detect_leaks=1:halt_on_error=1
LSAN_OPTIONS: suppressions=${{ github.workspace }}/test/sanitizer_suppressions/lsan
UBSAN_OPTIONS: suppressions=${{ github.workspace }}/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:report_error_type=1
run: |
set -euo pipefail
for target in \
paymaster_wire_envelopes \
paymaster_stateful_security \
paymaster_pool_lifecycle \
paymaster_persistence_records
do
corpus="${RUNNER_TEMP}/paymaster-corpus/${target}"
mkdir -p "$corpus"
FUZZ="$target" ./src/test/fuzz/fuzz \
-max_total_time=300 -timeout=30 "$corpus"
done

- name: Upload reproducer artifacts
if: failure()
uses: actions/upload-artifact@v4
with:
name: paymaster-fuzz-reproducers
path: |
crash-*
leak-*
timeout-*
oom-*
if-no-files-found: ignore
34 changes: 34 additions & 0 deletions .github/workflows/sbom.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Copyright (c) 2026 The DigiByte Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.

name: Export SPDX SBOM

on:
release:
types: [published]
workflow_dispatch:

permissions:
contents: read

jobs:
export:
runs-on: ubuntu-latest
steps:
- name: Export repository dependency graph as SPDX
env:
GH_TOKEN: ${{ github.token }}
run: |
gh api \
-H 'Accept: application/vnd.github+json' \
-H 'X-GitHub-Api-Version: 2026-03-10' \
"/repos/${GITHUB_REPOSITORY}/dependency-graph/sbom" \
--jq '.sbom' > digibyte-dependency-graph.spdx.json

- name: Upload SPDX artifact
uses: actions/upload-artifact@v4
with:
name: digibyte-dependency-graph-sbom
path: digibyte-dependency-graph.spdx.json
if-no-files-found: error
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -187,3 +187,5 @@ RC43_FIX_WORK_PROMPT.md
Z_RED_HORNET_FINAL_PROMPT.md
Z_RED_HORNET_v2.md
Z_DOC_VALIDATION_v9.26.2_PROMPT.md

.ai
Loading