Skip to content

Commit

Permalink
[threading] locking revert
Browse files Browse the repository at this point in the history
  • Loading branch information
giaki3003 committed Jul 18, 2020
1 parent 9371e85 commit b5d6027
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 17 deletions.
20 changes: 11 additions & 9 deletions src/infinitynodelockreward.cpp
Expand Up @@ -940,12 +940,12 @@ bool CInfinityNodeLockReward::FindAndSendSignersGroup(CConnman& connman)
for (int i=0; i <= loop; i++)
{
std::vector<COutPoint> signers;
if(i >=1 && (int)mapSigners[currentLockRequestHash].size() >= Params().GetConsensus().nInfinityNodeLockRewardSigners * i && nGroupSigners < i){
if(i >=1 && mapSigners[currentLockRequestHash].size() >= Params().GetConsensus().nInfinityNodeLockRewardSigners * i && nGroupSigners < i){
for(int j=Params().GetConsensus().nInfinityNodeLockRewardSigners * (i - 1); j < Params().GetConsensus().nInfinityNodeLockRewardSigners * i; j++){
signers.push_back(mapSigners[currentLockRequestHash].at(j));
}

if((int)signers.size() == Params().GetConsensus().nInfinityNodeLockRewardSigners){
if(signers.size() == Params().GetConsensus().nInfinityNodeLockRewardSigners){
nGroupSigners = i;//track signer group sent
int nSINtypeCanLockReward = Params().GetConsensus().nInfinityNodeLockRewardSINType;
std::string signerIndex = infnodeman.getVectorNodeRankAtHeight(signers, nSINtypeCanLockReward, mapLockRewardRequest[currentLockRequestHash].nRewardHeight);
Expand Down Expand Up @@ -1149,6 +1149,7 @@ bool CInfinityNodeLockReward::MusigPartialSign(CNode* pnode, const CGroupSigners
unsigned char session_id[32];
unsigned char nonce_commitment[32];
unsigned char msg[32] = {'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a'};
secp256k1_schnorr sig;
secp256k1_scratch_space *scratch = NULL;
secp256k1_pubkey combined_pk, nonce;

Expand Down Expand Up @@ -1194,7 +1195,7 @@ bool CInfinityNodeLockReward::MusigPartialSign(CNode* pnode, const CGroupSigners
return false;
}

for (int j = 0; j < (int)N_SIGNERS; j++) {
for (int j = 0; j < N_SIGNERS; j++) {
if (!secp256k1_musig_set_nonce(secp256k1_context_musig, &signer_data[j], &commitmentpk[j])) {
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::MusigPartialSign -- Musig Set Nonce FAILED\n");
return false;
Expand Down Expand Up @@ -1382,7 +1383,7 @@ bool CInfinityNodeLockReward::FindAndBuildMusigLockReward()
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::FindAndBuildMusigLockReward -- Group Signer: %s, GroupSigner exist: %d, size: %d\n",
nHashGroupSigner.ToString(), mapLockRewardGroupSigners.count(nHashGroupSigner), pair.second.size());

if((int)pair.second.size() == Params().GetConsensus().nInfinityNodeLockRewardSigners && mapLockRewardGroupSigners.count(nHashGroupSigner) == 1) {
if(pair.second.size() == Params().GetConsensus().nInfinityNodeLockRewardSigners && mapLockRewardGroupSigners.count(nHashGroupSigner) == 1) {

uint256 nHashLockRequest = mapLockRewardGroupSigners[nHashGroupSigner].nHashRequest;

Expand Down Expand Up @@ -1529,7 +1530,7 @@ bool CInfinityNodeLockReward::FindAndBuildMusigLockReward()
}
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::FindAndBuildMusigLockReward -- Musig Verifier Session Initialized!!!\n");

for(int i=0; i< (int)N_SIGNERS; i++) {
for(int i=0; i<N_SIGNERS; i++) {
if(!secp256k1_musig_set_nonce(secp256k1_context_musig, &verifier_signer_data[i], &commitmentpk[i])) {
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::MusigPartialSign -- Musig Set Nonce :%d FAILED\n", i);
return false;
Expand All @@ -1544,9 +1545,9 @@ bool CInfinityNodeLockReward::FindAndBuildMusigLockReward()

secp256k1_musig_partial_signature *partial_sig;
partial_sig = (secp256k1_musig_partial_signature*) malloc(Params().GetConsensus().nInfinityNodeLockRewardSigners * sizeof(secp256k1_musig_partial_signature));
for(int i=0; i< (int)N_SIGNERS; i++) {
for(int i=0; i<N_SIGNERS; i++) {
std::vector<unsigned char> sig;
for(int j=0; j < (int)pair.second.size(); j++){
for(int j=0; j < pair.second.size(); j++){
if(signOrder.at(i) == pair.second.at(j).vin.prevout){
sig = pair.second.at(j).vchMusigPartialSign;
}
Expand Down Expand Up @@ -1625,6 +1626,7 @@ bool CInfinityNodeLockReward::AutoResigterLockReward(std::string sLockReward, st
CTransactionRef tx_New;
CCoinControl coin_control;

CAmount nFeeRet = 0;
mapValue_t mapValue;
bool fSubtractFeeFromAmount = false;
bool fUseInstantSend=false;
Expand Down Expand Up @@ -1776,7 +1778,7 @@ bool CInfinityNodeLockReward::CheckLockRewardRegisterInfo(std::string sLockRewar

int nSignerFound = 0;
{
for(int i=0; i < (int)N_SIGNERS; i++){
for(int i=0; i < N_SIGNERS; i++){
CInfinitynode sInfNode = mapInfinityNodeRank[signerIndexes[i]];

CMetadata metaTopNode = infnodemeta.Find(sInfNode.getMetaID());
Expand Down Expand Up @@ -1837,7 +1839,7 @@ bool CInfinityNodeLockReward::CheckLockRewardRegisterInfo(std::string sLockRewar
}
}//end open

if(nSignerFound != (int)N_SIGNERS){
if(nSignerFound != N_SIGNERS){
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::CheckLockRewardRegisterInfo -- Find %d signers. Consensus is %d signers.\n", nSignerFound, N_SIGNERS);
return false;
}
Expand Down
9 changes: 5 additions & 4 deletions src/infinitynodeman.cpp
Expand Up @@ -609,6 +609,7 @@ bool CInfinitynodeMan::ExtractLockReward(int nBlockHeight, int depth, std::vecto
int nSINtype = 0;
std::string signature = "";
int *signerIndexes;
size_t N_SIGNERS = (size_t)Params().GetConsensus().nInfinityNodeLockRewardSigners;
int registerNbInfos = Params().GetConsensus().nInfinityNodeLockRewardSigners + 3;
signerIndexes = (int*) malloc(Params().GetConsensus().nInfinityNodeLockRewardSigners * sizeof(int));

Expand Down Expand Up @@ -937,15 +938,15 @@ bool CInfinitynodeMan::deterministicRewardAtHeight(int nBlockHeight, int nSinTyp
if(nDelta <= stm.second){
lastStatement = stm.first;
lastStatementSize = stm.second;
} else if (loop == (int)mapStatementSinType.size() && nDelta > stm.second && (nDelta - stm.second) <= Params().MaxReorganizationDepth()) {
} else if (loop == mapStatementSinType.size() && nDelta > stm.second && (nDelta - stm.second) <= Params().MaxReorganizationDepth()) {
//at end of loop
//we are near the end of current Stm and
//we try LR in next stm, but deterministicRewardStatement is not call, dont wait and try to update here
fUpdateStm = true;
nNextStmHeight = stm.first + stm.second;
}
} else if(nBlockHeight > stm.first && nDelta == (nBlockHeight -stm.first)){
if (loop == (int)mapStatementSinType.size()){
if (loop == mapStatementSinType.size()){
//at end of loop
fUpdateStm = true;
nNextStmHeight = stm.first + stm.second;
Expand Down Expand Up @@ -975,7 +976,7 @@ bool CInfinitynodeMan::deterministicRewardAtHeight(int nBlockHeight, int nSinTyp
}

//return false if not found statement
if (lastStatement == 0 || lastStatementSize == 0){
if (lastStatement == 0){
LogPrint(BCLog::INFINITYMAN,"CInfinitynodeMan::deterministicRewardAtHeight -- lastStatement not found: %d\n", lastStatement);
return false;
}
Expand All @@ -985,7 +986,7 @@ bool CInfinitynodeMan::deterministicRewardAtHeight(int nBlockHeight, int nSinTyp
LogPrint(BCLog::INFINITYMAN,"CInfinitynodeMan::deterministicRewardAtHeight -- can not calculate rank at %d\n", lastStatement);
return false;
}
if((nBlockHeight < lastStatement) || ((int)rankOfStatement.size() < (nBlockHeight - lastStatement + 1))){
if((nBlockHeight < lastStatement) || (rankOfStatement.size() < (nBlockHeight - lastStatement + 1))){
LogPrint(BCLog::INFINITYMAN,"CInfinitynodeMan::deterministicRewardAtHeight -- out of range at %d\n", lastStatement);
return false;
}
Expand Down
4 changes: 1 addition & 3 deletions src/infinitynodeman.h
Expand Up @@ -20,8 +20,8 @@ extern CInfinitynodeMan infnodeman;
class CLockRewardExtractInfo
{
public:
int nBlockHeight{0}; //blockHeight read
int nSINtype{0};
int nBlockHeight{0}; //blockHeight read
int nRewardHeight{0};
CScript scriptPubKey{};
std::string sLRInfo="";
Expand Down Expand Up @@ -147,14 +147,12 @@ class CInfinitynodeMan
if(nSinType == 10) return nBIGLastStmHeight;
if(nSinType == 5) return nMIDLastStmHeight;
if(nSinType == 1) return nLILLastStmHeight;
return 0;
}
int getLastStatementSize(int nSinType){
LOCK(cs);
if(nSinType == 10) return nBIGLastStmSize;
if(nSinType == 5) return nMIDLastStmSize;
if(nSinType == 1) return nLILLastStmSize;
return 0;
}

void setSyncStatus(bool flag){LOCK(cs); fReachedLastBlock=flag;}
Expand Down
1 change: 0 additions & 1 deletion src/infinitynodepeer.cpp
Expand Up @@ -108,7 +108,6 @@ bool CInfinitynodePeer::AutoCheck(CConnman& connman)
LogPrint(BCLog::INFINITYPEER,"CInfinitynodePeer::AutoCheck -- %s\n", strNotCapableReason);
return false;
}
return true;
}

void CInfinitynodePeer::ManageStateInitial(CConnman& connman)
Expand Down

0 comments on commit b5d6027

Please sign in to comment.