add num notaris golbal, and reset notaries on era 0

This commit is contained in:
blackjok3r
2018-11-05 17:11:32 +08:00
parent 1c497de1fa
commit 8d687f0312
5 changed files with 43 additions and 28 deletions

View File

@@ -47,7 +47,7 @@ int COINBASE_MATURITY = _COINBASE_MATURITY;//100;
int32_t KOMODO_MININGTHREADS = -1,IS_KOMODO_NOTARY,IS_STAKED_NOTARY,ASSETCHAINS_STREAM,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,ASSETCHAINS_SEED,KOMODO_ON_DEMAND,KOMODO_EXTERNAL_NOTARIES,KOMODO_PASSPORT_INITDONE,KOMODO_PAX,KOMODO_EXCHANGEWALLET,KOMODO_REWIND,STAKED_ERA,KOMODO_CONNECTING = -1; int32_t KOMODO_MININGTHREADS = -1,IS_KOMODO_NOTARY,IS_STAKED_NOTARY,ASSETCHAINS_STREAM,USE_EXTERNAL_PUBKEY,KOMODO_CHOSEN_ONE,ASSETCHAINS_SEED,KOMODO_ON_DEMAND,KOMODO_EXTERNAL_NOTARIES,KOMODO_PASSPORT_INITDONE,KOMODO_PAX,KOMODO_EXCHANGEWALLET,KOMODO_REWIND,STAKED_ERA,KOMODO_CONNECTING = -1;
int32_t KOMODO_INSYNC,KOMODO_LASTMINED,prevKOMODO_LASTMINED,KOMODO_CCACTIVATE,JUMBLR_PAUSE = 1; int32_t KOMODO_INSYNC,KOMODO_LASTMINED,prevKOMODO_LASTMINED,KOMODO_CCACTIVATE,JUMBLR_PAUSE = 1;
std::string ASSETCHAINS_OVERRIDE_ADDRESS,NOTARY_ADDRESS,NOTARY_PUBKEY,ASSETCHAINS_NOTARIES,ASSETCHAINS_,ASSETCHAINS_OVERRIDE_PUBKEY,DONATION_PUBKEY; std::string ASSETCHAINS_OVERRIDE_ADDRESS,NOTARY_ADDRESS,NOTARY_PUBKEY,ASSETCHAINS_NOTARIES,ASSETCHAINS_,ASSETCHAINS_OVERRIDE_PUBKEY,DONATION_PUBKEY;
uint8_t NOTARY_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEY33[33],ASSETCHAINS_PUBLIC,ASSETCHAINS_PRIVATE,ASSETCHAINS_TXPOW; uint8_t NOTARY_PUBKEY33[33],ASSETCHAINS_OVERRIDE_PUBKEY33[33],ASSETCHAINS_PUBLIC,ASSETCHAINS_PRIVATE,ASSETCHAINS_TXPOW,NUM_NOTARIES;
char ASSETCHAINS_SYMBOL[KOMODO_ASSETCHAIN_MAXLEN],ASSETCHAINS_USERPASS[4096],NOTARYADDRS[64][36]; char ASSETCHAINS_SYMBOL[KOMODO_ASSETCHAIN_MAXLEN],ASSETCHAINS_USERPASS[4096],NOTARYADDRS[64][36];
uint16_t ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT; uint16_t ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT;

View File

