Browse Source

add num notaris golbal, and reset notaries on era 0

pull/27/head
blackjok3r 6 years ago
parent
commit
8d687f0312
  1. 2
      src/komodo_globals.h
  2. 4
      src/komodo_notary.h
  3. 48
      src/main.cpp
  4. 15
      src/notaries_staked.cpp
  5. 2
      src/notaries_staked.h

2
src/komodo_globals.h

@ -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_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;
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];
uint16_t ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT;

4
src/komodo_notary.h

@ -258,7 +258,7 @@ int32_t komodo_notaries(uint8_t pubkeys[64][33],int32_t height,uint32_t timestam
if (timestamp != 0)
{
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);
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.
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);
}
}

48
src/main.cpp

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

15
src/notaries_staked.cpp

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

2
src/notaries_staked.h

@ -8,7 +8,7 @@
static const int STAKED_ERA_GAP = 777;
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_TIMESTAMP4 = 1604244444;

Loading…
Cancel
Save