From aa5da1370d61fe196841ba45c23aee5b0b39bc1a Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 11 Nov 2018 01:40:21 -1100 Subject: [PATCH] Entropy hash table --- src/cc/dice.cpp | 84 ++++++++++++++++++++++++++++--------------------- 1 file changed, 48 insertions(+), 36 deletions(-) diff --git a/src/cc/dice.cpp b/src/cc/dice.cpp index a02d3e5b8..748811a04 100644 --- a/src/cc/dice.cpp +++ b/src/cc/dice.cpp @@ -102,10 +102,9 @@ What is needed is for the dealer node to track the entropy tx that was already b extern int32_t KOMODO_INSYNC; -//static uint256 bettxids[MAX_ENTROPYUSED]; -static uint256 Entropyused[MAX_ENTROPYUSED][2]; // change to hashtable -static CTransaction betTxs[MAX_ENTROPYUSED]; -static int32_t entropyvouts[MAX_ENTROPYUSED]; +//static uint256 Entropyused[MAX_ENTROPYUSED][2]; // change to hashtable +//static CTransaction betTxs[MAX_ENTROPYUSED]; +//static int32_t entropyvouts[MAX_ENTROPYUSED]; pthread_mutex_t DICE_MUTEX,DICEREVEALED_MUTEX; @@ -130,21 +129,19 @@ struct dicehash_entry uint256 bettxid; } *DICEHASH_TABLE; -int32_t _dicehash_find(uint256 bettxid) +struct dice_entropy +{ + UT_hash_handle hh; + uint256 entropyused,bettxid; + CTransaction betTx; + int32_t entropyvout; +} *DICE_ENTROPY; + +struct dicehash_entry *_dicehash_find(uint256 bettxid) { struct dicehash_entry *ptr; HASH_FIND(hh,DICEHASH_TABLE,&bettxid,sizeof(bettxid),ptr); - if ( ptr != 0 ) - { - fprintf(stderr,"hash_find %s got %s\n",bettxid.GetHex().c_str(),ptr->bettxid.GetHex().c_str()); - return(1); - } - return(0); - /*int32_t i; - for (i=0; ibettxid = bettxid; - /*int32_t i; - for (i=0; ientropyvout ) + { + if ( bettxid == ptr->bettxid ) + { + fprintf(stderr,"identical %s E.%s v.%d\n",bettxid.GetHex().c_str(),entropyused.GetHex().c_str(),entropyvout); + return(entropyvout+1); + } + else + { + fprintf(stderr,"found identical entropy used.%s %s vs %s v.%d vs %d\n",entropyused.GetHex().c_str(),bettxid.GetHex().c_str(),ptr->bettxid.GetHex().c_str(),entropyvout,ptr->entropyvout); + oldbettxid = ptr->bettxid; + oldbetTx = ptr->betTx; + oldentropyvout = ptr->entropyvout; + return(-1); + } + } else fprintf(stderr,"shared entropy.%s vouts %d vs %d\n",entropyused.GetHex().c_str(),entropyvout,entropyvouts[i]); + } + return(0); + /*int32_t i; for (i=0; ientropyused = entropyused; + ptr->bettxid = bettxid; + ptr->betTx = betTx; + ptr->entropyvout = entropyvout; + HASH_ADD(hh,DICE_ENTROPY,entropyused,sizeof(entropyused),ptr); + return(ptr); +/* int32_t i; for (i=0; i