@@ -258,7 +258,7 @@ int32_t komodo_notaries(uint8_t pubkeys[64][33],int32_t height,uint32_t timestam
if (timestamp != 0) if (timestamp != 0)
{ {
int staked_era; int32_t numSN; int staked_era; int32_t numSN;
uint8_t staked_pubkeys[64][33]; uint8_t null_pubkeys[64][33] = {0}; uint8_t staked_pubkeys[64][33];
staked_era = STAKED_era(timestamp); staked_era = STAKED_era(timestamp);
if (staked_era != 0) if (staked_era != 0)
@@ -271,7 +271,7 @@ int32_t komodo_notaries(uint8_t pubkeys[64][33],int32_t height,uint32_t timestam
{ {
// this means we are in a gap, so we set the array of pubkeys to zero, this does't seem to correctly work, so added exeption to komodo.h aswell. // this means we are in a gap, so we set the array of pubkeys to zero, this does't seem to correctly work, so added exeption to komodo.h aswell.
printf("%s is a STAKED chain and is in an ERA GAP.\n",ASSETCHAINS_SYMBOL); printf("%s is a STAKED chain and is in an ERA GAP.\n",ASSETCHAINS_SYMBOL);
memcpy(pubkeys,null_pubkeys,64 * 33); memset(pubkeys,0,sizeof(pubkeys));
return(64); return(64);
} }
} }

View File

@@ -1044,29 +1044,39 @@ bool CheckTransaction(const CTransaction& tx, CValidationState &state,
return true; return true;
} }
} }
extern char NOTARYADDRS[64][36]; extern char NOTARYADDRS[64][36];
extern uint8_t NUM_NOTARIES;
int32_t komodo_isnotaryvout(char *coinaddr) // from ac_private chains only int32_t komodo_isnotaryvout(char *coinaddr) // from ac_private chains only
{ {
/*static int32_t didinit; if ( is_STAKED(ASSETCHAINS_SYMBOL) != 0 )
int32_t i; {
if ( didinit == 0 ) if ( NOTARYADDRS[0][0] != 0 && NUM_NOTARIES != 0 ) {
{ for (int32_t i=0; i<=NUM_NOTARIES; i++)
uint8_t pubkey33[33]; if ( strcmp(coinaddr,NOTARYADDRS[i]) == 0 )
for (i=0; i<=17; i++) return(1);
{ }
if ( i < 17 ) }
decode_hex(pubkey33,33,(char *)notaries_STAKED1[i][1]); else
else decode_hex(pubkey33,33,(char *)CRYPTO777_PUBSECPSTR); {
pubkey2addr((char *)notaryaddrs[i],(uint8_t *)pubkey33); static int32_t didinit; static char notaryaddrs[sizeof(Notaries_elected1)/sizeof(*Notaries_elected1) + 1][64];
} int32_t i;
didinit = 1; if ( didinit == 0 )
} */ {
if ( NOTARYADDRS[0][0] != 0 ) uint8_t pubkey33[33];
{ for (i=0; i<=sizeof(Notaries_elected1)/sizeof(*Notaries_elected1); i++)
for (int32_t i=0; i<=64; i++) {
if ( strcmp(coinaddr,NOTARYADDRS[i]) == 0 ) if ( i < sizeof(Notaries_elected1)/sizeof(*Notaries_elected1) )
return(1); decode_hex(pubkey33,33,(char *)Notaries_elected1[i][1]);
else decode_hex(pubkey33,33,(char *)CRYPTO777_PUBSECPSTR);
pubkey2addr((char *)notaryaddrs[i],(uint8_t *)pubkey33);
}
didinit = 1;
}
for (i=0; i<=sizeof(Notaries_elected1)/sizeof(*Notaries_elected1); i++)
if ( strcmp(coinaddr,notaryaddrs[i]) == 0 )
return(1);
} }
return(0); return(0);
} }

View File

