Skip to content

Commit

Permalink
anyone-can-* upgrades
Browse files Browse the repository at this point in the history
  • Loading branch information
mike31 committed Feb 7, 2019
1 parent fb533dc commit ffaa0a7
Show file tree
Hide file tree
Showing 4 changed files with 126 additions and 30 deletions.
19 changes: 19 additions & 0 deletions src/chainparams/params.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,11 @@ void* mc_MultichainParams::GetParam(const char *param,int* size)

int mc_MultichainParams::IsParamUpgradeValueInRange(const mc_OneMultichainParam *param,int version,int64_t value)
{
if((param->m_Type & MC_PRM_DATA_TYPE_MASK) == MC_PRM_BOOLEAN)
{
return 1;
}

if(value >= param->m_MinIntegerValue)
{
if(value <= param->m_MaxIntegerValue)
Expand Down Expand Up @@ -280,6 +285,20 @@ int mc_MultichainParams::CanBeUpgradedByVersion(const char *param,int version,in
}
}

if( (strcmp(param,"anyonecanconnect") == 0) ||
(strcmp(param,"anyonecansend") == 0) ||
(strcmp(param,"anyonecanreceive") == 0) ||
(strcmp(param,"anyonecanreceiveempty") == 0) ||
(strcmp(param,"anyonecancreate") == 0) ||
(strcmp(param,"anyonecanissue") == 0) ||
(strcmp(param,"anyonecanactivate") == 0) )
{
if(version >= 20007)
{
return m_lpCoord[2 * index + 1];
}
}



return 0;
Expand Down
35 changes: 35 additions & 0 deletions src/core/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -440,6 +440,41 @@ int SetUpgradedParamValue(const mc_OneMultichainParam *param,int64_t value)
MAX_CHUNK_COUNT=value;
}

if(strcmp(param->m_Name,"anyonecanconnect") == 0)
{
MCP_ANYONE_CAN_CONNECT=value;
}

if(strcmp(param->m_Name,"anyonecansend") == 0)
{
MCP_ANYONE_CAN_SEND=value;
}

if(strcmp(param->m_Name,"anyonecanreceive") == 0)
{
MCP_ANYONE_CAN_RECEIVE=value;
}

if(strcmp(param->m_Name,"anyonecanreceiveempty") == 0)
{
MCP_ANYONE_CAN_RECEIVE_EMPTY=value;
}

if(strcmp(param->m_Name,"anyonecancreate") == 0)
{
MCP_ANYONE_CAN_CREATE=value;
}

if(strcmp(param->m_Name,"anyonecanissue") == 0)
{
MCP_ANYONE_CAN_ISSUE=value;
}

if(strcmp(param->m_Name,"anyonecanactivate") == 0)
{
MCP_ANYONE_CAN_ACTIVATE=value;
}

return MC_ERR_NOERROR;
}

Expand Down
72 changes: 43 additions & 29 deletions src/protocol/multichainblock.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -191,33 +191,40 @@ int CreateUpgradeLists(int current_height,vector<mc_UpgradedParameter> *vParams,
if (it != map_last_upgrade.end())
{
take_it=false;
if( ( (param.m_Param->m_Type & MC_PRM_TIME) == 0 ) ||
((*vParams)[it->second].m_Block + MIN_BLOCKS_BETWEEN_UPGRADES <= upgrade.m_AppliedBlock) )
if(( param.m_Param->m_Type & MC_PRM_DATA_TYPE_MASK) == MC_PRM_BOOLEAN )
{
int64_t old_value=(*vParams)[it->second].m_Value;
if(param.m_Value >= old_value)
take_it=true;
}
else
{
if( ( (param.m_Param->m_Type & MC_PRM_TIME) == 0 ) ||
((*vParams)[it->second].m_Block + MIN_BLOCKS_BETWEEN_UPGRADES <= upgrade.m_AppliedBlock) )
{
if(param_value <= 2*old_value)
int64_t old_value=(*vParams)[it->second].m_Value;
if(param.m_Value >= old_value)
{
take_it=true;
if(param_value <= 2*old_value)
{
take_it=true;
}
}
}
else
{
if(old_value <= 2*param_value)
else
{
take_it=true;
}
if(old_value <= 2*param_value)
{
take_it=true;
}
}
if(!take_it)
{
param.m_Skipped =MC_PSK_DOUBLE_RANGE;
}
}
if(!take_it)
else
{
param.m_Skipped =MC_PSK_DOUBLE_RANGE;
param.m_Skipped = MC_PSK_FRESH_UPGRADE;
}
}
else
{
param.m_Skipped = MC_PSK_FRESH_UPGRADE;
}
if(take_it)
{
it->second=(int)vParams->size();
Expand All @@ -226,21 +233,28 @@ int CreateUpgradeLists(int current_height,vector<mc_UpgradedParameter> *vParams,
else
{
take_it=false;
int64_t old_value=mc_gState->m_NetworkParams->GetInt64Param(param.m_Param->m_Name);

if(param.m_Value >= old_value)
if(( param.m_Param->m_Type & MC_PRM_DATA_TYPE_MASK) == MC_PRM_BOOLEAN )
{
if(param_value <= 2*old_value)
{
take_it=true;
}
take_it=true;
}
else
else
{
if(old_value <= 2*param_value)
int64_t old_value=mc_gState->m_NetworkParams->GetInt64Param(param.m_Param->m_Name);

if(param.m_Value >= old_value)
{
take_it=true;
}
if(param_value <= 2*old_value)
{
take_it=true;
}
}
else
{
if(old_value <= 2*param_value)
{
take_it=true;
}
}
}
if(!take_it)
{
Expand Down
30 changes: 29 additions & 1 deletion src/rpc/rpcmisc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -742,8 +742,36 @@ Value getblockchainparams(const json_spirit::Array& params, bool fHelp)
{
param_value=(int)MAX_CHUNK_COUNT;
}
if(strcmp("anyonecanconnect",(mc_gState->m_NetworkParams->m_lpParams+i)->m_Name) == 0)
{
param_value=(MCP_ANYONE_CAN_CONNECT != 0);
}
if(strcmp("anyonecansend",(mc_gState->m_NetworkParams->m_lpParams+i)->m_Name) == 0)
{
param_value=(MCP_ANYONE_CAN_SEND != 0);
}
if(strcmp("anyonecanreceive",(mc_gState->m_NetworkParams->m_lpParams+i)->m_Name) == 0)
{
param_value=(MCP_ANYONE_CAN_RECEIVE != 0);
}
if(strcmp("anyonecanreceiveempty",(mc_gState->m_NetworkParams->m_lpParams+i)->m_Name) == 0)
{
param_value=(MCP_ANYONE_CAN_RECEIVE_EMPTY != 0);
}
if(strcmp("anyonecancreate",(mc_gState->m_NetworkParams->m_lpParams+i)->m_Name) == 0)
{
param_value=(MCP_ANYONE_CAN_CREATE != 0);
}
if(strcmp("anyonecanissue",(mc_gState->m_NetworkParams->m_lpParams+i)->m_Name) == 0)
{
param_value=(MCP_ANYONE_CAN_ISSUE != 0);
}
if(strcmp("anyonecanactivate",(mc_gState->m_NetworkParams->m_lpParams+i)->m_Name) == 0)
{
param_value=(MCP_ANYONE_CAN_ACTIVATE != 0);
}
}

if(!hidden)
{
obj.push_back(Pair(param_name,param_value));
Expand Down

0 comments on commit ffaa0a7

Please sign in to comment.