- Add expanded address icon picker with search, bottom-aligned actions, and improved modal sizing - Embed a pickaxe icon font subset and wire it into typography/address icon rendering - Track view-only shielded addresses and prevent sends from non-spendable z-addresses - Improve address transfer dialog sizing, max amount handling, and text clipping - Tune main header layout values in ui.toml - Update README, codebase overview, and third-party license documentation
238 lines
7.9 KiB
Markdown
238 lines
7.9 KiB
Markdown
# ObsidianDragon - DragonX Wallet
|
|
|
|
A lightweight, portable full-node cryptocurrency wallet for DragonX (DRGX), built with Dear ImGui.
|
|
|
|
Current pre-release: **1.2.0-rc1**.
|
|
|
|

|
|

|
|
|
|
## Features
|
|
|
|
- **Full Node Support**: Connects to dragonxd for complete blockchain verification
|
|
- **Shielded Transactions**: Full z-address support with encrypted memos
|
|
- **Address Management**: Labels, icons, favorites, hidden addresses, and address-to-address transfers
|
|
- **Integrated Mining**: Solo CPU mining plus pool mining through xmrig, with idle-mining controls
|
|
- **Explorer Tools**: Block/transaction lookup and bootstrap snapshot download
|
|
- **Market Data**: Real-time price charts from CoinGecko
|
|
- **QR Codes**: Generate and display QR codes for receiving addresses
|
|
- **Multi-language**: i18n support for English, German, Spanish, French, Japanese, Korean, Portuguese, Russian, and Chinese
|
|
- **CJK Fonts**: Bundled CJK subset font for translated interfaces
|
|
- **Lightweight**: ~5-10MB binary vs ~50MB+ for Qt version
|
|
- **Fast Builds**: Compiles in seconds, not minutes
|
|
|
|
## Screenshots
|
|
|
|
<p align="center">
|
|
<img src="docs/screenshots/1.webp" width="32%" /> <img src="docs/screenshots/2.webp" width="32%" /> <img src="docs/screenshots/3.webp" width="32%" />
|
|
<br/>
|
|
<img src="docs/screenshots/4.webp" width="32%" /> <img src="docs/screenshots/5.webp" width="32%" /> <img src="docs/screenshots/6.webp" width="32%" />
|
|
<br/>
|
|
<img src="docs/screenshots/7.webp" width="32%" /> <img src="docs/screenshots/8.webp" width="32%" /> <img src="docs/screenshots/9.webp" width="32%" />
|
|
</p>
|
|
|
|
## Building
|
|
|
|
### Quick Setup
|
|
|
|
The setup script detects your OS, installs all build dependencies, and validates your environment:
|
|
|
|
```bash
|
|
./setup.sh # Install core build deps (interactive)
|
|
./setup.sh --check # Just report what's missing
|
|
./setup.sh --all # Core + Windows/macOS cross-compile + Sapling params
|
|
./setup.sh --win # Also install mingw-w64 + libsodium-win
|
|
```
|
|
|
|
### Manual Prerequisites
|
|
|
|
<details>
|
|
<summary>Click to expand manual install commands</summary>
|
|
|
|
**Linux (Ubuntu/Debian):**
|
|
```
|
|
sudo apt install build-essential cmake git pkg-config
|
|
sudo apt install libgl1-mesa-dev libx11-dev libxcursor-dev libxrandr-dev libxinerama-dev libxi-dev
|
|
sudo apt install libsodium-dev libcurl4-openssl-dev
|
|
```
|
|
|
|
**Linux (Arch):**
|
|
```
|
|
sudo pacman -S base-devel cmake git pkg-config mesa libx11 libxcursor libxrandr libxinerama libxi libsodium curl
|
|
```
|
|
|
|
**macOS:**
|
|
```
|
|
xcode-select --install
|
|
brew install cmake
|
|
```
|
|
|
|
**Windows:**
|
|
- Visual Studio 2019+ with C++ workload
|
|
- CMake 3.20+
|
|
|
|
</details>
|
|
|
|
### Binaries
|
|
Download linux and windows binaries of latest releases and place in binary directories:
|
|
|
|
**DragonX daemon** (https://git.dragonx.is/DragonX/dragonx):
|
|
- prebuilt-binaries/dragonxd-linux/
|
|
- prebuilt-binaries/dragonxd-win/
|
|
- prebuilt-binaries/dragonxd-mac/
|
|
|
|
**xmrig HAC fork** (https://git.dragonx.is/dragonx/xmrig-hac):
|
|
- prebuilt-binaries/xmrig-hac/
|
|
|
|
|
|
## Build Steps
|
|
|
|
```
|
|
### Clone repository (if not already)
|
|
git clone https://git.dragonx.is/dragonx/ObsidianDragon.git
|
|
cd ObsidianDragon/
|
|
```
|
|
|
|
### Windows Build
|
|
|
|
```
|
|
./build.sh --win-release
|
|
```
|
|
|
|
### Release Build
|
|
|
|
```
|
|
./build.sh --linux-release # Linux release + AppImage
|
|
./build.sh --win-release # Windows cross-compile
|
|
./build.sh --mac-release # macOS .app bundle + DMG
|
|
./build.sh --clean --linux-release # Clean + Release
|
|
```
|
|
|
|
## Running
|
|
|
|
1. **Start dragonxd** (if not using embedded daemon):
|
|
```
|
|
dragonxd -daemon
|
|
```
|
|
|
|
2. **Run the wallet**:
|
|
```
|
|
cd build/bin
|
|
./ObsidianDragon
|
|
```
|
|
|
|
The wallet will automatically connect to the daemon using credentials from `~/.hush/DRAGONX/DRAGONX.conf`.
|
|
|
|
### Using Custom Node Binaries
|
|
|
|
The wallet checks its **own directory first** when looking for DragonX node binaries. This means you can test new or different branch builds of `hush-arrakis-chain`/`hushd` without waiting for a new wallet release:
|
|
|
|
1. Build or download the node binaries you want to test
|
|
2. Place them in the same directory as the wallet executable (e.g. `build/bin/`)
|
|
3. Launch the wallet — it will use the local binaries instead of the bundled ones
|
|
|
|
**Search order:**
|
|
1. Wallet executable directory (highest priority)
|
|
2. Embedded/extracted daemon (app data directory)
|
|
3. System-wide locations (`/usr/local/bin`, `~/dragonx/src`, etc.)
|
|
|
|
This is useful for testing new branches or hotfixes to the node software before they are bundled into a wallet release.
|
|
|
|
## Configuration
|
|
|
|
Configuration is stored in `~/.hush/DRAGONX/DRAGONX.conf`:
|
|
|
|
```
|
|
rpcuser=your_rpc_user
|
|
rpcpassword=your_rpc_password
|
|
rpcport=21769
|
|
```
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
ObsidianDragon/
|
|
├── src/
|
|
│ ├── main.cpp # Entry point, SDL/ImGui setup
|
|
│ ├── app.cpp/h # Main application class
|
|
│ ├── data/ # WalletState, address book, exchange info
|
|
│ ├── config/ # Settings persistence and generated version.h
|
|
│ ├── ui/
|
|
│ │ ├── schema/ # TOML UI schema and skin manager
|
|
│ │ ├── material/ # Material components, typography, layout
|
|
│ │ ├── windows/ # Tabs and dialogs
|
|
│ │ └── pages/ # Multi-page screens such as Settings
|
|
│ ├── rpc/
|
|
│ │ ├── rpc_client.cpp # JSON-RPC client
|
|
│ │ └── connection.cpp # Daemon connection
|
|
│ ├── resources/ # Embedded resource extraction
|
|
│ ├── platform/ # Windows DX11/backdrop helpers
|
|
│ ├── util/
|
|
│ │ ├── i18n.cpp # Internationalization
|
|
│ │ └── ...
|
|
│ └── daemon/
|
|
│ └── embedded_daemon.cpp
|
|
├── res/
|
|
│ ├── fonts/ # Ubuntu, icon, and CJK fonts
|
|
│ └── lang/ # Translation files
|
|
├── libs/
|
|
│ └── qrcode/ # QR code generation
|
|
├── CMakeLists.txt
|
|
├── build.sh # Release/cross-platform build script
|
|
└── scripts/create-appimage.sh # AppImage packaging
|
|
```
|
|
|
|
## Dependencies
|
|
|
|
Fetched or discovered by CMake:
|
|
|
|
- **[SDL3](https://github.com/libsdl-org/SDL)** — Cross-platform windowing/input
|
|
- **[nlohmann/json](https://github.com/nlohmann/json)** — JSON parsing
|
|
- **[toml++](https://github.com/marzer/tomlplusplus)** — TOML parsing (UI schema/themes)
|
|
- **[libcurl](https://curl.se/libcurl/)** — HTTP/HTTPS transport for daemon RPC and network calls (system on Linux/macOS, fetched on Windows)
|
|
|
|
Bundled in `libs/`:
|
|
|
|
- **[Dear ImGui](https://github.com/ocornut/imgui)** — Immediate mode GUI
|
|
- **[libsodium](https://libsodium.org)** — Cryptographic operations (system on Linux or fetched by `scripts/fetch-libsodium.sh`)
|
|
- **[QR-Code-generator](https://github.com/nayuki/QR-Code-generator)** — QR code rendering
|
|
- **[miniz](https://github.com/richgel999/miniz)** — ZIP compression
|
|
- **[GLAD](https://glad.dav1d.de/)** — OpenGL loader (Linux/macOS)
|
|
- **[stb_image](https://github.com/nothings/stb)** — Image loading
|
|
- **[incbin](https://github.com/graphitemaster/incbin)** — Binary resource embedding (Windows builds)
|
|
|
|
## Keyboard Shortcuts
|
|
|
|
| Shortcut | Action |
|
|
|----------|--------|
|
|
| Ctrl+, | Settings |
|
|
| F5 | Refresh |
|
|
| Alt+F4 | Exit |
|
|
|
|
## Translation
|
|
|
|
Current language files live in `res/lang/` as `de`, `es`, `fr`, `ja`, `ko`, `pt`, `ru`, and `zh` JSON files, with built-in English fallbacks.
|
|
|
|
To add a new language:
|
|
|
|
1. Copy `res/lang/es.json` to `res/lang/<code>.json`
|
|
2. Translate all strings
|
|
3. The language will appear in Settings automatically
|
|
|
|
## License
|
|
|
|
This project is licensed under the GNU General Public License v3 (GPLv3).
|
|
|
|
## Credits
|
|
|
|
- The Hush Developers
|
|
- DragonX Community
|
|
- [Dear ImGui](https://github.com/ocornut/imgui) by Omar Cornut
|
|
- [SDL](https://libsdl.org/) by Sam Lantinga
|
|
|
|
## Links
|
|
|
|
- Website: https://dragonx.is
|
|
- Explorer: https://explorer.dragonx.is
|
|
- Source: https://git.dragonx.is/dragonx/ObsidianDragon
|