Skip to content

Commit

Permalink
miner small reward for DIN node address
Browse files Browse the repository at this point in the history
optimisation DIN comminication
fix some init mesage

Signed-off-by: crptec <crptec.fr@gmail.com>
  • Loading branch information
crptec committed Jun 21, 2020
1 parent 0ed6fc0 commit d8f9a89
Show file tree
Hide file tree
Showing 9 changed files with 461 additions and 210 deletions.
10 changes: 1 addition & 9 deletions src/chainparams.cpp
Expand Up @@ -115,8 +115,6 @@ class CMainParams : public CChainParams {
consensus.nInstantSendKeepLock = 24;
consensus.nInfinityNodeBeginHeight=160000; //masternode code
consensus.nInfinityNodeGenesisStatement=250000; // begin point for new reward algo
consensus.nInfinityNodeForkHeight=1000000; //infinitynode code -wait for active

consensus.nInfinityNodeUpdateMeta=25;
consensus.nInfinityNodeVoteValue=100;
consensus.nInfinityNodeNotificationValue=1;
Expand Down Expand Up @@ -263,8 +261,6 @@ class CTestNetParams : public CChainParams {
consensus.nInstantSendKeepLock = 24;
consensus.nInfinityNodeBeginHeight=100;
consensus.nInfinityNodeGenesisStatement=110;
consensus.nInfinityNodeForkHeight=100000; //infinitynode code -wait for active

consensus.nInfinityNodeUpdateMeta=5;
consensus.nInfinityNodeNotificationValue=1;
consensus.nInfinityNodeCallLockRewardDeepth=12;
Expand Down Expand Up @@ -375,7 +371,7 @@ class CTestNetParams : public CChainParams {

/* enable fallback fee on testnet */
m_fallback_fee_enabled = true;
nMaxReorganizationDepth = 5; // 5 at 2 minute block timespan is +/- 10 minutes.
nMaxReorganizationDepth = 14; // 5 at 2 minute block timespan is +/- 10 minutes.
nMinReorganizationPeers = 3;

consensus.lwmaStartHeight = 150;
Expand Down Expand Up @@ -403,8 +399,6 @@ class CFinalNetParams : public CChainParams {
consensus.nInstantSendKeepLock = 24;
consensus.nInfinityNodeBeginHeight=100;
consensus.nInfinityNodeGenesisStatement=110;
consensus.nInfinityNodeForkHeight=100000; //infinitynode code -wait for active

consensus.nInfinityNodeUpdateMeta=5;
consensus.nInfinityNodeNotificationValue=1;
consensus.nInfinityNodeCallLockRewardDeepth=5;
Expand Down Expand Up @@ -534,8 +528,6 @@ class CRegTestParams : public CChainParams {
consensus.nSubsidyHalvingInterval = 150;
consensus.nInfinityNodeBeginHeight=100;
consensus.nInfinityNodeGenesisStatement=110;
consensus.nInfinityNodeForkHeight=100000; //infinitynode code -wait for active

consensus.nInfinityNodeUpdateMeta=5;
consensus.nInfinityNodeNotificationValue=1;
consensus.nInfinityNodeCallLockRewardDeepth=5;
Expand Down
3 changes: 1 addition & 2 deletions src/consensus/params.h
Expand Up @@ -69,7 +69,6 @@ struct Params {
int nLimitSINNODE_10;// integer
int nInfinityNodeBeginHeight;// integer
int nInfinityNodeGenesisStatement;// integer
int nInfinityNodeForkHeight; //integer
int nInfinityNodeUpdateMeta;// integer
int nInfinityNodeVoteValue; // in coins
int nInfinityNodeNotificationValue; // in coins
Expand All @@ -79,7 +78,7 @@ struct Params {
int nInfinityNodeLockRewardSigners; //in number
int nInfinityNodeLockRewardSINType; //in number
int nSchnorrActivationHeight; // block height (int)
int nNewDevfeeAddress; // block height (int)
int nNewDevfeeAddress; // block height (int) - DIN switch height

// these params were once hardcoded in validation.cpp
int nINActivationHeight; // block height (int)
Expand Down
82 changes: 61 additions & 21 deletions src/infinitynodelockreward.cpp
Expand Up @@ -558,7 +558,8 @@ bool CInfinityNodeLockReward::CheckMyPeerAndSendVerifyRequest(CNode* pfrom, cons
}

//1.2.6 send verify request
if(fconnected && pnodeCandidate->GetSendVersion() >= MIN_INFINITYNODE_PAYMENT_PROTO_VERSION){
//if(fconnected && pnodeCandidate->GetSendVersion() >= MIN_INFINITYNODE_PAYMENT_PROTO_VERSION){
if(fconnected) {
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::CheckMyPeerAndSendVerifyRequest -- verifying node use %s nVersion: %d, addr=%s, Sig1 :%d\n",
connectionType, pnodeCandidate->GetSendVersion(), addr.ToString(), vrequest.vchSig1.size());
connman.PushMessage(pnodeCandidate, CNetMsgMaker(pnodeCandidate->GetSendVersion()).Make(NetMsgType::INFVERIFY, vrequest));
Expand Down Expand Up @@ -1325,7 +1326,11 @@ bool CInfinityNodeLockReward::FindAndBuildMusigLockReward()

uint256 nHashLockRequest = mapLockRewardGroupSigners[nHashGroupSigner].nHashRequest;

if(!mapLockRewardRequest.count(nHashLockRequest)) continue;
if(!mapLockRewardRequest.count(nHashLockRequest)){
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::FindAndBuildMusigLockReward -- LockRequest: %s is not in my Map\n",
nHashLockRequest.ToString());
continue;
}

LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::FindAndBuildMusigLockReward -- LockRequest: %s; member: %s\n",
nHashLockRequest.ToString(), mapLockRewardGroupSigners[nHashGroupSigner].signersId);
Expand Down Expand Up @@ -1504,7 +1509,7 @@ bool CInfinityNodeLockReward::FindAndBuildMusigLockReward()
std::string sErrorRegister = "";
std::string sErrorCheck = "";

if(!CheckLockRewardRegisterInfo(sLockRewardMusig, sErrorCheck)){
if(!CheckLockRewardRegisterInfo(sLockRewardMusig, sErrorCheck, mapLockRewardGroupSigners[nHashGroupSigner].vin.prevout)){
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::FindAndBuildMusigLockReward -- Check error: %s, Register LockReward error: %s\n",
sErrorCheck, sErrorRegister);
} else {
Expand Down Expand Up @@ -1609,7 +1614,7 @@ bool CInfinityNodeLockReward::AutoResigterLockReward(std::string sLockReward, st
/**
* STEP 7 : Check LockReward Musig - use in ConnectBlock
*/
bool CInfinityNodeLockReward::CheckLockRewardRegisterInfo(std::string sLockReward, std::string& strErrorRet)
bool CInfinityNodeLockReward::CheckLockRewardRegisterInfo(std::string sLockReward, std::string& strErrorRet, const COutPoint& infCheck)
{
std::string s;
stringstream ss(sLockReward);
Expand Down Expand Up @@ -1668,6 +1673,11 @@ bool CInfinityNodeLockReward::CheckLockRewardRegisterInfo(std::string sLockRewar
return false;
}

if(candidate.vinBurnFund.prevout != infCheck){
strErrorRet = strprintf("Dont match candidate for height: %d and SINtype: %d\n", nRewardHeight, nSINtype);
return false;
}

//step 7.2 identify Topnode and signer publicKey
secp256k1_pubkey *pubkeys;
pubkeys = (secp256k1_pubkey*) malloc(Params().GetConsensus().nInfinityNodeLockRewardSigners * sizeof(secp256k1_pubkey));
Expand Down Expand Up @@ -1743,7 +1753,8 @@ bool CInfinityNodeLockReward::CheckLockRewardRegisterInfo(std::string sLockRewar
*/
bool LockRewardValidation(const int nBlockHeight, const CBlock& block)
{
if(nBlockHeight < Params().GetConsensus().nInfinityNodeForkHeight) return true;
//fork height for DIN
if(nBlockHeight < Params().GetConsensus().nNewDevfeeAddress) return true;

/*TODO: read back limit reorg blocks and verify that there are 3 LockReward for 3 candidates of this block*/

Expand All @@ -1763,9 +1774,9 @@ bool LockRewardValidation(const int nBlockHeight, const CBlock& block)
std::string sErrorCheck = "";
std::string stringLRCommitment(vSolutions[1].begin(), vSolutions[1].end());
CInfinityNodeLockReward lockreward;
if (lockreward.CheckLockRewardRegisterInfo(stringLRCommitment, sErrorCheck)) {
/*if (lockreward.CheckLockRewardRegisterInfo(stringLRCommitment, sErrorCheck)) {
return true;
}
}*/
}
}
}
Expand All @@ -1775,7 +1786,7 @@ bool LockRewardValidation(const int nBlockHeight, const CBlock& block)
}

/*
* Connect to group Signer
* Connect to group Signer, top N score of rewardHeight
*/
void CInfinityNodeLockReward::TryConnectToMySigners(int rewardHeight, CConnman& connman)
{
Expand All @@ -1785,18 +1796,36 @@ void CInfinityNodeLockReward::TryConnectToMySigners(int rewardHeight, CConnman&

int nSINtypeCanLockReward = Params().GetConsensus().nInfinityNodeLockRewardSINType;

std::map<int, CInfinitynode> mapInfinityNodeRank = infnodeman.calculInfinityNodeRank(rewardHeight, nSINtypeCanLockReward, false, true);
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::TryConnectToMySigners -- Try connect to %d TopNode. Map rank: %d\n",
Params().GetConsensus().nInfinityNodeLockRewardTop, mapInfinityNodeRank.size());
uint256 nBlockHash = uint256();
if (!GetBlockHash(nBlockHash, rewardHeight - 101)) {
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::%s -- ERROR: GetBlockHash() failed at nBlockHeight %d\n", __func__, rewardHeight - 101);
return;
}

for (std::pair<int, CInfinitynode> s : mapInfinityNodeRank){
if(s.first <= Params().GetConsensus().nInfinityNodeLockRewardTop){
CMetadata metaTopNode = infnodemeta.Find(s.second.getMetaID());
std::vector<CInfinitynode> vecScoreInf;
if(!infnodeman.getTopNodeScoreAtHeight(nSINtypeCanLockReward, rewardHeight - 101,
Params().GetConsensus().nInfinityNodeLockRewardTop, vecScoreInf))
{
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward:: Can not get Top Node at height %d",rewardHeight - 101);
return;
}

/*
std::map<int, CInfinitynode> mapInfinityNodeRank = infnodeman.calculInfinityNodeRank(rewardHeight, nSINtypeCanLockReward, false, true);
*/
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::TryConnectToMySigners -- Try connect to %d TopNode. Vector score: %d\n",
Params().GetConsensus().nInfinityNodeLockRewardTop, vecScoreInf.size());

int score = 0;
for (auto& s : vecScoreInf){
if(score <= Params().GetConsensus().nInfinityNodeLockRewardTop){
CMetadata metaTopNode = infnodemeta.Find(s.getMetaID());
std::string connectionType = "";

if(metaTopNode.getMetadataHeight() == 0){
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::TryConnectToMySigners -- Cannot find metadata of TopNode rank: %d, id: %s\n",
s.first, s.second.getBurntxOutPoint().ToStringShort());
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::TryConnectToMySigners -- Cannot find metadata of TopNode score: %d, id: %s\n",
score, s.getBurntxOutPoint().ToStringShort());
score++;
continue;
}

Expand Down Expand Up @@ -1826,22 +1855,25 @@ void CInfinityNodeLockReward::TryConnectToMySigners(int rewardHeight, CConnman&
CNode* pnode = connman.OpenNetworkConnection(add, false, nullptr, NULL, false, false, false, true);
if(pnode == NULL) {
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::TryConnectToMySigners -- can't connect to node to verify it, addr=%s\n", addr.ToString());
score++;
continue;
} else {
fconnected = true;
connectionType = strprintf("new connection(%s)", add.ToStringIP());
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
//std::this_thread::sleep_for(std::chrono::milliseconds(1000));
}
}

if(fconnected){
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::TryConnectToMySigners -- %s TopNode rank: %d, id: %s\n",
connectionType, s.first, s.second.getBurntxOutPoint().ToStringShort());
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::TryConnectToMySigners -- %s TopNode score: %d, id: %s\n",
connectionType, score, s.getBurntxOutPoint().ToStringShort());
} else {
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::TryConnectToMySigners -- Cannot try to connect TopNode rank: %d, id: %s.\n",
s.first, s.second.getBurntxOutPoint().ToStringShort());
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::TryConnectToMySigners -- Cannot try to connect TopNode score: %d, id: %s.\n",
score, s.getBurntxOutPoint().ToStringShort());
}
}

score++;
}
}

Expand Down Expand Up @@ -2066,6 +2098,8 @@ void CInfinityNodeLockReward::CheckAndRemove(CConnman& connman)
while(itRequest != mapLockRewardRequest.end()) {
if(itRequest->second.nRewardHeight < nCachedBlockHeight - LIMIT_MEMORY)
{
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::CheckAndRemove -- remove mapLockRewardRequest for height: %d, current: %d\n",
itRequest->second.nRewardHeight, nCachedBlockHeight);
mapLockRewardRequest.erase(itRequest++);
}else{
++itRequest;
Expand All @@ -2076,6 +2110,8 @@ void CInfinityNodeLockReward::CheckAndRemove(CConnman& connman)
std::map<uint256, CLockRewardCommitment>::iterator itCommit = mapLockRewardCommitment.begin();
while(itCommit != mapLockRewardCommitment.end()) {
if (itCommit->second.nRewardHeight < nCachedBlockHeight - LIMIT_MEMORY) {
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::CheckAndRemove -- remove mapLockRewardCommitment for height: %d, current: %d\n",
itCommit->second.nRewardHeight, nCachedBlockHeight);
mapLockRewardCommitment.erase(itCommit++);
} else {
++itCommit;
Expand All @@ -2086,6 +2122,8 @@ void CInfinityNodeLockReward::CheckAndRemove(CConnman& connman)
std::map<uint256, CGroupSigners>::iterator itGroup = mapLockRewardGroupSigners.begin();
while(itGroup != mapLockRewardGroupSigners.end()) {
if (itGroup->second.nRewardHeight < nCachedBlockHeight - LIMIT_MEMORY) {
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::CheckAndRemove -- remove mapLockRewardGroupSigners for height: %d, current: %d\n",
itGroup->second.nRewardHeight, nCachedBlockHeight);
mapLockRewardGroupSigners.erase(itGroup++);
} else {
++itGroup;
Expand All @@ -2096,6 +2134,8 @@ void CInfinityNodeLockReward::CheckAndRemove(CConnman& connman)
std::map<uint256, CMusigPartialSignLR>::iterator itSign = mapPartialSign.begin();
while(itSign != mapPartialSign.end()) {
if (itSign->second.nRewardHeight < nCachedBlockHeight - LIMIT_MEMORY) {
LogPrint(BCLog::INFINITYLOCK,"CInfinityNodeLockReward::CheckAndRemove -- remove mapPartialSign for height: %d, current: %d\n",
itSign->second.nRewardHeight, nCachedBlockHeight);
mapPartialSign.erase(itSign++);
} else {
++itSign;
Expand Down
8 changes: 6 additions & 2 deletions src/infinitynodelockreward.h
Expand Up @@ -300,8 +300,10 @@ class CInfinityNodeLockReward
//register LockReward by send tx
bool AutoResigterLockReward(std::string sLR, std::string& strErrorRet);

//Check CheckLockRewardRegisterInfo
bool CheckLockRewardRegisterInfo(std::string sLR, std::string& strErrorRet);
//Check CheckLockRewardRegisterInfo for candidate is OK or KO
bool CheckLockRewardRegisterInfo(std::string sLR, std::string& strErrorRet, const COutPoint& infCheck);

bool FillRewardNode(CMutableTransaction& txNew, int nBlockHeight, CAmount blockReward, std::vector<CTxOut>& txoutInfinitynodeRet);

//remove unused data to avoid memory issue
//call int init.cpp
Expand All @@ -320,6 +322,8 @@ class CInfinityNodeLockReward
};
// validation
bool LockRewardValidation(const int nBlockHeight, const CBlock& block);
// miner
void FillBlock(CMutableTransaction& txNew, int nBlockHeight, CAmount blockReward, std::vector<CTxOut>& txoutInfinitynodeRet);

class ECCMusigHandle
{
Expand Down

0 comments on commit d8f9a89

Please sign in to comment.