.
This commit is contained in:
@@ -120,7 +120,7 @@ int32_t hush_notaries(uint8_t pubkeys[64][33],int32_t height,uint32_t timestamp)
|
||||
return(-1);
|
||||
}
|
||||
|
||||
int32_t komodo_electednotary(int32_t *numnotariesp,uint8_t *pubkey33,int32_t height,uint32_t timestamp)
|
||||
int32_t hush_electednotary(int32_t *numnotariesp,uint8_t *pubkey33,int32_t height,uint32_t timestamp)
|
||||
{
|
||||
int32_t i,n; uint8_t pubkeys[64][33];
|
||||
n = hush_notaries(pubkeys,height,timestamp);
|
||||
@@ -133,22 +133,7 @@ int32_t komodo_electednotary(int32_t *numnotariesp,uint8_t *pubkey33,int32_t hei
|
||||
return(-1);
|
||||
}
|
||||
|
||||
int32_t komodo_ratify_threshold(int32_t height,uint64_t signedmask)
|
||||
{
|
||||
int32_t htind,numnotaries,i,wt = 0;
|
||||
htind = height / KOMODO_ELECTION_GAP;
|
||||
if ( htind >= HUSH_MAXBLOCKS / KOMODO_ELECTION_GAP )
|
||||
htind = (HUSH_MAXBLOCKS / KOMODO_ELECTION_GAP) - 1;
|
||||
numnotaries = Pubkeys[htind].numnotaries;
|
||||
for (i=0; i<numnotaries; i++)
|
||||
if ( ((1LL << i) & signedmask) != 0 )
|
||||
wt++;
|
||||
if ( wt > (numnotaries >> 1) || (wt > 7 && (signedmask & 1) != 0) )
|
||||
return(1);
|
||||
else return(0);
|
||||
}
|
||||
|
||||
void komodo_notarysinit(int32_t origheight,uint8_t pubkeys[64][33],int32_t num)
|
||||
void hush_notarysinit(int32_t origheight,uint8_t pubkeys[64][33],int32_t num)
|
||||
{
|
||||
static int32_t hwmheight;
|
||||
int32_t k,i,htind,height; struct knotary_entry *kp; struct knotaries_entry N;
|
||||
@@ -165,7 +150,7 @@ void komodo_notarysinit(int32_t origheight,uint8_t pubkeys[64][33],int32_t num)
|
||||
htind = (HUSH_MAXBLOCKS / KOMODO_ELECTION_GAP) - 1;
|
||||
//printf("htind.%d activation %d from %d vs %d | hwmheight.%d %s\n",htind,height,origheight,(((origheight+KOMODO_ELECTION_GAP/2)/KOMODO_ELECTION_GAP)+1)*KOMODO_ELECTION_GAP,hwmheight,SMART_CHAIN_SYMBOL);
|
||||
} else htind = 0;
|
||||
pthread_mutex_lock(&komodo_mutex);
|
||||
pthread_mutex_lock(&hush_mutex);
|
||||
for (k=0; k<num; k++)
|
||||
{
|
||||
kp = (struct knotary_entry *)calloc(1,sizeof(*kp));
|
||||
@@ -190,7 +175,7 @@ void komodo_notarysinit(int32_t origheight,uint8_t pubkeys[64][33],int32_t num)
|
||||
Pubkeys[i] = N;
|
||||
Pubkeys[i].height = i * KOMODO_ELECTION_GAP;
|
||||
}
|
||||
pthread_mutex_unlock(&komodo_mutex);
|
||||
pthread_mutex_unlock(&hush_mutex);
|
||||
if ( origheight > hwmheight )
|
||||
hwmheight = origheight;
|
||||
}
|
||||
@@ -207,7 +192,7 @@ int32_t hush_chosennotary(int32_t *notaryidp,int32_t height,uint8_t *pubkey33,ui
|
||||
}
|
||||
if ( height >= HUSH_NOTARIES_HARDCODED || SMART_CHAIN_SYMBOL[0] != 0 )
|
||||
{
|
||||
if ( (*notaryidp= komodo_electednotary(&numnotaries,pubkey33,height,timestamp)) >= 0 && numnotaries != 0 )
|
||||
if ( (*notaryidp= hush_electednotary(&numnotaries,pubkey33,height,timestamp)) >= 0 && numnotaries != 0 )
|
||||
{
|
||||
modval = ((height % numnotaries) == *notaryidp);
|
||||
return(modval);
|
||||
@@ -220,9 +205,9 @@ int32_t hush_chosennotary(int32_t *notaryidp,int32_t height,uint8_t *pubkey33,ui
|
||||
htind = height / KOMODO_ELECTION_GAP;
|
||||
if ( htind >= HUSH_MAXBLOCKS / KOMODO_ELECTION_GAP )
|
||||
htind = (HUSH_MAXBLOCKS / KOMODO_ELECTION_GAP) - 1;
|
||||
pthread_mutex_lock(&komodo_mutex);
|
||||
pthread_mutex_lock(&hush_mutex);
|
||||
HASH_FIND(hh,Pubkeys[htind].Notaries,pubkey33,33,kp);
|
||||
pthread_mutex_unlock(&komodo_mutex);
|
||||
pthread_mutex_unlock(&hush_mutex);
|
||||
if ( kp != 0 )
|
||||
{
|
||||
if ( (numnotaries= Pubkeys[htind].numnotaries) > 0 )
|
||||
@@ -355,7 +340,7 @@ int32_t hush_MoMdata(int32_t *notarized_htp,uint256 *MoMp,uint256 *kmdtxidp,int3
|
||||
return(0);
|
||||
}
|
||||
|
||||
int32_t komodo_notarizeddata(int32_t nHeight,uint256 *notarized_hashp,uint256 *notarized_desttxidp)
|
||||
int32_t hush_notarizeddata(int32_t nHeight,uint256 *notarized_hashp,uint256 *notarized_desttxidp)
|
||||
{
|
||||
struct notarized_checkpoint *np = 0; int32_t i=0,flag = 0; char symbol[HUSH_SMART_CHAIN_MAXLEN],dest[HUSH_SMART_CHAIN_MAXLEN]; struct hush_state *sp;
|
||||
if ( (sp= hush_stateptr(symbol,dest)) != 0 )
|
||||
@@ -411,17 +396,17 @@ int32_t komodo_notarizeddata(int32_t nHeight,uint256 *notarized_hashp,uint256 *n
|
||||
return(0);
|
||||
}
|
||||
|
||||
void komodo_notarized_update(struct hush_state *sp,int32_t nHeight,int32_t notarized_height,uint256 notarized_hash,uint256 notarized_desttxid,uint256 MoM,int32_t MoMdepth)
|
||||
void hush_notarized_update(struct hush_state *sp,int32_t nHeight,int32_t notarized_height,uint256 notarized_hash,uint256 notarized_desttxid,uint256 MoM,int32_t MoMdepth)
|
||||
{
|
||||
struct notarized_checkpoint *np;
|
||||
if ( notarized_height >= nHeight )
|
||||
{
|
||||
fprintf(stderr,"komodo_notarized_update REJECT notarized_height %d > %d nHeight\n",notarized_height,nHeight);
|
||||
fprintf(stderr,"hush_notarized_update REJECT notarized_height %d > %d nHeight\n",notarized_height,nHeight);
|
||||
return;
|
||||
}
|
||||
if ( 0 && SMART_CHAIN_SYMBOL[0] != 0 )
|
||||
fprintf(stderr,"[%s] komodo_notarized_update nHeight.%d notarized_height.%d\n",SMART_CHAIN_SYMBOL,nHeight,notarized_height);
|
||||
portable_mutex_lock(&komodo_mutex);
|
||||
fprintf(stderr,"[%s] hush_notarized_update nHeight.%d notarized_height.%d\n",SMART_CHAIN_SYMBOL,nHeight,notarized_height);
|
||||
portable_mutex_lock(&hush_mutex);
|
||||
sp->NPOINTS = (struct notarized_checkpoint *)realloc(sp->NPOINTS,(sp->NUM_NPOINTS+1) * sizeof(*sp->NPOINTS));
|
||||
np = &sp->NPOINTS[sp->NUM_NPOINTS++];
|
||||
memset(np,0,sizeof(*np));
|
||||
@@ -431,7 +416,7 @@ void komodo_notarized_update(struct hush_state *sp,int32_t nHeight,int32_t notar
|
||||
sp->NOTARIZED_DESTTXID = np->notarized_desttxid = notarized_desttxid;
|
||||
sp->MoM = np->MoM = MoM;
|
||||
sp->MoMdepth = np->MoMdepth = MoMdepth;
|
||||
portable_mutex_unlock(&komodo_mutex);
|
||||
portable_mutex_unlock(&hush_mutex);
|
||||
}
|
||||
|
||||
void hush_init(int32_t height)
|
||||
@@ -442,7 +427,7 @@ void hush_init(int32_t height)
|
||||
memset(&zero,0,sizeof(zero));
|
||||
if ( didinit == 0 )
|
||||
{
|
||||
pthread_mutex_init(&komodo_mutex,NULL);
|
||||
pthread_mutex_init(&hush_mutex,NULL);
|
||||
decode_hex(NOTARY_PUBKEY33,33,(char *)NOTARY_PUBKEY.c_str());
|
||||
if ( height >= 0 )
|
||||
{
|
||||
@@ -453,7 +438,7 @@ void hush_init(int32_t height)
|
||||
break;
|
||||
decode_hex(pubkeys[k],33,(char *)Notaries_genesis[k][1]);
|
||||
}
|
||||
komodo_notarysinit(0,pubkeys,k);
|
||||
hush_notarysinit(0,pubkeys,k);
|
||||
}
|
||||
//for (i=0; i<sizeof(Minerids); i++)
|
||||
// Minerids[i] = -2;
|
||||
|
||||
Reference in New Issue
Block a user