Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
97a2e13
Merge pull request #24 from blocknetdx/dev
tryiou Dec 7, 2023
406122c
Migrate from Gradle to Maven build system
Dec 11, 2025
90524d3
chore: simplify Visual Studio Build Tools installation step
Dec 11, 2025
4afd660
chore: fix Windows build artifact handling and release upload
Dec 11, 2025
e0c8991
feat: implement log rotation system with separate console and file fo…
Dec 12, 2025
9854872
[feat] externalize TestWallet parameters to JSON config
Dec 12, 2025
df61605
[exr] Fix HTTP response resource leak
Dec 12, 2025
dcd7fdb
[feat] Add tests and improve AddressDiscoveryService robustness
Dec 13, 2025
ba44bbd
[refactor] Centralize HTTP configuration and extract server selection…
Dec 13, 2025
8ac0d44
[performance] Parallelize coin initialization and reduce log verbosity
Dec 13, 2025
7a92e6b
[security] Upgrade wallet encryption from SHA-1 to SHA-256 with autom…
Dec 13, 2025
aa13969
[refactor] rename test classes to follow standard naming
Dec 13, 2025
505b865
refactor: Replace ArrayList with List interface and add error handlin…
Dec 15, 2025
960a130
chore: update version to 0.5.15
Dec 15, 2025
0b5843e
fix: correct file path separator in GitHub Actions workflow
Dec 15, 2025
3176f75
Merge branch 'blocknetdx:main' into dev-maven
tryiou Dec 16, 2025
dcfeb0c
chore: remove generate_release_notes from GitHub Actions workflow
Dec 15, 2025
25ee3cf
build: Add -march=x86-64 flag to native image builds for consistent a…
Dec 16, 2025
f74a7bb
feat: add native.march property for configurable build architecture
Dec 16, 2025
6c8861d
chore: fix native build command quoting for Windows CI
Dec 17, 2025
9b86a7a
chore: optimize Windows SDK and Visual Studio setup for native image …
Dec 17, 2025
abe8bbe
chore: update Windows build configuration for native image
Dec 17, 2025
17e0dc7
refactor(coin): process only enabled coins and skip RPC-disabled inst…
Mar 30, 2026
8d2e3c4
feat(config): add java-dotenv dependency and centralized environment …
Mar 30, 2026
0d2630b
build: Add ByteBuddy agent for testing
Mar 30, 2026
0c1c8a4
refactor(address-discovery): redesign sequential batch scanning algor…
Mar 30, 2026
eee2cb4
docs: add AGENTS.md and user guide
Apr 2, 2026
7701b2a
security: AES-CBC encryption with PBKDF2-SHA-256, char[] passphrases
Apr 2, 2026
2407cb4
feat(app): add CLI flags and environment support
Apr 2, 2026
f3cebbe
refactor(logging): standardize exception handling and logging across …
Apr 2, 2026
6e016a8
feat(net): enable Digibyte and Ravencoin
Apr 2, 2026
61422a2
feat: add Pocketcoin support
Apr 2, 2026
d202b88
refactor(bitcoinj): upgrade bitcoinj to 0.15.10
Apr 2, 2026
083c912
fix(core): fix coin lifecycle, config resilience, and transaction bro…
Apr 4, 2026
7c29d7c
security: harden passphrase and key memory handling across login, dis…
Apr 4, 2026
10f1586
docs: update AGENTS.md with jabba, native build, and refined conventions
Apr 4, 2026
89b1193
feat: add Ravencoin minimum relay fee calculation
Apr 4, 2026
7cdca42
refactor(server): condense RPC logging, use daemon threads, and fix R…
Apr 6, 2026
ae336a1
fix: use StandardCharsets.UTF_8 in LoginUtils
Apr 6, 2026
8e2b32d
chore: add Eclipse IDE files to .gitignore
Apr 6, 2026
a4317af
fix(api): ensure proper shutdown of Netty worker groups and thread pools
Apr 6, 2026
e19e02b
refactor(net): improve thread safety and API error handling
Apr 6, 2026
0eb9dc7
refactor(app): clean up logging and remove unused UTXO setter
Apr 6, 2026
752c271
perf(net): enhance concurrency and thread safety
Apr 6, 2026
2a3514b
security: refactor crypto ops to use char[] instead of String for bet…
Apr 7, 2026
bfcc317
refactor: update CoinInstance and HTTPServerHandler to handle char[] …
Apr 7, 2026
0836296
refactor: update CLI menus and tests to match char[] password API
Apr 7, 2026
62d64f0
refactor(net): migrate fee handling to network parameter-based model
Apr 17, 2026
6cc5260
refactor(logging): standardize logging calls and exception handling
Apr 17, 2026
4a8e1dd
fix(rpc): document reloadconfig and getrawtransaction in coin help
Aug 24, 2026
d74d588
docs: add data-providers guide to AGENTS.md
Aug 24, 2026
7eda01b
redact sensitive RPC logging; fix correctness and readiness gaps
Aug 24, 2026
cc74899
feat: restore EXR data plane with verbatim response passthrough
Aug 24, 2026
764ef50
fix: gate reloadconfig rebind on kernel bindability; make RPC threads…
Aug 24, 2026
a9bfbda
feat(config): honor XLITE_DATA_HOME as cross-platform data-root override
Aug 25, 2026
479e704
fix(signmessage): BTC must not inherit Litecoin header; route via helper
Aug 25, 2026
9afad93
test(app): harden XLITE_DATA_HOME resolver matrix
Aug 25, 2026
b03524c
refactor(params): remove BIP32 version overrides
Aug 25, 2026
85faf59
feat(concurrency): per-coin RPC server rebinding under ReentrantLock
Aug 26, 2026
fa76717
refactor(coins): delist XLQ/PHR/BAY
Aug 26, 2026
a4e3c1e
feat(coinconfig): load coin parameters from blockchain-configuration-…
Aug 26, 2026
9f369c5
perf: cut mvn test wall time roughly in half (46s -> 20s)
Aug 26, 2026
8c01878
feat(coinconfig): add config-driven network parameters with legacy cr…
Aug 26, 2026
6c859a4
feat(coins): drive coin parameters from configuration files
Aug 26, 2026
91d9a38
fix(coinconfig): handle stale and historical remote manifest entries
Aug 26, 2026
3ae088e
feat(coinconfig): expose master getCoins and self-contain tests
Aug 27, 2026
803e911
feat(rpc): add lightweight ping liveness probe and silence its access…
Aug 28, 2026
6a7d5e2
refactor: rename Java package io.cloudchains to io.xlite.daemon
Aug 29, 2026
6b449a8
refactor: rename data directory, env vars and client name to xlite-da…
Aug 29, 2026
433224d
fix(wallet): resolve coin network params when building send outputs
Sep 12, 2026
683e026
fix(http): use Math.round for whole-coin to satoshi conversion
Sep 16, 2026
b760fc4
ci: add ARM64 build matrix with correct native flags
Sep 16, 2026
97efc04
fix(sats): unify whole-coin to satoshi rounding via shared helper
Sep 16, 2026
812e3ee
fix(config): fail-closed legacy data directory migration
Sep 16, 2026
206f0e3
fix(app): fail fast on missing platform config dir
Sep 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 87 additions & 47 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,45 @@ name: build-all
on:
push:
branches:
- main
- dev
- "**"
tags:
- "v**"
pull_request:
branches:
- main
- dev
- "**"
workflow_dispatch:

