Compare commits
35 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
91975bb8bb | ||
| 4063da67c3 | |||
| 8f1c4b142d | |||
|
|
fd0718d2a7 | ||
|
|
d82347925f | ||
|
|
ad386005cf | ||
|
|
78b6d11c82 | ||
|
|
5d0f4d1e22 | ||
| 46f5e24fa4 | |||
| d7758f8b91 | |||
| 0ed21f2dc0 | |||
|
|
73d160b238 | ||
|
|
caf1f78daa | ||
|
|
ef939bf6f8 | ||
|
|
abdbc25de2 | ||
|
|
c046c329a4 | ||
|
|
aacf183b4f | ||
| 57ef1546a7 | |||
| c02e062869 | |||
| ab397b9c1b | |||
| 72ee7e5872 | |||
| 1e1c4a5fdb | |||
| efe1cbf18b | |||
| 96eef06c25 | |||
| 922f94321e | |||
| 0e08faad30 | |||
| 7e418123a9 | |||
| 7f96a7d84c | |||
| 3f30d92472 | |||
| 7ebe9d9305 | |||
| 9f156ae1ad | |||
| 553424d19d | |||
| ff87cc51c4 | |||
| 5960d0d861 | |||
| 2ee78184ef |
65
README.md
65
README.md
@@ -1,6 +1,6 @@
|
||||
# Palladium Core
|
||||
|
||||
**Official Website:** [palladiumblockchain.net](https://palladiumblockchain.net)
|
||||
**Official Websites:** [palladiumblockchain.net](https://palladiumblockchain.net) and [palladium-coin.com](https://palladium-coin.com)
|
||||
## Overview
|
||||
|
||||
Palladium Core is a decentralized digital currency forked from Bitcoin, specifically designed to serve the palladium market ecosystem. Built upon the proven Bitcoin protocol foundation, Palladium Core delivers enhanced security, efficiency, and transparency for palladium-related transactions.
|
||||
@@ -18,67 +18,22 @@ Palladium Core is a decentralized digital currency forked from Bitcoin, specific
|
||||
### Installation
|
||||
|
||||
1. **Download and Install**: Get the latest Palladium Core wallet from our [releases page](https://github.com/palladium-coin/palladiumcore/releases)
|
||||
2. **Configure**: Create the `palladium.conf` configuration file (see [Configuration](#advanced-configuration) section below)
|
||||
2. **Configure**: Create the `palladium.conf` configuration file (see [Configuration](#configuration) section below)
|
||||
3. **Launch the Core**: Start the Palladium Core application (includes automatic network synchronization)
|
||||
|
||||
### Configuration
|
||||
|
||||
For enhanced connectivity and performance, you can create a configuration file:
|
||||
For enhanced connectivity and performance, you can create a configuration file. Palladium Core supports comprehensive configuration options for mainnet, testnet, and regtest networks.
|
||||
|
||||
**Windows**: Navigate to `%appdata%/Palladium/`
|
||||
**Linux**: Navigate to `/home/[username]/.palladium/`
|
||||
**macOS**: Navigate to `~/Library/Application Support/Palladium/`
|
||||
**Configuration File Location:**
|
||||
- **Windows**: `%appdata%/Palladium/`
|
||||
- **Linux**: `/home/[username]/.palladium/`
|
||||
- **macOS**: `~/Library/Application Support/Palladium/`
|
||||
|
||||
Create a file named `palladium.conf`. For users running a full node or requiring advanced functionality, we recommend the following comprehensive configuration:
|
||||
Create a file named `palladium.conf` in the appropriate directory for your operating system.
|
||||
|
||||
```conf
|
||||
# Core Settings
|
||||
txindex=1
|
||||
server=1
|
||||
listen=1
|
||||
daemon=1
|
||||
discover=1
|
||||
|
||||
# RPC Configuration
|
||||
rpcuser=your_username_here
|
||||
rpcpassword=your_secure_password_here
|
||||
|
||||
# Network Ports
|
||||
port=2333
|
||||
rpcport=2332
|
||||
|
||||
# Connection Settings
|
||||
maxconnections=50
|
||||
fallbackfee=0.0001
|
||||
rpcallowip=192.168.0.0/16
|
||||
rpcbind=192.168.0.0/16
|
||||
|
||||
# Trusted Nodes
|
||||
addnode=89.117.149.130:2333
|
||||
addnode=66.94.115.80:2333
|
||||
addnode=173.212.224.67:2333
|
||||
|
||||
# ZeroMQ Configuration
|
||||
zmqpubrawblock=tcp://0.0.0.0:28334
|
||||
zmqpubrawtx=tcp://0.0.0.0:28335
|
||||
zmqpubhashblock=tcp://0.0.0.0:28332
|
||||
```
|
||||
|
||||
**Security Warning**: Replace `your_username_here` and `your_secure_password_here` with strong, unique credentials.
|
||||
|
||||
### Configuration Parameters Explained
|
||||
|
||||
| Parameter | Description | Recommended Value |
|
||||
|-----------|-------------|-------------------|
|
||||
| `txindex` | Maintains full transaction index | `1` (enabled) |
|
||||
| `server` | Enables RPC server | `1` (enabled) |
|
||||
| `listen` | Accept incoming connections | `1` (enabled) |
|
||||
| `daemon` | Run in background mode | `1` (enabled) |
|
||||
| `discover` | Enable peer discovery | `1` (enabled) |
|
||||
| `maxconnections` | Maximum peer connections | `50` |
|
||||
| `fallbackfee` | Default transaction fee | `0.0001` PLM/kB |
|
||||
| `port` | P2P network port | `2333` |
|
||||
| `rpcport` | RPC server port | `2332` |
|
||||
**Complete Configuration Guide:**
|
||||
For detailed configuration instructions, network-specific settings, security best practices, and complete configuration examples, please refer to our comprehensive configuration guide: **[Palladium Configuration File Documentation](doc/configuration-file.md)**
|
||||
|
||||
## Building from Source
|
||||
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
#define CLIENT_VERSION_MAJOR 1
|
||||
|
||||
/* Minor version */
|
||||
#define CLIENT_VERSION_MINOR 4
|
||||
#define CLIENT_VERSION_MINOR 5
|
||||
|
||||
/* Build revision */
|
||||
#define CLIENT_VERSION_REVISION 0
|
||||
#define CLIENT_VERSION_REVISION 2
|
||||
|
||||
/* Copyright holder(s) before %s replacement */
|
||||
#define COPYRIGHT_HOLDERS "The %s developers"
|
||||
@@ -265,7 +265,7 @@
|
||||
#define PACKAGE_NAME "Palladium Core"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "Palladium Core 1.4.1"
|
||||
#define PACKAGE_STRING "Palladium Core 1.5.0"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "palladium"
|
||||
@@ -274,7 +274,7 @@
|
||||
#define PACKAGE_URL "https://palladiumblockchain.net/"
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "1.4.1"
|
||||
#define PACKAGE_VERSION "1.5.0"
|
||||
|
||||
/* Define to necessary symbol if this constant uses a non-standard name on
|
||||
your system. */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
AC_PREREQ([2.69])
|
||||
define(_CLIENT_VERSION_MAJOR, 1)
|
||||
define(_CLIENT_VERSION_MINOR, 4)
|
||||
define(_CLIENT_VERSION_REVISION, 1)
|
||||
define(_CLIENT_VERSION_REVISION, 2)
|
||||
define(_CLIENT_VERSION_BUILD, 0)
|
||||
define(_CLIENT_VERSION_RC, 0)
|
||||
define(_CLIENT_VERSION_IS_RELEASE, true)
|
||||
|
||||
@@ -2,7 +2,7 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: Palladium
|
||||
Upstream-Contact: Satoshi Nakamoto <satoshin@gmx.com>
|
||||
irc://#palladium@freenode.net
|
||||
Source: https://github.com/NotRin7/palladium
|
||||
Source: https://github.com/palladium-coin/palladiumcore
|
||||
|
||||
Files: *
|
||||
Copyright: 2009-2020, Bitcoin Core Developers
|
||||
|
||||
@@ -8,7 +8,7 @@ with no central authority: managing transactions and issuing money are carried o
|
||||
|
||||
The software is a community-driven open source project, released under the MIT license.
|
||||
|
||||
See https://github.com/NotRin7/palladium and https://palladium-coin.com/ for further information about the project.
|
||||
See https://github.com/palladium-coin/palladiumcore and https://palladium-coin.com/ for further information about the project.
|
||||
|
||||
\section Navigation
|
||||
Use <a href="modules.html"><code>Modules</code></a>, <a href="namespaces.html"><code>Namespaces</code></a>, <a href="classes.html"><code>Classes</code></a>, or <a href="files.html"><code>Files</code></a> at the top of the page to start navigating the code.
|
||||
|
||||
@@ -47,7 +47,7 @@ from the root of the repository.
|
||||
|
||||
1. Clone the Palladium Core source code:
|
||||
```shell
|
||||
git clone https://github.com/NotRin7/palladium.git
|
||||
git clone https://github.com/palladium-coin/palladiumcore.git
|
||||
cd palladium
|
||||
```
|
||||
|
||||
|
||||
384
doc/configuration-file.md
Normal file
384
doc/configuration-file.md
Normal file
@@ -0,0 +1,384 @@
|
||||
# Palladium Configuration File Guide
|
||||
|
||||
## Overview
|
||||
|
||||
The `palladium.conf` file is the main configuration file for Palladium Core, controlling how your node operates, connects to the network, and provides services. This file allows you to customize various aspects of your Palladium Core installation without needing to use command-line arguments every time you start the application.
|
||||
|
||||
## What is palladium.conf?
|
||||
|
||||
`palladium.conf` is a plain text configuration file that contains key-value pairs to configure your Palladium Core node. It determines:
|
||||
|
||||
- Network connectivity settings
|
||||
- RPC server configuration
|
||||
- Security parameters
|
||||
- Performance optimizations
|
||||
- Logging and debugging options
|
||||
- Network-specific settings (mainnet, testnet, regtest)
|
||||
|
||||
## Location by Operating System
|
||||
|
||||
The configuration file must be placed in the Palladium data directory, which varies by operating system:
|
||||
|
||||
### Windows
|
||||
- **Path**: `%appdata%\Palladium\palladium.conf`
|
||||
- **Example**: `C:\Users\[Username]\AppData\Roaming\Palladium\palladium.conf`
|
||||
|
||||
### Linux
|
||||
- **Path**: `/home/[username]/.palladium/palladium.conf`
|
||||
- **Example**: `/home/user/.palladium/palladium.conf`
|
||||
|
||||
### macOS
|
||||
- **Path**: `~/Library/Application Support/Palladium/palladium.conf`
|
||||
- **Example**: `/Users/[Username]/Library/Application Support/Palladium/palladium.conf`
|
||||
|
||||
## Network Configurations
|
||||
|
||||
Palladium Core supports three different networks, each with its own configuration requirements:
|
||||
|
||||
### 1. Mainnet (Production Network)
|
||||
Mainnet is the live Palladium blockchain where real transactions occur and real PLM coins are used.
|
||||
|
||||
**Key Characteristics:**
|
||||
- Uses default ports (2333 for P2P, 2332 for RPC)
|
||||
- Connects to production network
|
||||
- Real economic value
|
||||
- Should be used for production deployments only
|
||||
|
||||
### 2. Testnet (Testing Network)
|
||||
Testnet is a separate blockchain designed for testing purposes with no real economic value.
|
||||
|
||||
**Key Characteristics:**
|
||||
- Uses different ports (12333 for P2P, 12332 for RPC)
|
||||
- Separate blockchain from mainnet
|
||||
- Test PLM coins have no value
|
||||
- Safe for development and experimentation
|
||||
- Faster block times for testing
|
||||
|
||||
### 3. Regtest (Regression Testing)
|
||||
Regtest is a local testing environment where you can create blocks instantly.
|
||||
|
||||
**Key Characteristics:**
|
||||
- Local blockchain only
|
||||
- Instant block generation
|
||||
- Complete control over network
|
||||
- Ideal for development and automated testing
|
||||
- No external network connections required
|
||||
|
||||
## Core Configuration Parameters
|
||||
|
||||
### Basic Node Settings
|
||||
```conf
|
||||
txindex=1 # Enable transaction index (required for getrawtransaction RPC)
|
||||
|
||||
server=1 # Enable RPC server (required for RPC commands)
|
||||
|
||||
listen=1 # Accept incoming connections (required for peer discovery)
|
||||
|
||||
daemon=1 # Run as daemon (background process)
|
||||
|
||||
discover=1 # Enable peer discovery (required for peer connections)
|
||||
|
||||
maxconnections=50 # Maximum number of connections
|
||||
```
|
||||
|
||||
### RPC Configuration
|
||||
```conf
|
||||
rpcuser=your_secure_username # RPC username (required for RPC authentication)
|
||||
|
||||
rpcpassword=your_secure_password # RPC password (required for RPC authentication)
|
||||
|
||||
rpcallowip=127.0.0.1 # Allow RPC connections from specific IP ranges (localhost)
|
||||
rpcallowip=192.168.1.0/24 # Allow RPC connections from specific IP ranges (local network)
|
||||
|
||||
rpcbind=127.0.0.1 # Bind RPC to specific interface
|
||||
```
|
||||
|
||||
### Network Settings
|
||||
```conf
|
||||
port=2333 # P2P network port
|
||||
|
||||
rpcport=2332 # RPC server port
|
||||
|
||||
fallbackfee=0.0001 # Default transaction fee (PLM per kB)
|
||||
|
||||
minrelaytxfee=0.00001 # Minimum relay fee
|
||||
```
|
||||
|
||||
### Security Settings
|
||||
```conf
|
||||
# Wallet encryption (set at runtime, not in config file)
|
||||
# Use encryptwallet RPC command instead
|
||||
|
||||
disablewallet=1 # Disable wallet functionality (for full nodes without wallet)
|
||||
|
||||
# Node Connection Methods (choose one approach):
|
||||
# addnode - Adds node to connection list, still allows other connections
|
||||
addnode=trusted.node.ip:2333 # Add trusted node to connection pool
|
||||
|
||||
# connect - ONLY connects to specified nodes, blocks all other connections
|
||||
connect=trusted.node.ip:2333 # Connect ONLY to this node (maximum security)
|
||||
```
|
||||
|
||||
### Performance Tuning
|
||||
```conf
|
||||
dbcache=512 # Database cache size in MB (increase for better performance)
|
||||
|
||||
maxorphantx=100 # Maximum number of orphan transactions
|
||||
|
||||
maxmempool=300 # Maximum size of mempool in MB
|
||||
|
||||
mempoolexpiry=72 # Mempool memory expiration time in hours
|
||||
```
|
||||
|
||||
### Privacy Settings
|
||||
```conf
|
||||
|
||||
dnsseed=0 # Disable DNS seeding for privacy
|
||||
|
||||
|
||||
bind=127.0.0.1 # Bind to specific interface only (localhost)
|
||||
```
|
||||
|
||||
### Mining Configuration (for mining pools)
|
||||
```conf
|
||||
|
||||
mine=1 # Enable block generation
|
||||
|
||||
miningaddress=your_palladium_address # Mining address to receive block rewards
|
||||
|
||||
blockmaxsize=1000000 # Maximum block size in bytes (default: 1000000)
|
||||
|
||||
blockprioritysize=50000 # Block priority size in bytes (default: 50000)
|
||||
```
|
||||
|
||||
|
||||
## Complete Configuration Examples
|
||||
|
||||
### Mainnet Configuration
|
||||
```conf
|
||||
# Core Settings
|
||||
txindex=1
|
||||
server=1
|
||||
listen=1
|
||||
daemon=1
|
||||
discover=1
|
||||
|
||||
# RPC Configuration
|
||||
rpcuser=your_secure_username
|
||||
rpcpassword=your_very_secure_password
|
||||
rpcallowip=127.0.0.1
|
||||
rpcallowip=192.168.1.0/24
|
||||
rpcbind=127.0.0.1
|
||||
|
||||
# Network Settings (Mainnet defaults)
|
||||
port=2333
|
||||
rpcport=2332
|
||||
maxconnections=50
|
||||
fallbackfee=0.0001
|
||||
minrelaytxfee=0.00001
|
||||
|
||||
# Trusted Nodes
|
||||
addnode=89.117.149.130:2333
|
||||
addnode=66.94.115.80:2333
|
||||
addnode=173.212.224.67:2333
|
||||
|
||||
# Advanced Settings
|
||||
zmqpubrawblock=tcp://0.0.0.0:28334
|
||||
zmqpubrawtx=tcp://0.0.0.0:28335
|
||||
zmqpubhashblock=tcp://0.0.0.0:28332
|
||||
|
||||
# Logging
|
||||
debug=net
|
||||
debug=rpc
|
||||
debug=coindb
|
||||
```
|
||||
|
||||
### Testnet Configuration
|
||||
```conf
|
||||
# Network Selection
|
||||
testnet=1
|
||||
|
||||
[test]
|
||||
# Core Settings
|
||||
txindex=1
|
||||
server=1
|
||||
listen=1
|
||||
daemon=1
|
||||
discover=1
|
||||
|
||||
# RPC Configuration
|
||||
rpcuser=testnet_user
|
||||
rpcpassword=testnet_password
|
||||
rpcallowip=127.0.0.1
|
||||
rpcbind=127.0.0.1
|
||||
|
||||
# Network Settings (Testnet)
|
||||
port=12333
|
||||
rpcport=12332
|
||||
maxconnections=25
|
||||
fallbackfee=0.0001
|
||||
minrelaytxfee=0.00001
|
||||
|
||||
# Faster block time for testing
|
||||
blockmintxfee=0.00001
|
||||
```
|
||||
|
||||
### Regtest Configuration
|
||||
```conf
|
||||
# Network Selection
|
||||
regtest=1
|
||||
|
||||
[regtest]
|
||||
# Core Settings
|
||||
txindex=1
|
||||
server=1
|
||||
listen=1
|
||||
daemon=1
|
||||
|
||||
# RPC Configuration
|
||||
rpcuser=regtest_user
|
||||
rpcpassword=regtest_password
|
||||
rpcallowip=127.0.0.1
|
||||
rpcbind=127.0.0.1
|
||||
|
||||
# Network Settings (Regtest)
|
||||
port=23444
|
||||
rpcport=23443
|
||||
maxconnections=1 # No external connections needed
|
||||
|
||||
# Development Settings
|
||||
fallbackfee=0.00001
|
||||
minrelaytxfee=0.000001
|
||||
blockmintxfee=0.000001
|
||||
|
||||
# Enable all debugging for development
|
||||
debug=1
|
||||
```
|
||||
|
||||
## Unified Configuration File with Network Sections
|
||||
|
||||
You can also create a single configuration file that works for all networks using section headers. This approach allows you to switch between networks without changing the entire configuration file.
|
||||
|
||||
```conf
|
||||
# Palladium Core Unified Configuration
|
||||
|
||||
# By default, if neither testnet nor regtest is specified, the node runs on mainnet.
|
||||
# Uncomment ONLY ONE of the following lines to switch network:
|
||||
# testnet=1 # Enable testnet mode (disables mainnet and regtest)
|
||||
# regtest=1 # Enable regtest mode (disables mainnet and testnet)
|
||||
|
||||
# Mainnet settings (default - no section header needed)
|
||||
# These settings apply to mainnet by default
|
||||
|
||||
txindex=1
|
||||
server=1
|
||||
listen=1
|
||||
daemon=1
|
||||
discover=1
|
||||
|
||||
rpcuser=your_secure_username
|
||||
rpcpassword=your_very_secure_password
|
||||
rpcallowip=127.0.0.1
|
||||
rpcbind=127.0.0.1
|
||||
|
||||
port=2333
|
||||
rpcport=2332
|
||||
maxconnections=50
|
||||
fallbackfee=0.0001
|
||||
minrelaytxfee=0.00001
|
||||
|
||||
# Mainnet trusted nodes
|
||||
addnode=89.117.149.130:2333
|
||||
addnode=66.94.115.80:2333
|
||||
addnode=173.212.224.67:2333
|
||||
|
||||
[test]
|
||||
# Testnet specific settings
|
||||
# These override mainnet settings when using testnet
|
||||
|
||||
# Testnet ports
|
||||
port=12333
|
||||
rpcport=12332
|
||||
maxconnections=25
|
||||
|
||||
# Testnet RPC (different credentials recommended)
|
||||
rpcuser=testnet_user
|
||||
rpcpassword=testnet_password
|
||||
|
||||
# Testnet nodes
|
||||
addnode=<ip-address1>:12333
|
||||
addnode=<ip-address2>:12333
|
||||
|
||||
[regtest]
|
||||
# Regression test network settings
|
||||
# These override mainnet settings when using regtest
|
||||
|
||||
# Regtest ports
|
||||
port=28444
|
||||
rpcport=28443
|
||||
maxconnections=1
|
||||
|
||||
# Regtest RPC (development credentials)
|
||||
rpcuser=regtest_user
|
||||
rpcpassword=regtest_password
|
||||
|
||||
# Run in foreground for development
|
||||
daemon=0
|
||||
|
||||
# Lower fees for testing
|
||||
fallbackfee=0.00001
|
||||
minrelaytxfee=0.000001
|
||||
blockmintxfee=0.000001
|
||||
|
||||
# Enable all debugging for development
|
||||
debug=1
|
||||
```
|
||||
|
||||
### How Network Selection Works
|
||||
|
||||
- **Mainnet**: Used by default when no network is specified (no section header needed)
|
||||
- **Testnet**: Activated when starting with `-testnet` flag or `testnet=1` in main section
|
||||
- **Regtest**: Activated when starting with `-regtest` flag or `regtest=1` in main section
|
||||
|
||||
When using section headers:
|
||||
- Settings in `[test]` section only apply when using testnet
|
||||
- Settings in `[regtest]` section only apply when using regtest
|
||||
- Mainnet uses settings outside any section or in main section
|
||||
- Network-specific sections override main settings for that network
|
||||
|
||||
## Security Best Practices
|
||||
|
||||
1. **Strong RPC Credentials**: Always use strong, unique usernames and passwords for RPC access
|
||||
2. **Network Restrictions**: Limit `rpcallowip` to only necessary IP ranges
|
||||
3. **Firewall Configuration**: Configure your firewall to only allow necessary ports
|
||||
4. **Regular Updates**: Keep your Palladium Core software updated
|
||||
5. **Backup Configuration**: Keep backups of your configuration file
|
||||
6. **Testnet First**: Always test configuration changes on testnet before mainnet
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
1. **Port Already in Use**: Ensure no other services are using ports 2333/2332
|
||||
2. **RPC Connection Failed**: Check firewall settings and RPC credentials
|
||||
3. **Sync Issues**: Verify network connectivity and add trusted nodes
|
||||
4. **Permission Errors**: Ensure proper file permissions on configuration file
|
||||
|
||||
### Debug Options
|
||||
```conf
|
||||
# Enable specific debugging categories
|
||||
debug=net # Network activity
|
||||
debug=rpc # RPC requests
|
||||
debug=coindb # Database operations
|
||||
debug=qt # GUI operations
|
||||
debug=mempool # Memory pool operations
|
||||
```
|
||||
|
||||
## Additional Resources
|
||||
|
||||
- [Palladium Core RPC Documentation](JSON-RPC-interface.md)
|
||||
- [Network Configuration Guide](reduce-traffic.md)
|
||||
- [Performance Optimization](reduce-memory.md)
|
||||
- [Developer Documentation](developer-notes.md)
|
||||
|
||||
For the most up-to-date information, always refer to the official Palladium Core documentation and release notes.
|
||||
@@ -1,7 +1,7 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||
.TH PALLADIUM-CLI "1" "April 2024" "palladium-cli v1.4.1" "User Commands"
|
||||
.TH PALLADIUM-CLI "1" "April 2024" "palladium-cli v1.4.2" "User Commands"
|
||||
.SH NAME
|
||||
palladium-cli \- manual page for palladium-cli v1.4.1
|
||||
palladium-cli \- manual page for palladium-cli v1.4.2
|
||||
.SH SYNOPSIS
|
||||
.B palladium-cli
|
||||
[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] \fI\,Send command to Palladium Core\/\fR
|
||||
@@ -15,7 +15,7 @@ palladium-cli \- manual page for palladium-cli v1.4.1
|
||||
.B palladium-cli
|
||||
[\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR
|
||||
.SH DESCRIPTION
|
||||
Palladium Core RPC client version v1.4.1
|
||||
Palladium Core RPC client version v1.4.2
|
||||
.SH OPTIONS
|
||||
.HP
|
||||
\-?
|
||||
@@ -124,4 +124,4 @@ Copyright (C) 2024 The Palladium Core developers
|
||||
|
||||
Please contribute if you find Palladium Core useful. Visit
|
||||
<https://palladium-coin.com/> for further information about the software.
|
||||
The source code is available from <https://github.com/NotRin7/palladium>.
|
||||
The source code is available from <https://github.com/palladium-coin/palladiumcore>.
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||
.TH PALLADIUM-QT "1" "April 2024" "palladium-qt v1.4.1" "User Commands"
|
||||
.TH PALLADIUM-QT "1" "April 2024" "palladium-qt v1.4.2" "User Commands"
|
||||
.SH NAME
|
||||
palladium-qt \- manual page for palladium-qt v1.4.1
|
||||
palladium-qt \- manual page for palladium-qt v1.4.2
|
||||
.SH SYNOPSIS
|
||||
.B palladium-qt
|
||||
[\fI\,command-line options\/\fR]
|
||||
.SH DESCRIPTION
|
||||
Palladium Core version v1.4.1
|
||||
Palladium Core version v1.4.2
|
||||
.SH OPTIONS
|
||||
.HP
|
||||
\-?
|
||||
@@ -682,7 +682,7 @@ Copyright (C) 2024 The Palladium Core developers
|
||||
|
||||
Please contribute if you find Palladium Core useful. Visit
|
||||
<https://palladium-coin.com/> for further information about the software.
|
||||
The source code is available from <https://github.com/NotRin7/palladium>.
|
||||
The source code is available from <https://github.com/palladium-coin/palladiumcore>.
|
||||
|
||||
This is experimental software.
|
||||
Distributed under the MIT software license, see the accompanying file COPYING
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||
.TH PALLADIUM-TX "1" "April 2024" "palladium-tx v1.4.1" "User Commands"
|
||||
.TH PALLADIUM-TX "1" "April 2024" "palladium-tx v1.4.2" "User Commands"
|
||||
.SH NAME
|
||||
palladium-tx \- manual page for palladium-tx v1.4.1
|
||||
palladium-tx \- manual page for palladium-tx v1.4.2
|
||||
.SH SYNOPSIS
|
||||
.B palladium-tx
|
||||
[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] \fI\,Update hex-encoded palladium transaction\/\fR
|
||||
@@ -9,7 +9,7 @@ palladium-tx \- manual page for palladium-tx v1.4.1
|
||||
.B palladium-tx
|
||||
[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] \fI\,Create hex-encoded palladium transaction\/\fR
|
||||
.SH DESCRIPTION
|
||||
Palladium Core palladium\-tx utility version v1.4.1
|
||||
Palladium Core palladium\-tx utility version v1.4.2
|
||||
.SH OPTIONS
|
||||
.HP
|
||||
\-?
|
||||
@@ -117,4 +117,4 @@ Copyright (C) 2024 The Palladium Core developers
|
||||
|
||||
Please contribute if you find Palladium Core useful. Visit
|
||||
<https://palladium-coin.com/> for further information about the software.
|
||||
The source code is available from <https://github.com/NotRin7/palladium>.
|
||||
The source code is available from <https://github.com/palladium-coin/palladiumcore>.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||
.TH PALLADIUM-WALLET "1" "April 2024" "palladium-wallet v1.4.1" "User Commands"
|
||||
.TH PALLADIUM-WALLET "1" "April 2024" "palladium-wallet v1.4.2" "User Commands"
|
||||
.SH NAME
|
||||
palladium-wallet \- manual page for palladium-wallet v1.4.1
|
||||
palladium-wallet \- manual page for palladium-wallet v1.4.2
|
||||
.SH DESCRIPTION
|
||||
Palladium Core palladium\-wallet version v1.4.1
|
||||
Palladium Core palladium\-wallet version v1.4.2
|
||||
.PP
|
||||
palladium\-wallet is an offline tool for creating and interacting with Palladium Core wallet files.
|
||||
By default palladium\-wallet will act on wallets in the default mainnet wallet directory in the datadir.
|
||||
@@ -62,4 +62,4 @@ Copyright (C) 2024 The Palladium Core developers
|
||||
|
||||
Please contribute if you find Palladium Core useful. Visit
|
||||
<https://palladium-coin.com/> for further information about the software.
|
||||
The source code is available from <https://github.com/NotRin7/palladium>.
|
||||
The source code is available from <https://github.com/palladium-coin/palladiumcore>.
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||
.TH PALLADIUMD "1" "April 2024" "palladiumd v1.4.1" "User Commands"
|
||||
.TH PALLADIUMD "1" "April 2024" "palladiumd v1.4.2" "User Commands"
|
||||
.SH NAME
|
||||
palladiumd \- manual page for palladiumd v1.4.1
|
||||
palladiumd \- manual page for palladiumd v1.4.2
|
||||
.SH SYNOPSIS
|
||||
.B palladiumd
|
||||
[\fI\,options\/\fR] \fI\,Start Palladium Core\/\fR
|
||||
.SH DESCRIPTION
|
||||
Palladium Core version v1.4.1
|
||||
Palladium Core version v1.4.2
|
||||
.SH OPTIONS
|
||||
.HP
|
||||
\-?
|
||||
@@ -660,7 +660,7 @@ Copyright (C) 2024 The Palladium Core developers
|
||||
|
||||
Please contribute if you find Palladium Core useful. Visit
|
||||
<https://palladium-coin.com/> for further information about the software.
|
||||
The source code is available from <https://github.com/NotRin7/palladium>.
|
||||
The source code is available from <https://github.com/palladium-coin/palladiumcore>.
|
||||
|
||||
This is experimental software.
|
||||
Distributed under the MIT software license, see the accompanying file COPYING
|
||||
|
||||
@@ -10,7 +10,7 @@ improvements, as well as updated translations.
|
||||
|
||||
Please report bugs using the issue tracker at GitHub:
|
||||
|
||||
<https://github.com/NotRin7/palladium/issues>
|
||||
<https://github.com/palladium-coin/palladiumcore/issues>
|
||||
|
||||
To receive security and update notifications, please subscribe to:
|
||||
|
||||
|
||||
@@ -14,7 +14,6 @@ Creates native Linux 64-bit binaries using a Docker container based on Ubuntu 20
|
||||
|
||||
```bash
|
||||
cd docker-build # Navigate to the docker-build directory
|
||||
chmod +x build-linux-x86_64.sh # Make the build script executable
|
||||
./build-linux-x86_64.sh # Run the build script
|
||||
```
|
||||
|
||||
@@ -35,7 +34,6 @@ Creates ARM64 binaries for devices like Raspberry Pi 4+ through cross-compilatio
|
||||
|
||||
```bash
|
||||
cd docker-build # Navigate to the docker-build directory
|
||||
chmod +x build-linux-aarch64.sh # Make the build script executable
|
||||
./build-linux-aarch64.sh # Run the cross-compilation build script
|
||||
```
|
||||
|
||||
@@ -56,7 +54,6 @@ Creates ARM 32-bit binaries for older devices like Raspberry Pi 2/3 and Pi Zero.
|
||||
|
||||
```bash
|
||||
cd docker-build # Navigate to the docker-build directory
|
||||
chmod +x build-linux-armv7l.sh # Make the build script executable
|
||||
./build-linux-armv7l.sh # Run the ARMv7l cross-compilation build script
|
||||
```
|
||||
|
||||
@@ -77,7 +74,6 @@ Creates Windows executables through cross-compilation with MinGW-w64.
|
||||
|
||||
```bash
|
||||
cd docker-build # Navigate to the docker-build directory
|
||||
chmod +x build-windows.sh # Make the build script executable
|
||||
./build-windows.sh # Run the Windows cross-compilation build script
|
||||
```
|
||||
|
||||
@@ -89,3 +85,10 @@ Executables will be available in `../build/windows/`:
|
||||
- `palladium-tx.exe` - Transaction utility
|
||||
- `palladium-wallet.exe` - Wallet utility
|
||||
- `palladium-qt.exe` - GUI application
|
||||
|
||||
### Troubleshooting
|
||||
|
||||
```bash
|
||||
cd docker-build
|
||||
chmod +x *.sh
|
||||
```
|
||||
|
||||
0
docker-build/build-linux-aarch64.sh
Normal file → Executable file
0
docker-build/build-linux-aarch64.sh
Normal file → Executable file
0
docker-build/build-linux-armv7l.sh
Normal file → Executable file
0
docker-build/build-linux-armv7l.sh
Normal file → Executable file
0
docker-build/build-linux-x86_64.sh
Normal file → Executable file
0
docker-build/build-linux-x86_64.sh
Normal file → Executable file
0
docker-build/build-windows.sh
Normal file → Executable file
0
docker-build/build-windows.sh
Normal file → Executable file
@@ -177,7 +177,7 @@ public:
|
||||
};
|
||||
|
||||
/**
|
||||
* Testnet (v3)
|
||||
* Testnet
|
||||
*/
|
||||
class CTestNetParams : public CChainParams {
|
||||
public:
|
||||
@@ -185,7 +185,8 @@ public:
|
||||
strNetworkID = CBaseChainParams::TESTNET;
|
||||
consensus.nSubsidyHalvingInterval = 210000;
|
||||
|
||||
consensus.BIP34Height = 0;
|
||||
consensus.BIP34Height = 1700;
|
||||
consensus.BIP34Hash = uint256();
|
||||
consensus.BIP65Height = 0;
|
||||
consensus.BIP66Height = 0;
|
||||
consensus.CSVHeight = 0;
|
||||
@@ -195,19 +196,20 @@ public:
|
||||
|
||||
|
||||
// The best chain should have at least this much work.
|
||||
consensus.nMinimumChainWork = uint256S("0x00");
|
||||
consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000000000003077e5d4c957"); // Current testnet chainwork
|
||||
|
||||
// By default assume that the signatures in ancestors of this block are valid.
|
||||
consensus.defaultAssumeValid = uint256S("0x00");
|
||||
consensus.defaultAssumeValid = uint256S("0x0000000000f8470a0cc0f6210b23bbeba248bf937205e34588aa84596b72c3bd"); // Current best block hash
|
||||
|
||||
|
||||
consensus.powLimit = uint256S("00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
||||
consensus.nPowTargetTimespan = 24 * 60 * 60;
|
||||
consensus.nPowTargetTimespan = 14 * 24 * 60 * 60;
|
||||
consensus.nPowTargetSpacing = 2 * 60;
|
||||
consensus.fPowAllowMinDifficultyBlocks = true;
|
||||
consensus.nPowTargetSpacingV2 = 2 * 60;
|
||||
consensus.fPowAllowMinDifficultyBlocks = true; // Enable minimum difficulty after 20 minutes of inactivity
|
||||
consensus.fPowNoRetargeting = false;
|
||||
consensus.nRuleChangeActivationThreshold = 720;
|
||||
consensus.nMinerConfirmationWindow = 540;
|
||||
consensus.nRuleChangeActivationThreshold = 540;
|
||||
consensus.nMinerConfirmationWindow = 720;
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].bit = 28;
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nStartTime = 0;
|
||||
consensus.vDeployments[Consensus::DEPLOYMENT_TESTDUMMY].nTimeout = Consensus::BIP9Deployment::NO_TIMEOUT;
|
||||
@@ -229,9 +231,10 @@ public:
|
||||
assert(consensus.hashGenesisBlock == uint256S("0x000000000933ea01ad0ee984209779baaec3ced90fa3f408719526f8d77f4943"));
|
||||
assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"));
|
||||
|
||||
vFixedSeeds.clear();
|
||||
vSeeds.clear();
|
||||
|
||||
// Note: vFixedSeeds is not cleared for testnet to allow peer discovery
|
||||
|
||||
vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_test, pnSeed6_test + ARRAYLEN(pnSeed6_test));
|
||||
|
||||
base58Prefixes[PUBKEY_ADDRESS] = std::vector<unsigned char>(1,127);
|
||||
base58Prefixes[SCRIPT_ADDRESS] = std::vector<unsigned char>(1,115);
|
||||
|
||||
@@ -16,6 +16,7 @@ static SeedSpec6 pnSeed6_main[] = {
|
||||
};
|
||||
|
||||
static SeedSpec6 pnSeed6_test[] = {
|
||||
|
||||
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0xbc,0xd8,0xca,0x87}, 12335}, // 188.216.202.135:12335
|
||||
{{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0xff,0x54,0xf7,0xa9,0xf8}, 12333}, // 84.247.169.248:12333
|
||||
};
|
||||
#endif // PALLADIUM_CHAINPARAMSSEEDS_H
|
||||
|
||||
@@ -81,8 +81,8 @@ std::string FormatFullVersion()
|
||||
{
|
||||
// Display a simplified semantic version: omit trailing ".0" and git suffix
|
||||
// by reusing FormatVersion on the aggregated CLIENT_VERSION.
|
||||
// This yields e.g. "v1.4.1" when CLIENT_VERSION_BUILD == 0,
|
||||
// or "v1.4.1.1" if a non-zero build number is used.
|
||||
// This yields e.g. "v1.4.2" when CLIENT_VERSION_BUILD == 0,
|
||||
// or "v1.4.2.1" if a non-zero build number is used.
|
||||
return std::string("v") + FormatVersion(CLIENT_VERSION);
|
||||
}
|
||||
|
||||
|
||||
@@ -579,7 +579,7 @@ void SetupServerArgs()
|
||||
|
||||
std::string LicenseInfo()
|
||||
{
|
||||
const std::string URL_SOURCE_CODE = "<https://github.com/NotRin7/palladium>";
|
||||
const std::string URL_SOURCE_CODE = "<https://github.com/palladium-coin/palladiumcore>";
|
||||
|
||||
return CopyrightHolders(strprintf(_("Copyright (C) %i-%i").translated, 2024, COPYRIGHT_YEAR) + " ") + "\n" +
|
||||
"Copyright (C) 2009-2024 The Bitcoin Core developers" + "\n" +
|
||||
|
||||
27
src/pow.cpp
27
src/pow.cpp
@@ -19,6 +19,15 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead
|
||||
if ((pindexLast->nHeight >= 28930) && (pindexLast->nHeight <= 28999))
|
||||
return nProofOfWorkLimit;
|
||||
|
||||
// Special difficulty rule for testnet: If the new block's timestamp is more than 20 minutes
|
||||
// then allow mining of a min-difficulty block. This rule has priority over LWMA.
|
||||
if (params.fPowAllowMinDifficultyBlocks && pblock->GetBlockTime() > pindexLast->GetBlockTime() + 20 * 60)
|
||||
return nProofOfWorkLimit;
|
||||
|
||||
// For testnet, use LWMA from beginning to recalculate every block like mainnet
|
||||
if (params.fPowAllowMinDifficultyBlocks && pindexLast->nHeight >= 0)
|
||||
return LwmaCalculateNextWorkRequired(pindexLast, params);
|
||||
|
||||
if (pindexLast->nHeight >= 29000)
|
||||
return LwmaCalculateNextWorkRequired(pindexLast, params);
|
||||
|
||||
@@ -27,19 +36,11 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead
|
||||
{
|
||||
if (params.fPowAllowMinDifficultyBlocks)
|
||||
{
|
||||
// Special difficulty rule for testnet:
|
||||
// If the new block's timestamp is more than 2* 10 minutes
|
||||
// then allow mining of a min-difficulty block.
|
||||
if (pblock->GetBlockTime() > pindexLast->GetBlockTime() + params.nPowTargetSpacing*2)
|
||||
return nProofOfWorkLimit;
|
||||
else
|
||||
{
|
||||
// Return the last non-special-min-difficulty-rules-block
|
||||
const CBlockIndex* pindex = pindexLast;
|
||||
while (pindex->pprev && pindex->nHeight % params.DifficultyAdjustmentInterval() != 0 && pindex->nBits == nProofOfWorkLimit)
|
||||
pindex = pindex->pprev;
|
||||
return pindex->nBits;
|
||||
}
|
||||
// Return the last non-special-min-difficulty-rules-block
|
||||
const CBlockIndex* pindex = pindexLast;
|
||||
while (pindex->pprev && pindex->nHeight % params.DifficultyAdjustmentInterval() != 0 && pindex->nBits == nProofOfWorkLimit)
|
||||
pindex = pindex->pprev;
|
||||
return pindex->nBits;
|
||||
}
|
||||
return pindexLast->nBits;
|
||||
}
|
||||
|
||||
@@ -132,9 +132,9 @@ void ModalOverlay::tipUpdate(int count, const QDateTime& blockDate, double nVeri
|
||||
// not syncing
|
||||
return;
|
||||
|
||||
// estimate the number of headers left based on nPowTargetSpacing
|
||||
// estimate the number of headers left based on nPowTargetSpacingV2
|
||||
// and check if the gui is not aware of the best header (happens rarely)
|
||||
int estimateNumHeadersLeft = bestHeaderDate.secsTo(currentDate) / Params().GetConsensus().nPowTargetSpacing;
|
||||
int estimateNumHeadersLeft = bestHeaderDate.secsTo(currentDate) / Params().GetConsensus().nPowTargetSpacingV2;
|
||||
bool hasBestHeader = bestHeaderHeight >= count;
|
||||
|
||||
// show remaining number of blocks
|
||||
@@ -147,7 +147,7 @@ void ModalOverlay::tipUpdate(int count, const QDateTime& blockDate, double nVeri
|
||||
}
|
||||
|
||||
void ModalOverlay::UpdateHeaderSyncLabel() {
|
||||
int est_headers_left = bestHeaderDate.secsTo(QDateTime::currentDateTime()) / Params().GetConsensus().nPowTargetSpacing;
|
||||
int est_headers_left = bestHeaderDate.secsTo(QDateTime::currentDateTime()) / Params().GetConsensus().nPowTargetSpacingV2;
|
||||
ui->numberOfBlocksLeft->setText(tr("Unknown. Syncing Headers (%1, %2%)...").arg(bestHeaderHeight).arg(QString::number(100.0 / (bestHeaderHeight + est_headers_left) * bestHeaderHeight, 'f', 1)));
|
||||
}
|
||||
|
||||
|
||||
@@ -83,4 +83,8 @@
|
||||
<file alias="spinner-034">res/movies/spinner-034.png</file>
|
||||
<file alias="spinner-035">res/movies/spinner-035.png</file>
|
||||
</qresource>
|
||||
|
||||
<qresource prefix="/">
|
||||
<file>res/styles/dark.qss</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||
|
||||
@@ -61,6 +61,8 @@
|
||||
#include <QVBoxLayout>
|
||||
#include <QWindow>
|
||||
|
||||
#include <QFile>
|
||||
#include <QTextStream>
|
||||
|
||||
const std::string PalladiumGUI::DEFAULT_UIPLATFORM =
|
||||
#if defined(Q_OS_MAC)
|
||||
@@ -79,7 +81,25 @@ PalladiumGUI::PalladiumGUI(interfaces::Node& node, const PlatformStyle *_platfor
|
||||
platformStyle(_platformStyle),
|
||||
m_network_style(networkStyle)
|
||||
{
|
||||
|
||||
// --- DARK MODE AUTO-LOAD ---
|
||||
QSettings settings;
|
||||
bool isDark = settings.value("darkModeEnabled", false).toBool();
|
||||
if (isDark) {
|
||||
// Stylesheet laden
|
||||
QFile f(":/res/styles/dark.qss");
|
||||
if (f.open(QFile::ReadOnly | QFile::Text)) {
|
||||
QTextStream ts(&f);
|
||||
qApp->setStyleSheet(ts.readAll());
|
||||
f.close();
|
||||
}
|
||||
// Wichtig: Den Haken im Menü setzen!
|
||||
if(themeAction) {
|
||||
themeAction->setChecked(true);
|
||||
}
|
||||
}
|
||||
|
||||
//QSettings settings;
|
||||
if (!restoreGeometry(settings.value("MainWindowGeometry").toByteArray())) {
|
||||
// Restore failed (perhaps missing setting), center the window
|
||||
move(QGuiApplication::primaryScreen()->availableGeometry().center() - frameGeometry().center());
|
||||
@@ -414,6 +434,10 @@ void PalladiumGUI::createActions()
|
||||
|
||||
connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_C), this), &QShortcut::activated, this, &PalladiumGUI::showDebugWindowActivateConsole);
|
||||
connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_D), this), &QShortcut::activated, this, &PalladiumGUI::showDebugWindow);
|
||||
|
||||
themeAction = new QAction(tr("&Dark Mode"), this);
|
||||
themeAction->setCheckable(true);
|
||||
connect(themeAction, SIGNAL(triggered()), this, SLOT(toggleTheme()));
|
||||
}
|
||||
|
||||
void PalladiumGUI::createMenuBar()
|
||||
@@ -506,6 +530,8 @@ void PalladiumGUI::createMenuBar()
|
||||
help->addSeparator();
|
||||
help->addAction(aboutAction);
|
||||
help->addAction(aboutQtAction);
|
||||
|
||||
settings->addAction(themeAction);
|
||||
}
|
||||
|
||||
void PalladiumGUI::createToolBars()
|
||||
@@ -899,7 +925,7 @@ void PalladiumGUI::updateHeadersSyncProgressLabel()
|
||||
{
|
||||
int64_t headersTipTime = clientModel->getHeaderTipTime();
|
||||
int headersTipHeight = clientModel->getHeaderTipHeight();
|
||||
int estHeadersLeft = (GetTime() - headersTipTime) / Params().GetConsensus().nPowTargetSpacing;
|
||||
int estHeadersLeft = (GetTime() - headersTipTime) / Params().GetConsensus().nPowTargetSpacingV2;
|
||||
if (estHeadersLeft > HEADER_HEIGHT_DELTA_SYNC)
|
||||
progressBarLabel->setText(tr("Syncing Headers (%1%)...").arg(QString::number(100.0 / (headersTipHeight+estHeadersLeft)*headersTipHeight, 'f', 1)));
|
||||
}
|
||||
@@ -1463,3 +1489,23 @@ void UnitDisplayStatusBarControl::onMenuSelection(QAction* action)
|
||||
optionsModel->setDisplayUnit(action->data());
|
||||
}
|
||||
}
|
||||
void PalladiumGUI::toggleTheme()
|
||||
{
|
||||
QSettings settings;
|
||||
if (themeAction->isChecked()) {
|
||||
// 1. Dark Mode laden
|
||||
QFile f(":/res/styles/dark.qss");
|
||||
if (f.open(QFile::ReadOnly | QFile::Text)) {
|
||||
QTextStream ts(&f);
|
||||
qApp->setStyleSheet(ts.readAll());
|
||||
f.close();
|
||||
}
|
||||
// 2. Speichern, dass er an ist
|
||||
settings.setValue("darkModeEnabled", true);
|
||||
} else {
|
||||
// 1. Standard Theme (Weiß)
|
||||
qApp->setStyleSheet("");
|
||||
// 2. Speichern, dass er aus ist
|
||||
settings.setValue("darkModeEnabled", false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,7 +153,7 @@ private:
|
||||
QAction* m_close_wallet_action{nullptr};
|
||||
QAction* m_wallet_selector_label_action = nullptr;
|
||||
QAction* m_wallet_selector_action = nullptr;
|
||||
|
||||
QAction *themeAction;
|
||||
QLabel *m_wallet_selector_label = nullptr;
|
||||
QComboBox* m_wallet_selector = nullptr;
|
||||
|
||||
@@ -308,6 +308,8 @@ public Q_SLOTS:
|
||||
void setTrayIconVisible(bool);
|
||||
|
||||
void showModalOverlay();
|
||||
|
||||
void toggleTheme();
|
||||
};
|
||||
|
||||
class UnitDisplayStatusBarControl : public QLabel
|
||||
|
||||
146
src/qt/res/styles/dark.qss
Normal file
146
src/qt/res/styles/dark.qss
Normal file
@@ -0,0 +1,146 @@
|
||||
/* =======================================================
|
||||
PALLADIUM CORE DARK THEME (dark.qss)
|
||||
======================================================= */
|
||||
|
||||
/* --- GRUNDLAGEN --- */
|
||||
QWidget {
|
||||
background-color: #2D2D2D;
|
||||
color: #E0E0E0;
|
||||
selection-background-color: #007BFF;
|
||||
selection-color: #FFFFFF;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
/* --- MENÜLEISTE (Oben: File, Settings...) --- */
|
||||
QMenuBar {
|
||||
background-color: #2D2D2D;
|
||||
color: #E0E0E0;
|
||||
border-bottom: 1px solid #3A3A3A;
|
||||
}
|
||||
|
||||
QMenuBar::item {
|
||||
background-color: transparent;
|
||||
padding: 6px 10px;
|
||||
}
|
||||
|
||||
QMenuBar::item:selected {
|
||||
background-color: #3A3A3A;
|
||||
}
|
||||
|
||||
QMenu {
|
||||
background-color: #2D2D2D;
|
||||
border: 1px solid #555;
|
||||
}
|
||||
|
||||
QMenu::item {
|
||||
padding: 5px 20px;
|
||||
}
|
||||
|
||||
QMenu::item:selected {
|
||||
background-color: #007BFF;
|
||||
color: white;
|
||||
}
|
||||
|
||||
/* --- TOOLBAR (Die Icons oben) --- */
|
||||
/* Wir machen sie etwas heller, damit schwarze Icons sichtbar bleiben */
|
||||
QToolBar {
|
||||
background-color: #3D3D3D;
|
||||
border-bottom: 1px solid #3A3A3A;
|
||||
padding: 2px;
|
||||
spacing: 5px;
|
||||
}
|
||||
|
||||
QToolButton {
|
||||
background-color: transparent;
|
||||
border: 1px solid transparent;
|
||||
border-radius: 4px;
|
||||
padding: 4px;
|
||||
color: #E0E0E0;
|
||||
}
|
||||
|
||||
QToolButton:hover {
|
||||
background-color: #4D4D4D;
|
||||
border: 1px solid #555;
|
||||
}
|
||||
|
||||
QToolButton:checked {
|
||||
background-color: #007BFF;
|
||||
color: white;
|
||||
}
|
||||
|
||||
/* --- TABS (Overview, Send, Receive) --- */
|
||||
QTabWidget::pane {
|
||||
border: 1px solid #3A3A3A;
|
||||
}
|
||||
|
||||
QTabBar::tab {
|
||||
background: #1E1E1E;
|
||||
color: #AAAAAA;
|
||||
padding: 8px 20px;
|
||||
border: 1px solid #3A3A3A;
|
||||
border-bottom: none;
|
||||
border-top-left-radius: 4px;
|
||||
border-top-right-radius: 4px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
QTabBar::tab:selected {
|
||||
background: #2D2D2D; /* Gleiche Farbe wie Hintergrund */
|
||||
color: #FFFFFF;
|
||||
border-bottom: 1px solid #2D2D2D; /* "Verbindet" den Tab mit dem Inhalt */
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
/* --- EINGABEFELDER --- */
|
||||
QLineEdit, QTextEdit, QPlainTextEdit, QSpinBox, QDoubleSpinBox {
|
||||
background-color: #1E1E1E;
|
||||
color: #FFFFFF;
|
||||
border: 1px solid #3A3A3A;
|
||||
border-radius: 3px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
QLineEdit:focus {
|
||||
border: 1px solid #007BFF;
|
||||
}
|
||||
|
||||
/* --- LISTEN & TABELLEN (Transaktionen) --- */
|
||||
QTableView, QListView, QTreeWidget {
|
||||
background-color: #1E1E1E;
|
||||
alternate-background-color: #252525;
|
||||
color: #E0E0E0;
|
||||
gridline-color: #333;
|
||||
border: 1px solid #3A3A3A;
|
||||
}
|
||||
|
||||
QHeaderView::section {
|
||||
background-color: #333;
|
||||
color: #E0E0E0;
|
||||
padding: 4px;
|
||||
border: 1px solid #444;
|
||||
}
|
||||
|
||||
/* --- BUTTONS --- */
|
||||
QPushButton {
|
||||
background-color: #444;
|
||||
border: 1px solid #555;
|
||||
border-radius: 4px;
|
||||
padding: 5px 15px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
QPushButton:hover {
|
||||
background-color: #555;
|
||||
}
|
||||
|
||||
QPushButton:pressed {
|
||||
background-color: #007BFF;
|
||||
border-color: #007BFF;
|
||||
}
|
||||
|
||||
/* --- STATUSBAR (Unten) --- */
|
||||
QStatusBar {
|
||||
background-color: #2D2D2D;
|
||||
color: #888;
|
||||
border-top: 1px solid #3A3A3A;
|
||||
}
|
||||
@@ -167,7 +167,7 @@ void SendCoinsDialog::setModel(WalletModel *_model)
|
||||
|
||||
// fee section
|
||||
for (const int n : confTargets) {
|
||||
ui->confTargetSelector->addItem(tr("%1 (%2 blocks)").arg(GUIUtil::formatNiceTimeOffset(n*Params().GetConsensus().nPowTargetSpacing)).arg(n));
|
||||
ui->confTargetSelector->addItem(tr("%1 (%2 blocks)").arg(GUIUtil::formatNiceTimeOffset(n*Params().GetConsensus().nPowTargetSpacingV2)).arg(n));
|
||||
}
|
||||
connect(ui->confTargetSelector, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &SendCoinsDialog::updateSmartFeeLabel);
|
||||
connect(ui->confTargetSelector, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &SendCoinsDialog::coinControlUpdateLabels);
|
||||
|
||||
@@ -491,8 +491,10 @@ static UniValue getblocktemplate(const JSONRPCRequest& request)
|
||||
if (g_rpc_node->connman->GetNodeCount(CConnman::CONNECTIONS_ALL) == 0)
|
||||
throw JSONRPCError(RPC_CLIENT_NOT_CONNECTED, PACKAGE_NAME " is not connected!");
|
||||
|
||||
if (::ChainstateActive().IsInitialBlockDownload())
|
||||
// Block getblocktemplate during initial block download for security
|
||||
if (::ChainstateActive().IsInitialBlockDownload()) {
|
||||
throw JSONRPCError(RPC_CLIENT_IN_INITIAL_DOWNLOAD, PACKAGE_NAME " is in initial sync and waiting for blocks...");
|
||||
}
|
||||
|
||||
static unsigned int nTransactionsUpdatedLast;
|
||||
const CTxMemPool& mempool = EnsureMemPool();
|
||||
|
||||
@@ -3437,7 +3437,16 @@ static bool ContextualCheckBlockHeader(const CBlockHeader& block, BlockValidatio
|
||||
|
||||
// Check proof of work
|
||||
const Consensus::Params& consensusParams = params.GetConsensus();
|
||||
if (block.nBits != GetNextWorkRequired(pindexPrev, &block, consensusParams))
|
||||
|
||||
// For testnet, allow min difficulty blocks after 20 minutes of inactivity
|
||||
bool skipPowCheck = false;
|
||||
if (params.NetworkIDString() == "test" && consensusParams.fPowAllowMinDifficultyBlocks) {
|
||||
if (pindexPrev && block.GetBlockTime() > pindexPrev->GetBlockTime() + consensusParams.nPowTargetSpacing * 2) {
|
||||
skipPowCheck = true; // Allow min difficulty after 20 min inactivity
|
||||
}
|
||||
}
|
||||
|
||||
if (!skipPowCheck && block.nBits != GetNextWorkRequired(pindexPrev, &block, consensusParams))
|
||||
return state.Invalid(BlockValidationResult::BLOCK_INVALID_HEADER, "bad-diffbits", "incorrect proof of work");
|
||||
|
||||
// Check against checkpoints
|
||||
|
||||
Reference in New Issue
Block a user