|
|
@ -537,13 +537,13 @@ std::string GatewaysBind(uint64_t txfee,std::string coin,uint256 tokenid,int64_t |
|
|
|
|
|
|
|
uint256 GatewaysReverseScan(uint256 &txid,int32_t height,uint256 reforacletxid,uint256 batontxid) |
|
|
|
{ |
|
|
|
CTransaction tx; uint256 hash,mhash,hashBlock,oracletxid; int64_t val; int32_t numvouts; int64_t merkleht; CPubKey pk; std::vector<uint8_t>data; |
|
|
|
CTransaction tx; uint256 hash,mhash,bhash,hashBlock,oracletxid; int64_t val; int32_t numvouts; int64_t merkleht; CPubKey pk; std::vector<uint8_t>data; |
|
|
|
txid = zeroid; |
|
|
|
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,"check %s\n",uint256_str(str,batontxid)); |
|
|
|
if ( DecodeOraclesData(tx.vout[numvouts-1].scriptPubKey,oracletxid,hash,pk,data) == 'D' && oracletxid == reforacletxid ) |
|
|
|
if ( DecodeOraclesData(tx.vout[numvouts-1].scriptPubKey,oracletxid,bhash,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 ) |
|
|
@ -562,7 +562,7 @@ uint256 GatewaysReverseScan(uint256 &txid,int32_t height,uint256 reforacletxid,u |
|
|
|
return(zeroid); |
|
|
|
} |
|
|
|
} else fprintf(stderr,"height.%d vs search ht.%d\n",(int32_t)merkleht,(int32_t)height); |
|
|
|
batontxid = hash; |
|
|
|
batontxid = bhash; |
|
|
|
fprintf(stderr,"new hash %s\n",uint256_str(str,batontxid)); |
|
|
|
} else break; |
|
|
|
} |
|
|
|