From 09f0186f46d593c24075565c68b06a2df0be51e1 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sat, 25 Jun 2016 07:18:07 -0300 Subject: [PATCH] getrawtransaction fields --- gecko/gecko.c | 13 ++++++++++--- gecko/gecko_miner.c | 14 +++++++++----- iguana/iguana777.c | 6 ++++++ iguana/iguana_payments.c | 10 +++++++++- 4 files changed, 34 insertions(+), 9 deletions(-) diff --git a/gecko/gecko.c b/gecko/gecko.c index 994494afe..a48e6b69b 100755 --- a/gecko/gecko.c +++ b/gecko/gecko.c @@ -1,3 +1,4 @@ + /****************************************************************************** * Copyright © 2014-2016 The SuperNET Developers. * * * @@ -44,22 +45,28 @@ void gecko_iteration(struct supernet_info *myinfo,struct iguana_info *btcd,struct iguana_info *virt,int32_t maxmillis) { char mineraddr[64]; int32_t hwmhdrsi,longesthdrsi; + struct iguana_info *coin,*tmp; + HASH_ITER(hh,myinfo->allcoins,coin,tmp) + { + printf("%s ",coin->symbol); + } + printf("allcoins iteration\n"); hwmhdrsi = virt->blocks.hwmchain.height / virt->chain->bundlesize; longesthdrsi = virt->longestchain / virt->chain->bundlesize; if ( hwmhdrsi <= longesthdrsi )//&& virt->blocks.hwmchain.height < virt->longestchain-1 ) { if ( time(NULL) > virt->hdrstime+3 ) { - fprintf(stderr,"request headers\n"); + fprintf(stderr,"request %s headers\n",virt->symbol); gecko_requesthdrs(myinfo,virt,hwmhdrsi); //fprintf(stderr,"R"); virt->hdrstime = (uint32_t)time(NULL); } } - if ( btcd->RELAYNODE != 0 && myinfo->RELAYID == 0 )//&& virt->blocks.hwmchain.height >= virt->longestchain-virt->chain->bundlesize ) + //if ( btcd->RELAYNODE != 0 && myinfo->RELAYID == 0 )//&& virt->blocks.hwmchain.height >= virt->longestchain-virt->chain->bundlesize ) { bitcoin_address(mineraddr,virt->chain->pubtype,myinfo->persistent_pubkey33,33); - //fprintf(stderr,"mine.%s %s\n",virt->symbol,mineraddr); + fprintf(stderr,"mine.%s %s\n",virt->symbol,mineraddr); gecko_miner(myinfo,btcd,virt,maxmillis,myinfo->persistent_pubkey33); } } diff --git a/gecko/gecko_miner.c b/gecko/gecko_miner.c index bc9f9429a..b61d84ed7 100755 --- a/gecko/gecko_miner.c +++ b/gecko/gecko_miner.c @@ -331,9 +331,12 @@ int32_t gecko_blocksubmit(struct supernet_info *myinfo,struct iguana_info *btcd, void gecko_miner(struct supernet_info *myinfo,struct iguana_info *btcd,struct iguana_info *virt,int32_t maxmillis,uint8_t *minerpubkey33) { struct iguana_zblock newblock; uint32_t prevtimestamp,nBits; int64_t reward = 0; int32_t i,gap,txn_count; char *blockstr,*space[256]; struct gecko_memtx **txptrs; void *ptr; //struct iguana_bundle *bp; - if ( virt->virtualchain == 0 || myinfo->RELAYID < 0 || myinfo->numrelays < 1 ) + if ( virt->virtualchain == 0 )//|| myinfo->RELAYID < 0 || myinfo->numrelays < 1 ) + { + printf("skip non-virtual chain.%s\n",virt->symbol); return; - if ( (virt->blocks.hwmchain.height % myinfo->numrelays) != myinfo->RELAYID ) + } + if ( 0 && (virt->blocks.hwmchain.height % myinfo->numrelays) != myinfo->RELAYID ) { if ( myinfo->numrelays < 3 ) return; @@ -362,7 +365,7 @@ void gecko_miner(struct supernet_info *myinfo,struct iguana_info *btcd,struct ig if ( (nBits= gecko_nBits(virt,&prevtimestamp,(void *)&newblock,GECKO_DIFFITERS)) != 0 ) { newblock.RO.bits = nBits; - //printf("mine.%s nBits.%x ht.%d\n",virt->symbol,nBits,newblock.height); + printf("mine.%s nBits.%x ht.%d\n",virt->symbol,nBits,newblock.height); txptrs = gecko_mempool_txptrs(myinfo,virt,&reward,&txn_count,&ptr,space,(int32_t)(sizeof(space)/sizeof(*space)),newblock.height); //char str[65]; printf("HWM.%s %p\n",bits256_str(str,newblock.RO.prev_block),&newblock.RO.prev_block); if ( (blockstr= gecko_createblock(myinfo,virt->chain->estblocktime,prevtimestamp,btcd,virt->chain->isPoS,(void *)&newblock,virt->symbol,txptrs,txn_count,maxmillis,minerpubkey33,reward)) != 0 ) @@ -372,8 +375,9 @@ void gecko_miner(struct supernet_info *myinfo,struct iguana_info *btcd,struct ig free(blockstr); else { - virt->newblockstr = blockstr; - virt->newblock = newblock; + //virt->newblockstr = blockstr; + //virt->newblock = newblock; + free(blockstr); } } if ( txptrs != (void *)space ) diff --git a/iguana/iguana777.c b/iguana/iguana777.c index 386c47141..75bf63899 100755 --- a/iguana/iguana777.c +++ b/iguana/iguana777.c @@ -78,6 +78,12 @@ struct iguana_info *iguana_coinadd(char *symbol,char *name,cJSON *argjson,int32_ //portable_mutex_lock(&myinfo->allcoins_mutex); HASH_ADD(hh,myinfo->allcoins,symbolcrc,sizeof(coin->symbolcrc),coin); //portable_mutex_unlock(&myinfo->allcoins_mutex); + struct iguana_info *virt,*tmp; + HASH_ITER(hh,myinfo->allcoins,virt,tmp) + { + printf("%s ",virt->symbol); + } + printf("allcoins\n"); myinfo->allcoins_being_added = 0; } if ( (coin= iguana_coinfind(symbol)) == 0 ) diff --git a/iguana/iguana_payments.c b/iguana/iguana_payments.c index df772c892..9c3f01db0 100755 --- a/iguana/iguana_payments.c +++ b/iguana/iguana_payments.c @@ -773,7 +773,7 @@ THREE_STRINGS(bitcoinrpc,verifymessage,address,sig,message) HASH_AND_INT(bitcoinrpc,getrawtransaction,txid,verbose) { - struct iguana_txid *tx,T; char *txbytes; bits256 checktxid; int32_t len,height,extralen=65536; cJSON *retjson,*txobj; uint8_t *extraspace; + struct iguana_txid *tx,T; char *txbytes; bits256 checktxid; int32_t len,height,extralen=65536; cJSON *retjson,*txobj; uint8_t *extraspace; struct iguana_block *block; bits256 hash2; if ( remoteaddr != 0 ) return(clonestr("{\"error\":\"no remote\"}")); if ( (tx= iguana_txidfind(coin,&height,&T,txid,coin->bundlescount-1)) != 0 ) @@ -790,7 +790,15 @@ HASH_AND_INT(bitcoinrpc,getrawtransaction,txid,verbose) free(extraspace); free(txbytes); if ( txobj != 0 ) + { + hash2 = iguana_blockhash(coin,height); + jaddbits256(txobj,"blockhash",hash2); + if ( (block= iguana_blockfind("rawtx",coin,hash2)) != 0 ) + jaddnum(txobj,"blocktime",block->RO.timestamp); + jaddnum(txobj,"height",height); + jaddnum(txobj,"confirmations",coin->blocks.hwmchain.height - height); return(jprint(txobj,1)); + } } jaddstr(retjson,"result",txbytes); char str[65]; printf("txbytes.(%s) len.%d (%s) %s\n",txbytes,len,jprint(retjson,0),bits256_str(str,checktxid));