mirror of
https://github.com/dashpay/dash.git
synced 2024-12-29 13:59:06 +01:00
enforcing mixes
This commit is contained in:
parent
0aa6d8cfcb
commit
1619683a60
68
src/main.cpp
68
src/main.cpp
@ -3965,8 +3965,8 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
printf("new darksend queue object - %s\n", addr.ToString().c_str());
|
printf("new darksend queue object - %s\n", addr.ToString().c_str());
|
||||||
dsq.Relay();
|
|
||||||
vecDarksendQueue.push_back(dsq);
|
vecDarksendQueue.push_back(dsq);
|
||||||
|
dsq.Relay();
|
||||||
|
|
||||||
} else if (strCommand == "dsi") { //DarkSend vIn
|
} else if (strCommand == "dsi") { //DarkSend vIn
|
||||||
if (pfrom->nVersion != darkSendPool.MIN_PEER_PROTO_VERSION) {
|
if (pfrom->nVersion != darkSendPool.MIN_PEER_PROTO_VERSION) {
|
||||||
@ -4095,7 +4095,6 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(darkSendPool.submittedToMasternode != pfrom->addr){
|
if(darkSendPool.submittedToMasternode != pfrom->addr){
|
||||||
printf("dssu - message doesn't match current masternode - %s != %s\n", darkSendPool.submittedToMasternode.ToString().c_str(), pfrom->addr.ToString().c_str());
|
printf("dssu - message doesn't match current masternode - %s != %s\n", darkSendPool.submittedToMasternode.ToString().c_str(), pfrom->addr.ToString().c_str());
|
||||||
return false;
|
return false;
|
||||||
@ -6241,7 +6240,9 @@ void CDarkSendPool::CheckTimeout(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} else if(GetTimeMillis()-lastTimeChanged >= 30000){
|
}
|
||||||
|
|
||||||
|
if(GetTimeMillis()-lastTimeChanged >= 30000){
|
||||||
if(fDebug) printf("CDarkSendPool::CheckTimeout() -- SESSION TIMED OUT (30) -- RESETTING\n");
|
if(fDebug) printf("CDarkSendPool::CheckTimeout() -- SESSION TIMED OUT (30) -- RESETTING\n");
|
||||||
SetNull();
|
SetNull();
|
||||||
UnlockCoins();
|
UnlockCoins();
|
||||||
@ -6370,7 +6371,7 @@ bool CDarkSendPool::AddEntry(const std::vector<CTxIn>& newInput, const int64& nA
|
|||||||
if(entries.size() == 1) {
|
if(entries.size() == 1) {
|
||||||
//broadcast that I'm accepting entries
|
//broadcast that I'm accepting entries
|
||||||
CDarksendQueue dsq;
|
CDarksendQueue dsq;
|
||||||
dsq.nAmount = nAmount;
|
dsq.nDenom = GetDenominations(newOutput);
|
||||||
dsq.vin = vinMasterNode;
|
dsq.vin = vinMasterNode;
|
||||||
dsq.time = GetTime();
|
dsq.time = GetTime();
|
||||||
dsq.Relay();
|
dsq.Relay();
|
||||||
@ -6904,8 +6905,6 @@ void CDarkSendPool::NewBlock()
|
|||||||
|
|
||||||
if(IsInitialBlockDownload()) return;
|
if(IsInitialBlockDownload()) return;
|
||||||
|
|
||||||
printf("CDarkSendPool::NewBlock - 2\n");
|
|
||||||
|
|
||||||
{
|
{
|
||||||
LOCK2(cs_main, mempool.cs);
|
LOCK2(cs_main, mempool.cs);
|
||||||
if(pindexBest != NULL) {
|
if(pindexBest != NULL) {
|
||||||
@ -6921,8 +6920,6 @@ void CDarkSendPool::NewBlock()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("CDarkSendPool::NewBlock - 3\n");
|
|
||||||
|
|
||||||
//send votes for next block and one after that
|
//send votes for next block and one after that
|
||||||
DoConcessusVote(pindexBest->nHeight + 2);
|
DoConcessusVote(pindexBest->nHeight + 2);
|
||||||
DoConcessusVote(pindexBest->nHeight + 3);
|
DoConcessusVote(pindexBest->nHeight + 3);
|
||||||
@ -7103,7 +7100,12 @@ bool CDarkSendPool::DoAutomaticDenominating(bool fDryRun)
|
|||||||
// if we have any pending merges
|
// if we have any pending merges
|
||||||
BOOST_FOREACH(CDarksendQueue dsq, vecDarksendQueue){
|
BOOST_FOREACH(CDarksendQueue dsq, vecDarksendQueue){
|
||||||
CService addr;
|
CService addr;
|
||||||
|
if(dsq.time == 0) continue;
|
||||||
if(!dsq.GetAddress(addr)) continue;
|
if(!dsq.GetAddress(addr)) continue;
|
||||||
|
if(dsq.nDenom != GetDenominationsByAmount(balanceNeedsAnonymized)) {
|
||||||
|
printf(" dsq.nDenom != GetDenominationsByAmount %"PRI64d" %d \n", dsq.nDenom, GetDenominationsByAmount(balanceNeedsAnonymized));
|
||||||
|
continue;
|
||||||
|
}
|
||||||
dsq.time = 0; //remove node
|
dsq.time = 0; //remove node
|
||||||
|
|
||||||
if(ConnectNode((CAddress)addr, NULL, true)){
|
if(ConnectNode((CAddress)addr, NULL, true)){
|
||||||
@ -7488,42 +7490,16 @@ bool CDarkSendPool::IsCompatibleWithSession(int64 nAmount)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*CScript e = CScript();
|
|
||||||
int64 nValueLeft = nAmount;
|
|
||||||
|
|
||||||
std::vector<CTxOut> vout1;
|
if(GetDenominationsByAmount(nAmount) != GetDenominationsByAmount(sessionAmount)) return false;
|
||||||
BOOST_FOREACH(int64 v, darkSendDenominations){
|
printf("CDarkSendPool::IsCompatibleWithSession - compatible\n");
|
||||||
int nOutputs = 0;
|
|
||||||
while(nValueLeft - v >= 0 && nOutputs <= 10) {
|
|
||||||
CTxOut o(v, e);
|
|
||||||
vout1.push_back(o);
|
|
||||||
nValueLeft -= v;
|
|
||||||
nOutputs++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
nValueLeft = sessionAmount;
|
|
||||||
|
|
||||||
std::vector<CTxOut> vout2;
|
|
||||||
BOOST_FOREACH(int64 v, darkSendDenominations){
|
|
||||||
int nOutputs = 0;
|
|
||||||
while(nValueLeft - v >= 0 && nOutputs <= 10) {
|
|
||||||
CTxOut o(v, e);
|
|
||||||
vout2.push_back(o);
|
|
||||||
nValueLeft -= v;
|
|
||||||
nOutputs++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(GetDenominations(vout1) != GetDenominations(vout2)) return false;
|
|
||||||
printf("CDarkSendPool::IsCompatibleWithSession - compatible\n");*/
|
|
||||||
|
|
||||||
sessionUsers++;
|
sessionUsers++;
|
||||||
lastTimeChanged = GetTimeMillis();
|
lastTimeChanged = GetTimeMillis();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CDarkSendPool::GetDenominations(std::vector<CTxOut> vout){
|
int CDarkSendPool::GetDenominations(const std::vector<CTxOut>& vout){
|
||||||
std::vector<pair<int64, int> > denomUsed;
|
std::vector<pair<int64, int> > denomUsed;
|
||||||
|
|
||||||
BOOST_FOREACH(int64 d, darkSendDenominations)
|
BOOST_FOREACH(int64 d, darkSendDenominations)
|
||||||
@ -7542,6 +7518,24 @@ int CDarkSendPool::GetDenominations(std::vector<CTxOut> vout){
|
|||||||
return denom;
|
return denom;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int CDarkSendPool::GetDenominationsByAmount(int64 nAmount){
|
||||||
|
CScript e = CScript();
|
||||||
|
int64 nValueLeft = nAmount;
|
||||||
|
|
||||||
|
std::vector<CTxOut> vout1;
|
||||||
|
BOOST_FOREACH(int64 v, darkSendDenominations){
|
||||||
|
int nOutputs = 0;
|
||||||
|
while(nValueLeft - v >= 0 && nOutputs <= 10) {
|
||||||
|
CTxOut o(v, e);
|
||||||
|
vout1.push_back(o);
|
||||||
|
nValueLeft -= v;
|
||||||
|
nOutputs++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return GetDenominations(vout1);
|
||||||
|
}
|
||||||
|
|
||||||
bool CDarkSendSigner::SetKey(std::string strSecret, std::string& errorMessage, CKey& key, CPubKey& pubkey){
|
bool CDarkSendSigner::SetKey(std::string strSecret, std::string& errorMessage, CKey& key, CPubKey& pubkey){
|
||||||
CBitcoinSecret vchSecret;
|
CBitcoinSecret vchSecret;
|
||||||
bool fGood = vchSecret.SetString(strSecret);
|
bool fGood = vchSecret.SetString(strSecret);
|
||||||
|
11
src/main.h
11
src/main.h
@ -2570,20 +2570,20 @@ public:
|
|||||||
class CDarksendQueue
|
class CDarksendQueue
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
int64 nAmount;
|
|
||||||
CTxIn vin;
|
CTxIn vin;
|
||||||
int64 time;
|
int64 time;
|
||||||
|
int nDenom;
|
||||||
|
|
||||||
CDarksendQueue()
|
CDarksendQueue()
|
||||||
{
|
{
|
||||||
nAmount = 0;
|
nDenom = 0;
|
||||||
vin = CTxIn();
|
vin = CTxIn();
|
||||||
time = 0;
|
time = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
IMPLEMENT_SERIALIZE
|
IMPLEMENT_SERIALIZE
|
||||||
(
|
(
|
||||||
READWRITE(nAmount);
|
READWRITE(nDenom);
|
||||||
READWRITE(vin);
|
READWRITE(vin);
|
||||||
READWRITE(time);
|
READWRITE(time);
|
||||||
)
|
)
|
||||||
@ -2632,7 +2632,7 @@ static const int64 DARKSEND_FEE = 0.001*COIN;
|
|||||||
class CDarkSendPool
|
class CDarkSendPool
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static const int MIN_PEER_PROTO_VERSION = 70029;
|
static const int MIN_PEER_PROTO_VERSION = 70030;
|
||||||
|
|
||||||
std::vector<CDarkSendEntry> myEntries;
|
std::vector<CDarkSendEntry> myEntries;
|
||||||
std::vector<CDarkSendEntry> entries;
|
std::vector<CDarkSendEntry> entries;
|
||||||
@ -2795,7 +2795,8 @@ public:
|
|||||||
bool DoConcessusVote(int64 nBlockHeight);
|
bool DoConcessusVote(int64 nBlockHeight);
|
||||||
int GetInputDarksendRounds(CTxIn in, int rounds=0);
|
int GetInputDarksendRounds(CTxIn in, int rounds=0);
|
||||||
bool SplitUpMoney(bool justCollateral=false);
|
bool SplitUpMoney(bool justCollateral=false);
|
||||||
int GetDenominations(std::vector<CTxOut> vout);
|
int GetDenominations(const std::vector<CTxOut>& vout);
|
||||||
|
int GetDenominationsByAmount(int64 nAmount);
|
||||||
};
|
};
|
||||||
|
|
||||||
void ConnectToDarkSendMasterNodeWinner();
|
void ConnectToDarkSendMasterNodeWinner();
|
||||||
|
@ -313,6 +313,8 @@ void SendCoinsDialog::darkSendStatus()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!darkSendPool.sessionFoundMasternode) return;
|
||||||
|
|
||||||
int state = darkSendPool.GetState();
|
int state = darkSendPool.GetState();
|
||||||
int entries = darkSendPool.GetEntriesCount();
|
int entries = darkSendPool.GetEntriesCount();
|
||||||
int accepted = darkSendPool.GetLastEntryAccepted();
|
int accepted = darkSendPool.GetLastEntryAccepted();
|
||||||
|
@ -25,7 +25,7 @@ extern const std::string CLIENT_DATE;
|
|||||||
// network protocol versioning
|
// network protocol versioning
|
||||||
//
|
//
|
||||||
|
|
||||||
static const int PROTOCOL_VERSION = 70029;
|
static const int PROTOCOL_VERSION = 70030;
|
||||||
|
|
||||||
// intial proto version, to be increased after version/verack negotiation
|
// intial proto version, to be increased after version/verack negotiation
|
||||||
static const int INIT_PROTO_VERSION = 209;
|
static const int INIT_PROTO_VERSION = 209;
|
||||||
|
Loading…
Reference in New Issue
Block a user