@@ -8,7 +8,7 @@ extern char NOTARYADDRS[64][36];
extern std::string NOTARY_ADDRESS,NOTARY_PUBKEY; extern std::string NOTARY_ADDRESS,NOTARY_PUBKEY;
extern int32_t STAKED_ERA,IS_STAKED_NOTARY,IS_KOMODO_NOTARY; extern int32_t STAKED_ERA,IS_STAKED_NOTARY,IS_KOMODO_NOTARY;
extern pthread_mutex_t staked_mutex; extern pthread_mutex_t staked_mutex;
extern uint8_t NOTARY_PUBKEY33[33]; extern uint8_t NOTARY_PUBKEY33[33],NUM_NOTARIES;
// Era 1 set of pubkeys // Era 1 set of pubkeys
const char *notaries_STAKED1[][2] = const char *notaries_STAKED1[][2] =
@@ -215,11 +215,10 @@ int8_t numStakedNotaries(uint8_t pubkeys[64][33],int8_t era) {
#ifdef SERVER #ifdef SERVER
pthread_mutex_lock(&staked_mutex); pthread_mutex_lock(&staked_mutex);
pubkey2addr((char *)NOTARYADDRS[i],(uint8_t *)staked_pubkeys1[i]); pubkey2addr((char *)NOTARYADDRS[i],(uint8_t *)staked_pubkeys1[i]);
NUM_NOTARIES = num_notaries_STAKED1;
pthread_mutex_unlock(&staked_mutex); pthread_mutex_unlock(&staked_mutex);
fprintf(stderr, "copied address [%d]: %s\n",i,NOTARYADDRS[i]);
#endif #endif
} }
fprintf(stderr, "size of notaryaddrs array: %ld\n",sizeof(NOTARYADDRS));
didstaked1 = 1; didstaked1 = 1;
didstaked2 = 0; didstaked2 = 0;
didstaked3 = 0; didstaked3 = 0;
@@ -238,6 +237,7 @@ int8_t numStakedNotaries(uint8_t pubkeys[64][33],int8_t era) {
#ifdef SERVER #ifdef SERVER
pthread_mutex_lock(&staked_mutex); pthread_mutex_lock(&staked_mutex);
pubkey2addr((char *)NOTARYADDRS[i],(uint8_t *)staked_pubkeys2[i]); pubkey2addr((char *)NOTARYADDRS[i],(uint8_t *)staked_pubkeys2[i]);
NUM_NOTARIES = num_notaries_STAKED2;
pthread_mutex_unlock(&staked_mutex); pthread_mutex_unlock(&staked_mutex);
#endif #endif
} }
@@ -257,6 +257,7 @@ int8_t numStakedNotaries(uint8_t pubkeys[64][33],int8_t era) {
#ifdef SERVER #ifdef SERVER
pthread_mutex_lock(&staked_mutex); pthread_mutex_lock(&staked_mutex);
pubkey2addr((char *)NOTARYADDRS[i],(uint8_t *)staked_pubkeys3[i]); pubkey2addr((char *)NOTARYADDRS[i],(uint8_t *)staked_pubkeys3[i]);
NUM_NOTARIES = num_notaries_STAKED3;
pthread_mutex_unlock(&staked_mutex); pthread_mutex_unlock(&staked_mutex);
#endif #endif
} }
@@ -275,6 +276,7 @@ int8_t numStakedNotaries(uint8_t pubkeys[64][33],int8_t era) {
#ifdef SERVER #ifdef SERVER
pthread_mutex_lock(&staked_mutex); pthread_mutex_lock(&staked_mutex);
pubkey2addr((char *)NOTARYADDRS[i],(uint8_t *)staked_pubkeys4[i]); pubkey2addr((char *)NOTARYADDRS[i],(uint8_t *)staked_pubkeys4[i]);
NUM_NOTARIES = num_notaries_STAKED4;
pthread_mutex_unlock(&staked_mutex); pthread_mutex_unlock(&staked_mutex);
#endif #endif
} }
@@ -288,8 +290,11 @@ int8_t numStakedNotaries(uint8_t pubkeys[64][33],int8_t era) {
} }
else else
{ {
// era is zero so we need to null ut the notary address's // era is zero so we need to null out the notary address's
//NOTARYADDRS[64][18] pthread_mutex_lock(&staked_mutex);
memset(NOTARYADDRS,0,sizeof(NOTARYADDRS));
NUM_NOTARIES = 0;
pthread_mutex_unlock(&staked_mutex);
} }
return(retval); return(retval);
} }

View File

@@ -8,7 +8,7 @@
static const int STAKED_ERA_GAP = 777; static const int STAKED_ERA_GAP = 777;
static const int STAKED_NOTARIES_TIMESTAMP1 = 1604212834; static const int STAKED_NOTARIES_TIMESTAMP1 = 1604212834;
static const int STAKED_NOTARIES_TIMESTAMP2 = 1604222222; static const int STAKED_NOTARIES_TIMESTAMP2 = 1541409634;
static const int STAKED_NOTARIES_TIMESTAMP3 = 1604233333; static const int STAKED_NOTARIES_TIMESTAMP3 = 1604233333;
static const int STAKED_NOTARIES_TIMESTAMP4 = 1604244444; static const int STAKED_NOTARIES_TIMESTAMP4 = 1604244444;