diff --git a/src/cc/gateways.cpp b/src/cc/gateways.cpp index a61fe2ba4..5ec01b8fd 100644 --- a/src/cc/gateways.cpp +++ b/src/cc/gateways.cpp @@ -539,24 +539,32 @@ uint256 GatewaysReverseScan(uint256 &txid,int32_t height,uint256 reforacletxid,u { CTransaction tx; uint256 hash,mhash,hashBlock,oracletxid; int64_t val; int32_t numvouts; int64_t merkleht; CPubKey pk; std::vectordata; txid = zeroid; - char str[65]; fprintf(stderr,"reverse scan %s\n",uint256_str(str,batontxid)); + char str[65]; fprintf(stderr,"start reverse scan %s\n",uint256_str(str,batontxid)); while ( GetTransaction(batontxid,tx,hashBlock,false) != 0 && (numvouts= tx.vout.size()) > 0 ) { - fprintf(stderr,"reverse scan %s\n",uint256_str(str,batontxid)); if ( DecodeOraclesData(tx.vout[numvouts-1].scriptPubKey,oracletxid,hash,pk,data) == 'D' && oracletxid == reforacletxid ) { + fprintf(stderr,"decoded %s\n",uint256_str(str,batontxid)); if ( oracle_format(&hash,&merkleht,0,'I',(uint8_t *)data.data(),0,(int32_t)data.size()) == sizeof(int32_t) && merkleht == height ) { + fprintf(stderr,"found merkleht.%d\n",merkleht); if ( oracle_format(&hash,&val,0,'h',(uint8_t *)data.data(),sizeof(int32_t),(int32_t)data.size()) == sizeof(hash) && oracle_format(&mhash,&val,0,'h',(uint8_t *)data.data(),(int32_t)(sizeof(int32_t)+sizeof(uint256)),(int32_t)data.size()) == sizeof(hash) && mhash != zeroid ) { txid = batontxid; + fprintf(stderr,"set txid\n"); return(mhash); - } else return(zeroid); - } - } //else break; - batontxid = hash; + } + else + { + fprintf(stderr,"missing hash\n"); + return(zeroid); + } + } else fprintf(stderr,"height.%d vs search ht.%d\n",merkleht,height); + batontxid = hash; + } else break; } + fprintf(stderr,"end of loop\n"); return(zeroid); }