diff --git a/.gitignore b/.gitignore index b2923f002..ba6f0a1f2 100755 --- a/.gitignore +++ b/.gitignore @@ -152,3 +152,11 @@ iguana/iguana_notary.o-54f98cc3 iguana/basilisk.o-2ad8cb38 iguana/pangea_hand.o-02d25ec3 + +iguana/confs/4dfa301d0adf61f0ec08e4d4cb4444f4fc377f45f5d6b1da0814033920d72353 + +iguana/help.json + +iguana/index7778.html + +*.json diff --git a/basilisk/basilisk.c b/basilisk/basilisk.c index 9e717e99e..e4760e040 100755 --- a/basilisk/basilisk.c +++ b/basilisk/basilisk.c @@ -492,6 +492,7 @@ int32_t basilisk_relayid(struct supernet_info *myinfo,uint32_t ipbits) #include "basilisk_ping.c" #include "basilisk_vote.c" #include "basilisk_CMD.c" +#include "jumblr.c" void basilisk_functions(struct iguana_info *coin,int32_t protocol) { @@ -870,7 +871,7 @@ int32_t basilisk_issued_purge(struct supernet_info *myinfo,int32_t timepad) void basilisks_loop(void *arg) { static uint32_t counter; - struct iguana_info *relay; struct supernet_info *myinfo = arg; int32_t iter; double startmilli,endmilli; struct dpow_info *dp; + struct iguana_info *relay; struct supernet_info *myinfo = arg; int32_t iter; double startmilli,endmilli; struct dpow_info *dp; iter = 0; relay = iguana_coinfind("RELAY"); printf("start basilisk loop\n"); diff --git a/basilisk/jumblr.c b/basilisk/jumblr.c new file mode 100755 index 000000000..50c279d2e --- /dev/null +++ b/basilisk/jumblr.c @@ -0,0 +1,383 @@ +/****************************************************************************** + * Copyright © 2014-2017 The SuperNET Developers. * + * * + * See the AUTHORS, DEVELOPER-AGREEMENT and LICENSE files at * + * the top-level directory of this distribution for the individual copyright * + * holder information and the developer policies on copyright and licensing. * + * * + * Unless otherwise agreed in a custom licensing agreement, no part of the * + * SuperNET software, including this file may be copied, modified, propagated * + * or distributed except according to the terms contained in the LICENSE file * + * * + * Removal or modification of this copyright notice is prohibited. * + * * + ******************************************************************************/ + +// included from basilisk.c +// connect DEX to jumblr-core + +/* + z_exportkey "zaddr" + z_exportwallet "filename" + z_getoperationstatus (["operationid", ... ]) + z_gettotalbalance ( minconf ) + z_importkey "zkey" ( rescan ) + z_importwallet "filename" + z_listaddresses + z_sendmany "fromaddress" [{"address":... ,"amount":..., "memo":""},...] ( minconf ) ( fee ) + */ + +#define JUMBLR_INCR 99 +#define JUMBLR_TXFEE 0.01 +#define JUMBLR_ADDR "RGhxXpXSSBTBm9EvNsXnTQczthMCxHX91t" +#define JUMBLR_BTCADDR "18RmTJe9qMech8siuhYfMtHo8RtcN1obC6" +#define JUMBLR_FEE 0.001 +#define JUMBLR_DEPOSITPREFIX "deposit " + +struct jumblr_item *jumblr_opidfind(struct supernet_info *myinfo,char *opid) +{ + struct jumblr_item *ptr; + HASH_FIND(hh,myinfo->jumblrs,opid,(int32_t)strlen(opid),ptr); + return(ptr); +} + +struct jumblr_item *jumblr_opidadd(struct supernet_info *myinfo,struct iguana_info *coin,char *opid) +{ + struct jumblr_item *ptr; + if ( (ptr= jumblr_opidfind(myinfo,opid)) == 0 ) + { + ptr = calloc(1,sizeof(*ptr)); + safecopy(ptr->opid,opid,sizeof(ptr->opid)); + HASH_ADD_KEYPTR(hh,myinfo->jumblrs,ptr->opid,(int32_t)strlen(ptr->opid),ptr); + if ( ptr != jumblr_opidfind(myinfo,opid) ) + printf("jumblr_opidadd.(%s) ERROR, couldnt find after add\n",opid); + } + return(ptr); +} + +char *jumblr_zgetnewaddress(struct supernet_info *myinfo,struct iguana_info *coin) +{ + return(bitcoind_passthru(coin->symbol,coin->chain->serverport,coin->chain->userpass,"z_getnewaddress","")); +} + +char *jumblr_zlistoperationids(struct supernet_info *myinfo,struct iguana_info *coin) +{ + return(bitcoind_passthru(coin->symbol,coin->chain->serverport,coin->chain->userpass,"z_listoperationids","")); +} + +char *jumblr_zgetoperationresult(struct supernet_info *myinfo,struct iguana_info *coin,char *opid) +{ + char params[1024]; + sprintf(params,"[\"%s\"]",opid); + return(bitcoind_passthru(coin->symbol,coin->chain->serverport,coin->chain->userpass,"z_getoperationresult",params)); +} + +char *jumblr_sendt_to_z(struct supernet_info *myinfo,struct iguana_info *coin,char *taddr,char *zaddr,double amount) +{ + char params[1024]; double fee = (amount-3*JUMBLR_TXFEE) * JUMBLR_FEE; + sprintf(params,"[\"%s\", [{\"address\":\"%s\",\"amount\":%.8f}, {\"address\":\"%s\",\"amount\":%.8f}], 1, %.8f]",taddr,zaddr,amount-fee-JUMBLR_TXFEE,JUMBLR_ADDR,fee,JUMBLR_TXFEE); + return(bitcoind_passthru(coin->symbol,coin->chain->serverport,coin->chain->userpass,"z_sendmany",params)); +} + +char *jumblr_sendz_to_z(struct supernet_info *myinfo,struct iguana_info *coin,char *zaddrS,char *zaddrD,double amount) +{ + char params[1024]; double fee = (amount-2*JUMBLR_TXFEE) * JUMBLR_FEE; + sprintf(params,"[\"%s\", [{\"address\":\"%s\",\"amount\":%.8f}, {\"address\":\"%s\",\"amount\":%.8f}], 1, %.8f]",zaddrS,zaddrD,amount-fee-JUMBLR_TXFEE,JUMBLR_ADDR,fee,JUMBLR_TXFEE); + return(bitcoind_passthru(coin->symbol,coin->chain->serverport,coin->chain->userpass,"z_sendmany",params)); +} + +char *jumblr_sendz_to_t(struct supernet_info *myinfo,struct iguana_info *coin,char *zaddr,char *taddr,double amount) +{ + char params[1024]; double fee = (amount-JUMBLR_TXFEE) * JUMBLR_FEE; + sprintf(params,"[\"%s\", [{\"address\":\"%s\",\"amount\":%.8f}, {\"address\":\"%s\",\"amount\":%.8f}], 1, %.8f]",zaddr,taddr,amount-fee-JUMBLR_TXFEE,JUMBLR_ADDR,fee,JUMBLR_TXFEE); + return(bitcoind_passthru(coin->symbol,coin->chain->serverport,coin->chain->userpass,"z_sendmany",params)); +} + +char *jumblr_zlistreceivedbyaddress(struct supernet_info *myinfo,struct iguana_info *coin,char *addr) +{ + char params[1024]; + sprintf(params,"[\"%s\", 1]",addr); + return(bitcoind_passthru(coin->symbol,coin->chain->serverport,coin->chain->userpass,"z_listreceivedbyaddress",params)); +} + +char *jumblr_zgetbalance(struct supernet_info *myinfo,struct iguana_info *coin,char *addr) +{ + char params[1024]; + sprintf(params,"[\"%s\", 1]",addr); + return(bitcoind_passthru(coin->symbol,coin->chain->serverport,coin->chain->userpass,"z_getbalance",params)); +} + +int64_t jumblr_receivedby(struct supernet_info *myinfo,struct iguana_info *coin,char *addr) +{ + char *retstr; cJSON *retjson,*item; int32_t i,n; int64_t total = 0; + if ( (retstr= jumblr_zlistreceivedbyaddress(myinfo,coin,addr)) != 0 ) + { + printf("z_listreceivedbyaddress.(%s) -> (%s)\n",addr,retstr); + if ( (retjson= cJSON_Parse(retstr)) != 0 ) + { + if ( (n= cJSON_GetArraySize(retjson)) > 0 ) + { + for (i=0; isymbol,addr)) != 0 ) + { + if ( (retjson= cJSON_Parse(retstr)) != 0 ) + { + balance = jdouble(retjson,"balance") * SATOSHIDEN; + free_json(retjson); + } + free(retstr); + } + } + else if ( (retstr= jumblr_zgetbalance(myinfo,coin,addr)) != 0 ) + { + if ( (val= atof(retstr)) > SMALLVAL ) + balance = val * SATOSHIDEN; + free(retstr); + } + return(balance); +} + +void jumblr_itemset(struct jumblr_item *ptr,cJSON *item,char *status) +{ + cJSON *params,*amounts,*dest; char *from,*addr; int32_t i,n; int64_t amount; + /*"params" : { + "fromaddress" : "RDhEGYScNQYetCyG75Kf8Fg61UWPdwc1C5", + "amounts" : [ + { + "address" : "zc9s3UdkDFTnnwHrMCr1vYy2WmkjhmTxXNiqC42s7BjeKBVUwk766TTSsrRPKfnX31Bbu8wbrTqnjDqskYGwx48FZMPHvft", + "amount" : 3.00000000 + } + ], + "minconf" : 1, + "fee" : 0.00010000 + }*/ + if ( (params= jobj(item,"params")) != 0 ) + { + if ( (from= jstr(params,"fromaddress")) != 0 ) + safecopy(ptr->src,from,sizeof(ptr->src)); + if ( (amounts= jarray(&n,params,"amounts")) != 0 ) + { + for (i=0; i 0 ) + { + if ( strcmp(addr,JUMBLR_ADDR) == 0 ) + ptr->fee = amount; + else + { + ptr->amount = amount; + safecopy(ptr->dest,addr,sizeof(ptr->dest)); + } + } + } + } + ptr->txfee = jdouble(params,"fee") * SATOSHIDEN; + } +} + +void jumblr_opidupdate(struct supernet_info *myinfo,struct iguana_info *coin,struct jumblr_item *ptr) +{ + char *retstr,*status; cJSON *retjson; + if ( ptr->status == 0 ) + { + if ( (retstr= jumblr_zgetoperationresult(myinfo,coin,ptr->opid)) != 0 ) + { + if ( (retjson= cJSON_Parse(retstr)) != 0 ) + { + if ( (status= jstr(retjson,"status")) != 0 && strcmp(status,"pending") != 0 ) + jumblr_itemset(ptr,retjson,status); + free_json(retjson); + } + free(retstr); + } + } +} + +void jumblr_opidsupdate(struct supernet_info *myinfo,struct iguana_info *coin) +{ + char *retstr; cJSON *array; int32_t i,n; struct jumblr_item *ptr; + if ( (retstr= jumblr_zlistoperationids(myinfo,coin)) != 0 ) + { + if ( (array= cJSON_Parse(retstr)) != 0 ) + { + if ( (n= cJSON_GetArraySize(array)) > 0 ) + { + for (i=0; istatus == 0 ) + jumblr_opidupdate(myinfo,coin,ptr); + } + free_json(array); + } + free(retstr); + } +} + +bits256 jumblr_privkey(struct supernet_info *myinfo,char *BTCaddr,char *KMDaddr,char *prefix) +{ + bits256 privkey,pubkey; uint8_t pubkey33[33]; char passphrase[sizeof(myinfo->jumblr_passphrase) + 64]; + sprintf(passphrase,"%s%s",prefix,myinfo->jumblr_passphrase); + conv_NXTpassword(privkey.bytes,pubkey.bytes,(uint8_t *)passphrase,(int32_t)strlen(passphrase)); + bitcoin_pubkey33(myinfo->ctx,pubkey33,privkey); + bitcoin_address(BTCaddr,0,pubkey33,33); + bitcoin_address(KMDaddr,60,pubkey33,33); + return(privkey); +} + +void jumblr_iteration(struct supernet_info *myinfo,struct iguana_info *coin,int32_t selector,int32_t modval) +{ + char BTCaddr[64],KMDaddr[64],*zaddr,*retstr; bits256 priv0; uint64_t amount=0,total=0; double fee; struct jumblr_item *ptr,*tmp; uint8_t r; + // if BTC has arrived in deposit address, invoke DEX -> KMD + // if BTC has arrived in destination address, invoke DEX -> BTC + fee = JUMBLR_INCR * JUMBLR_FEE; + OS_randombytes(&r,sizeof(r)); +r = 0; + if ( strcmp(coin->symbol,"KMD") == 0 && coin->FULLNODE < 0 ) + { + printf("JUMBLR selector.%d modval.%d r.%d\n",selector,modval,r&7); + switch ( selector ) + { + case 0: // public -> z + priv0 = jumblr_privkey(myinfo,BTCaddr,KMDaddr,JUMBLR_DEPOSITPREFIX); + if ( (total= jumblr_balance(myinfo,coin,KMDaddr)) >= (JUMBLR_INCR + 3*(fee+JUMBLR_TXFEE))*SATOSHIDEN ) + { + if ( (r & 7) == 0 ) + { + if ( (zaddr= jumblr_zgetnewaddress(myinfo,coin)) != 0 ) + { + if ( total >= SATOSHIDEN * ((JUMBLR_INCR + 3*fee)*100 + 3*JUMBLR_TXFEE) ) + amount = SATOSHIDEN * ((JUMBLR_INCR + 3*fee)*100 + 3*JUMBLR_TXFEE); + else if ( total >= SATOSHIDEN * ((JUMBLR_INCR + 3*fee)*10 + 3*JUMBLR_TXFEE) ) + amount = SATOSHIDEN * ((JUMBLR_INCR + 3*fee)*10 + 3*JUMBLR_TXFEE); + else amount = SATOSHIDEN * ((JUMBLR_INCR + 3*fee) + 3*JUMBLR_TXFEE); + if ( (retstr= jumblr_sendt_to_z(myinfo,coin,KMDaddr,zaddr,dstr(amount))) != 0 ) + { + printf("sendt_to_z.(%s)\n",retstr); + free(retstr); + } + free(zaddr); + } else printf("no zaddr from jumblr_zgetnewaddress\n"); + } + } else printf("%s total %.8f vs %.8f\n",KMDaddr,dstr(total),(JUMBLR_INCR + 3*(fee+JUMBLR_TXFEE))); + break; + case 1: // z -> z + jumblr_opidsupdate(myinfo,coin); + HASH_ITER(hh,myinfo->jumblrs,ptr,tmp) + { + if ( strlen(ptr->src) < 40 ) + { + if ( (r & 7) == 0 && ptr->spent == 0 && (total= jumblr_balance(myinfo,coin,ptr->dest)) >= (fee + JUMBLR_FEE)*SATOSHIDEN ) + { + if ( (zaddr= jumblr_zgetnewaddress(myinfo,coin)) != 0 ) + { + if ( (retstr= jumblr_sendz_to_z(myinfo,coin,ptr->dest,zaddr,dstr(total))) != 0 ) + { + printf("sendz_to_z.(%s)\n",retstr); + free(retstr); + } + ptr->spent = (uint32_t)time(NULL); + free(zaddr); + break; + } + } + } + } + break; + case 2: // z -> public + jumblr_opidsupdate(myinfo,coin); + HASH_ITER(hh,myinfo->jumblrs,ptr,tmp) + { + if ( strlen(ptr->src) >= 40 ) + { + if ( (r & 7) == 0 && ptr->spent == 0 && (total= jumblr_balance(myinfo,coin,ptr->dest)) >= (fee + JUMBLR_FEE)*SATOSHIDEN ) + { + priv0 = jumblr_privkey(myinfo,BTCaddr,KMDaddr,""); + if ( (retstr= jumblr_sendz_to_t(myinfo,coin,ptr->dest,KMDaddr,dstr(total))) != 0 ) + { + printf("sendz_to_t.(%s)\n",retstr); + free(retstr); + } + ptr->spent = (uint32_t)time(NULL); + break; + } + } + } + break; + } + } +} + +#include "../includes/iguana_apidefs.h" +#include "../includes/iguana_apideclares.h" + +STRING_ARG(jumblr,setpassphrase,passphrase) +{ + cJSON *retjson; char KMDaddr[64],BTCaddr[64]; + if ( passphrase == 0 || passphrase[0] == 0 || (coin= iguana_coinfind("KMD")) == 0 || coin->FULLNODE >= 0 ) + return(clonestr("{\"error\":\"no passphrase or no native komodod\"}")); + else + { + safecopy(myinfo->jumblr_passphrase,passphrase,sizeof(myinfo->jumblr_passphrase)); + retjson = cJSON_CreateObject(); + jaddstr(retjson,"result","success"); + jumblr_privkey(myinfo,BTCaddr,KMDaddr,JUMBLR_DEPOSITPREFIX); + jaddstr(retjson,"BTCdeposit","notyet"); + jaddstr(retjson,"KMDdeposit",KMDaddr); + jumblr_privkey(myinfo,BTCaddr,KMDaddr,""); + jaddstr(retjson,"BTCjumblr","notyet"); + jaddstr(retjson,"KMDjumblr",KMDaddr); + return(jprint(retjson,1)); + } +} + +ZERO_ARGS(jumblr,status) +{ + cJSON *retjson; char KMDaddr[64],BTCaddr[64]; struct jumblr_item *ptr,*tmp; int64_t deposited,step_t2z,step_z2z,step_z2t,finished; + if ( strcmp(coin->symbol,"KMD") == 0 && coin->FULLNODE < 0 && myinfo->jumblr_passphrase[0] != 0 ) + { + jumblr_opidsupdate(myinfo,coin); + retjson = cJSON_CreateObject(); + step_t2z = step_z2z = step_z2t = deposited = finished = 0; + jumblr_privkey(myinfo,BTCaddr,KMDaddr,JUMBLR_DEPOSITPREFIX); + deposited = jumblr_receivedby(myinfo,coin,KMDaddr); + jumblr_privkey(myinfo,BTCaddr,KMDaddr,""); + finished = jumblr_receivedby(myinfo,coin,KMDaddr); + HASH_ITER(hh,myinfo->jumblrs,ptr,tmp) + { + if ( strlen(ptr->src) >= 40 ) + { + if ( strlen(ptr->dest) >= 40 ) + step_z2z += ptr->amount; + else step_z2t += ptr->amount; + } + else step_t2z += ptr->amount; + } + jaddstr(retjson,"result","success"); + jaddnum(retjson,"deposited",dstr(deposited)); + jaddnum(retjson,"t_to_z",dstr(step_t2z)); + jaddnum(retjson,"z_to_z",dstr(step_z2z)); + jaddnum(retjson,"z_to_t",dstr(step_z2t)); + jaddnum(retjson,"finished",dstr(finished)); + jaddnum(retjson,"pending",dstr(deposited) - dstr(finished)); + return(jprint(retjson,1)); + } else return(clonestr("{\"error\":\"no passphrase or no native komodod\"}")); +} + +#include "../includes/iguana_apiundefs.h" diff --git a/iguana/SuperNET_keys.c b/iguana/SuperNET_keys.c index 904da0c83..b44fc1b18 100755 --- a/iguana/SuperNET_keys.c +++ b/iguana/SuperNET_keys.c @@ -465,6 +465,8 @@ THREE_STRINGS(SuperNET,encryptjson,password,permanentfile,payload) free_json(argjson); return(jprint(retjson,1)); } + + #include "../includes/iguana_apiundefs.h" diff --git a/iguana/iguana777.h b/iguana/iguana777.h index 29fa7195c..a9b88c7b3 100755 --- a/iguana/iguana777.h +++ b/iguana/iguana777.h @@ -90,6 +90,14 @@ struct supernet_address struct pending_trade { UT_hash_handle hh; double basevolume,relvolume,dir; char base[32],rel[32]; }; +struct jumblr_item +{ + UT_hash_handle hh; + int64_t amount,fee,txfee; + uint32_t spent; + char opid[65],src[65],dest[65],status; +}; + struct liquidity_info { char base[16],rel[16],exchange[16]; @@ -104,7 +112,7 @@ struct supernet_info struct supernet_address myaddr; bits256 persistent_priv,privkey; uint8_t persistent_pubkey33[33]; - char ipaddr[64],NXTAPIURL[512],secret[4096],password[4096],rpcsymbol[64],handle[1024],permanentfile[1024]; + char ipaddr[64],NXTAPIURL[512],secret[4096],password[4096],rpcsymbol[64],handle[1024],permanentfile[1024],jumblr_passphrase[1024]; char *decryptstr; void (*liquidity_command)(struct supernet_info *myinfo,char *base,bits256 hash,cJSON *vals); double (*liquidity_active)(struct supernet_info *myinfo,double *refpricep,char *exchange,char *base,char *rel,double volume); @@ -112,6 +120,7 @@ struct supernet_info uint32_t expiration,dirty,DEXactive,DEXpoll,totalcoins,nanoinit,lastdexrequestid,dexcrcs[1024]; uint16_t argport,rpcport; struct basilisk_info basilisks; + struct jumblr_item *jumblrs; struct exchange_info *tradingexchanges[SUPERNET_MAXEXCHANGES]; int32_t numexchanges; struct iguana_waccount *wallet; struct iguana_info *allcoins; int32_t allcoins_being_added,allcoins_numvirts; diff --git a/iguana/iguana_payments.c b/iguana/iguana_payments.c index fbe9ba5b5..86f22cb3c 100755 --- a/iguana/iguana_payments.c +++ b/iguana/iguana_payments.c @@ -538,7 +538,7 @@ char *iguana_calcutxorawtx(struct supernet_info *myinfo,struct iguana_info *coin { } - else if ( (sobj= jobj(item,"scriptPubKey")) == 0 && (spendscriptstr= jstr(sobj,"hex")) == 0 ) + else if ( (sobj= jobj(item,"scriptPubKey")) == 0 || (spendscriptstr= jstr(sobj,"hex")) == 0 ) { printf("no spendscript (%s)\n",jprint(item,0)); continue; diff --git a/iguana/main.c b/iguana/main.c index 30758a494..dbc632b66 100755 --- a/iguana/main.c +++ b/iguana/main.c @@ -745,6 +745,22 @@ void iguana_urlinit(struct supernet_info *myinfo,int32_t ismainnet,int32_t usess else strcat(myinfo->NXTAPIURL,"6876/nxt"); } +void jumblr_loop(void *ptr) +{ + struct iguana_info *coin; uint32_t t; struct supernet_info *myinfo = ptr; + printf("JUMBLR loop\n"); + while ( 1 ) + { + t = (uint32_t)time(NULL); + if ( (coin= iguana_coinfind("KMD")) != 0 && coin->FULLNODE < 0 && myinfo->jumblr_passphrase[0] != 0 && (t % 120) < 60 ) + { + jumblr_iteration(myinfo,coin,(t % 360) / 120,t % 120); + } + //printf("t.%u %p.%d %s\n",t,coin,coin!=0?coin->FULLNODE:0,myinfo->jumblr_passphrase); + sleep(20); + } +} + void iguana_launchdaemons(struct supernet_info *myinfo) { int32_t i; char *helperargs,helperstr[512]; @@ -761,6 +777,7 @@ void iguana_launchdaemons(struct supernet_info *myinfo) iguana_launch(0,"rpcloop",iguana_rpcloop,myinfo,IGUANA_PERMTHREAD); // limit to oneprocess printf("launch mainloop\n"); OS_thread_create(malloc(sizeof(pthread_t)),NULL,(void *)DEX_explorerloop,(void *)myinfo); + OS_thread_create(malloc(sizeof(pthread_t)),NULL,(void *)jumblr_loop,(void *)myinfo); mainloop(myinfo); } @@ -1626,7 +1643,7 @@ void komodo_ICO_batch(cJSON *array,int32_t batchid) printf("# %s KMD %.8f\n",coinaddr,dstr(kmdamount)); if ( (iter & 1) == 0 ) { - if ( (0) ) + if ( (1) ) { printf("curl --url \"http://127.0.0.1:7778\" --data \"{\\\"agent\\\":\\\"dex\\\",\\\"method\\\":\\\"importaddress\\\",\\\"address\\\":\\\"%s\\\",\\\"symbol\\\":\\\"KMD\\\"}\" # %.8f\n",coinaddr,dstr(kmdamount)); printf("sleep 3\n"); @@ -1690,7 +1707,7 @@ void iguana_main(void *arg) else printf("ENDIAN ERROR\n"); mycalloc(0,0,0); #ifdef __APPLE__ - char *batchstr,*batchstr2; cJSON *batchjson; long batchsize; char fname[512],fname2[512]; int32_t batchid = 12; + char *batchstr,*batchstr2; cJSON *batchjson; long batchsize; char fname[512],fname2[512]; int32_t batchid = 13; sprintf(fname,"REVS.raw"), sprintf(fname2,"REVS.rawtxids"); if ( (0) && (batchstr= OS_filestr(&batchsize,fname)) != 0 && (batchstr2= OS_filestr(&batchsize,fname2)) != 0 ) { diff --git a/iguana/tests/KMD.batch12 b/iguana/tests/KMD.batch12 new file mode 100755 index 000000000..f4b24ca4a --- /dev/null +++ b/iguana/tests/KMD.batch12 @@ -0,0 +1,141 @@ +# RDTjem9CP97XPXvet1sQBb428xrmSZJSsd KMD 1568.45531762, REVS 31.12033224 +# RDTjem9CP97XPXvet1sQBb428xrmSZJSsd KMD 1568.45531762 +./komodo-cli sendtoaddress RDTjem9CP97XPXvet1sQBb428xrmSZJSsd 1568.45531762 +sleep 3 +echo "1568.45531762 <- expected amount RDTjem9CP97XPXvet1sQBb428xrmSZJSsd" + +# RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz KMD 73430.96919475 +./komodo-cli sendtoaddress RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz 73430.96919475 +sleep 3 +echo "73430.96919475 <- expected amount RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz" + +# RWxT4Jfwp1Bv6RYdUMdrQ6oXt6dMsQZ8jE KMD 5689.04575312 +./komodo-cli sendtoaddress RWxT4Jfwp1Bv6RYdUMdrQ6oXt6dMsQZ8jE 5689.04575312 +sleep 3 +echo "5689.04575312 <- expected amount RWxT4Jfwp1Bv6RYdUMdrQ6oXt6dMsQZ8jE" + +# RXQxetCQScefabaJaFyqCJ1FvfNwsKtvMT KMD 17817.00058850 +./komodo-cli sendtoaddress RXQxetCQScefabaJaFyqCJ1FvfNwsKtvMT 17817.00058850 +sleep 3 +echo "17817.00058850 <- expected amount RXQxetCQScefabaJaFyqCJ1FvfNwsKtvMT" + +# RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB KMD 202518.10752377 +./komodo-cli sendtoaddress RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB 202518.10752377 +sleep 3 +echo "202518.10752377 <- expected amount RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB" + +# RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf KMD 6963.60677351 +./komodo-cli sendtoaddress RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf 6963.60677351 +sleep 3 +echo "6963.60677351 <- expected amount RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf" + +# RXyXDkiMmU8jdnCuyCrZHqWthU4kp9PUhv KMD 32042.52085087 +./komodo-cli sendtoaddress RXyXDkiMmU8jdnCuyCrZHqWthU4kp9PUhv 32042.52085087 +sleep 3 +echo "32042.52085087 <- expected amount RXyXDkiMmU8jdnCuyCrZHqWthU4kp9PUhv" + +# RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A KMD 2135.12309659 +./komodo-cli sendtoaddress RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A 2135.12309659 +sleep 3 +echo "2135.12309659 <- expected amount RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A" + +# RAGhCfNvxpL55JFV7h2HQa5dSEK86Jg3ic KMD 5533.00461690 +./komodo-cli sendtoaddress RAGhCfNvxpL55JFV7h2HQa5dSEK86Jg3ic 5533.00461690 +sleep 3 +echo "5533.00461690 <- expected amount RAGhCfNvxpL55JFV7h2HQa5dSEK86Jg3ic" + +# RDoLVY35wbzTXZ9QgFRSAzHfAiYYG7e65i KMD 50.26846585 +./komodo-cli sendtoaddress RDoLVY35wbzTXZ9QgFRSAzHfAiYYG7e65i 50.26846585 +sleep 3 +echo "50.26846585 <- expected amount RDoLVY35wbzTXZ9QgFRSAzHfAiYYG7e65i" + +# RMHZ76hvxs8n2yDnkUa122rs5gubMxhiw7 KMD 1733.05190072 +./komodo-cli sendtoaddress RMHZ76hvxs8n2yDnkUa122rs5gubMxhiw7 1733.05190072 +sleep 3 +echo "1733.05190072 <- expected amount RMHZ76hvxs8n2yDnkUa122rs5gubMxhiw7" + +# RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y KMD 11852.83167290, REVS 139.09398517 +# RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y KMD 11852.83167290 +./komodo-cli sendtoaddress RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y 11852.83167290 +sleep 3 +echo "11852.83167290 <- expected amount RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y" + +# RH9CANWQNvqSktmX39ruDfiNFimcToD2ur KMD 43125.33019700 +./komodo-cli sendtoaddress RH9CANWQNvqSktmX39ruDfiNFimcToD2ur 43125.33019700 +sleep 3 +echo "43125.33019700 <- expected amount RH9CANWQNvqSktmX39ruDfiNFimcToD2ur" + +# RSp4ceoTDQt7fbweFBpEbvbTTH8J9SEp4b KMD 36837.09249870 +./komodo-cli sendtoaddress RSp4ceoTDQt7fbweFBpEbvbTTH8J9SEp4b 36837.09249870 +sleep 3 +echo "36837.09249870 <- expected amount RSp4ceoTDQt7fbweFBpEbvbTTH8J9SEp4b" + +# RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8 KMD 3016.26045526, REVS 59.85500000 +# RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8 KMD 3016.26045526 +./komodo-cli sendtoaddress RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8 3016.26045526 +sleep 3 +echo "3016.26045526 <- expected amount RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8" + +# RLWvbjH97gqjGXsRyPijDmwuKNFqsaaerb KMD 91240.39653929 +./komodo-cli sendtoaddress RLWvbjH97gqjGXsRyPijDmwuKNFqsaaerb 91240.39653929 +sleep 3 +echo "91240.39653929 <- expected amount RLWvbjH97gqjGXsRyPijDmwuKNFqsaaerb" + +# RGoB4uxdk2SDs5yCerizsQ3UFD7NqJjury KMD 2440.00507548 +./komodo-cli sendtoaddress RGoB4uxdk2SDs5yCerizsQ3UFD7NqJjury 2440.00507548 +sleep 3 +echo "2440.00507548 <- expected amount RGoB4uxdk2SDs5yCerizsQ3UFD7NqJjury" + +# RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX KMD 3823.81289934, REVS 75.88015839 +# RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX KMD 3823.81289934 +./komodo-cli sendtoaddress RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX 3823.81289934 +sleep 3 +echo "3823.81289934 <- expected amount RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX" + +# RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz KMD 2772.48246697 +./komodo-cli sendtoaddress RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz 2772.48246697 +sleep 3 +echo "2772.48246697 <- expected amount RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz" + +# RHJ55iWUQNbKcSn8shbv1RbGuip3RSRHFv KMD 693.08132289 +./komodo-cli sendtoaddress RHJ55iWUQNbKcSn8shbv1RbGuip3RSRHFv 693.08132289 +sleep 3 +echo "693.08132289 <- expected amount RHJ55iWUQNbKcSn8shbv1RbGuip3RSRHFv" + +# RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut KMD 10316.17621736 +./komodo-cli sendtoaddress RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut 10316.17621736 +sleep 3 +echo "10316.17621736 <- expected amount RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut" + +# RAGGPNoZgxAj6ABBTwehQfVYEa1PEN4qZW KMD 29566.93551966 +./komodo-cli sendtoaddress RAGGPNoZgxAj6ABBTwehQfVYEa1PEN4qZW 29566.93551966 +sleep 3 +echo "29566.93551966 <- expected amount RAGGPNoZgxAj6ABBTwehQfVYEa1PEN4qZW" + +# RNQzdseaqPikT6Df2ECFQXxW4yUr4fahqX KMD 19365.33667225 +./komodo-cli sendtoaddress RNQzdseaqPikT6Df2ECFQXxW4yUr4fahqX 19365.33667225 +sleep 3 +echo "19365.33667225 <- expected amount RNQzdseaqPikT6Df2ECFQXxW4yUr4fahqX" + +# R9PwsNzuksjJzZUAAX4yfDwdSy5Y4KP25X KMD 55229.13842423 +./komodo-cli sendtoaddress R9PwsNzuksjJzZUAAX4yfDwdSy5Y4KP25X 55229.13842423 +sleep 3 +echo "55229.13842423 <- expected amount R9PwsNzuksjJzZUAAX4yfDwdSy5Y4KP25X" + +# RC3DmLpKZyMD66JnKXVRHT9AVcok9xwGgB KMD 29049.45748125 +./komodo-cli sendtoaddress RC3DmLpKZyMD66JnKXVRHT9AVcok9xwGgB 29049.45748125 +sleep 3 +echo "29049.45748125 <- expected amount RC3DmLpKZyMD66JnKXVRHT9AVcok9xwGgB" + +# RHy56MTg74v8AY1Eo2RgbohbMbdHjUDN47 KMD 10066.89321267 +./komodo-cli sendtoaddress RHy56MTg74v8AY1Eo2RgbohbMbdHjUDN47 10066.89321267 +sleep 3 +echo "10066.89321267 <- expected amount RHy56MTg74v8AY1Eo2RgbohbMbdHjUDN47" + +# RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ KMD 2834.17657315 +./komodo-cli sendtoaddress RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ 2834.17657315 +sleep 3 +echo "2834.17657315 <- expected amount RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ" + + +# total KMD 701710.56131060 REVS 0.00000000 diff --git a/iguana/tests/KMD.batch12.importaddress b/iguana/tests/KMD.batch12.importaddress new file mode 100755 index 000000000..c140a3396 --- /dev/null +++ b/iguana/tests/KMD.batch12.importaddress @@ -0,0 +1,139 @@ +# RDTjem9CP97XPXvet1sQBb428xrmSZJSsd KMD 1568.45531762, REVS 31.12033224 +# RDTjem9CP97XPXvet1sQBb428xrmSZJSsd KMD 1568.45531762 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RDTjem9CP97XPXvet1sQBb428xrmSZJSsd\",\"symbol\":\"KMD\"}" # 1568.45531762 +sleep 3 +echo "1568.45531762 <- expected amount RDTjem9CP97XPXvet1sQBb428xrmSZJSsd" + +# RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz KMD 73430.96919475 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz\",\"symbol\":\"KMD\"}" # 73430.96919475 +sleep 3 +echo "73430.96919475 <- expected amount RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz" + +# RWxT4Jfwp1Bv6RYdUMdrQ6oXt6dMsQZ8jE KMD 5689.04575312 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RWxT4Jfwp1Bv6RYdUMdrQ6oXt6dMsQZ8jE\",\"symbol\":\"KMD\"}" # 5689.04575312 +sleep 3 +echo "5689.04575312 <- expected amount RWxT4Jfwp1Bv6RYdUMdrQ6oXt6dMsQZ8jE" + +# RXQxetCQScefabaJaFyqCJ1FvfNwsKtvMT KMD 17817.00058850 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RXQxetCQScefabaJaFyqCJ1FvfNwsKtvMT\",\"symbol\":\"KMD\"}" # 17817.00058850 +sleep 3 +echo "17817.00058850 <- expected amount RXQxetCQScefabaJaFyqCJ1FvfNwsKtvMT" + +# RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB KMD 202518.10752377 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB\",\"symbol\":\"KMD\"}" # 202518.10752377 +sleep 3 +echo "202518.10752377 <- expected amount RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB" + +# RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf KMD 6963.60677351 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf\",\"symbol\":\"KMD\"}" # 6963.60677351 +sleep 3 +echo "6963.60677351 <- expected amount RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf" + +# RXyXDkiMmU8jdnCuyCrZHqWthU4kp9PUhv KMD 32042.52085087 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RXyXDkiMmU8jdnCuyCrZHqWthU4kp9PUhv\",\"symbol\":\"KMD\"}" # 32042.52085087 +sleep 3 +echo "32042.52085087 <- expected amount RXyXDkiMmU8jdnCuyCrZHqWthU4kp9PUhv" + +# RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A KMD 2135.12309659 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A\",\"symbol\":\"KMD\"}" # 2135.12309659 +sleep 3 +echo "2135.12309659 <- expected amount RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A" + +# RAGhCfNvxpL55JFV7h2HQa5dSEK86Jg3ic KMD 5533.00461690 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RAGhCfNvxpL55JFV7h2HQa5dSEK86Jg3ic\",\"symbol\":\"KMD\"}" # 5533.00461690 +sleep 3 +echo "5533.00461690 <- expected amount RAGhCfNvxpL55JFV7h2HQa5dSEK86Jg3ic" + +# RDoLVY35wbzTXZ9QgFRSAzHfAiYYG7e65i KMD 50.26846585 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RDoLVY35wbzTXZ9QgFRSAzHfAiYYG7e65i\",\"symbol\":\"KMD\"}" # 50.26846585 +sleep 3 +echo "50.26846585 <- expected amount RDoLVY35wbzTXZ9QgFRSAzHfAiYYG7e65i" + +# RMHZ76hvxs8n2yDnkUa122rs5gubMxhiw7 KMD 1733.05190072 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RMHZ76hvxs8n2yDnkUa122rs5gubMxhiw7\",\"symbol\":\"KMD\"}" # 1733.05190072 +sleep 3 +echo "1733.05190072 <- expected amount RMHZ76hvxs8n2yDnkUa122rs5gubMxhiw7" + +# RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y KMD 11852.83167290, REVS 139.09398517 +# RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y KMD 11852.83167290 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y\",\"symbol\":\"KMD\"}" # 11852.83167290 +sleep 3 +echo "11852.83167290 <- expected amount RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y" + +# RH9CANWQNvqSktmX39ruDfiNFimcToD2ur KMD 43125.33019700 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RH9CANWQNvqSktmX39ruDfiNFimcToD2ur\",\"symbol\":\"KMD\"}" # 43125.33019700 +sleep 3 +echo "43125.33019700 <- expected amount RH9CANWQNvqSktmX39ruDfiNFimcToD2ur" + +# RSp4ceoTDQt7fbweFBpEbvbTTH8J9SEp4b KMD 36837.09249870 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RSp4ceoTDQt7fbweFBpEbvbTTH8J9SEp4b\",\"symbol\":\"KMD\"}" # 36837.09249870 +sleep 3 +echo "36837.09249870 <- expected amount RSp4ceoTDQt7fbweFBpEbvbTTH8J9SEp4b" + +# RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8 KMD 3016.26045526, REVS 59.85500000 +# RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8 KMD 3016.26045526 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8\",\"symbol\":\"KMD\"}" # 3016.26045526 +sleep 3 +echo "3016.26045526 <- expected amount RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8" + +# RLWvbjH97gqjGXsRyPijDmwuKNFqsaaerb KMD 91240.39653929 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLWvbjH97gqjGXsRyPijDmwuKNFqsaaerb\",\"symbol\":\"KMD\"}" # 91240.39653929 +sleep 3 +echo "91240.39653929 <- expected amount RLWvbjH97gqjGXsRyPijDmwuKNFqsaaerb" + +# RGoB4uxdk2SDs5yCerizsQ3UFD7NqJjury KMD 2440.00507548 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RGoB4uxdk2SDs5yCerizsQ3UFD7NqJjury\",\"symbol\":\"KMD\"}" # 2440.00507548 +sleep 3 +echo "2440.00507548 <- expected amount RGoB4uxdk2SDs5yCerizsQ3UFD7NqJjury" + +# RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX KMD 3823.81289934, REVS 75.88015839 +# RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX KMD 3823.81289934 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX\",\"symbol\":\"KMD\"}" # 3823.81289934 +sleep 3 +echo "3823.81289934 <- expected amount RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX" + +# RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz KMD 2772.48246697 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz\",\"symbol\":\"KMD\"}" # 2772.48246697 +sleep 3 +echo "2772.48246697 <- expected amount RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz" + +# RHJ55iWUQNbKcSn8shbv1RbGuip3RSRHFv KMD 693.08132289 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RHJ55iWUQNbKcSn8shbv1RbGuip3RSRHFv\",\"symbol\":\"KMD\"}" # 693.08132289 +sleep 3 +echo "693.08132289 <- expected amount RHJ55iWUQNbKcSn8shbv1RbGuip3RSRHFv" + +# RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut KMD 10316.17621736 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut\",\"symbol\":\"KMD\"}" # 10316.17621736 +sleep 3 +echo "10316.17621736 <- expected amount RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut" + +# RAGGPNoZgxAj6ABBTwehQfVYEa1PEN4qZW KMD 29566.93551966 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RAGGPNoZgxAj6ABBTwehQfVYEa1PEN4qZW\",\"symbol\":\"KMD\"}" # 29566.93551966 +sleep 3 +echo "29566.93551966 <- expected amount RAGGPNoZgxAj6ABBTwehQfVYEa1PEN4qZW" + +# RNQzdseaqPikT6Df2ECFQXxW4yUr4fahqX KMD 19365.33667225 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RNQzdseaqPikT6Df2ECFQXxW4yUr4fahqX\",\"symbol\":\"KMD\"}" # 19365.33667225 +sleep 3 +echo "19365.33667225 <- expected amount RNQzdseaqPikT6Df2ECFQXxW4yUr4fahqX" + +# R9PwsNzuksjJzZUAAX4yfDwdSy5Y4KP25X KMD 55229.13842423 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"R9PwsNzuksjJzZUAAX4yfDwdSy5Y4KP25X\",\"symbol\":\"KMD\"}" # 55229.13842423 +sleep 3 +echo "55229.13842423 <- expected amount R9PwsNzuksjJzZUAAX4yfDwdSy5Y4KP25X" + +# RC3DmLpKZyMD66JnKXVRHT9AVcok9xwGgB KMD 29049.45748125 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RC3DmLpKZyMD66JnKXVRHT9AVcok9xwGgB\",\"symbol\":\"KMD\"}" # 29049.45748125 +sleep 3 +echo "29049.45748125 <- expected amount RC3DmLpKZyMD66JnKXVRHT9AVcok9xwGgB" + +# RHy56MTg74v8AY1Eo2RgbohbMbdHjUDN47 KMD 10066.89321267 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RHy56MTg74v8AY1Eo2RgbohbMbdHjUDN47\",\"symbol\":\"KMD\"}" # 10066.89321267 +sleep 3 +echo "10066.89321267 <- expected amount RHy56MTg74v8AY1Eo2RgbohbMbdHjUDN47" + +# RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ KMD 2834.17657315 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ\",\"symbol\":\"KMD\"}" # 2834.17657315 +sleep 3 +echo "2834.17657315 <- expected amount RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ" + diff --git a/iguana/tests/KMD.batch12.listunspent b/iguana/tests/KMD.batch12.listunspent new file mode 100755 index 000000000..b54d4d79c --- /dev/null +++ b/iguana/tests/KMD.batch12.listunspent @@ -0,0 +1,112 @@ +# RDTjem9CP97XPXvet1sQBb428xrmSZJSsd KMD 1568.45531762, REVS 31.12033224 +# RDTjem9CP97XPXvet1sQBb428xrmSZJSsd KMD 1568.45531762 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RDTjem9CP97XPXvet1sQBb428xrmSZJSsd\",\"symbol\":\"KMD\"}" +echo "1568.45531762 <- expected amount RDTjem9CP97XPXvet1sQBb428xrmSZJSsd" + +# RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz KMD 73430.96919475 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz\",\"symbol\":\"KMD\"}" +echo "73430.96919475 <- expected amount RAvtq1kazCRZUvWvPsN7ioY2Vt1EYtgpuz" + +# RWxT4Jfwp1Bv6RYdUMdrQ6oXt6dMsQZ8jE KMD 5689.04575312 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RWxT4Jfwp1Bv6RYdUMdrQ6oXt6dMsQZ8jE\",\"symbol\":\"KMD\"}" +echo "5689.04575312 <- expected amount RWxT4Jfwp1Bv6RYdUMdrQ6oXt6dMsQZ8jE" + +# RXQxetCQScefabaJaFyqCJ1FvfNwsKtvMT KMD 17817.00058850 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RXQxetCQScefabaJaFyqCJ1FvfNwsKtvMT\",\"symbol\":\"KMD\"}" +echo "17817.00058850 <- expected amount RXQxetCQScefabaJaFyqCJ1FvfNwsKtvMT" + +# RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB KMD 202518.10752377 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB\",\"symbol\":\"KMD\"}" +echo "202518.10752377 <- expected amount RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB" + +# RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf KMD 6963.60677351 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf\",\"symbol\":\"KMD\"}" +echo "6963.60677351 <- expected amount RH4SXj2zZqfG4TfejyHcVpaoPoDv1Uonnf" + +# RXyXDkiMmU8jdnCuyCrZHqWthU4kp9PUhv KMD 32042.52085087 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RXyXDkiMmU8jdnCuyCrZHqWthU4kp9PUhv\",\"symbol\":\"KMD\"}" +echo "32042.52085087 <- expected amount RXyXDkiMmU8jdnCuyCrZHqWthU4kp9PUhv" + +# RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A KMD 2135.12309659 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A\",\"symbol\":\"KMD\"}" +echo "2135.12309659 <- expected amount RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A" + +# RAGhCfNvxpL55JFV7h2HQa5dSEK86Jg3ic KMD 5533.00461690 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RAGhCfNvxpL55JFV7h2HQa5dSEK86Jg3ic\",\"symbol\":\"KMD\"}" +echo "5533.00461690 <- expected amount RAGhCfNvxpL55JFV7h2HQa5dSEK86Jg3ic" + +# RDoLVY35wbzTXZ9QgFRSAzHfAiYYG7e65i KMD 50.26846585 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RDoLVY35wbzTXZ9QgFRSAzHfAiYYG7e65i\",\"symbol\":\"KMD\"}" +echo "50.26846585 <- expected amount RDoLVY35wbzTXZ9QgFRSAzHfAiYYG7e65i" + +# RMHZ76hvxs8n2yDnkUa122rs5gubMxhiw7 KMD 1733.05190072 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RMHZ76hvxs8n2yDnkUa122rs5gubMxhiw7\",\"symbol\":\"KMD\"}" +echo "1733.05190072 <- expected amount RMHZ76hvxs8n2yDnkUa122rs5gubMxhiw7" + +# RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y KMD 11852.83167290, REVS 139.09398517 +# RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y KMD 11852.83167290 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y\",\"symbol\":\"KMD\"}" +echo "11852.83167290 <- expected amount RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y" + +# RH9CANWQNvqSktmX39ruDfiNFimcToD2ur KMD 43125.33019700 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RH9CANWQNvqSktmX39ruDfiNFimcToD2ur\",\"symbol\":\"KMD\"}" +echo "43125.33019700 <- expected amount RH9CANWQNvqSktmX39ruDfiNFimcToD2ur" + +# RSp4ceoTDQt7fbweFBpEbvbTTH8J9SEp4b KMD 36837.09249870 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RSp4ceoTDQt7fbweFBpEbvbTTH8J9SEp4b\",\"symbol\":\"KMD\"}" +echo "36837.09249870 <- expected amount RSp4ceoTDQt7fbweFBpEbvbTTH8J9SEp4b" + +# RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8 KMD 3016.26045526, REVS 59.85500000 +# RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8 KMD 3016.26045526 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8\",\"symbol\":\"KMD\"}" +echo "3016.26045526 <- expected amount RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8" + +# RLWvbjH97gqjGXsRyPijDmwuKNFqsaaerb KMD 91240.39653929 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLWvbjH97gqjGXsRyPijDmwuKNFqsaaerb\",\"symbol\":\"KMD\"}" +echo "91240.39653929 <- expected amount RLWvbjH97gqjGXsRyPijDmwuKNFqsaaerb" + +# RGoB4uxdk2SDs5yCerizsQ3UFD7NqJjury KMD 2440.00507548 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RGoB4uxdk2SDs5yCerizsQ3UFD7NqJjury\",\"symbol\":\"KMD\"}" +echo "2440.00507548 <- expected amount RGoB4uxdk2SDs5yCerizsQ3UFD7NqJjury" + +# RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX KMD 3823.81289934, REVS 75.88015839 +# RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX KMD 3823.81289934 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX\",\"symbol\":\"KMD\"}" +echo "3823.81289934 <- expected amount RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX" + +# RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz KMD 2772.48246697 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz\",\"symbol\":\"KMD\"}" +echo "2772.48246697 <- expected amount RLyaf3XgjHruSeJd4oj83E8btck7kYPmVz" + +# RHJ55iWUQNbKcSn8shbv1RbGuip3RSRHFv KMD 693.08132289 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RHJ55iWUQNbKcSn8shbv1RbGuip3RSRHFv\",\"symbol\":\"KMD\"}" +echo "693.08132289 <- expected amount RHJ55iWUQNbKcSn8shbv1RbGuip3RSRHFv" + +# RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut KMD 10316.17621736 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut\",\"symbol\":\"KMD\"}" +echo "10316.17621736 <- expected amount RQgfzPR4zeCyLWaddHysGEVzoKLZa5E4Ut" + +# RAGGPNoZgxAj6ABBTwehQfVYEa1PEN4qZW KMD 29566.93551966 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RAGGPNoZgxAj6ABBTwehQfVYEa1PEN4qZW\",\"symbol\":\"KMD\"}" +echo "29566.93551966 <- expected amount RAGGPNoZgxAj6ABBTwehQfVYEa1PEN4qZW" + +# RNQzdseaqPikT6Df2ECFQXxW4yUr4fahqX KMD 19365.33667225 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RNQzdseaqPikT6Df2ECFQXxW4yUr4fahqX\",\"symbol\":\"KMD\"}" +echo "19365.33667225 <- expected amount RNQzdseaqPikT6Df2ECFQXxW4yUr4fahqX" + +# R9PwsNzuksjJzZUAAX4yfDwdSy5Y4KP25X KMD 55229.13842423 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"R9PwsNzuksjJzZUAAX4yfDwdSy5Y4KP25X\",\"symbol\":\"KMD\"}" +echo "55229.13842423 <- expected amount R9PwsNzuksjJzZUAAX4yfDwdSy5Y4KP25X" + +# RC3DmLpKZyMD66JnKXVRHT9AVcok9xwGgB KMD 29049.45748125 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RC3DmLpKZyMD66JnKXVRHT9AVcok9xwGgB\",\"symbol\":\"KMD\"}" +echo "29049.45748125 <- expected amount RC3DmLpKZyMD66JnKXVRHT9AVcok9xwGgB" + +# RHy56MTg74v8AY1Eo2RgbohbMbdHjUDN47 KMD 10066.89321267 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RHy56MTg74v8AY1Eo2RgbohbMbdHjUDN47\",\"symbol\":\"KMD\"}" +echo "10066.89321267 <- expected amount RHy56MTg74v8AY1Eo2RgbohbMbdHjUDN47" + +# RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ KMD 2834.17657315 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ\",\"symbol\":\"KMD\"}" +echo "2834.17657315 <- expected amount RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ" + diff --git a/iguana/tests/REVS.batch12 b/iguana/tests/REVS.batch12 new file mode 100755 index 000000000..78ad38586 --- /dev/null +++ b/iguana/tests/REVS.batch12 @@ -0,0 +1,14 @@ +# RDTjem9CP97XPXvet1sQBb428xrmSZJSsd KMD 1568.45531762, REVS 31.12033224 +sleep 1 +fiat/revs sendtoaddress RDTjem9CP97XPXvet1sQBb428xrmSZJSsd 31.12033224 +# RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y KMD 11852.83167290, REVS 139.09398517 +sleep 1 +fiat/revs sendtoaddress RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y 139.09398517 +# RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8 KMD 3016.26045526, REVS 59.85500000 +sleep 1 +fiat/revs sendtoaddress RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8 59.85500000 +# RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX KMD 3823.81289934, REVS 75.88015839 +sleep 1 +fiat/revs sendtoaddress RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX 75.88015839 + +# total KMD 0.00000000 REVS 305.94947580 diff --git a/iguana/tests/REVS.batch12.importaddress b/iguana/tests/REVS.batch12.importaddress new file mode 100755 index 000000000..53ae5be86 --- /dev/null +++ b/iguana/tests/REVS.batch12.importaddress @@ -0,0 +1,12 @@ +# RDTjem9CP97XPXvet1sQBb428xrmSZJSsd KMD 1568.45531762, REVS 31.12033224 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RDTjem9CP97XPXvet1sQBb428xrmSZJSsd\",\"symbol\":\"REVS\"}" # 31.12033224 +sleep 3 +# RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y KMD 11852.83167290, REVS 139.09398517 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RHmVdfQM3PbJayYGbYnGtsqiWD9gDt2n4y\",\"symbol\":\"REVS\"}" # 139.09398517 +sleep 3 +# RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8 KMD 3016.26045526, REVS 59.85500000 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RUbMmLRMeSf2xnBHspdzS2JC3e8epKmoM8\",\"symbol\":\"REVS\"}" # 59.85500000 +sleep 3 +# RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX KMD 3823.81289934, REVS 75.88015839 +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RXQBgNYtszvmdwniLu1nteS9MX1xD75bNX\",\"symbol\":\"REVS\"}" # 75.88015839 +sleep 3 diff --git a/iguana/tests/dexgetbalance b/iguana/tests/dexgetbalance index d0f90e62b..0e91dac58 100755 --- a/iguana/tests/dexgetbalance +++ b/iguana/tests/dexgetbalance @@ -1,2 +1,3 @@ #!/bin/bash -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getbalance\",\"address\":\"RU58D7nNLXwD29hgC2MPgtAF458gGxnPYS\",\"symbol\":\"KMD\"}" +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getbalance\",\"address\":\"RRyBxbrAPRUBCUpiJgJZYrkxqrh8x5ta9Z\",\"symbol\":\"KMD\"}" +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"getbalance\",\"address\":\"RRyBxbrAPRUBCUpiJgJZYrkxqrh8x5ta9Z\",\"symbol\":\"USD\"}" diff --git a/iguana/tests/request b/iguana/tests/request index 58ccace04..ac3337301 100755 --- a/iguana/tests/request +++ b/iguana/tests/request @@ -1,3 +1,3 @@ #!/bin/bash -curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"InstantDEX\",\"method\":\"request\",\"vals\":{\"source\":\"BTCD\",\"amount\":0.03,\"dest\":\"BTC\",\"minprice\":0.002}}" +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"InstantDEX\",\"method\":\"request\",\"vals\":{\"source\":\"KMD\",\"amount\":20,\"dest\":\"USD\",\"minprice\":0.08}}" diff --git a/iguana/tests/walletpassphrase b/iguana/tests/walletpassphrase index 1416189c8..dc5eae04e 100755 --- a/iguana/tests/walletpassphrase +++ b/iguana/tests/walletpassphrase @@ -1,3 +1,4 @@ #!/bin/bash #curl --url "http://127.0.0.1:7778" --data "{\"method\":\"walletpassphrase\",\"params\":[\"test\", 600]}" curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"bitcoinrpc\",\"method\":\"walletpassphrase\",\"password\":\"test\",\"timeout\":86444}" +curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"jumblr\",\"method\":\"setpassphrase\",\"passphrase\":\"test\"}" diff --git a/includes/iguana_apideclares.h b/includes/iguana_apideclares.h index 4a6787406..3f952e15a 100755 --- a/includes/iguana_apideclares.h +++ b/includes/iguana_apideclares.h @@ -186,6 +186,9 @@ STRING_AND_INT(iguana,bundlehashes,activecoin,height); STRING_AND_INT(iguana,PoSweights,activecoin,height); STRING_ARG(iguana,stakers,activecoin); +STRING_ARG(jumblr,setpassphrase,passphrase); +ZERO_ARGS(jumblr,status); + ZERO_ARGS(InstantDEX,allcoins); STRING_ARG(InstantDEX,available,source); HASH_ARRAY_STRING(InstantDEX,request,hash,vals,hexstr); diff --git a/includes/iguana_funcs.h b/includes/iguana_funcs.h index 8e048b21f..43f997c75 100755 --- a/includes/iguana_funcs.h +++ b/includes/iguana_funcs.h @@ -614,6 +614,7 @@ uint64_t *iguana_PoS_weights(struct supernet_info *myinfo,struct iguana_info *co int32_t iguana_staker_sort(struct iguana_info *coin,bits256 *hash2p,uint8_t *refrmd160,struct iguana_pkhash *refP,uint64_t *weights,int32_t numweights,bits256 *sortbuf); bits256 mpz_div64(bits256 hash,uint64_t divval); void iguana_walletinitcheck(struct supernet_info *myinfo,struct iguana_info *coin); +void jumblr_iteration(struct supernet_info *myinfo,struct iguana_info *coin,int32_t selector,int32_t modval); // ------------------------------------------------------[ Preparation ]---- // Initialise a gfshare context for producing shares