diff --git a/iguana/exchanges/LP_bitcoin.c b/iguana/exchanges/LP_bitcoin.c index de82fd670..139051a72 100644 --- a/iguana/exchanges/LP_bitcoin.c +++ b/iguana/exchanges/LP_bitcoin.c @@ -2041,8 +2041,13 @@ bits256 bits256_calctxid(char *symbol,uint8_t *serialized,int32_t len) bits256 bits256_calcaddrhash(char *symbol,uint8_t *serialized,int32_t len) { bits256 hash; + memset(hash.bytes,0,sizeof(hash)); if ( strcmp(symbol,"GRS") != 0 ) - hash = bits256_doublesha256(0,serialized,len); + { + if ( strcmp(symbol,"SMART") != 0 ) + hash = bits256_doublesha256(0,serialized,len); + else HashKeccak(hash.bytes,serialized,len); + } else { HashGroestl(hash.bytes,serialized,len); diff --git a/iguana/exchanges/LP_include.h b/iguana/exchanges/LP_include.h index 92dd78727..28c1244f5 100644 --- a/iguana/exchanges/LP_include.h +++ b/iguana/exchanges/LP_include.h @@ -522,6 +522,7 @@ int32_t iguana_signrawtransaction(void *ctx,char *symbol,uint8_t wiftaddr,uint8_ //void LP_butxo_swapfields_set(struct LP_utxoinfo *butxo); struct LP_address_utxo *LP_address_utxofind(struct iguana_info *coin,char *coinaddr,bits256 txid,int32_t vout); int64_t LP_myzcredits(); +void HashKeccak(uint8_t *hash,void *data,size_t len); void test_validate(struct iguana_info *coin,char *signedtx); void LP_instantdex_depositadd(char *coinaddr,bits256 txid); int64_t LP_instantdex_creditcalc(struct iguana_info *coin,int32_t dispflag,bits256 txid,char *refaddr,char *origcoinaddr); diff --git a/iguana/keccak.c b/iguana/keccak.c index 1f31fe0b3..302f220a6 100644 --- a/iguana/keccak.c +++ b/iguana/keccak.c @@ -1822,7 +1822,14 @@ sph_keccak512_addbits_and_close(void *cc, unsigned ub, unsigned n, void *dst) keccak_close64(cc, ub, n, dst); } - +void HashKeccak(uint8_t *hash,void *data,size_t len) +{ + sph_keccak256_context ctx_keccak; + sph_keccak256_init(&ctx_keccak); + sph_keccak256(&ctx_keccak,data,len); + sph_keccak256_close(&ctx_keccak,(void *)hash); +} + #ifdef __cplusplus } #endif