From 7e418123a97d0524f2f92232e778b5ac641ca3e1 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Thu, 13 Nov 2025 15:58:01 +0100 Subject: [PATCH 01/13] build: update version to 1.5.0 Update client version from 1.4.1 to 1.5.0 across configuration files, source code, and documentation --- build_msvc/palladium_config.h | 6 +++--- configure.ac | 4 ++-- doc/man/palladium-cli.1 | 6 +++--- doc/man/palladium-qt.1 | 6 +++--- doc/man/palladium-tx.1 | 6 +++--- doc/man/palladium-wallet.1 | 6 +++--- doc/man/palladiumd.1 | 6 +++--- src/clientversion.cpp | 4 ++-- 8 files changed, 22 insertions(+), 22 deletions(-) diff --git a/build_msvc/palladium_config.h b/build_msvc/palladium_config.h index 00172fe..bd18ca8 100644 --- a/build_msvc/palladium_config.h +++ b/build_msvc/palladium_config.h @@ -18,7 +18,7 @@ #define CLIENT_VERSION_MAJOR 1 /* Minor version */ -#define CLIENT_VERSION_MINOR 4 +#define CLIENT_VERSION_MINOR 5 /* Build revision */ #define CLIENT_VERSION_REVISION 0 @@ -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. */ diff --git a/configure.ac b/configure.ac index 450e27d..b5d07ee 100644 --- a/configure.ac +++ b/configure.ac @@ -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_MINOR, 5) +define(_CLIENT_VERSION_REVISION, 0) define(_CLIENT_VERSION_BUILD, 0) define(_CLIENT_VERSION_RC, 0) define(_CLIENT_VERSION_IS_RELEASE, true) diff --git a/doc/man/palladium-cli.1 b/doc/man/palladium-cli.1 index c29f7dc..84f46d1 100644 --- a/doc/man/palladium-cli.1 +++ b/doc/man/palladium-cli.1 @@ -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.5.0" "User Commands" .SH NAME -palladium-cli \- manual page for palladium-cli v1.4.1 +palladium-cli \- manual page for palladium-cli v1.5.0 .SH SYNOPSIS .B palladium-cli [\fI\,options\/\fR] \fI\, \/\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 Get help for a command\/\fR .SH DESCRIPTION -Palladium Core RPC client version v1.4.1 +Palladium Core RPC client version v1.5.0 .SH OPTIONS .HP \-? diff --git a/doc/man/palladium-qt.1 b/doc/man/palladium-qt.1 index 6448a42..46f8ced 100644 --- a/doc/man/palladium-qt.1 +++ b/doc/man/palladium-qt.1 @@ -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.5.0" "User Commands" .SH NAME -palladium-qt \- manual page for palladium-qt v1.4.1 +palladium-qt \- manual page for palladium-qt v1.5.0 .SH SYNOPSIS .B palladium-qt [\fI\,command-line options\/\fR] .SH DESCRIPTION -Palladium Core version v1.4.1 +Palladium Core version v1.5.0 .SH OPTIONS .HP \-? diff --git a/doc/man/palladium-tx.1 b/doc/man/palladium-tx.1 index 394958d..2a0a30a 100644 --- a/doc/man/palladium-tx.1 +++ b/doc/man/palladium-tx.1 @@ -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.5.0" "User Commands" .SH NAME -palladium-tx \- manual page for palladium-tx v1.4.1 +palladium-tx \- manual page for palladium-tx v1.5.0 .SH SYNOPSIS .B palladium-tx [\fI\,options\/\fR] \fI\, \/\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.5.0 .SH OPTIONS .HP \-? diff --git a/doc/man/palladium-wallet.1 b/doc/man/palladium-wallet.1 index 443fb40..ac66a3c 100644 --- a/doc/man/palladium-wallet.1 +++ b/doc/man/palladium-wallet.1 @@ -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.5.0" "User Commands" .SH NAME -palladium-wallet \- manual page for palladium-wallet v1.4.1 +palladium-wallet \- manual page for palladium-wallet v1.5.0 .SH DESCRIPTION -Palladium Core palladium\-wallet version v1.4.1 +Palladium Core palladium\-wallet version v1.5.0 .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. diff --git a/doc/man/palladiumd.1 b/doc/man/palladiumd.1 index df44731..b225a0f 100644 --- a/doc/man/palladiumd.1 +++ b/doc/man/palladiumd.1 @@ -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.5.0" "User Commands" .SH NAME -palladiumd \- manual page for palladiumd v1.4.1 +palladiumd \- manual page for palladiumd v1.5.0 .SH SYNOPSIS .B palladiumd [\fI\,options\/\fR] \fI\,Start Palladium Core\/\fR .SH DESCRIPTION -Palladium Core version v1.4.1 +Palladium Core version v1.5.0 .SH OPTIONS .HP \-? diff --git a/src/clientversion.cpp b/src/clientversion.cpp index 637e7c6..6034a85 100644 --- a/src/clientversion.cpp +++ b/src/clientversion.cpp @@ -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.5.0" when CLIENT_VERSION_BUILD == 0, + // or "v1.5.0.1" if a non-zero build number is used. return std::string("v") + FormatVersion(CLIENT_VERSION); } From 922f94321e6d7267a0eda65fed9bd2d11e6c14d4 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Fri, 14 Nov 2025 10:27:23 +0100 Subject: [PATCH 02/13] fix(chainparams): update BIP34Height to 1250 for testnet The BIP34 activation height was lowered to match the actual activation point on testnet, ensuring proper block validation behavior. --- src/chainparams.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index cc5c02e..b35b1dc 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -185,7 +185,7 @@ public: strNetworkID = CBaseChainParams::TESTNET; consensus.nSubsidyHalvingInterval = 210000; - consensus.BIP34Height = 8192; + consensus.BIP34Height = 1250; consensus.BIP65Height = 0; consensus.BIP66Height = 0; consensus.CSVHeight = 0; From 96eef06c25598419c4238bc0365b9cf27985e8a4 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Fri, 14 Nov 2025 10:35:02 +0100 Subject: [PATCH 03/13] fix(pow): simplify testnet difficulty adjustment logic Move the special 20-minute rule check before LWMA calculation for clarity and maintain the same behavior. Remove redundant else block and consolidate the logic for returning last non-special-min-difficulty block. --- src/pow.cpp | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/pow.cpp b/src/pow.cpp index 477bf8e..cd01e1e 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -19,6 +19,11 @@ 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); @@ -31,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 20 minutes - // then allow mining of a min-difficulty block. - if (pblock->GetBlockTime() > pindexLast->GetBlockTime() + 20 * 60) - 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; } From efe1cbf18b9c1d3b2210da868557194ba47d3b00 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Fri, 14 Nov 2025 14:46:27 +0100 Subject: [PATCH 04/13] fix(chainparams): update BIP34 height and hash for testnet The BIP34 activation height was increased to 1700 and the hash was initialized to support upcoming testnet changes --- src/chainparams.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index b35b1dc..4bfa4c9 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -185,7 +185,8 @@ public: strNetworkID = CBaseChainParams::TESTNET; consensus.nSubsidyHalvingInterval = 210000; - consensus.BIP34Height = 1250; + consensus.BIP34Height = 1700; + consensus.BIP34Hash = uint256(); consensus.BIP65Height = 0; consensus.BIP66Height = 0; consensus.CSVHeight = 0; From 1e1c4a5fdb855ef696aee0765efc899eb76b9b9c Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Fri, 14 Nov 2025 15:06:09 +0100 Subject: [PATCH 05/13] feat(validation): allow min difficulty blocks after testnet inactivity Add logic to skip proof-of-work check for testnet when there's been 20 minutes of inactivity, allowing min difficulty blocks to be mined. This helps maintain chain progress during periods of low testnet activity. --- src/validation.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/validation.cpp b/src/validation.cpp index 0ffb495..879ffe0 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -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 From ab397b9c1bbb8077b8e3ee1acb2c78bc248efd99 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Mon, 17 Nov 2025 13:53:10 +0100 Subject: [PATCH 06/13] fix(testnet): add testnet seed nodes for peer discovery Enable peer discovery on testnet by adding seed nodes and preserving vFixedSeeds. This ensures nodes can connect to the network during initial sync. --- src/chainparams.cpp | 5 +++-- src/chainparamsseeds.h | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 4bfa4c9..df29ec1 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -231,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(pnSeed6_test, pnSeed6_test + ARRAYLEN(pnSeed6_test)); base58Prefixes[PUBKEY_ADDRESS] = std::vector(1,127); base58Prefixes[SCRIPT_ADDRESS] = std::vector(1,115); diff --git a/src/chainparamsseeds.h b/src/chainparamsseeds.h index d0e7018..06ddd2b 100644 --- a/src/chainparamsseeds.h +++ b/src/chainparamsseeds.h @@ -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 From c02e0628692bb52bb01947ae5ce35d945c5cb240 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Mon, 17 Nov 2025 14:27:52 +0100 Subject: [PATCH 07/13] docs(configuration): move detailed config to separate doc and update readme Update README.md to reference new comprehensive configuration documentation Add detailed configuration-file.md with complete examples and best practices --- README.md | 69 ++----- doc/configuration-file.md | 393 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 409 insertions(+), 53 deletions(-) create mode 100644 doc/configuration-file.md diff --git a/README.md b/README.md index 400ec4c..af84ef5 100644 --- a/README.md +++ b/README.md @@ -18,67 +18,30 @@ 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 +**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)** -# 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` | +This guide covers: +- ✅ Complete configuration examples for mainnet, testnet, and regtest +- ✅ Security best practices and RPC configuration +- ✅ Network-specific settings and port configurations +- ✅ Advanced options and performance tuning +- ✅ Troubleshooting common configuration issues +- ✅ Unified configuration file with network sections ## Building from Source diff --git a/doc/configuration-file.md b/doc/configuration-file.md new file mode 100644 index 0000000..5694765 --- /dev/null +++ b/doc/configuration-file.md @@ -0,0 +1,393 @@ +# 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=18333 +rpcport=18332 +maxconnections=25 + +# Testnet RPC (different credentials recommended) +rpcuser=testnet_user +rpcpassword=testnet_password + +# Testnet nodes +addnode=:12333 +addnode=: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 +``` + +## Migration from Bitcoin Core + +If you're migrating from Bitcoin Core, note these key differences: + +- Default ports are different (2333/2332 vs 8333/8332) +- Network magic bytes are different +- Genesis block is different +- Some RPC methods may have different implementations + +## 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. \ No newline at end of file From 57ef1546a7a3e0ef11421c042334e3f407b333b9 Mon Sep 17 00:00:00 2001 From: Davide Grilli Date: Mon, 17 Nov 2025 14:37:09 +0100 Subject: [PATCH 08/13] docs: remove outdated configuration details --- README.md | 8 -------- doc/configuration-file.md | 13 ++----------- 2 files changed, 2 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index af84ef5..724495b 100644 --- a/README.md +++ b/README.md @@ -35,14 +35,6 @@ Create a file named `palladium.conf` in the appropriate directory for your opera **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)** -This guide covers: -- ✅ Complete configuration examples for mainnet, testnet, and regtest -- ✅ Security best practices and RPC configuration -- ✅ Network-specific settings and port configurations -- ✅ Advanced options and performance tuning -- ✅ Troubleshooting common configuration issues -- ✅ Unified configuration file with network sections - ## Building from Source ### Docker Build (Recommended) diff --git a/doc/configuration-file.md b/doc/configuration-file.md index 5694765..8d3ed96 100644 --- a/doc/configuration-file.md +++ b/doc/configuration-file.md @@ -297,8 +297,8 @@ addnode=173.212.224.67:2333 # These override mainnet settings when using testnet # Testnet ports -port=18333 -rpcport=18332 +port=12333 +rpcport=12332 maxconnections=25 # Testnet RPC (different credentials recommended) @@ -374,15 +374,6 @@ debug=qt # GUI operations debug=mempool # Memory pool operations ``` -## Migration from Bitcoin Core - -If you're migrating from Bitcoin Core, note these key differences: - -- Default ports are different (2333/2332 vs 8333/8332) -- Network magic bytes are different -- Genesis block is different -- Some RPC methods may have different implementations - ## Additional Resources - [Palladium Core RPC Documentation](JSON-RPC-interface.md) From aacf183b4f07a57ef9e9374cf1f4dbfba786c142 Mon Sep 17 00:00:00 2001 From: NotRin7 <102989232+NotRin7@users.noreply.github.com> Date: Mon, 17 Nov 2025 17:09:04 +0100 Subject: [PATCH 09/13] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 724495b..83d5845 100644 --- a/README.md +++ b/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. From c046c329a4cd654bd80f302b5aa3c6b132a28a9e Mon Sep 17 00:00:00 2001 From: NotRin7 Date: Mon, 17 Nov 2025 17:43:13 +0100 Subject: [PATCH 10/13] Fix: Correct wallet confirmation time and update repository URLs --- contrib/debian/copyright | 2 +- doc/README_doxygen.md | 2 +- doc/build-osx.md | 2 +- doc/man/palladium-cli.1 | 2 +- doc/man/palladium-qt.1 | 2 +- doc/man/palladium-tx.1 | 2 +- doc/man/palladium-wallet.1 | 2 +- doc/man/palladiumd.1 | 2 +- doc/release-notes.md | 2 +- docker-build/build-linux-aarch64.sh | 0 docker-build/build-linux-armv7l.sh | 0 docker-build/build-linux-x86_64.sh | 0 docker-build/build-windows.sh | 0 src/init.cpp | 2 +- src/qt/modaloverlay.cpp | 6 +++--- src/qt/palladiumgui.cpp | 2 +- src/qt/sendcoinsdialog.cpp | 2 +- 17 files changed, 15 insertions(+), 15 deletions(-) mode change 100644 => 100755 docker-build/build-linux-aarch64.sh mode change 100644 => 100755 docker-build/build-linux-armv7l.sh mode change 100644 => 100755 docker-build/build-linux-x86_64.sh mode change 100644 => 100755 docker-build/build-windows.sh diff --git a/contrib/debian/copyright b/contrib/debian/copyright index bfab7fc..ff9a61f 100644 --- a/contrib/debian/copyright +++ b/contrib/debian/copyright @@ -2,7 +2,7 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: Palladium Upstream-Contact: Satoshi Nakamoto irc://#palladium@freenode.net -Source: https://github.com/NotRin7/palladium +Source: https://github.com/palladium-coin/palladiumcore Files: * Copyright: 2009-2020, Bitcoin Core Developers diff --git a/doc/README_doxygen.md b/doc/README_doxygen.md index f80b517..80fb904 100644 --- a/doc/README_doxygen.md +++ b/doc/README_doxygen.md @@ -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 Modules, Namespaces, Classes, or Files at the top of the page to start navigating the code. diff --git a/doc/build-osx.md b/doc/build-osx.md index c4b596f..3ad44b2 100644 --- a/doc/build-osx.md +++ b/doc/build-osx.md @@ -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 ``` diff --git a/doc/man/palladium-cli.1 b/doc/man/palladium-cli.1 index 84f46d1..53cf7dd 100644 --- a/doc/man/palladium-cli.1 +++ b/doc/man/palladium-cli.1 @@ -124,4 +124,4 @@ Copyright (C) 2024 The Palladium Core developers Please contribute if you find Palladium Core useful. Visit for further information about the software. -The source code is available from . +The source code is available from . diff --git a/doc/man/palladium-qt.1 b/doc/man/palladium-qt.1 index 46f8ced..c124ff6 100644 --- a/doc/man/palladium-qt.1 +++ b/doc/man/palladium-qt.1 @@ -682,7 +682,7 @@ Copyright (C) 2024 The Palladium Core developers Please contribute if you find Palladium Core useful. Visit for further information about the software. -The source code is available from . +The source code is available from . This is experimental software. Distributed under the MIT software license, see the accompanying file COPYING diff --git a/doc/man/palladium-tx.1 b/doc/man/palladium-tx.1 index 2a0a30a..344c869 100644 --- a/doc/man/palladium-tx.1 +++ b/doc/man/palladium-tx.1 @@ -117,4 +117,4 @@ Copyright (C) 2024 The Palladium Core developers Please contribute if you find Palladium Core useful. Visit for further information about the software. -The source code is available from . +The source code is available from . diff --git a/doc/man/palladium-wallet.1 b/doc/man/palladium-wallet.1 index ac66a3c..22bc8f8 100644 --- a/doc/man/palladium-wallet.1 +++ b/doc/man/palladium-wallet.1 @@ -62,4 +62,4 @@ Copyright (C) 2024 The Palladium Core developers Please contribute if you find Palladium Core useful. Visit for further information about the software. -The source code is available from . +The source code is available from . diff --git a/doc/man/palladiumd.1 b/doc/man/palladiumd.1 index b225a0f..78e311f 100644 --- a/doc/man/palladiumd.1 +++ b/doc/man/palladiumd.1 @@ -660,7 +660,7 @@ Copyright (C) 2024 The Palladium Core developers Please contribute if you find Palladium Core useful. Visit for further information about the software. -The source code is available from . +The source code is available from . This is experimental software. Distributed under the MIT software license, see the accompanying file COPYING diff --git a/doc/release-notes.md b/doc/release-notes.md index 2d720c1..c322059 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -10,7 +10,7 @@ improvements, as well as updated translations. Please report bugs using the issue tracker at GitHub: - + To receive security and update notifications, please subscribe to: diff --git a/docker-build/build-linux-aarch64.sh b/docker-build/build-linux-aarch64.sh old mode 100644 new mode 100755 diff --git a/docker-build/build-linux-armv7l.sh b/docker-build/build-linux-armv7l.sh old mode 100644 new mode 100755 diff --git a/docker-build/build-linux-x86_64.sh b/docker-build/build-linux-x86_64.sh old mode 100644 new mode 100755 diff --git a/docker-build/build-windows.sh b/docker-build/build-windows.sh old mode 100644 new mode 100755 diff --git a/src/init.cpp b/src/init.cpp index 6dba52b..5d75a20 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -579,7 +579,7 @@ void SetupServerArgs() std::string LicenseInfo() { - const std::string URL_SOURCE_CODE = ""; + const std::string URL_SOURCE_CODE = ""; return CopyrightHolders(strprintf(_("Copyright (C) %i-%i").translated, 2024, COPYRIGHT_YEAR) + " ") + "\n" + "Copyright (C) 2009-2024 The Bitcoin Core developers" + "\n" + diff --git a/src/qt/modaloverlay.cpp b/src/qt/modaloverlay.cpp index 20d0a21..cf728b9 100644 --- a/src/qt/modaloverlay.cpp +++ b/src/qt/modaloverlay.cpp @@ -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))); } diff --git a/src/qt/palladiumgui.cpp b/src/qt/palladiumgui.cpp index ea09001..f8f5b59 100644 --- a/src/qt/palladiumgui.cpp +++ b/src/qt/palladiumgui.cpp @@ -899,7 +899,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))); } diff --git a/src/qt/sendcoinsdialog.cpp b/src/qt/sendcoinsdialog.cpp index 593b824..1e26f1f 100644 --- a/src/qt/sendcoinsdialog.cpp +++ b/src/qt/sendcoinsdialog.cpp @@ -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(&QComboBox::currentIndexChanged), this, &SendCoinsDialog::updateSmartFeeLabel); connect(ui->confTargetSelector, static_cast(&QComboBox::currentIndexChanged), this, &SendCoinsDialog::coinControlUpdateLabels); From ef939bf6f83ba538fc0a4f091735ef02efb9126c Mon Sep 17 00:00:00 2001 From: NotRin7 Date: Mon, 17 Nov 2025 18:11:17 +0100 Subject: [PATCH 11/13] docs: Add troubleshooting section to README --- docker-build/README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docker-build/README.md b/docker-build/README.md index c4cd8fb..1926c91 100644 --- a/docker-build/README.md +++ b/docker-build/README.md @@ -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,9 @@ Executables will be available in `../build/windows/`: - `palladium-tx.exe` - Transaction utility - `palladium-wallet.exe` - Wallet utility - `palladium-qt.exe` - GUI application + +### Troubleshooting + +```bash +chmod +x *.sh +``` From caf1f78daa463d2d41e6f121f69c9af0a785f931 Mon Sep 17 00:00:00 2001 From: NotRin7 <102989232+NotRin7@users.noreply.github.com> Date: Mon, 17 Nov 2025 18:12:37 +0100 Subject: [PATCH 12/13] Update README.md --- docker-build/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-build/README.md b/docker-build/README.md index 1926c91..fa3c095 100644 --- a/docker-build/README.md +++ b/docker-build/README.md @@ -89,5 +89,5 @@ Executables will be available in `../build/windows/`: ### Troubleshooting ```bash -chmod +x *.sh +cd docker-build chmod +x *.sh ``` From 73d160b2384cac697f5b3f62f4c22a5949cb95cf Mon Sep 17 00:00:00 2001 From: NotRin7 <102989232+NotRin7@users.noreply.github.com> Date: Mon, 17 Nov 2025 18:13:18 +0100 Subject: [PATCH 13/13] Update README.md --- docker-build/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docker-build/README.md b/docker-build/README.md index fa3c095..5494f08 100644 --- a/docker-build/README.md +++ b/docker-build/README.md @@ -89,5 +89,6 @@ Executables will be available in `../build/windows/`: ### Troubleshooting ```bash -cd docker-build chmod +x *.sh +cd docker-build +chmod +x *.sh ```