Add 5th denom, drop deprecated logic and bump min PS version (#2318)
* Bump PS - add 5th denom (0.001) - always allow OP_RETURN in PS collaterals - collateral amount is always 1/10 of the smallest denom - bump MIN_PRIVATESEND_PEER_PROTO_VERSION to 70211 * drop backward compatibility in dsa/dsq serialization * Use GetSmallestDenomination() in GetCollateralAmount() * bump MIN_PRIVATESEND_PEER_PROTO_VERSION to 70212
This commit is contained in:
parent
e961c71343
commit
262454791c
@ -312,9 +312,7 @@ void CPrivateSend::InitStandardDenominations()
|
|||||||
vecStandardDenominations.push_back((1 * COIN) + 1000);
|
vecStandardDenominations.push_back((1 * COIN) + 1000);
|
||||||
vecStandardDenominations.push_back((.1 * COIN) + 100);
|
vecStandardDenominations.push_back((.1 * COIN) + 100);
|
||||||
vecStandardDenominations.push_back((.01 * COIN) + 10);
|
vecStandardDenominations.push_back((.01 * COIN) + 10);
|
||||||
/* Disabled till we need them
|
vecStandardDenominations.push_back((.001 * COIN) + 1);
|
||||||
vecStandardDenominations.push_back( (.001 * COIN)+1 );
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// check to make sure the collateral provided by the client is valid
|
// check to make sure the collateral provided by the client is valid
|
||||||
@ -329,8 +327,7 @@ bool CPrivateSend::IsCollateralValid(const CTransaction& txCollateral)
|
|||||||
for (const auto& txout : txCollateral.vout) {
|
for (const auto& txout : txCollateral.vout) {
|
||||||
nValueOut += txout.nValue;
|
nValueOut += txout.nValue;
|
||||||
|
|
||||||
bool fAllowData = mnpayments.GetMinMasternodePaymentsProto() > 70208;
|
if (!txout.scriptPubKey.IsPayToPublicKeyHash() && !txout.scriptPubKey.IsUnspendable()) {
|
||||||
if (!txout.scriptPubKey.IsPayToPublicKeyHash() && !(fAllowData && txout.scriptPubKey.IsUnspendable())) {
|
|
||||||
LogPrintf("CPrivateSend::IsCollateralValid -- Invalid Script, txCollateral=%s", txCollateral.ToString());
|
LogPrintf("CPrivateSend::IsCollateralValid -- Invalid Script, txCollateral=%s", txCollateral.ToString());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -367,13 +364,8 @@ bool CPrivateSend::IsCollateralValid(const CTransaction& txCollateral)
|
|||||||
|
|
||||||
bool CPrivateSend::IsCollateralAmount(CAmount nInputAmount)
|
bool CPrivateSend::IsCollateralAmount(CAmount nInputAmount)
|
||||||
{
|
{
|
||||||
if (mnpayments.GetMinMasternodePaymentsProto() > 70208) {
|
// collateral input can be anything between 1x and "max" (including both)
|
||||||
// collateral input can be anything between 1x and "max" (including both)
|
return (nInputAmount >= GetCollateralAmount() && nInputAmount <= GetMaxCollateralAmount());
|
||||||
return (nInputAmount >= GetCollateralAmount() && nInputAmount <= GetMaxCollateralAmount());
|
|
||||||
} else { // <= 70208
|
|
||||||
// collateral input can be anything between 2x and "max" (including both)
|
|
||||||
return (nInputAmount >= GetCollateralAmount() * 2 && nInputAmount <= GetMaxCollateralAmount());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create a nice string to show the denominations
|
/* Create a nice string to show the denominations
|
||||||
|
@ -24,7 +24,7 @@ static const int PRIVATESEND_QUEUE_TIMEOUT = 30;
|
|||||||
static const int PRIVATESEND_SIGNING_TIMEOUT = 15;
|
static const int PRIVATESEND_SIGNING_TIMEOUT = 15;
|
||||||
|
|
||||||
//! minimum peer version accepted by mixing pool
|
//! minimum peer version accepted by mixing pool
|
||||||
static const int MIN_PRIVATESEND_PEER_PROTO_VERSION = 70210;
|
static const int MIN_PRIVATESEND_PEER_PROTO_VERSION = 70212;
|
||||||
|
|
||||||
static const size_t PRIVATESEND_ENTRY_MAX_SIZE = 9;
|
static const size_t PRIVATESEND_ENTRY_MAX_SIZE = 9;
|
||||||
|
|
||||||
@ -118,11 +118,6 @@ public:
|
|||||||
inline void SerializationOp(Stream& s, Operation ser_action)
|
inline void SerializationOp(Stream& s, Operation ser_action)
|
||||||
{
|
{
|
||||||
READWRITE(nDenom);
|
READWRITE(nDenom);
|
||||||
int nVersion = s.GetVersion();
|
|
||||||
if (nVersion > 70208 && nVersion <= 70210) {
|
|
||||||
int nInputCount = 0;
|
|
||||||
READWRITE(nInputCount);
|
|
||||||
}
|
|
||||||
READWRITE(txCollateral);
|
READWRITE(txCollateral);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -179,7 +174,6 @@ class CPrivateSendQueue
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int nDenom;
|
int nDenom;
|
||||||
int nInputCount; // not used for anything but to calculate correct hash, remove after migration to 70211
|
|
||||||
COutPoint masternodeOutpoint;
|
COutPoint masternodeOutpoint;
|
||||||
int64_t nTime;
|
int64_t nTime;
|
||||||
bool fReady; //ready for submit
|
bool fReady; //ready for submit
|
||||||
@ -189,7 +183,6 @@ public:
|
|||||||
|
|
||||||
CPrivateSendQueue() :
|
CPrivateSendQueue() :
|
||||||
nDenom(0),
|
nDenom(0),
|
||||||
nInputCount(0),
|
|
||||||
masternodeOutpoint(COutPoint()),
|
masternodeOutpoint(COutPoint()),
|
||||||
nTime(0),
|
nTime(0),
|
||||||
fReady(false),
|
fReady(false),
|
||||||
@ -200,7 +193,6 @@ public:
|
|||||||
|
|
||||||
CPrivateSendQueue(int nDenom, COutPoint outpoint, int64_t nTime, bool fReady) :
|
CPrivateSendQueue(int nDenom, COutPoint outpoint, int64_t nTime, bool fReady) :
|
||||||
nDenom(nDenom),
|
nDenom(nDenom),
|
||||||
nInputCount(0),
|
|
||||||
masternodeOutpoint(outpoint),
|
masternodeOutpoint(outpoint),
|
||||||
nTime(nTime),
|
nTime(nTime),
|
||||||
fReady(fReady),
|
fReady(fReady),
|
||||||
@ -215,10 +207,6 @@ public:
|
|||||||
inline void SerializationOp(Stream& s, Operation ser_action)
|
inline void SerializationOp(Stream& s, Operation ser_action)
|
||||||
{
|
{
|
||||||
READWRITE(nDenom);
|
READWRITE(nDenom);
|
||||||
int nVersion = s.GetVersion();
|
|
||||||
if (nVersion > 70208 && nVersion <= 70210) {
|
|
||||||
READWRITE(nInputCount);
|
|
||||||
}
|
|
||||||
READWRITE(masternodeOutpoint);
|
READWRITE(masternodeOutpoint);
|
||||||
READWRITE(nTime);
|
READWRITE(nTime);
|
||||||
READWRITE(fReady);
|
READWRITE(fReady);
|
||||||
@ -390,8 +378,6 @@ private:
|
|||||||
CPrivateSend(CPrivateSend const&) = delete;
|
CPrivateSend(CPrivateSend const&) = delete;
|
||||||
CPrivateSend& operator=(CPrivateSend const&) = delete;
|
CPrivateSend& operator=(CPrivateSend const&) = delete;
|
||||||
|
|
||||||
static const CAmount COLLATERAL = 0.001 * COIN;
|
|
||||||
|
|
||||||
// static members
|
// static members
|
||||||
static std::vector<CAmount> vecStandardDenominations;
|
static std::vector<CAmount> vecStandardDenominations;
|
||||||
static std::map<uint256, CPrivateSendBroadcastTx> mapDSTX;
|
static std::map<uint256, CPrivateSendBroadcastTx> mapDSTX;
|
||||||
@ -424,8 +410,8 @@ public:
|
|||||||
|
|
||||||
/// If the collateral is valid given by a client
|
/// If the collateral is valid given by a client
|
||||||
static bool IsCollateralValid(const CTransaction& txCollateral);
|
static bool IsCollateralValid(const CTransaction& txCollateral);
|
||||||
static CAmount GetCollateralAmount() { return COLLATERAL; }
|
static CAmount GetCollateralAmount() { return GetSmallestDenomination() / 10; }
|
||||||
static CAmount GetMaxCollateralAmount() { return COLLATERAL * 4; }
|
static CAmount GetMaxCollateralAmount() { return GetCollateralAmount() * 4; }
|
||||||
|
|
||||||
static bool IsCollateralAmount(CAmount nInputAmount);
|
static bool IsCollateralAmount(CAmount nInputAmount);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user