Merge pull request #12 from palladium-coin/logic-improvements
Logic improvements
This commit is contained in:
@@ -18,10 +18,10 @@
|
|||||||
#define CLIENT_VERSION_MAJOR 1
|
#define CLIENT_VERSION_MAJOR 1
|
||||||
|
|
||||||
/* Minor version */
|
/* Minor version */
|
||||||
#define CLIENT_VERSION_MINOR 4
|
#define CLIENT_VERSION_MINOR 5
|
||||||
|
|
||||||
/* Build revision */
|
/* Build revision */
|
||||||
#define CLIENT_VERSION_REVISION 3
|
#define CLIENT_VERSION_REVISION 0
|
||||||
|
|
||||||
/* Copyright holder(s) before %s replacement */
|
/* Copyright holder(s) before %s replacement */
|
||||||
#define COPYRIGHT_HOLDERS "The %s developers"
|
#define COPYRIGHT_HOLDERS "The %s developers"
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
AC_PREREQ([2.69])
|
AC_PREREQ([2.69])
|
||||||
define(_CLIENT_VERSION_MAJOR, 1)
|
define(_CLIENT_VERSION_MAJOR, 1)
|
||||||
define(_CLIENT_VERSION_MINOR, 4)
|
define(_CLIENT_VERSION_MINOR, 5)
|
||||||
define(_CLIENT_VERSION_REVISION, 3)
|
define(_CLIENT_VERSION_REVISION, 0)
|
||||||
define(_CLIENT_VERSION_BUILD, 0)
|
define(_CLIENT_VERSION_BUILD, 0)
|
||||||
define(_CLIENT_VERSION_RC, 0)
|
define(_CLIENT_VERSION_RC, 0)
|
||||||
define(_CLIENT_VERSION_IS_RELEASE, true)
|
define(_CLIENT_VERSION_IS_RELEASE, true)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||||
.TH PALLADIUM-CLI "1" "April 2024" "palladium-cli v1.4.3" "User Commands"
|
.TH PALLADIUM-CLI "1" "April 2024" "palladium-cli v1.5.0" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
palladium-cli \\- manual page for palladium-cli v1.4.3
|
palladium-cli \\- manual page for palladium-cli v1.5.0
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B palladium-cli
|
.B palladium-cli
|
||||||
[\fI\,options\/\fR] \fI\,<command> \/\fR[\fI\,params\/\fR] \fI\,Send command to Palladium Core\/\fR
|
[\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.3
|
|||||||
.B palladium-cli
|
.B palladium-cli
|
||||||
[\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR
|
[\fI\,options\/\fR] \fI\,help <command> Get help for a command\/\fR
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Palladium Core RPC client version v1.4.3
|
Palladium Core RPC client version v1.5.0
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.HP
|
.HP
|
||||||
\-?
|
\-?
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||||
.TH PALLADIUM-QT "1" "April 2024" "palladium-qt v1.4.3" "User Commands"
|
.TH PALLADIUM-QT "1" "April 2024" "palladium-qt v1.5.0" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
palladium-qt \\- manual page for palladium-qt v1.4.3
|
palladium-qt \\- manual page for palladium-qt v1.5.0
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B palladium-qt
|
.B palladium-qt
|
||||||
[\fI\,command-line options\/\fR]
|
[\fI\,command-line options\/\fR]
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Palladium Core version v1.4.3
|
Palladium Core version v1.5.0
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.HP
|
.HP
|
||||||
\-?
|
\-?
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||||
.TH PALLADIUM-TX "1" "April 2024" "palladium-tx v1.4.3" "User Commands"
|
.TH PALLADIUM-TX "1" "April 2024" "palladium-tx v1.5.0" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
palladium-tx \\- manual page for palladium-tx v1.4.3
|
palladium-tx \\- manual page for palladium-tx v1.5.0
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B palladium-tx
|
.B palladium-tx
|
||||||
[\fI\,options\/\fR] \fI\,<hex-tx> \/\fR[\fI\,commands\/\fR] \fI\,Update hex-encoded palladium transaction\/\fR
|
[\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.3
|
|||||||
.B palladium-tx
|
.B palladium-tx
|
||||||
[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] \fI\,Create hex-encoded palladium transaction\/\fR
|
[\fI\,options\/\fR] \fI\,-create \/\fR[\fI\,commands\/\fR] \fI\,Create hex-encoded palladium transaction\/\fR
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Palladium Core palladium\-tx utility version v1.4.3
|
Palladium Core palladium\-tx utility version v1.5.0
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.HP
|
.HP
|
||||||
\-?
|
\-?
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||||
.TH PALLADIUM-WALLET "1" "April 2024" "palladium-wallet v1.4.3" "User Commands"
|
.TH PALLADIUM-WALLET "1" "April 2024" "palladium-wallet v1.5.0" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
palladium-wallet \\- manual page for palladium-wallet v1.4.3
|
palladium-wallet \\- manual page for palladium-wallet v1.5.0
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Palladium Core palladium\-wallet version v1.4.3
|
Palladium Core palladium\-wallet version v1.5.0
|
||||||
.PP
|
.PP
|
||||||
palladium\-wallet is an offline tool for creating and interacting with Palladium Core wallet files.
|
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.
|
By default palladium\-wallet will act on wallets in the default mainnet wallet directory in the datadir.
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13.
|
||||||
.TH PALLADIUMD "1" "April 2024" "palladiumd v1.4.3" "User Commands"
|
.TH PALLADIUMD "1" "April 2024" "palladiumd v1.5.0" "User Commands"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
palladiumd \\- manual page for palladiumd v1.4.3
|
palladiumd \\- manual page for palladiumd v1.5.0
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B palladiumd
|
.B palladiumd
|
||||||
[\fI\,options\/\fR] \fI\,Start Palladium Core\/\fR
|
[\fI\,options\/\fR] \fI\,Start Palladium Core\/\fR
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
Palladium Core version v1.4.3
|
Palladium Core version v1.5.0
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
.HP
|
.HP
|
||||||
\-?
|
\-?
|
||||||
|
|||||||
@@ -81,8 +81,8 @@ std::string FormatFullVersion()
|
|||||||
{
|
{
|
||||||
// Display a simplified semantic version: omit trailing ".0" and git suffix
|
// Display a simplified semantic version: omit trailing ".0" and git suffix
|
||||||
// by reusing FormatVersion on the aggregated CLIENT_VERSION.
|
// by reusing FormatVersion on the aggregated CLIENT_VERSION.
|
||||||
// This yields e.g. "v1.4.3" when CLIENT_VERSION_BUILD == 0,
|
// This yields e.g. "v1.5.0" when CLIENT_VERSION_BUILD == 0,
|
||||||
// or "v1.4.3.1" if a non-zero build number is used.
|
// or "v1.5.0.1" if a non-zero build number is used.
|
||||||
return std::string("v") + FormatVersion(CLIENT_VERSION);
|
return std::string("v") + FormatVersion(CLIENT_VERSION);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
30
src/pow.cpp
30
src/pow.cpp
@@ -28,6 +28,20 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead
|
|||||||
if (params.fPowAllowMinDifficultyBlocks && pindexLast->nHeight >= 0)
|
if (params.fPowAllowMinDifficultyBlocks && pindexLast->nHeight >= 0)
|
||||||
return LwmaCalculateNextWorkRequired(pindexLast, params);
|
return LwmaCalculateNextWorkRequired(pindexLast, params);
|
||||||
|
|
||||||
|
// Palladium: Hard Fork at 350,000 for fast difficulty adjustment
|
||||||
|
if (pindexLast->nHeight + 1 >= 340000) {
|
||||||
|
int64_t nIntervalNew = 60;
|
||||||
|
if ((pindexLast->nHeight + 1) % nIntervalNew != 0)
|
||||||
|
return pindexLast->nBits;
|
||||||
|
|
||||||
|
int nHeightFirst = pindexLast->nHeight - (nIntervalNew - 1);
|
||||||
|
assert(nHeightFirst >= 0);
|
||||||
|
const CBlockIndex* pindexFirst = pindexLast->GetAncestor(nHeightFirst);
|
||||||
|
assert(pindexFirst);
|
||||||
|
|
||||||
|
return CalculateNextWorkRequired(pindexLast, pindexFirst->GetBlockTime(), params);
|
||||||
|
}
|
||||||
|
|
||||||
if (pindexLast->nHeight >= 29000)
|
if (pindexLast->nHeight >= 29000)
|
||||||
return LwmaCalculateNextWorkRequired(pindexLast, params);
|
return LwmaCalculateNextWorkRequired(pindexLast, params);
|
||||||
|
|
||||||
@@ -110,19 +124,25 @@ unsigned int CalculateNextWorkRequired(const CBlockIndex* pindexLast, int64_t nF
|
|||||||
if (params.fPowNoRetargeting)
|
if (params.fPowNoRetargeting)
|
||||||
return pindexLast->nBits;
|
return pindexLast->nBits;
|
||||||
|
|
||||||
|
// Palladium: Hard Fork at 350,000 for fast difficulty adjustment
|
||||||
|
int64_t nTargetTimespan = params.nPowTargetTimespan;
|
||||||
|
if (pindexLast->nHeight + 1 >= 340000) {
|
||||||
|
nTargetTimespan = 7200; // 60 blocks * 120 seconds
|
||||||
|
}
|
||||||
|
|
||||||
// Limit adjustment step
|
// Limit adjustment step
|
||||||
int64_t nActualTimespan = pindexLast->GetBlockTime() - nFirstBlockTime;
|
int64_t nActualTimespan = pindexLast->GetBlockTime() - nFirstBlockTime;
|
||||||
if (nActualTimespan < params.nPowTargetTimespan/4)
|
if (nActualTimespan < nTargetTimespan/4)
|
||||||
nActualTimespan = params.nPowTargetTimespan/4;
|
nActualTimespan = nTargetTimespan/4;
|
||||||
if (nActualTimespan > params.nPowTargetTimespan*4)
|
if (nActualTimespan > nTargetTimespan*4)
|
||||||
nActualTimespan = params.nPowTargetTimespan*4;
|
nActualTimespan = nTargetTimespan*4;
|
||||||
|
|
||||||
// Retarget
|
// Retarget
|
||||||
const arith_uint256 bnPowLimit = UintToArith256(params.powLimit);
|
const arith_uint256 bnPowLimit = UintToArith256(params.powLimit);
|
||||||
arith_uint256 bnNew;
|
arith_uint256 bnNew;
|
||||||
bnNew.SetCompact(pindexLast->nBits);
|
bnNew.SetCompact(pindexLast->nBits);
|
||||||
bnNew *= nActualTimespan;
|
bnNew *= nActualTimespan;
|
||||||
bnNew /= params.nPowTargetTimespan;
|
bnNew /= nTargetTimespan;
|
||||||
|
|
||||||
if (bnNew > bnPowLimit)
|
if (bnNew > bnPowLimit)
|
||||||
bnNew = bnPowLimit;
|
bnNew = bnPowLimit;
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ public:
|
|||||||
* Default setting for nMaxDatacarrierBytes. 80 bytes of data, +1 for OP_RETURN,
|
* Default setting for nMaxDatacarrierBytes. 80 bytes of data, +1 for OP_RETURN,
|
||||||
* +2 for the pushdata opcodes.
|
* +2 for the pushdata opcodes.
|
||||||
*/
|
*/
|
||||||
static const unsigned int MAX_OP_RETURN_RELAY = 83;
|
static const unsigned int MAX_OP_RETURN_RELAY = 520;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A data carrying output is an unspendable output containing data. The script
|
* A data carrying output is an unspendable output containing data. The script
|
||||||
|
|||||||
@@ -563,6 +563,15 @@ bool MemPoolAccept::PreChecks(ATMPArgs& args, Workspace& ws)
|
|||||||
if (fRequireStandard && !IsStandardTx(tx, reason))
|
if (fRequireStandard && !IsStandardTx(tx, reason))
|
||||||
return state.Invalid(TxValidationResult::TX_NOT_STANDARD, reason);
|
return state.Invalid(TxValidationResult::TX_NOT_STANDARD, reason);
|
||||||
|
|
||||||
|
// Check OP_RETURN size based on activation height
|
||||||
|
if (ChainActive().Height() < 340000) {
|
||||||
|
for (const CTxOut& txout : tx.vout) {
|
||||||
|
if (txout.scriptPubKey.IsUnspendable() && txout.scriptPubKey.size() > 83) {
|
||||||
|
return state.Invalid(TxValidationResult::TX_NOT_STANDARD, "bad-txns-oversize-opreturn-prefork");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Do not work on transactions that are too small.
|
// Do not work on transactions that are too small.
|
||||||
// A transaction with 1 segwit input and 1 P2WPHK output has non-witness size of 82 bytes.
|
// A transaction with 1 segwit input and 1 P2WPHK output has non-witness size of 82 bytes.
|
||||||
// Transactions smaller than this are not relayed to mitigate CVE-2017-12842 by not relaying
|
// Transactions smaller than this are not relayed to mitigate CVE-2017-12842 by not relaying
|
||||||
|
|||||||
67
update_version.sh
Executable file
67
update_version.sh
Executable file
@@ -0,0 +1,67 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "========================================================"
|
||||||
|
echo " Palladium Core - Master Version Updater"
|
||||||
|
echo "========================================================"
|
||||||
|
|
||||||
|
# 1. Get Inputs
|
||||||
|
read -p "Enter CURRENT version string (e.g. 1.4.3): " OLD_VERSION
|
||||||
|
read -p "Enter NEW version string (e.g. 1.5.0): " NEW_VERSION
|
||||||
|
|
||||||
|
if [ -z "$OLD_VERSION" ] || [ -z "$NEW_VERSION" ]; then
|
||||||
|
echo "Error: Version strings cannot be empty."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Parse the NEW version into parts (Major.Minor.Revision)
|
||||||
|
IFS='.' read -r -a V_PARTS <<< "$NEW_VERSION"
|
||||||
|
MAJOR="${V_PARTS[0]}"
|
||||||
|
MINOR="${V_PARTS[1]}"
|
||||||
|
REV="${V_PARTS[2]}"
|
||||||
|
|
||||||
|
# Default to 0 if revision is missing (e.g. 1.5 becomes 1.5.0)
|
||||||
|
if [ -z "$REV" ]; then REV="0"; fi
|
||||||
|
|
||||||
|
echo "--------------------------------------------------------"
|
||||||
|
echo "Targeting: $MAJOR.$MINOR.$REV"
|
||||||
|
echo "--------------------------------------------------------"
|
||||||
|
|
||||||
|
# 2. Global Text Replacement (Docs, Manpages, Comments)
|
||||||
|
echo "[1/3] Performing global search & replace ($OLD_VERSION -> $NEW_VERSION)..."
|
||||||
|
# We exclude .git directory and binaries to avoid corruption
|
||||||
|
grep -rIl "$OLD_VERSION" . | grep -v "^./.git" | grep -v "update_version.sh" | while read -r file ; do
|
||||||
|
sed -i "s/$OLD_VERSION/$NEW_VERSION/g" "$file"
|
||||||
|
done
|
||||||
|
echo "Global text replacement done."
|
||||||
|
|
||||||
|
# 3. Update configure.ac (The Linux/Unix Build System)
|
||||||
|
echo "[2/3] Updating configure.ac..."
|
||||||
|
if [ -f "configure.ac" ]; then
|
||||||
|
sed -i "s/define(_CLIENT_VERSION_MAJOR, [0-9]*)/define(_CLIENT_VERSION_MAJOR, $MAJOR)/g" configure.ac
|
||||||
|
sed -i "s/define(_CLIENT_VERSION_MINOR, [0-9]*)/define(_CLIENT_VERSION_MINOR, $MINOR)/g" configure.ac
|
||||||
|
sed -i "s/define(_CLIENT_VERSION_REVISION, [0-9]*)/define(_CLIENT_VERSION_REVISION, $REV)/g" configure.ac
|
||||||
|
echo "✔ configure.ac updated."
|
||||||
|
else
|
||||||
|
echo "❌ Warning: configure.ac not found."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 4. Update Windows MSVC Config (The Windows Build System)
|
||||||
|
echo "[3/3] Updating build_msvc/palladium_config.h..."
|
||||||
|
MSVC_FILE="build_msvc/palladium_config.h"
|
||||||
|
if [ -f "$MSVC_FILE" ]; then
|
||||||
|
sed -i "s/#define CLIENT_VERSION_MAJOR [0-9]*/#define CLIENT_VERSION_MAJOR $MAJOR/g" "$MSVC_FILE"
|
||||||
|
sed -i "s/#define CLIENT_VERSION_MINOR [0-9]*/#define CLIENT_VERSION_MINOR $MINOR/g" "$MSVC_FILE"
|
||||||
|
sed -i "s/#define CLIENT_VERSION_REVISION [0-9]*/#define CLIENT_VERSION_REVISION $REV/g" "$MSVC_FILE"
|
||||||
|
echo "✔ $MSVC_FILE updated."
|
||||||
|
else
|
||||||
|
echo "❌ Warning: $MSVC_FILE not found."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "========================================================"
|
||||||
|
echo "Update Complete! Please run:"
|
||||||
|
echo "1. make clean"
|
||||||
|
echo "2. ./autogen.sh"
|
||||||
|
echo "3. ./configure"
|
||||||
|
echo "4. make"
|
||||||
|
echo "========================================================"
|
||||||
Reference in New Issue
Block a user