permissions:
contents: write

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

jobs:
build_linux:
runs-on: ubuntu-22.04
strategy:
# One arch must never cancel the others: a broken arm64 build must not
# nuke the x64 signal (or vice versa).
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
artifact: xlite-daemon-linux64
artifact_name: artifacts-linux-x64
native_arch: x86-64
- os: ubuntu-22.04-arm
artifact: xlite-daemon-linux-arm64
artifact_name: artifacts-linux-arm64
# GraalVM native-image on AArch64 accepts armv8-a (not aarch64).
native_arch: armv8-a
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
if: github.event.pull_request.draft == false

# - name: Setup GraalVM JDK 21 via SDKMAN (FOR LOCAL TESTING WITH ACT)
# - name: Setup GraalVM JDK 21 via SDKMAN (FOR TESTING WITH ACT)
# shell: bash
# run: |
# curl -s "https://get.sdkman.io" | bash
Expand All @@ -37,44 +54,58 @@ jobs:
uses: graalvm/setup-graalvm@v1
with:
java-version: '21'
distribution: 'graalvm-community'
distribution: 'graalvm-community'

- name: Verify Java installation
run: |
java -version
native-image --version
native-image --version

- name: Make gradlew executable
run: chmod +x gradlew
- name: Make Maven wrapper executable
run: chmod +x mvnw

- name: Build native image
run: ./gradlew nativeCompile --info
run: ./mvnw clean package -Pnative -DskipTests -Dnative.march=${{ matrix.native_arch }}

- name: Make daemon executable
run: chmod +x build/native/nativeCompile/xlite-daemon
run: chmod +x target/xlite-daemon

- name: Rename executable
run: mv build/native/nativeCompile/xlite-daemon build/native/nativeCompile/xlite-daemon-linux64
run: mv target/xlite-daemon target/${{ matrix.artifact }}

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: artifacts-linux
name: ${{ matrix.artifact_name }}
path: |
build/native/nativeCompile/xlite-daemon-linux64
target/${{ matrix.artifact }}

- name: Create release
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/v')
with:
name: XLite Daemon ${{ github.ref_name}}
prerelease: ${{ contains(github.ref_name, 'alpha') || contains(github.ref_name, 'beta') || contains(github.ref_name, 'rc') }}
generate_release_notes: true
files: |
build/native/nativeCompile/xlite-daemon-linux64
target/${{ matrix.artifact }}

