From 9f156ae1ad858b6912347cd46177d8e3abf4698e 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.4.2 Update client version from 1.4.1 to 1.4.2 across configuration files, source code, and documentation --- build_msvc/palladium_config.h | 2 +- configure.ac | 2 +- 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, 19 insertions(+), 19 deletions(-) diff --git a/build_msvc/palladium_config.h b/build_msvc/palladium_config.h index 00172fe..df8166f 100644 --- a/build_msvc/palladium_config.h +++ b/build_msvc/palladium_config.h @@ -21,7 +21,7 @@ #define CLIENT_VERSION_MINOR 4 /* Build revision */ -#define CLIENT_VERSION_REVISION 0 +#define CLIENT_VERSION_REVISION 2 /* Copyright holder(s) before %s replacement */ #define COPYRIGHT_HOLDERS "The %s developers" diff --git a/configure.ac b/configure.ac index 450e27d..074a919 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_REVISION, 2) 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..27c7cb5 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.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\, \/\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.4.2 .SH OPTIONS .HP \-? diff --git a/doc/man/palladium-qt.1 b/doc/man/palladium-qt.1 index 6448a42..68a2d1c 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.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 \-? diff --git a/doc/man/palladium-tx.1 b/doc/man/palladium-tx.1 index 394958d..b005571 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.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\, \/\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 \-? diff --git a/doc/man/palladium-wallet.1 b/doc/man/palladium-wallet.1 index 443fb40..529aac1 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.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. diff --git a/doc/man/palladiumd.1 b/doc/man/palladiumd.1 index df44731..483f8b3 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.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 \-? diff --git a/src/clientversion.cpp b/src/clientversion.cpp index 637e7c6..cda91aa 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.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); } From 7ebe9d93053d72000af07ec45812877c89addc6b 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 3f30d9247254deb4c11768fdc7e2637ffeff54da 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 7f96a7d84c9521297d5af82949cc9616ba0b3d97 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 0e08faad30b488d7675aab2f4b59c49a310bbddb 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 0ed21f2dc00ac7b5bd48ec07c99f1c006368e2d4 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 d7758f8b91115724c26e8e35514ea903db7bf57a 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 46f5e24fa4130ba125d5963d5ed10106557c67b7 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 5d0f4d1e22292e8bd7ea5b355c4a97ac102c0a10 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 78b6d11c82b5a99066a58fb81736e3a89f4ee880 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 27c7cb5..fc93eb1 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 68a2d1c..49c587f 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 b005571..f8ba8bf 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 529aac1..997bc13 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 483f8b3..e773266 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 ad386005cf0208299c8704b711c58e0c8ed2d4ba 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 d82347925f27641db8f4673948e7acad75fb41d9 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 fd0718d2a70e8d1b62e0cfc41fc781f3f7b02938 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 ```