build_mac:
runs-on: macos-15-intel
strategy:
# One arch must never cancel the others: a broken arm64 build must not
# nuke the x64 signal (or vice versa).
fail-fast: false
matrix:
include:
- os: macos-15-intel
artifact: xlite-daemon-osx64
artifact_name: artifacts-mac-x64
native_arch: x86-64
- os: macos-15
artifact: xlite-daemon-osx-arm64
artifact_name: artifacts-mac-arm64
# GraalVM native-image on AArch64 accepts armv8-a (not aarch64).
native_arch: armv8-a
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
Expand All @@ -84,44 +115,58 @@ jobs:
uses: graalvm/setup-graalvm@v1
with:
java-version: '21'
distribution: 'graalvm-community'
distribution: 'graalvm-community'

- name: Verify Java installation
run: |
java -version
native-image --version
native-image --version

- name: Make gradlew executable
run: chmod +x gradlew
- name: Make Maven wrapper executable
run: chmod +x mvnw

- name: Build native image
run: ./gradlew nativeCompile --info
run: ./mvnw clean package -Pnative -DskipTests -Dnative.march=${{ matrix.native_arch }}

- name: Make daemon executable
run: chmod +x build/native/nativeCompile/xlite-daemon
run: chmod +x target/xlite-daemon

- name: Rename executable
run: mv build/native/nativeCompile/xlite-daemon build/native/nativeCompile/xlite-daemon-osx64
run: mv target/xlite-daemon target/${{ matrix.artifact }}

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: artifacts-mac
name: ${{ matrix.artifact_name }}
path: |
build/native/nativeCompile/xlite-daemon-osx64
target/${{ matrix.artifact }}

- name: Create release
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/v')
with:
name: XLite Daemon ${{ github.ref_name}}
prerelease: ${{ contains(github.ref_name, 'alpha') || contains(github.ref_name, 'beta') || contains(github.ref_name, 'rc') }}
generate_release_notes: true
files: |
build/native/nativeCompile/xlite-daemon-osx64
target/${{ matrix.artifact }}

build_win:
runs-on: windows-2022
strategy:
# One arch must never cancel the others: a broken arm64 build must not
# nuke the x64 signal (or vice versa).
fail-fast: false
matrix:
include:
- os: windows-2022
artifact: xlite-daemon-win64.exe
artifact_name: artifacts-win-x64
native_arch: x86-64
# No windows-11-arm native entry: no GraalVM distribution ships a
# windows-aarch64 backend (oracle/graal#9215; cross-compilation
# unsupported per oracle/graal#407; Liberica NIK is x64-only on
# Windows). Windows ARM64 users run the x64 binary via the OS
# emulator until upstream support lands.
runs-on: ${{ matrix.os }}
steps:
- name: Checkout code
uses: actions/checkout@v4
Expand All @@ -131,38 +176,33 @@ jobs:
uses: graalvm/setup-graalvm@v1
with:
java-version: '21'
distribution: 'graalvm-community'
distribution: 'graalvm-community'

- name: Verify Java installation
run: |
java -version
native-image --version

- name: Install Windows SDK
run: choco install -y windows-sdk-10.0

- name: Install Visual Studio Build Tools & sdk
run: choco install -y visualstudio2022-workload-vctools windows-sdk-10.0
- name: Install Visual Studio Build Tools
run: |
choco install -y visualstudio2022buildtools --installargs "--add Microsoft.VisualStudio.Workload.VCTools --quiet --wait"

- name: Build native image
run: ./gradlew.bat nativeCompile --info
run: .\mvnw.cmd clean package -Pnative -DskipTests "-Dnative.march=${{ matrix.native_arch }}"

- name: Rename executable
run: ren build\native\nativeCompile\xlite-daemon.exe xlite-daemon-win64.exe
run: Rename-Item target\xlite-daemon.exe ${{ matrix.artifact }}

- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: artifacts-win
path: |
build\native\nativeCompile\xlite-daemon-win64.exe
name: ${{ matrix.artifact_name }}
path: target\${{ matrix.artifact }}

- name: Create release
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/v')
with:
name: XLite Daemon ${{ github.ref_name}}
prerelease: ${{ contains(github.ref_name, 'alpha') || contains(github.ref_name, 'beta') || contains(github.ref_name, 'rc') }}
generate_release_notes: true
files: |
build\native\nativeCompile\xlite-daemon-win64.exe
files: target/${{ matrix.artifact }}
39 changes: 36 additions & 3 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,12 +1,45 @@
# Lock files and build artifacts
.lock/
.gradle/
/bin/
/build/
/builds/
.classpath
.history/
.vscode/
.gradle/
.env
.aider*
.idea*
.idea*
.kilo*
# Maven-specific ignores
target/
dependency-reduced-pom.xml
*.jar
*.war
*.ear
*.zip
*.tar.gz
*.rar

# Compiled class files
*.class

# Log files
logs/
*.log
log/

# IDE output directories
out/

# OS files
.DS_Store
Thumbs.db

# Temporary files
*.tmp
*.temp
*~

xlite-daemon/*
.settings
.project
3 changes: 3 additions & 0 deletions .mvn/wrapper/maven-wrapper.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
wrapperVersion=3.3.4
distributionType=only-script
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip
34 changes: 0 additions & 34 deletions .project

This file was deleted.

Loading
Loading