jl777
8 years ago
committed by
GitHub
39 changed files with 1845 additions and 493 deletions
@ -0,0 +1,202 @@ |
|||
/******************************************************************************
|
|||
* 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
|
|||
|
|||
// "currency":{"value":%.8f, "pending":%.8f}
|
|||
|
|||
cJSON *tradebot_balancediff(cJSON *item,cJSON *anchoritem) // only item might be null
|
|||
{ |
|||
double current[2],past[2]; int32_t i; cJSON *diffitem = jduplicate(anchoritem); |
|||
memset(current,0,sizeof(current)); |
|||
memset(past,0,sizeof(past)); |
|||
if ( jobj(diffitem,"value") != 0 ) |
|||
jdelete(diffitem,"value"); |
|||
if ( jobj(diffitem,"pending") != 0 ) |
|||
jdelete(diffitem,"pending"); |
|||
for (i=0; i<2; i++) |
|||
{ |
|||
if ( current[i] != 0. || past[i] != 0. ) |
|||
jaddnum(diffitem,i == 0 ? "value" : "pending",current[i] - past[i]); |
|||
} |
|||
return(diffitem); |
|||
} |
|||
|
|||
cJSON *tradebot_balancesdiff(struct supernet_info *myinfo,cJSON *current,cJSON *anchor) |
|||
{ |
|||
cJSON *item,*anchoritem,*diffitem,*array; int32_t i,n; char *field; |
|||
if ( anchor == 0 ) |
|||
return(jduplicate(current)); |
|||
array = cJSON_CreateObject(); |
|||
n = cJSON_GetArraySize(current); |
|||
for (i=0; i<n; i++) |
|||
{ |
|||
item = jitem(current,i); |
|||
field = jfieldname(item); |
|||
if ( (anchoritem= jobj(anchor,field)) != 0 ) |
|||
diffitem = tradebot_balancediff(item,anchoritem); |
|||
else diffitem = jduplicate(item); |
|||
jadd(array,field,diffitem); |
|||
} |
|||
n = cJSON_GetArraySize(anchor); |
|||
for (i=0; i<n; i++) |
|||
{ |
|||
item = jitem(current,i); |
|||
field = jfieldname(item); |
|||
if ( jobj(array,field) == 0 ) |
|||
jadd(array,field,tradebot_balancediff(0,item)); |
|||
} |
|||
return(array); |
|||
} |
|||
|
|||
// get balances from all exchanges, wallets, pending
|
|||
double tradebot_balance(struct supernet_info *myinfo,char *base) |
|||
{ |
|||
cJSON *json; double value = 0.; int32_t i; struct iguana_info *coin = iguana_coinfind(base); |
|||
if ( coin != 0 && (json= iguana_getinfo(myinfo,coin)) != 0 ) |
|||
{ |
|||
value = jdouble(json,"balance"); |
|||
free_json(json); |
|||
} |
|||
for (i=0; i<myinfo->numexchanges; i++) |
|||
{ |
|||
value += 0;//InstantDEX_balance(myinfo,0,0,0,exchange,base);
|
|||
} |
|||
return(value); |
|||
} |
|||
|
|||
void tradebot_pendingadd(struct supernet_info *myinfo,cJSON *tradejson,char *base,double basevolume,char *rel,double relvolume) |
|||
{ |
|||
portable_mutex_lock(&myinfo->pending_mutex); |
|||
// add to myinfo->trades
|
|||
portable_mutex_unlock(&myinfo->pending_mutex); |
|||
} |
|||
|
|||
void tradebot_pendingremove(struct supernet_info *myinfo,char *base,double basevolume,char *rel,double relvolume) |
|||
{ |
|||
portable_mutex_lock(&myinfo->pending_mutex); |
|||
// remove from myinfo->trades
|
|||
portable_mutex_unlock(&myinfo->pending_mutex); |
|||
} |
|||
|
|||
double tradebot_pending(struct supernet_info *myinfo,char *base) |
|||
{ |
|||
double pending = 0.; struct pending_trade *tp,*tmp; |
|||
portable_mutex_lock(&myinfo->pending_mutex); |
|||
HASH_ITER(hh,myinfo->trades,tp,tmp) |
|||
{ |
|||
if ( strcmp(base,tp->base) == 0 ) |
|||
pending += tp->dir * tp->basevolume; |
|||
else if ( strcmp(base,tp->rel) == 0 ) |
|||
pending -= tp->dir * tp->relvolume; |
|||
} |
|||
portable_mutex_unlock(&myinfo->pending_mutex); |
|||
return(pending); |
|||
} |
|||
|
|||
#include "../includes/iguana_apidefs.h" |
|||
#include "../includes/iguana_apideclares.h" |
|||
|
|||
ZERO_ARGS(tradebot,allbalances) |
|||
{ |
|||
int32_t i,n; double value,pending; char *base; cJSON *item,*balances = cJSON_CreateObject(); |
|||
if ( myinfo->liquidity_currencies == 0 ) |
|||
myinfo->liquidity_currencies = cJSON_Parse("[\"KMD\", \"BTC\"]"); |
|||
if ( myinfo->liquidity_currencies != 0 && (n= cJSON_GetArraySize(myinfo->liquidity_currencies)) > 0 ) |
|||
{ |
|||
for (i=0; i<n; i++) |
|||
{ |
|||
base = jstri(myinfo->liquidity_currencies,i); |
|||
value = tradebot_balance(myinfo,base); |
|||
pending = tradebot_pending(myinfo,base); |
|||
item = cJSON_CreateObject(); |
|||
jaddnum(item,"value",value); |
|||
jaddnum(item,"pending",pending); |
|||
jadd(balances,base,item); |
|||
} |
|||
} |
|||
return(jprint(balances,1)); |
|||
} |
|||
|
|||
ZERO_ARGS(tradebot,anchor) |
|||
{ |
|||
FILE *fp; char *anchorstr,fname[512]; cJSON *anchor; int32_t retval = -1; |
|||
if ( (anchorstr= tradebot_allbalances(myinfo,0,0,0)) != 0 ) |
|||
{ |
|||
if ( (anchor= cJSON_Parse(anchorstr)) != 0 ) |
|||
{ |
|||
if ( jobj(anchor,"error") == 0 ) |
|||
{ |
|||
sprintf(fname,"%s/anchor",GLOBAL_DBDIR), OS_compatible_path(fname); |
|||
if ( (fp= fopen(fname,"wb")) != 0 ) |
|||
{ |
|||
if ( fwrite(anchorstr,1,strlen(anchorstr)+1,fp) == strlen(anchorstr)+1 ) |
|||
retval = 0; |
|||
fclose(fp); |
|||
} |
|||
} |
|||
} |
|||
free(anchorstr); |
|||
} |
|||
if ( retval == 0 ) |
|||
return(clonestr("{\"result\":\"success\"}")); |
|||
else return(clonestr("{\"error\":\"couldnt make anchor file\"}")); |
|||
} |
|||
|
|||
ZERO_ARGS(tradebot,portfolio) |
|||
{ |
|||
char *currentstr,*anchorstr,fname[512]; long fsize; cJSON *current,*anchor=0,*portfolio=0; |
|||
if ( (currentstr= tradebot_allbalances(myinfo,0,0,0)) != 0 ) |
|||
{ |
|||
if ( (current= cJSON_Parse(currentstr)) != 0 ) |
|||
{ |
|||
sprintf(fname,"%s/anchor",GLOBAL_DBDIR), OS_compatible_path(fname); |
|||
if ( (anchorstr= OS_filestr(&fsize,fname)) != 0 ) |
|||
{ |
|||
anchor = cJSON_Parse(anchorstr); |
|||
free(anchorstr); |
|||
} |
|||
if ( anchor == 0 ) |
|||
anchor = cJSON_Parse("{}"); |
|||
portfolio = tradebot_balancesdiff(myinfo,current,anchor); |
|||
free_json(current); |
|||
} |
|||
free(currentstr); |
|||
} |
|||
if ( portfolio == 0 ) |
|||
return(clonestr("{\"result\":\"success\"}")); |
|||
else return(jprint(portfolio,1)); |
|||
} |
|||
|
|||
ARRAY_OBJ_INT(tradebot,goals,currencies,vals,targettime) |
|||
{ |
|||
static bits256 zero; char *targetcoin; int32_t i,n; |
|||
if ( currencies != 0 && vals != 0 ) |
|||
{ |
|||
// init things so automatically updates refli.bid and refli.ask
|
|||
// volume range with margin
|
|||
// currency percentage value in BTC? target distribution, max percentage, min percentage`
|
|||
// min price to sell, max price to buy, max volume
|
|||
n = cJSON_GetArraySize(currencies); |
|||
for (i=0; i<n; i++) |
|||
{ |
|||
targetcoin = jstri(currencies,i); |
|||
tradebot_liquidity_command(myinfo,targetcoin,zero,vals); |
|||
} |
|||
return(clonestr("{\"result\":\"success\"}")); |
|||
} else return(clonestr("{\"error\":\"no currencies or vals\"}")); |
|||
} |
|||
|
|||
#include "../includes/iguana_apiundefs.h" |
@ -0,0 +1,598 @@ |
|||
/******************************************************************************
|
|||
* 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. * |
|||
* * |
|||
******************************************************************************/ |
|||
//
|
|||
// main.c
|
|||
// marketmaker
|
|||
//
|
|||
// Copyright © 2017 SuperNET. All rights reserved.
|
|||
//
|
|||
|
|||
#include <stdio.h> |
|||
#include <stdint.h> |
|||
#include "OS_portable.h" |
|||
|
|||
struct mmpending_order |
|||
{ |
|||
double price,volume; |
|||
int32_t dir; |
|||
uint32_t pending,completed,canceled,cancelstarted,reported; |
|||
cJSON *errorjson; |
|||
char exchange[16],base[16],rel[16],orderid[64]; |
|||
} *Pending_orders; |
|||
int32_t Num_Pending; |
|||
|
|||
#define IGUANA_URL "http://127.0.0.1:7778"
|
|||
|
|||
char *DEX_amlp(char *blocktrail) |
|||
{ |
|||
char url[512],postdata[1024]; |
|||
sprintf(url,"%s/?",IGUANA_URL); |
|||
sprintf(postdata,"{\"agent\":\"tradebot\",\"method\":\"amlp\",\"blocktrail\":\"%s\"}",blocktrail); |
|||
return(bitcoind_RPC(0,"tradebot",url,0,"amlp",postdata)); |
|||
} |
|||
|
|||
char *DEX_openorders(char *exchange) |
|||
{ |
|||
char url[512],postdata[1024]; |
|||
sprintf(url,"%s/?",IGUANA_URL); |
|||
sprintf(postdata,"{\"agent\":\"InstantDEX\",\"method\":\"openorders\",\"exchange\":\"%s\"}",exchange); |
|||
return(bitcoind_RPC(0,"InstantDEX",url,0,"openorders",postdata)); |
|||
} |
|||
|
|||
char *DEX_tradehistory(char *exchange) |
|||
{ |
|||
char url[512],postdata[1024]; |
|||
sprintf(url,"%s/?",IGUANA_URL); |
|||
sprintf(postdata,"{\"agent\":\"InstantDEX\",\"method\":\"tradehistory\",\"exchange\":\"%s\"}",exchange); |
|||
return(bitcoind_RPC(0,"InstantDEX",url,0,"tradehistory",postdata)); |
|||
} |
|||
|
|||
char *DEX_orderstatus(char *exchange,char *orderid) |
|||
{ |
|||
char url[512],postdata[1024]; |
|||
sprintf(url,"%s/?",IGUANA_URL); |
|||
sprintf(postdata,"{\"agent\":\"InstantDEX\",\"method\":\"orderstatus\",\"exchange\":\"%s\",\"orderid\":\"%s\"}",exchange,orderid); |
|||
return(bitcoind_RPC(0,"InstantDEX",url,0,"orderstatus",postdata)); |
|||
} |
|||
|
|||
char *DEX_cancelorder(char *exchange,char *orderid) |
|||
{ |
|||
char url[512],postdata[1024]; |
|||
sprintf(url,"%s/?",IGUANA_URL); |
|||
sprintf(postdata,"{\"agent\":\"InstantDEX\",\"method\":\"cancelorder\",\"exchange\":\"%s\",\"orderid\":\"%s\"}",exchange,orderid); |
|||
return(bitcoind_RPC(0,"InstantDEX",url,0,"cancelorder",postdata)); |
|||
} |
|||
|
|||
char *DEX_balance(char *exchange,char *base,char *coinaddr) |
|||
{ |
|||
char url[512],postdata[1024]; |
|||
sprintf(url,"%s/?",IGUANA_URL); |
|||
if ( strcmp(exchange,"DEX") == 0 ) |
|||
{ |
|||
sprintf(postdata,"{\"agent\":\"dex\",\"method\":\"getbalance\",\"address\":\"%s\",\"symbol\":\"%s\"}",coinaddr,base); |
|||
return(bitcoind_RPC(0,"dex",url,0,"getbalance",postdata)); |
|||
} |
|||
else |
|||
{ |
|||
sprintf(postdata,"{\"agent\":\"InstantDEX\",\"method\":\"balance\",\"exchange\":\"%s\",\"base\":\"%s\"}",exchange,base); |
|||
return(bitcoind_RPC(0,"InstantDEX",url,0,"balance",postdata)); |
|||
} |
|||
} |
|||
|
|||
char *DEX_apikeypair(char *exchange,char *apikey,char *apisecret) |
|||
{ |
|||
char url[512],postdata[1024]; |
|||
sprintf(url,"%s/?",IGUANA_URL); |
|||
sprintf(postdata,"{\"agent\":\"InstantDEX\",\"method\":\"apikeypair\",\"exchange\":\"%s\",\"apikey\":\"%s\",\"apisecret\":\"%s\"}",exchange,apikey,apisecret); |
|||
return(bitcoind_RPC(0,"InstantDEX",url,0,"apikeypair",postdata)); |
|||
} |
|||
|
|||
char *DEX_setuserid(char *exchange,char *userid,char *tradepassword) |
|||
{ |
|||
char url[512],postdata[1024]; |
|||
sprintf(url,"%s/?",IGUANA_URL); |
|||
sprintf(postdata,"{\"agent\":\"InstantDEX\",\"method\":\"setuserid\",\"exchange\":\"%s\",\"userid\":\"%s\",\"tradepassword\":\"%s\"}",exchange,userid,tradepassword); |
|||
return(bitcoind_RPC(0,"InstantDEX",url,0,"setuserid",postdata)); |
|||
} |
|||
|
|||
char *DEX_trade(char *exchange,char *base,char *rel,int32_t dir,double price,double volume) |
|||
{ |
|||
char url[512],postdata[1024]; |
|||
sprintf(url,"%s/?",IGUANA_URL); |
|||
sprintf(postdata,"{\"agent\":\"InstantDEX\",\"method\":\"%s\",\"exchange\":\"%s\",\"base\":\"%s\",\"rel\":\"%s\",\"price\":%.8f,\"volume\":%.8f,\"dotrade\":1}",dir>0?"buy":"sell",exchange,base,rel,price,volume); |
|||
//printf("DEX_trade.(%s)\n",postdata);
|
|||
return(bitcoind_RPC(0,"InstantDEX",url,0,dir>0?"buy":"sell",postdata)); |
|||
} |
|||
|
|||
char *DEX_withdraw(char *exchange,char *base,char *destaddr,double amount) |
|||
{ |
|||
char url[512],postdata[1024]; |
|||
sprintf(url,"%s/?",IGUANA_URL); |
|||
sprintf(postdata,"{\"agent\":\"InstantDEX\",\"method\":\"withdraw\",\"exchange\":\"%s\",\"destaddr\":\"%s\",\"amount\":%.8f}",exchange,destaddr,amount); |
|||
return(bitcoind_RPC(0,"InstantDEX",url,0,"withdraw",postdata)); |
|||
} |
|||
|
|||
char *iguana_walletpassphrase(char *passphrase,int32_t timeout) |
|||
{ |
|||
char url[512],postdata[1024]; |
|||
sprintf(url,"%s/coin=KMD&agent=bitcoinrpc&method=walletpassphrase?",IGUANA_URL); |
|||
sprintf(postdata,"[\"%s\", %d]",passphrase,timeout); |
|||
return(bitcoind_RPC(0,"",url,0,"walletpassphrase",postdata)); |
|||
} |
|||
|
|||
double bittrex_balance(char *base,char *coinaddr) |
|||
{ |
|||
char *retstr; cJSON *retjson; double balance = 0.; |
|||
if ( (retstr= DEX_balance("bittrex",base,coinaddr)) != 0 ) |
|||
{ |
|||
if ( (retjson= cJSON_Parse(retstr)) != 0 ) |
|||
{ |
|||
balance = jdouble(retjson,"balance"); |
|||
free_json(retjson); |
|||
} |
|||
free(retstr); |
|||
} |
|||
return(balance); |
|||
} |
|||
|
|||
double dex_balance(char *base,char *coinaddr) |
|||
{ |
|||
char *retstr; cJSON *retjson; double balance = 0.; |
|||
if ( (retstr= DEX_balance("DEX",base,coinaddr)) != 0 ) |
|||
{ |
|||
if ( (retjson= cJSON_Parse(retstr)) != 0 ) |
|||
{ |
|||
balance = jdouble(retjson,"balance"); |
|||
free_json(retjson); |
|||
} |
|||
free(retstr); |
|||
} |
|||
return(balance); |
|||
} |
|||
|
|||
void marketmaker_cancel(struct mmpending_order *ptr) |
|||
{ |
|||
char *retstr; cJSON *retjson; |
|||
if ( ptr->pending != 0 && ptr->cancelstarted == 0 ) |
|||
{ |
|||
ptr->cancelstarted = (uint32_t)time(NULL); |
|||
if ( (retstr= DEX_cancelorder(ptr->exchange,ptr->orderid)) != 0 ) |
|||
{ |
|||
if ( (retjson= cJSON_Parse(retstr)) != 0 ) |
|||
{ |
|||
printf("cancel %s (%s/%s) %.8f vol %.8f dir.%d -> (%s)\n",ptr->exchange,ptr->base,ptr->rel,ptr->price,ptr->volume,ptr->dir,jprint(retjson,0)); |
|||
free_json(retjson); |
|||
ptr->pending = 0; |
|||
ptr->canceled = (uint32_t)time(NULL); |
|||
} |
|||
free(retstr); |
|||
} |
|||
} |
|||
} |
|||
|
|||
void marketmaker_queue(char *exchange,char *base,char *rel,int32_t dir,double price,double volume,cJSON *retjson) |
|||
{ |
|||
struct mmpending_order *ptr; char *orderid; |
|||
//DEX_trade.({"success":true,"message":"","result":{"uuid":"d5faa9e4-660d-436f-a257-2c6a40442d8c"},"tag":"11271578410079391025"}
|
|||
if ( is_cJSON_True(jobj(retjson,"success")) != 0 && jobj(retjson,"result") != 0 ) |
|||
retjson = jobj(retjson,"result"); |
|||
printf("QUEUE.%s %s/%s dir.%d %.8f %.6f (%s)\n",exchange,base,rel,dir,price,volume,jprint(retjson,0)); |
|||
Pending_orders = realloc(Pending_orders,(1 + Num_Pending) * sizeof(*Pending_orders)); |
|||
ptr = &Pending_orders[Num_Pending++]; |
|||
memset(ptr,0,sizeof(*ptr)); |
|||
ptr->price = price; |
|||
ptr->volume = volume; |
|||
ptr->dir = dir; |
|||
ptr->pending = (uint32_t)time(NULL); |
|||
strcpy(ptr->exchange,exchange); |
|||
strcpy(ptr->base,base); |
|||
strcpy(ptr->rel,rel); |
|||
if ( (orderid= jstr(retjson,"OrderUuid")) != 0 || (orderid= jstr(retjson,"uuid")) != 0 ) |
|||
strcpy(ptr->orderid,orderid); |
|||
else strcpy(ptr->orderid,"0"); |
|||
} |
|||
|
|||
void marketmaker_pendingupdate(char *exchange,char *base,char *rel) |
|||
{ |
|||
char *retstr; cJSON *retjson,*obj; int32_t i; struct mmpending_order *ptr; |
|||
for (i=0; i<Num_Pending; i++) |
|||
{ |
|||
ptr = &Pending_orders[i]; |
|||
if ( strcmp(exchange,ptr->exchange) != 0 || strcmp(base,ptr->base) != 0 || strcmp(rel,ptr->rel) != 0 ) |
|||
continue; |
|||
if ( ptr->completed == 0 && (retstr= DEX_orderstatus(exchange,ptr->orderid)) != 0 ) |
|||
{ |
|||
//printf("%s status.(%s)\n",ptr->orderid,retstr);
|
|||
if ( (retjson= cJSON_Parse(retstr)) != 0 ) |
|||
{ |
|||
obj = jobj(retjson,"result"); |
|||
if ( is_cJSON_Array(obj) != 0 ) |
|||
obj = jitem(retjson,0); |
|||
if ( jdouble(obj,"QuantityRemaining") == 0. || is_cJSON_True(jobj(obj,"IsOpen")) == 0 ) |
|||
{ |
|||
//{"Uuid":null,"OrderUuid":"e7b0789c-0c4e-413b-a768-3d5734d9cbe5","Exchange":"BTC-KMD","OrderType":"LIMIT_SELL","Quantity":877.77700000,"QuantityRemaining":462.50512234,"Limit":0.00011770,"CommissionPaid":0.00012219,"Price":0.04887750,"PricePerUnit":0.00011769,"Opened":"2017-02-20T13:16:22.29","Closed":null,"CancelInitiated":false,"ImmediateOrCancel":false,"IsConditional":false,"Condition":"NONE","ConditionTarget":null} printf("uuid.(%s) finished.(%s)\n",ptr->orderid,jprint(retjson,0));
|
|||
ptr->completed = (uint32_t)time(NULL); |
|||
ptr->pending = 0; |
|||
} |
|||
free_json(retjson); |
|||
} |
|||
free(retstr); |
|||
} |
|||
} |
|||
} |
|||
|
|||
void marketmaker_pendinginit(char *exchange,char *base,char *rel) |
|||
{ |
|||
char *retstr,*orderid; cJSON *retjson,*array,*item; int32_t i,j,n,dir; struct mmpending_order *ptr; |
|||
if ( (retstr= DEX_openorders(exchange)) != 0 ) |
|||
{ |
|||
if ( (retjson= cJSON_Parse(retstr)) != 0 ) |
|||
{ |
|||
//printf("%s\n",jprint(retjson,0));
|
|||
if ( is_cJSON_True(jobj(retjson,"success")) != 0 && (array= jarray(&n,retjson,"result")) != 0 ) |
|||
{ |
|||
for (i=0; i<n; i++) |
|||
{ |
|||
item = jitem(array,i); |
|||
//printf("(%s)\n",jprint(item,0));
|
|||
//{"success":true,"message":"","result":[{"Uuid":null,"OrderUuid":"81ad3e37-65d4-4fee-9c29-03b050f5192b","Exchange":"BTC-KMD","OrderType":"LIMIT_BUY","Quantity":885.19934578,"QuantityRemaining":885.19934578,"Limit":0.00011184,"CommissionPaid":0,"Price":0,"PricePerUnit":null,"Opened":"2017-02-19T19:14:02.94","Closed":null,"CancelInitiated":false,"ImmediateOrCancel":false,"IsConditional":false,"Condition":"NONE","ConditionTarget":null}],"tag":"10056789044100011414"}
|
|||
if ( (orderid= jstr(item,"OrderUuid")) != 0 && is_cJSON_Null(jobj(item,"Closed")) != 0 && is_cJSON_False(jobj(item,"CancelInitiated")) != 0 ) |
|||
{ |
|||
for (j=0; j<Num_Pending; j++) |
|||
{ |
|||
ptr = &Pending_orders[j]; |
|||
if ( strcmp(exchange,ptr->exchange) != 0 || strcmp(base,ptr->base) != 0 || strcmp(rel,ptr->rel) != 0 ) |
|||
continue; |
|||
if ( strcmp(ptr->orderid,orderid) == 0 ) |
|||
{ |
|||
ptr->pending = (uint32_t)time(NULL); |
|||
ptr->completed = 0; |
|||
printf("%s pending\n",orderid); |
|||
break; |
|||
} |
|||
} |
|||
if ( j == Num_Pending ) |
|||
{ |
|||
if ( jstr(item,"OrderType") != 0 ) |
|||
{ |
|||
if ( strcmp(jstr(item,"OrderType"),"LIMIT_BUY") == 0 ) |
|||
dir = 1; |
|||
else if ( strcmp(jstr(item,"OrderType"),"LIMIT_SELL") == 0 ) |
|||
dir = -1; |
|||
else dir = 0; |
|||
if ( dir != 0 ) |
|||
marketmaker_queue(exchange,base,rel,dir,jdouble(item,"Limit"),jdouble(item,"QuantityRemaining"),item); |
|||
else printf("no dir (%s) (%s)\n",jprint(item,0),jstr(item,"OrderType")); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
free_json(retjson); |
|||
} |
|||
free(retstr); |
|||
} |
|||
} |
|||
|
|||
double marketmaker_filled(char *exchange,char *base,char *rel,double *buyvolp,double *sellvolp,double *pendingbidsp,double *pendingasksp) |
|||
{ |
|||
double pricesum = 0.,volsum = 0.; struct mmpending_order *ptr; int32_t i; |
|||
*pendingbidsp = *pendingasksp = 0.; |
|||
for (i=0; i<Num_Pending; i++) |
|||
{ |
|||
ptr = &Pending_orders[i]; |
|||
if ( strcmp(exchange,ptr->exchange) != 0 || strcmp(base,ptr->base) != 0 || strcmp(rel,ptr->rel) != 0 ) |
|||
continue; |
|||
if ( ptr->completed != 0 ) |
|||
{ |
|||
if ( ptr->reported == 0 ) |
|||
{ |
|||
if ( ptr->dir > 0 ) |
|||
(*buyvolp) += ptr->volume; |
|||
else if ( ptr->dir < 0 ) |
|||
(*sellvolp) += ptr->volume; |
|||
pricesum += ptr->volume * ptr->price; |
|||
volsum += ptr->volume; |
|||
ptr->reported = (uint32_t)time(NULL); |
|||
printf("REPORT dir.%d vol %.8f\n",ptr->dir,ptr->volume); |
|||
} |
|||
} |
|||
else if ( ptr->pending != 0 ) // alternative is error or cancelled
|
|||
{ |
|||
if ( ptr->dir > 0 ) |
|||
(*pendingbidsp) += ptr->volume; |
|||
else if ( ptr->dir < 0 ) |
|||
(*pendingasksp) += ptr->volume; |
|||
} |
|||
} |
|||
if ( volsum != 0. ) |
|||
pricesum /= volsum; |
|||
return(pricesum); |
|||
} |
|||
|
|||
int32_t marketmaker_prune(char *exchange,char *base,char *rel,int32_t polarity,double bid,double ask,double separation) |
|||
{ |
|||
int32_t i,n = 0; struct mmpending_order *ptr; |
|||
for (i=0; i<Num_Pending; i++) |
|||
{ |
|||
ptr = &Pending_orders[i]; |
|||
if ( strcmp(exchange,ptr->exchange) != 0 || strcmp(base,ptr->base) != 0 || strcmp(rel,ptr->rel) != 0 ) |
|||
continue; |
|||
if ( ptr->pending != 0 && ptr->cancelstarted == 0 ) |
|||
{ |
|||
if ( polarity != 0 ) |
|||
{ |
|||
if ( ((ptr->dir*polarity > 0 && ptr->price < bid-separation) || (ptr->dir*polarity < 0 && ptr->price > ask+separation)) ) |
|||
{ |
|||
printf("polarity.%d dir.%d price.%f bid.%f ask.%f\n",polarity,ptr->dir,ptr->price,bid,ask); |
|||
marketmaker_cancel(ptr), n++; |
|||
} |
|||
} |
|||
/*else
|
|||
{,*prunebid=0,*pruneask=0; double lowbid=0.,highask=0. |
|||
if ( ptr->dir > 0 && (lowbid == 0. || ptr->price < lowbid) ) |
|||
{ |
|||
lowbid = ptr->price; |
|||
prunebid = ptr; |
|||
} |
|||
else if ( ptr->dir < 0 && (highask == 0. || ptr->price > highask) ) |
|||
{ |
|||
highask = ptr->price; |
|||
pruneask = ptr; |
|||
} |
|||
}*/ |
|||
} |
|||
} |
|||
/*if ( polarity == 0 )
|
|||
{ |
|||
if ( prunebid != 0 && fabs(prunebid->price - bid) > separation ) |
|||
marketmaker_cancel(prunebid), n++; |
|||
if ( pruneask != 0 && fabs(pruneask->price - ask) > separation ) |
|||
marketmaker_cancel(pruneask), n++; |
|||
}*/ |
|||
return(n); |
|||
} |
|||
|
|||
void marketmaker_volumeset(double *bidincrp,double *askincrp,double incr,double buyvol,double pendingbids,double sellvol,double pendingasks,double maxexposure) |
|||
{ |
|||
*bidincrp = *askincrp = incr; |
|||
//if ( pendingbids >= pendingasks+maxexposure )
|
|||
// *bidincrp = 0.;
|
|||
//else if ( pendingasks >= pendingbids+maxexposure )
|
|||
// *askincrp = 0.;
|
|||
if ( *bidincrp > 0. && pendingbids + *bidincrp > maxexposure ) |
|||
*bidincrp = (maxexposure - *bidincrp); |
|||
if ( *askincrp > 0. && pendingasks + *askincrp > maxexposure ) |
|||
*askincrp = (maxexposure - *askincrp); |
|||
if ( *bidincrp < 0. ) |
|||
*bidincrp = 0.; |
|||
if ( *askincrp < 0. ) |
|||
*askincrp = 0.; |
|||
} |
|||
|
|||
int32_t marketmaker_spread(char *exchange,char *base,char *rel,double bid,double bidvol,double ask,double askvol,double separation) |
|||
{ |
|||
int32_t nearflags[2],i,n = 0; struct mmpending_order *ptr; cJSON *retjson,*vals; char *retstr,postdata[1024],url[128]; |
|||
memset(nearflags,0,sizeof(nearflags)); |
|||
if ( strcmp("DEX",exchange) != 0 ) |
|||
{ |
|||
for (i=0; i<Num_Pending; i++) |
|||
{ |
|||
ptr = &Pending_orders[i]; |
|||
if ( strcmp(exchange,ptr->exchange) != 0 || strcmp(base,ptr->base) != 0 || strcmp(rel,ptr->rel) != 0 ) |
|||
continue; |
|||
if ( ptr->pending != 0 && ptr->cancelstarted == 0 ) |
|||
{ |
|||
if ( bid > SMALLVAL && bidvol > SMALLVAL && ptr->dir > 0 && fabs(bid - ptr->price) < separation ) |
|||
nearflags[0]++; |
|||
if ( ask > SMALLVAL && askvol > SMALLVAL && ptr->dir < 0 && fabs(ask - ptr->price) < separation ) |
|||
nearflags[1]++; |
|||
} |
|||
} |
|||
} |
|||
//printf("spread.%s (%.8f %.6f) (%.8f %.6f)\n",exchange,bid,bidvol,ask,askvol);
|
|||
if ( bid > SMALLVAL && bidvol > SMALLVAL && nearflags[0] == 0 ) |
|||
{ |
|||
if ( strcmp("DEX",exchange) == 0 ) |
|||
{ |
|||
if ( ask > SMALLVAL && askvol > SMALLVAL ) |
|||
{ |
|||
/*li.profit = jdouble(vals,"profit");
|
|||
li.refprice = jdouble(vals,"refprice"); |
|||
li.bid = jdouble(vals,"bid"); |
|||
li.ask = jdouble(vals,"ask"); |
|||
if ( (li.minvol= jdouble(vals,"minvol")) <= 0. ) |
|||
li.minvol = (strcmp("BTC",base) == 0) ? 0.0001 : 0.001; |
|||
if ( (li.maxvol= jdouble(vals,"maxvol")) < li.minvol ) |
|||
li.maxvol = li.minvol;*/ |
|||
//curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"tradebot\",\"method\":\"liquidity\",\"targetcoin\":\"MVP\",\"vals\":{\"rel\":\"USD\",\"bid\":0.09,\"ask\":0.11,\"maxvol\":100}}"
|
|||
vals = cJSON_CreateObject(); |
|||
jaddstr(vals,"rel","BTC"); |
|||
jaddnum(vals,"bid",bid); |
|||
jaddnum(vals,"ask",ask); |
|||
jaddnum(vals,"maxvol",bidvol > askvol ? askvol : bidvol); |
|||
jaddnum(vals,"minvol",(bidvol > askvol ? askvol : bidvol) * 0.1); |
|||
sprintf(url,"%s/?",IGUANA_URL); |
|||
sprintf(postdata,"{\"agent\":\"tradebot\",\"method\":\"liquidity\",\"targetcoin\":\"%s\",\"vals\":%s}",base,jprint(vals,1)); |
|||
printf("call liquidity\n"); |
|||
if ( (retstr= bitcoind_RPC(0,"tradebot",url,0,"liqudity",postdata)) != 0 ) |
|||
{ |
|||
//printf("(%s) -> (%s)\n",postdata,retstr);
|
|||
free(retstr); |
|||
} |
|||
} else printf("unsupported ask only for DEX %s/%s\n",base,rel); |
|||
} |
|||
else if ( (retstr= DEX_trade(exchange,base,rel,1,bid,bidvol)) != 0 ) |
|||
{ |
|||
//printf("DEX_trade.(%s)\n",retstr);
|
|||
if ( (retjson= cJSON_Parse(retstr)) != 0 ) |
|||
{ |
|||
marketmaker_queue(exchange,base,rel,1,bid,bidvol,retjson); |
|||
free_json(retjson); |
|||
} |
|||
free(retstr); |
|||
} |
|||
} |
|||
if ( ask > SMALLVAL && askvol > SMALLVAL && nearflags[1] == 0 && strcmp("DEX",exchange) != 0 ) |
|||
{ |
|||
if ( (retstr= DEX_trade(exchange,base,rel,-1,ask,askvol)) != 0 ) |
|||
{ |
|||
//printf("DEX_trade.(%s)\n",retstr);
|
|||
if ( (retjson= cJSON_Parse(retstr)) != 0 ) |
|||
{ |
|||
marketmaker_queue(exchange,base,rel,-1,ask,askvol,retjson); |
|||
free_json(retjson); |
|||
} |
|||
free(retstr); |
|||
} |
|||
} |
|||
return(n); |
|||
} |
|||
|
|||
void marketmaker(char *baseaddr,char *reladdr,double start_BASE,double start_REL,double profitmargin,double maxexposure,double ratioincr,char *exchange,char *name,char *base,char *rel) |
|||
{ |
|||
double start_DEXbase,start_DEXrel,DEX_base = 0.,DEX_rel = 0.,balance_base=0.,balance_rel=0.,mmbid,mmask,CMC_average,aveprice,incr,pendingbids,pendingasks,buyvol,sellvol,bidincr,askincr,filledprice,avebid=0.,aveask=0.,val,changes[3],highbid=0.,lowask=0.,theoretical = 0.; uint32_t lasttime = 0; |
|||
incr = maxexposure * ratioincr; |
|||
buyvol = sellvol = 0.; |
|||
start_DEXbase = dex_balance(base,baseaddr); |
|||
start_DEXrel = dex_balance(rel,reladdr); |
|||
while ( 1 ) |
|||
{ |
|||
if ( time(NULL) > lasttime+60 ) |
|||
{ |
|||
if ( (val= get_theoretical(&avebid,&aveask,&highbid,&lowask,&CMC_average,changes,name,base,rel)) != 0. ) |
|||
{ |
|||
if ( theoretical == 0. ) |
|||
{ |
|||
theoretical = val; |
|||
incr /= theoretical; |
|||
maxexposure /= theoretical; |
|||
if ( incr > 2 ) |
|||
{ |
|||
incr = (int32_t)incr; |
|||
incr += 0.777; |
|||
} |
|||
} else theoretical = (theoretical + val) * 0.5; |
|||
} |
|||
if ( strcmp(exchange,"bittrex") == 0 ) |
|||
{ |
|||
balance_base = bittrex_balance(base,""); |
|||
balance_rel = bittrex_balance(rel,""); |
|||
DEX_base = dex_balance(base,baseaddr); |
|||
DEX_rel = dex_balance(rel,reladdr); |
|||
} else printf("add support for %s balance\n",exchange); |
|||
lasttime = (uint32_t)time(NULL); |
|||
} |
|||
marketmaker_pendingupdate(exchange,base,rel); |
|||
if ( theoretical > SMALLVAL && avebid > SMALLVAL && aveask > SMALLVAL ) |
|||
{ |
|||
aveprice = (avebid + aveask) * 0.5; |
|||
// if order is filled, theoretical <- filled (theoretical + price)/2
|
|||
if ( (filledprice= marketmaker_filled(exchange,base,rel,&buyvol,&sellvol,&pendingbids,&pendingasks)) != 0. ) |
|||
theoretical = (theoretical + filledprice) * 0.5; |
|||
buyvol = sellvol = 0; |
|||
if ( (balance_base + DEX_base) < (start_BASE + start_DEXbase) ) |
|||
sellvol += ((start_BASE + start_DEXbase) - (balance_base + DEX_base)); |
|||
else buyvol += ((balance_base + DEX_base) - (start_BASE + start_DEXbase)); |
|||
if ( (balance_rel + DEX_rel) < (start_REL + start_DEXrel) ) |
|||
buyvol += ((start_REL + start_DEXrel) - (balance_rel + DEX_rel)) / theoretical; |
|||
else sellvol += ((balance_rel + DEX_rel) - (start_REL + start_DEXrel)) / theoretical; |
|||
mmbid = theoretical - theoretical*profitmargin; |
|||
mmask = theoretical + theoretical*profitmargin; |
|||
// if any existing order exceeds double margin distance, cancel
|
|||
marketmaker_prune(exchange,base,rel,1,mmbid - theoretical*profitmargin,mmask + theoretical*profitmargin,0.); |
|||
// if new prices crosses existing order, cancel old order first
|
|||
marketmaker_prune(exchange,base,rel,-1,mmbid,mmask,0.); |
|||
printf("(%.8f %.8f) ",mmbid,mmask); |
|||
if ( (1) ) |
|||
{ |
|||
if ( mmbid >= lowask ) //mmbid < highbid ||
|
|||
mmbid = 0.; |
|||
if ( mmask <= highbid ) // mmask > lowask ||
|
|||
mmask = 0.; |
|||
} |
|||
marketmaker_volumeset(&bidincr,&askincr,incr,buyvol,pendingbids,sellvol,pendingasks,maxexposure); |
|||
printf("AVE.(%.8f %.8f) hbla %.8f %.8f bid %.8f ask %.8f theory %.8f buys.(%.6f %.6f) sells.(%.6f %.6f) incr.(%.6f %.6f) balances.(%.8f + %.8f, %.8f + %.8f)\n",avebid,aveask,highbid,lowask,mmbid,mmask,theoretical,buyvol,pendingbids,sellvol,pendingasks,bidincr,askincr,balance_base,DEX_base,balance_rel,DEX_rel); |
|||
marketmaker_spread("DEX",base,rel,avebid - profitmargin*aveprice,incr,aveask + profitmargin*aveprice,incr,profitmargin*aveprice*0.5); |
|||
if ( (pendingbids + buyvol) > (pendingasks + sellvol) ) |
|||
{ |
|||
bidincr *= (double)(pendingasks + sellvol) / ((pendingbids + buyvol) + (pendingasks + sellvol)); |
|||
if ( bidincr > 1. ) |
|||
bidincr = (int32_t)bidincr + 0.777; |
|||
} |
|||
if ( (pendingbids + buyvol) < (pendingasks + sellvol) ) |
|||
{ |
|||
askincr *= (double)(pendingbids + buyvol) / ((pendingbids + buyvol) + (pendingasks + sellvol)); |
|||
if ( askincr > 1. ) |
|||
askincr = (int32_t)askincr + 0.777; |
|||
} |
|||
marketmaker_spread(exchange,base,rel,mmbid,bidincr,mmask,askincr,profitmargin*aveprice*0.5); |
|||
sleep(60); |
|||
} |
|||
} |
|||
} |
|||
|
|||
int main(int argc, const char * argv[]) |
|||
{ |
|||
char *base,*rel,*name,*exchange,*apikey,*apisecret,*blocktrail; |
|||
double profitmargin,maxexposure,incrratio,start_rel,start_base; |
|||
cJSON *retjson,*addrjson; char *retstr,*baseaddr,*reladdr,*passphrase; |
|||
if ( argc > 1 && (retjson= cJSON_Parse(argv[1])) != 0 ) |
|||
{ |
|||
printf("argc.%d (%s)\n",argc,jprint(retjson,0)); |
|||
profitmargin = jdouble(retjson,"profitmargin"); |
|||
maxexposure = jdouble(retjson,"maxexposure"); |
|||
incrratio = jdouble(retjson,"lotratio"); |
|||
start_base = jdouble(retjson,"start_base"); |
|||
start_rel = jdouble(retjson,"start_rel"); |
|||
passphrase = jstr(retjson,"passphrase"); |
|||
apikey = jstr(retjson,"apikey"); |
|||
apisecret = jstr(retjson,"apisecret"); |
|||
base = jstr(retjson,"base"); |
|||
name = jstr(retjson,"name"); |
|||
rel = jstr(retjson,"rel"); |
|||
blocktrail = jstr(retjson,"blocktrail"); |
|||
exchange = jstr(retjson,"exchange"); |
|||
if ( profitmargin < 0. || maxexposure <= 0. || incrratio <= 0. || apikey == 0 || apisecret == 0 || base == 0 || name == 0 || rel == 0 || exchange == 0 || blocktrail == 0 ) |
|||
{ |
|||
printf("illegal parameter (%s)\n",jprint(retjson,0)); |
|||
exit(-1); |
|||
} |
|||
if ( (retstr= iguana_walletpassphrase(passphrase,999999)) != 0 ) |
|||
{ |
|||
printf("%s\n",DEX_apikeypair(exchange,apikey,apisecret)); |
|||
printf("%s %s\n",base,DEX_balance(exchange,base,"")); |
|||
printf("%s %s\n",rel,DEX_balance(exchange,rel,"")); |
|||
marketmaker_pendinginit(exchange,base,rel); |
|||
if ( (addrjson= cJSON_Parse(retstr)) != 0 ) |
|||
{ |
|||
baseaddr = jstr(addrjson,base); |
|||
reladdr = jstr(addrjson,rel); |
|||
if ( baseaddr != 0 && reladdr != 0 ) |
|||
{ |
|||
printf("%s\n",DEX_amlp(blocktrail)); |
|||
printf("%s.%s %s\n",base,baseaddr,DEX_balance("DEX",base,baseaddr)); |
|||
printf("%s.%s %s\n",rel,reladdr,DEX_balance("DEX",rel,reladdr)); |
|||
// initialize state using DEX_pendingorders, etc.
|
|||
marketmaker(baseaddr,reladdr,start_base,start_rel,profitmargin,maxexposure,incrratio,exchange,name,base,rel); |
|||
} |
|||
free_json(addrjson); |
|||
} |
|||
free(retstr); |
|||
} |
|||
free_json(retjson); |
|||
} |
|||
return 0; |
|||
} |
@ -0,0 +1 @@ |
|||
gcc -o marketmaker -I../crypto777 exchanges/mm.c ../crypto777/cJSON.c ../agents/libcrypto777.a -lcurl -lpthread -lm |
@ -0,0 +1,164 @@ |
|||
# RQC6A3SKtLb2zmqDDwFvRH6Zz4mZufmp3d KMD 6266.43352646 |
|||
./komodo-cli sendtoaddress RQC6A3SKtLb2zmqDDwFvRH6Zz4mZufmp3d 6266.43352646 |
|||
sleep 3 |
|||
echo "6266.43352646 <- expected amount RQC6A3SKtLb2zmqDDwFvRH6Zz4mZufmp3d" |
|||
|
|||
# R9SpRcd2KRD45B7SqzuUFhNnsnx7YqgkN6 KMD 1203.04246569 |
|||
./komodo-cli sendtoaddress R9SpRcd2KRD45B7SqzuUFhNnsnx7YqgkN6 1203.04246569 |
|||
sleep 3 |
|||
echo "1203.04246569 <- expected amount R9SpRcd2KRD45B7SqzuUFhNnsnx7YqgkN6" |
|||
|
|||
# RCA8H1npFPW5pnJRzycF8tFEJmn6XZhD4j KMD 9683.15249375 |
|||
./komodo-cli sendtoaddress RCA8H1npFPW5pnJRzycF8tFEJmn6XZhD4j 9683.15249375 |
|||
sleep 3 |
|||
echo "9683.15249375 <- expected amount RCA8H1npFPW5pnJRzycF8tFEJmn6XZhD4j" |
|||
|
|||
# RTJXwRhuAH9iyztyuRuGC8G7DamTgSMGvT KMD 306877.42641191 |
|||
./komodo-cli sendtoaddress RTJXwRhuAH9iyztyuRuGC8G7DamTgSMGvT 306877.42641191 |
|||
sleep 3 |
|||
echo "306877.42641191 <- expected amount RTJXwRhuAH9iyztyuRuGC8G7DamTgSMGvT" |
|||
|
|||
# RQantoJxT8szwfAqUM3enLPe85YiQtwndH KMD 150.23706901 |
|||
./komodo-cli sendtoaddress RQantoJxT8szwfAqUM3enLPe85YiQtwndH 150.23706901 |
|||
sleep 3 |
|||
echo "150.23706901 <- expected amount RQantoJxT8szwfAqUM3enLPe85YiQtwndH" |
|||
|
|||
# RLvvwtBUupmGDy81CJNp6RxKbxxbuu3jRY KMD 1985.04626121 |
|||
./komodo-cli sendtoaddress RLvvwtBUupmGDy81CJNp6RxKbxxbuu3jRY 1985.04626121 |
|||
sleep 3 |
|||
echo "1985.04626121 <- expected amount RLvvwtBUupmGDy81CJNp6RxKbxxbuu3jRY" |
|||
|
|||
# RFdRKqe82MmvSxZQjgtLfzdf8mNHztKpPE KMD 1664.32251109 |
|||
./komodo-cli sendtoaddress RFdRKqe82MmvSxZQjgtLfzdf8mNHztKpPE 1664.32251109 |
|||
sleep 3 |
|||
echo "1664.32251109 <- expected amount RFdRKqe82MmvSxZQjgtLfzdf8mNHztKpPE" |
|||
|
|||
# RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 KMD 5.99800973 |
|||
./komodo-cli sendtoaddress RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 5.99800973 |
|||
sleep 3 |
|||
echo "5.99800973 <- expected amount RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3" |
|||
|
|||
# RNYMy1joru9gFitzokTSi5qFFc5nS4iFxc KMD 9671.53271075 |
|||
./komodo-cli sendtoaddress RNYMy1joru9gFitzokTSi5qFFc5nS4iFxc 9671.53271075 |
|||
sleep 3 |
|||
echo "9671.53271075 <- expected amount RNYMy1joru9gFitzokTSi5qFFc5nS4iFxc" |
|||
|
|||
# RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm KMD 40223.19497203, REVS 101.00000000 |
|||
# RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm KMD 40223.19497203 |
|||
./komodo-cli sendtoaddress RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm 40223.19497203 |
|||
sleep 3 |
|||
echo "40223.19497203 <- expected amount RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm" |
|||
|
|||
# RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB KMD 72698.53877152 |
|||
./komodo-cli sendtoaddress RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB 72698.53877152 |
|||
sleep 3 |
|||
echo "72698.53877152 <- expected amount RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB" |
|||
|
|||
# RVzFdNGRn8Ekr4XaeDSfE9fjqvKdcVicJe KMD 9683.15249375 |
|||
./komodo-cli sendtoaddress RVzFdNGRn8Ekr4XaeDSfE9fjqvKdcVicJe 9683.15249375 |
|||
sleep 3 |
|||
echo "9683.15249375 <- expected amount RVzFdNGRn8Ekr4XaeDSfE9fjqvKdcVicJe" |
|||
|
|||
# RTbTzn7FGJWwrH1E3fMwuZPs3YVH1MvVoB KMD 3532.13792522 |
|||
./komodo-cli sendtoaddress RTbTzn7FGJWwrH1E3fMwuZPs3YVH1MvVoB 3532.13792522 |
|||
sleep 3 |
|||
echo "3532.13792522 <- expected amount RTbTzn7FGJWwrH1E3fMwuZPs3YVH1MvVoB" |
|||
|
|||
# RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ KMD 309.69366537 |
|||
./komodo-cli sendtoaddress RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ 309.69366537 |
|||
sleep 3 |
|||
echo "309.69366537 <- expected amount RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ" |
|||
|
|||
# RYYgc5UD7X18E6CrDXCs1cts5WDwaWhm1Z KMD 3873.26099750 |
|||
./komodo-cli sendtoaddress RYYgc5UD7X18E6CrDXCs1cts5WDwaWhm1Z 3873.26099750 |
|||
sleep 3 |
|||
echo "3873.26099750 <- expected amount RYYgc5UD7X18E6CrDXCs1cts5WDwaWhm1Z" |
|||
|
|||
# RXdBJ5cWDcS38ykuggEQZh3vSztxwmG3ut KMD 62053.93460050 |
|||
./komodo-cli sendtoaddress RXdBJ5cWDcS38ykuggEQZh3vSztxwmG3ut 62053.93460050 |
|||
sleep 3 |
|||
echo "62053.93460050 <- expected amount RXdBJ5cWDcS38ykuggEQZh3vSztxwmG3ut" |
|||
|
|||
# REKnBAyZMnhKzRozzcuv6fKRtoBsKTFYjs KMD 6506.14889316 |
|||
./komodo-cli sendtoaddress REKnBAyZMnhKzRozzcuv6fKRtoBsKTFYjs 6506.14889316 |
|||
sleep 3 |
|||
echo "6506.14889316 <- expected amount REKnBAyZMnhKzRozzcuv6fKRtoBsKTFYjs" |
|||
|
|||
# RY422uSvkAoZy81uGot5PmXuMrtChhJ3uL KMD 812.78437655 |
|||
./komodo-cli sendtoaddress RY422uSvkAoZy81uGot5PmXuMrtChhJ3uL 812.78437655 |
|||
sleep 3 |
|||
echo "812.78437655 <- expected amount RY422uSvkAoZy81uGot5PmXuMrtChhJ3uL" |
|||
|
|||
# R9o3CQms16CLu63j9WdqsaWB3XsssRXEq8 KMD 1452.47287406 |
|||
./komodo-cli sendtoaddress R9o3CQms16CLu63j9WdqsaWB3XsssRXEq8 1452.47287406 |
|||
sleep 3 |
|||
echo "1452.47287406 <- expected amount R9o3CQms16CLu63j9WdqsaWB3XsssRXEq8" |
|||
|
|||
# RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A KMD 867.82549038 |
|||
./komodo-cli sendtoaddress RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A 867.82549038 |
|||
sleep 3 |
|||
echo "867.82549038 <- expected amount RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A" |
|||
|
|||
# RHJ55iWUQNbKcSn8shbv1RbGuip3RSRHFv KMD 693.08132289 |
|||
./komodo-cli sendtoaddress RHJ55iWUQNbKcSn8shbv1RbGuip3RSRHFv 693.08132289 |
|||
sleep 3 |
|||
echo "693.08132289 <- expected amount RHJ55iWUQNbKcSn8shbv1RbGuip3RSRHFv" |
|||
|
|||
# RCfBinKfJ1wGSxXLPNTmC9bohFRoofUiVm KMD 8521.17419450 |
|||
./komodo-cli sendtoaddress RCfBinKfJ1wGSxXLPNTmC9bohFRoofUiVm 8521.17419450 |
|||
sleep 3 |
|||
echo "8521.17419450 <- expected amount RCfBinKfJ1wGSxXLPNTmC9bohFRoofUiVm" |
|||
|
|||
# RNEZRHeWE3KgSTUr3qvH7RNvM2JWZZkygM KMD 5328.53865807 |
|||
./komodo-cli sendtoaddress RNEZRHeWE3KgSTUr3qvH7RNvM2JWZZkygM 5328.53865807 |
|||
sleep 3 |
|||
echo "5328.53865807 <- expected amount RNEZRHeWE3KgSTUr3qvH7RNvM2JWZZkygM" |
|||
|
|||
# RH7tsX9PaKECxSEALpu5EWdmEKikY7R2n1 KMD 29049.45748125 |
|||
./komodo-cli sendtoaddress RH7tsX9PaKECxSEALpu5EWdmEKikY7R2n1 29049.45748125 |
|||
sleep 3 |
|||
echo "29049.45748125 <- expected amount RH7tsX9PaKECxSEALpu5EWdmEKikY7R2n1" |
|||
|
|||
# RYHxrTNpqrAHRbULboJVYHWqmnmVhzzrot KMD 4840.60793162 |
|||
./komodo-cli sendtoaddress RYHxrTNpqrAHRbULboJVYHWqmnmVhzzrot 4840.60793162 |
|||
sleep 3 |
|||
echo "4840.60793162 <- expected amount RYHxrTNpqrAHRbULboJVYHWqmnmVhzzrot" |
|||
|
|||
# RLCEGw7zmAhZQYtP23Z2TD45gAT9ZuZKct KMD 2420.78812342 |
|||
./komodo-cli sendtoaddress RLCEGw7zmAhZQYtP23Z2TD45gAT9ZuZKct 2420.78812342 |
|||
sleep 3 |
|||
echo "2420.78812342 <- expected amount RLCEGw7zmAhZQYtP23Z2TD45gAT9ZuZKct" |
|||
|
|||
# RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC KMD 137.73071692, REVS 2.73426759 |
|||
# RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC KMD 137.73071692 |
|||
./komodo-cli sendtoaddress RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC 137.73071692 |
|||
sleep 3 |
|||
echo "137.73071692 <- expected amount RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC" |
|||
|
|||
# RRdDD2YoR5cfwktePGGFT5cEyRcWkEjzvM KMD 9737.34607711 |
|||
./komodo-cli sendtoaddress RRdDD2YoR5cfwktePGGFT5cEyRcWkEjzvM 9737.34607711 |
|||
sleep 3 |
|||
echo "9737.34607711 <- expected amount RRdDD2YoR5cfwktePGGFT5cEyRcWkEjzvM" |
|||
|
|||
# RKbb9NGB3pU2BaByoDwyZDH74E7koR2Lga KMD 1903.31162313 |
|||
./komodo-cli sendtoaddress RKbb9NGB3pU2BaByoDwyZDH74E7koR2Lga 1903.31162313 |
|||
sleep 3 |
|||
echo "1903.31162313 <- expected amount RKbb9NGB3pU2BaByoDwyZDH74E7koR2Lga" |
|||
|
|||
# RQsSsmpzFagxRaYk6cTMpNHa4eYLihKn8h KMD 99.84182062 |
|||
./komodo-cli sendtoaddress RQsSsmpzFagxRaYk6cTMpNHa4eYLihKn8h 99.84182062 |
|||
sleep 3 |
|||
echo "99.84182062 <- expected amount RQsSsmpzFagxRaYk6cTMpNHa4eYLihKn8h" |
|||
|
|||
# RKQPNcePppEkV4CMXZrwqEMAvRHbruKVdF KMD 1167.24851677 |
|||
./komodo-cli sendtoaddress RKQPNcePppEkV4CMXZrwqEMAvRHbruKVdF 1167.24851677 |
|||
sleep 3 |
|||
echo "1167.24851677 <- expected amount RKQPNcePppEkV4CMXZrwqEMAvRHbruKVdF" |
|||
|
|||
# RHKuiEoakr9yeWQT9UZzCrqPgR8MPBaGvD KMD 15095.38306803 |
|||
./komodo-cli sendtoaddress RHKuiEoakr9yeWQT9UZzCrqPgR8MPBaGvD 15095.38306803 |
|||
sleep 3 |
|||
echo "15095.38306803 <- expected amount RHKuiEoakr9yeWQT9UZzCrqPgR8MPBaGvD" |
|||
|
|||
|
|||
# total KMD 618514.84605397 REVS 0.00000000 |
@ -0,0 +1,161 @@ |
|||
# RQC6A3SKtLb2zmqDDwFvRH6Zz4mZufmp3d KMD 6266.43352646 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RQC6A3SKtLb2zmqDDwFvRH6Zz4mZufmp3d\",\"symbol\":\"KMD\"}" # 6266.43352646 |
|||
sleep 3 |
|||
echo "6266.43352646 <- expected amount RQC6A3SKtLb2zmqDDwFvRH6Zz4mZufmp3d" |
|||
|
|||
# R9SpRcd2KRD45B7SqzuUFhNnsnx7YqgkN6 KMD 1203.04246569 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"R9SpRcd2KRD45B7SqzuUFhNnsnx7YqgkN6\",\"symbol\":\"KMD\"}" # 1203.04246569 |
|||
sleep 3 |
|||
echo "1203.04246569 <- expected amount R9SpRcd2KRD45B7SqzuUFhNnsnx7YqgkN6" |
|||
|
|||
# RCA8H1npFPW5pnJRzycF8tFEJmn6XZhD4j KMD 9683.15249375 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RCA8H1npFPW5pnJRzycF8tFEJmn6XZhD4j\",\"symbol\":\"KMD\"}" # 9683.15249375 |
|||
sleep 3 |
|||
echo "9683.15249375 <- expected amount RCA8H1npFPW5pnJRzycF8tFEJmn6XZhD4j" |
|||
|
|||
# RTJXwRhuAH9iyztyuRuGC8G7DamTgSMGvT KMD 306877.42641191 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RTJXwRhuAH9iyztyuRuGC8G7DamTgSMGvT\",\"symbol\":\"KMD\"}" # 306877.42641191 |
|||
sleep 3 |
|||
echo "306877.42641191 <- expected amount RTJXwRhuAH9iyztyuRuGC8G7DamTgSMGvT" |
|||
|
|||
# RQantoJxT8szwfAqUM3enLPe85YiQtwndH KMD 150.23706901 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RQantoJxT8szwfAqUM3enLPe85YiQtwndH\",\"symbol\":\"KMD\"}" # 150.23706901 |
|||
sleep 3 |
|||
echo "150.23706901 <- expected amount RQantoJxT8szwfAqUM3enLPe85YiQtwndH" |
|||
|
|||
# RLvvwtBUupmGDy81CJNp6RxKbxxbuu3jRY KMD 1985.04626121 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLvvwtBUupmGDy81CJNp6RxKbxxbuu3jRY\",\"symbol\":\"KMD\"}" # 1985.04626121 |
|||
sleep 3 |
|||
echo "1985.04626121 <- expected amount RLvvwtBUupmGDy81CJNp6RxKbxxbuu3jRY" |
|||
|
|||
# RFdRKqe82MmvSxZQjgtLfzdf8mNHztKpPE KMD 1664.32251109 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RFdRKqe82MmvSxZQjgtLfzdf8mNHztKpPE\",\"symbol\":\"KMD\"}" # 1664.32251109 |
|||
sleep 3 |
|||
echo "1664.32251109 <- expected amount RFdRKqe82MmvSxZQjgtLfzdf8mNHztKpPE" |
|||
|
|||
# RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 KMD 5.99800973 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3\",\"symbol\":\"KMD\"}" # 5.99800973 |
|||
sleep 3 |
|||
echo "5.99800973 <- expected amount RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3" |
|||
|
|||
# RNYMy1joru9gFitzokTSi5qFFc5nS4iFxc KMD 9671.53271075 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RNYMy1joru9gFitzokTSi5qFFc5nS4iFxc\",\"symbol\":\"KMD\"}" # 9671.53271075 |
|||
sleep 3 |
|||
echo "9671.53271075 <- expected amount RNYMy1joru9gFitzokTSi5qFFc5nS4iFxc" |
|||
|
|||
# RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm KMD 40223.19497203, REVS 101.00000000 |
|||
# RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm KMD 40223.19497203 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm\",\"symbol\":\"KMD\"}" # 40223.19497203 |
|||
sleep 3 |
|||
echo "40223.19497203 <- expected amount RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm" |
|||
|
|||
# RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB KMD 72698.53877152 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB\",\"symbol\":\"KMD\"}" # 72698.53877152 |
|||
sleep 3 |
|||
echo "72698.53877152 <- expected amount RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB" |
|||
|
|||
# RVzFdNGRn8Ekr4XaeDSfE9fjqvKdcVicJe KMD 9683.15249375 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RVzFdNGRn8Ekr4XaeDSfE9fjqvKdcVicJe\",\"symbol\":\"KMD\"}" # 9683.15249375 |
|||
sleep 3 |
|||
echo "9683.15249375 <- expected amount RVzFdNGRn8Ekr4XaeDSfE9fjqvKdcVicJe" |
|||
|
|||
# RTbTzn7FGJWwrH1E3fMwuZPs3YVH1MvVoB KMD 3532.13792522 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RTbTzn7FGJWwrH1E3fMwuZPs3YVH1MvVoB\",\"symbol\":\"KMD\"}" # 3532.13792522 |
|||
sleep 3 |
|||
echo "3532.13792522 <- expected amount RTbTzn7FGJWwrH1E3fMwuZPs3YVH1MvVoB" |
|||
|
|||
# RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ KMD 309.69366537 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ\",\"symbol\":\"KMD\"}" # 309.69366537 |
|||
sleep 3 |
|||
echo "309.69366537 <- expected amount RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ" |
|||
|
|||
# RYYgc5UD7X18E6CrDXCs1cts5WDwaWhm1Z KMD 3873.26099750 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RYYgc5UD7X18E6CrDXCs1cts5WDwaWhm1Z\",\"symbol\":\"KMD\"}" # 3873.26099750 |
|||
sleep 3 |
|||
echo "3873.26099750 <- expected amount RYYgc5UD7X18E6CrDXCs1cts5WDwaWhm1Z" |
|||
|
|||
# RXdBJ5cWDcS38ykuggEQZh3vSztxwmG3ut KMD 62053.93460050 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RXdBJ5cWDcS38ykuggEQZh3vSztxwmG3ut\",\"symbol\":\"KMD\"}" # 62053.93460050 |
|||
sleep 3 |
|||
echo "62053.93460050 <- expected amount RXdBJ5cWDcS38ykuggEQZh3vSztxwmG3ut" |
|||
|
|||
# REKnBAyZMnhKzRozzcuv6fKRtoBsKTFYjs KMD 6506.14889316 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"REKnBAyZMnhKzRozzcuv6fKRtoBsKTFYjs\",\"symbol\":\"KMD\"}" # 6506.14889316 |
|||
sleep 3 |
|||
echo "6506.14889316 <- expected amount REKnBAyZMnhKzRozzcuv6fKRtoBsKTFYjs" |
|||
|
|||
# RY422uSvkAoZy81uGot5PmXuMrtChhJ3uL KMD 812.78437655 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RY422uSvkAoZy81uGot5PmXuMrtChhJ3uL\",\"symbol\":\"KMD\"}" # 812.78437655 |
|||
sleep 3 |
|||
echo "812.78437655 <- expected amount RY422uSvkAoZy81uGot5PmXuMrtChhJ3uL" |
|||
|
|||
# R9o3CQms16CLu63j9WdqsaWB3XsssRXEq8 KMD 1452.47287406 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"R9o3CQms16CLu63j9WdqsaWB3XsssRXEq8\",\"symbol\":\"KMD\"}" # 1452.47287406 |
|||
sleep 3 |
|||
echo "1452.47287406 <- expected amount R9o3CQms16CLu63j9WdqsaWB3XsssRXEq8" |
|||
|
|||
# RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A KMD 867.82549038 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A\",\"symbol\":\"KMD\"}" # 867.82549038 |
|||
sleep 3 |
|||
echo "867.82549038 <- expected amount RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A" |
|||
|
|||
# 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" |
|||
|
|||
# RCfBinKfJ1wGSxXLPNTmC9bohFRoofUiVm KMD 8521.17419450 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RCfBinKfJ1wGSxXLPNTmC9bohFRoofUiVm\",\"symbol\":\"KMD\"}" # 8521.17419450 |
|||
sleep 3 |
|||
echo "8521.17419450 <- expected amount RCfBinKfJ1wGSxXLPNTmC9bohFRoofUiVm" |
|||
|
|||
# RNEZRHeWE3KgSTUr3qvH7RNvM2JWZZkygM KMD 5328.53865807 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RNEZRHeWE3KgSTUr3qvH7RNvM2JWZZkygM\",\"symbol\":\"KMD\"}" # 5328.53865807 |
|||
sleep 3 |
|||
echo "5328.53865807 <- expected amount RNEZRHeWE3KgSTUr3qvH7RNvM2JWZZkygM" |
|||
|
|||
# RH7tsX9PaKECxSEALpu5EWdmEKikY7R2n1 KMD 29049.45748125 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RH7tsX9PaKECxSEALpu5EWdmEKikY7R2n1\",\"symbol\":\"KMD\"}" # 29049.45748125 |
|||
sleep 3 |
|||
echo "29049.45748125 <- expected amount RH7tsX9PaKECxSEALpu5EWdmEKikY7R2n1" |
|||
|
|||
# RYHxrTNpqrAHRbULboJVYHWqmnmVhzzrot KMD 4840.60793162 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RYHxrTNpqrAHRbULboJVYHWqmnmVhzzrot\",\"symbol\":\"KMD\"}" # 4840.60793162 |
|||
sleep 3 |
|||
echo "4840.60793162 <- expected amount RYHxrTNpqrAHRbULboJVYHWqmnmVhzzrot" |
|||
|
|||
# RLCEGw7zmAhZQYtP23Z2TD45gAT9ZuZKct KMD 2420.78812342 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RLCEGw7zmAhZQYtP23Z2TD45gAT9ZuZKct\",\"symbol\":\"KMD\"}" # 2420.78812342 |
|||
sleep 3 |
|||
echo "2420.78812342 <- expected amount RLCEGw7zmAhZQYtP23Z2TD45gAT9ZuZKct" |
|||
|
|||
# RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC KMD 137.73071692, REVS 2.73426759 |
|||
# RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC KMD 137.73071692 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC\",\"symbol\":\"KMD\"}" # 137.73071692 |
|||
sleep 3 |
|||
echo "137.73071692 <- expected amount RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC" |
|||
|
|||
# RRdDD2YoR5cfwktePGGFT5cEyRcWkEjzvM KMD 9737.34607711 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RRdDD2YoR5cfwktePGGFT5cEyRcWkEjzvM\",\"symbol\":\"KMD\"}" # 9737.34607711 |
|||
sleep 3 |
|||
echo "9737.34607711 <- expected amount RRdDD2YoR5cfwktePGGFT5cEyRcWkEjzvM" |
|||
|
|||
# RKbb9NGB3pU2BaByoDwyZDH74E7koR2Lga KMD 1903.31162313 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RKbb9NGB3pU2BaByoDwyZDH74E7koR2Lga\",\"symbol\":\"KMD\"}" # 1903.31162313 |
|||
sleep 3 |
|||
echo "1903.31162313 <- expected amount RKbb9NGB3pU2BaByoDwyZDH74E7koR2Lga" |
|||
|
|||
# RQsSsmpzFagxRaYk6cTMpNHa4eYLihKn8h KMD 99.84182062 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RQsSsmpzFagxRaYk6cTMpNHa4eYLihKn8h\",\"symbol\":\"KMD\"}" # 99.84182062 |
|||
sleep 3 |
|||
echo "99.84182062 <- expected amount RQsSsmpzFagxRaYk6cTMpNHa4eYLihKn8h" |
|||
|
|||
# RKQPNcePppEkV4CMXZrwqEMAvRHbruKVdF KMD 1167.24851677 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RKQPNcePppEkV4CMXZrwqEMAvRHbruKVdF\",\"symbol\":\"KMD\"}" # 1167.24851677 |
|||
sleep 3 |
|||
echo "1167.24851677 <- expected amount RKQPNcePppEkV4CMXZrwqEMAvRHbruKVdF" |
|||
|
|||
# RHKuiEoakr9yeWQT9UZzCrqPgR8MPBaGvD KMD 15095.38306803 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RHKuiEoakr9yeWQT9UZzCrqPgR8MPBaGvD\",\"symbol\":\"KMD\"}" # 15095.38306803 |
|||
sleep 3 |
|||
echo "15095.38306803 <- expected amount RHKuiEoakr9yeWQT9UZzCrqPgR8MPBaGvD" |
@ -0,0 +1,129 @@ |
|||
# RQC6A3SKtLb2zmqDDwFvRH6Zz4mZufmp3d KMD 6266.43352646 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RQC6A3SKtLb2zmqDDwFvRH6Zz4mZufmp3d\",\"symbol\":\"KMD\"}" |
|||
echo "6266.43352646 <- expected amount RQC6A3SKtLb2zmqDDwFvRH6Zz4mZufmp3d" |
|||
|
|||
# R9SpRcd2KRD45B7SqzuUFhNnsnx7YqgkN6 KMD 1203.04246569 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"R9SpRcd2KRD45B7SqzuUFhNnsnx7YqgkN6\",\"symbol\":\"KMD\"}" |
|||
echo "1203.04246569 <- expected amount R9SpRcd2KRD45B7SqzuUFhNnsnx7YqgkN6" |
|||
|
|||
# RCA8H1npFPW5pnJRzycF8tFEJmn6XZhD4j KMD 9683.15249375 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RCA8H1npFPW5pnJRzycF8tFEJmn6XZhD4j\",\"symbol\":\"KMD\"}" |
|||
echo "9683.15249375 <- expected amount RCA8H1npFPW5pnJRzycF8tFEJmn6XZhD4j" |
|||
|
|||
# RTJXwRhuAH9iyztyuRuGC8G7DamTgSMGvT KMD 306877.42641191 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RTJXwRhuAH9iyztyuRuGC8G7DamTgSMGvT\",\"symbol\":\"KMD\"}" |
|||
echo "306877.42641191 <- expected amount RTJXwRhuAH9iyztyuRuGC8G7DamTgSMGvT" |
|||
|
|||
# RQantoJxT8szwfAqUM3enLPe85YiQtwndH KMD 150.23706901 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RQantoJxT8szwfAqUM3enLPe85YiQtwndH\",\"symbol\":\"KMD\"}" |
|||
echo "150.23706901 <- expected amount RQantoJxT8szwfAqUM3enLPe85YiQtwndH" |
|||
|
|||
# RLvvwtBUupmGDy81CJNp6RxKbxxbuu3jRY KMD 1985.04626121 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLvvwtBUupmGDy81CJNp6RxKbxxbuu3jRY\",\"symbol\":\"KMD\"}" |
|||
echo "1985.04626121 <- expected amount RLvvwtBUupmGDy81CJNp6RxKbxxbuu3jRY" |
|||
|
|||
# RFdRKqe82MmvSxZQjgtLfzdf8mNHztKpPE KMD 1664.32251109 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RFdRKqe82MmvSxZQjgtLfzdf8mNHztKpPE\",\"symbol\":\"KMD\"}" |
|||
echo "1664.32251109 <- expected amount RFdRKqe82MmvSxZQjgtLfzdf8mNHztKpPE" |
|||
|
|||
# RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3 KMD 5.99800973 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3\",\"symbol\":\"KMD\"}" |
|||
echo "5.99800973 <- expected amount RE1NYFqFG2vmhhHVY7QFC7sTp7zBxvSSP3" |
|||
|
|||
# RNYMy1joru9gFitzokTSi5qFFc5nS4iFxc KMD 9671.53271075 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RNYMy1joru9gFitzokTSi5qFFc5nS4iFxc\",\"symbol\":\"KMD\"}" |
|||
echo "9671.53271075 <- expected amount RNYMy1joru9gFitzokTSi5qFFc5nS4iFxc" |
|||
|
|||
# RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm KMD 40223.19497203, REVS 101.00000000 |
|||
# RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm KMD 40223.19497203 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm\",\"symbol\":\"KMD\"}" |
|||
echo "40223.19497203 <- expected amount RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm" |
|||
|
|||
# RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB KMD 72698.53877152 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB\",\"symbol\":\"KMD\"}" |
|||
echo "72698.53877152 <- expected amount RPqAFgwnB1hjae6Ar4Kms973uS93HbDkoB" |
|||
|
|||
# RVzFdNGRn8Ekr4XaeDSfE9fjqvKdcVicJe KMD 9683.15249375 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RVzFdNGRn8Ekr4XaeDSfE9fjqvKdcVicJe\",\"symbol\":\"KMD\"}" |
|||
echo "9683.15249375 <- expected amount RVzFdNGRn8Ekr4XaeDSfE9fjqvKdcVicJe" |
|||
|
|||
# RTbTzn7FGJWwrH1E3fMwuZPs3YVH1MvVoB KMD 3532.13792522 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RTbTzn7FGJWwrH1E3fMwuZPs3YVH1MvVoB\",\"symbol\":\"KMD\"}" |
|||
echo "3532.13792522 <- expected amount RTbTzn7FGJWwrH1E3fMwuZPs3YVH1MvVoB" |
|||
|
|||
# RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ KMD 309.69366537 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ\",\"symbol\":\"KMD\"}" |
|||
echo "309.69366537 <- expected amount RDdUQ5t6SYYGZUdAxBk5i7QdTWvzAshxNZ" |
|||
|
|||
# RYYgc5UD7X18E6CrDXCs1cts5WDwaWhm1Z KMD 3873.26099750 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RYYgc5UD7X18E6CrDXCs1cts5WDwaWhm1Z\",\"symbol\":\"KMD\"}" |
|||
echo "3873.26099750 <- expected amount RYYgc5UD7X18E6CrDXCs1cts5WDwaWhm1Z" |
|||
|
|||
# RXdBJ5cWDcS38ykuggEQZh3vSztxwmG3ut KMD 62053.93460050 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RXdBJ5cWDcS38ykuggEQZh3vSztxwmG3ut\",\"symbol\":\"KMD\"}" |
|||
echo "62053.93460050 <- expected amount RXdBJ5cWDcS38ykuggEQZh3vSztxwmG3ut" |
|||
|
|||
# REKnBAyZMnhKzRozzcuv6fKRtoBsKTFYjs KMD 6506.14889316 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"REKnBAyZMnhKzRozzcuv6fKRtoBsKTFYjs\",\"symbol\":\"KMD\"}" |
|||
echo "6506.14889316 <- expected amount REKnBAyZMnhKzRozzcuv6fKRtoBsKTFYjs" |
|||
|
|||
# RY422uSvkAoZy81uGot5PmXuMrtChhJ3uL KMD 812.78437655 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RY422uSvkAoZy81uGot5PmXuMrtChhJ3uL\",\"symbol\":\"KMD\"}" |
|||
echo "812.78437655 <- expected amount RY422uSvkAoZy81uGot5PmXuMrtChhJ3uL" |
|||
|
|||
# R9o3CQms16CLu63j9WdqsaWB3XsssRXEq8 KMD 1452.47287406 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"R9o3CQms16CLu63j9WdqsaWB3XsssRXEq8\",\"symbol\":\"KMD\"}" |
|||
echo "1452.47287406 <- expected amount R9o3CQms16CLu63j9WdqsaWB3XsssRXEq8" |
|||
|
|||
# RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A KMD 867.82549038 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A\",\"symbol\":\"KMD\"}" |
|||
echo "867.82549038 <- expected amount RWTfFTP7c9WxLhgxd2EXSsKszpDVPXHN8A" |
|||
|
|||
# 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" |
|||
|
|||
# RCfBinKfJ1wGSxXLPNTmC9bohFRoofUiVm KMD 8521.17419450 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RCfBinKfJ1wGSxXLPNTmC9bohFRoofUiVm\",\"symbol\":\"KMD\"}" |
|||
echo "8521.17419450 <- expected amount RCfBinKfJ1wGSxXLPNTmC9bohFRoofUiVm" |
|||
|
|||
# RNEZRHeWE3KgSTUr3qvH7RNvM2JWZZkygM KMD 5328.53865807 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RNEZRHeWE3KgSTUr3qvH7RNvM2JWZZkygM\",\"symbol\":\"KMD\"}" |
|||
echo "5328.53865807 <- expected amount RNEZRHeWE3KgSTUr3qvH7RNvM2JWZZkygM" |
|||
|
|||
# RH7tsX9PaKECxSEALpu5EWdmEKikY7R2n1 KMD 29049.45748125 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RH7tsX9PaKECxSEALpu5EWdmEKikY7R2n1\",\"symbol\":\"KMD\"}" |
|||
echo "29049.45748125 <- expected amount RH7tsX9PaKECxSEALpu5EWdmEKikY7R2n1" |
|||
|
|||
# RYHxrTNpqrAHRbULboJVYHWqmnmVhzzrot KMD 4840.60793162 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RYHxrTNpqrAHRbULboJVYHWqmnmVhzzrot\",\"symbol\":\"KMD\"}" |
|||
echo "4840.60793162 <- expected amount RYHxrTNpqrAHRbULboJVYHWqmnmVhzzrot" |
|||
|
|||
# RLCEGw7zmAhZQYtP23Z2TD45gAT9ZuZKct KMD 2420.78812342 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RLCEGw7zmAhZQYtP23Z2TD45gAT9ZuZKct\",\"symbol\":\"KMD\"}" |
|||
echo "2420.78812342 <- expected amount RLCEGw7zmAhZQYtP23Z2TD45gAT9ZuZKct" |
|||
|
|||
# RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC KMD 137.73071692, REVS 2.73426759 |
|||
# RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC KMD 137.73071692 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC\",\"symbol\":\"KMD\"}" |
|||
echo "137.73071692 <- expected amount RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC" |
|||
|
|||
# RRdDD2YoR5cfwktePGGFT5cEyRcWkEjzvM KMD 9737.34607711 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RRdDD2YoR5cfwktePGGFT5cEyRcWkEjzvM\",\"symbol\":\"KMD\"}" |
|||
echo "9737.34607711 <- expected amount RRdDD2YoR5cfwktePGGFT5cEyRcWkEjzvM" |
|||
|
|||
# RKbb9NGB3pU2BaByoDwyZDH74E7koR2Lga KMD 1903.31162313 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RKbb9NGB3pU2BaByoDwyZDH74E7koR2Lga\",\"symbol\":\"KMD\"}" |
|||
echo "1903.31162313 <- expected amount RKbb9NGB3pU2BaByoDwyZDH74E7koR2Lga" |
|||
|
|||
# RQsSsmpzFagxRaYk6cTMpNHa4eYLihKn8h KMD 99.84182062 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RQsSsmpzFagxRaYk6cTMpNHa4eYLihKn8h\",\"symbol\":\"KMD\"}" |
|||
echo "99.84182062 <- expected amount RQsSsmpzFagxRaYk6cTMpNHa4eYLihKn8h" |
|||
|
|||
# RKQPNcePppEkV4CMXZrwqEMAvRHbruKVdF KMD 1167.24851677 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RKQPNcePppEkV4CMXZrwqEMAvRHbruKVdF\",\"symbol\":\"KMD\"}" |
|||
echo "1167.24851677 <- expected amount RKQPNcePppEkV4CMXZrwqEMAvRHbruKVdF" |
|||
|
|||
# RHKuiEoakr9yeWQT9UZzCrqPgR8MPBaGvD KMD 15095.38306803 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RHKuiEoakr9yeWQT9UZzCrqPgR8MPBaGvD\",\"symbol\":\"KMD\"}" |
|||
echo "15095.38306803 <- expected amount RHKuiEoakr9yeWQT9UZzCrqPgR8MPBaGvD" |
@ -0,0 +1,8 @@ |
|||
# RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm KMD 40223.19497203, REVS 101.00000000 |
|||
sleep 1 |
|||
fiat/revs sendtoaddress RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm 101.00000000 |
|||
# RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC KMD 137.73071692, REVS 2.73426759 |
|||
sleep 1 |
|||
fiat/revs sendtoaddress RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC 2.73426759 |
|||
|
|||
# total KMD 0.00000000 REVS 103.73426759 |
@ -0,0 +1,6 @@ |
|||
# RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm KMD 40223.19497203, REVS 101.00000000 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RF4jZsF5BUckQqX5hsS68kjQMYSba8Fypm\",\"symbol\":\"REVS\"}" # 101.00000000 |
|||
sleep 3 |
|||
# RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC KMD 137.73071692, REVS 2.73426759 |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"importaddress\",\"address\":\"RGQmMzmUfa6R5dZvvL5wvy2vxPLEcgkkyC\",\"symbol\":\"REVS\"}" # 2.73426759 |
|||
sleep 3 |
@ -1,2 +1,2 @@ |
|||
#!/bin/bash |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"tradebot\",\"method\":\"amlp\"}" |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"tradebot\",\"method\":\"amlp\",\"blocktrail\":\"blocktrail_apikey\"}" |
|||
|
@ -1,5 +1,5 @@ |
|||
#!/bin/bash |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listtransactions\",\"address\":\"RDobQ77wnMY8Me7RAL9oiFqVNvwkqqgPRF\",\"count\":100,\"skip\":0,\"symbol\":\"KMD\"}" |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listtransactions\",\"address\":\"1Pc27firvEwPoDzPzYdJKZ5hoZK4T1tf6z\",\"count\":100,\"skip\":0,\"symbol\":\"BTC\"}" |
|||
#curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listtransactions\",\"address\":\"RRyBxbrAPRUBCUpiJgJZYrkxqrh8x5ta9Z\",\"count\":100,\"skip\":0,\"symbol\":\"MVP\"}" |
|||
#curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listtransactions\",\"address\":\"RMGpGoX82M1ZUUbHxZ3JKHacxY9NYVakqr\",\"count\":100,\"skip\":0,\"symbol\":\"USD\"}" |
|||
#curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listtransactions\",\"address\":\"RMGpGoX82M1ZUUbHxZ3JKHacxY9NYVakqr\",\"count\":100,\"skip\":0,\"symbol\":\"MVP\"}" |
|||
|
@ -1,2 +1,2 @@ |
|||
#!/bin/bash |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"RW3gz9fEadohRLZerK9r8zXkugk5swWHrf\",\"symbol\":\"KMD\"}" |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent\",\"address\":\"19rjYdJtRN3qoammX3r1gxy9bvh8p8DmRc\",\"symbol\":\"BTC\"}" |
|||
|
@ -1,2 +1,2 @@ |
|||
#!/bin/bash |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent2\",\"address\":\"RW3gz9fEadohRLZerK9r8zXkugk5swWHrf\",\"symbol\":\"KMD\"}" |
|||
curl --url "http://127.0.0.1:7778" --data "{\"agent\":\"dex\",\"method\":\"listunspent2\",\"address\":\"RNJmgYaFF5DbnrNUX6pMYz9rcnDKC2tuAc\",\"symbol\":\"KMD\"}" |
|||
|
@ -0,0 +1,3 @@ |
|||
../../coins/basilisk/btc |
|||
../../coins/basilisk/kmd |
|||
../marketmaker '{"blocktrail":"<get apikey from blocktrail.com>","passphrase":"<iguana passphrase>","base":"KMD","rel":"BTC","name":"komodo","exchange":"bittrex","apikey":"<yourbittrexapikey>","apisecret":"<yourbittrexapisecret>","profitmargin":0.001,"maxexposure":0.1,"lotratio":0.02,"start_rel":0.1,"start_base":1000}' |
@ -1,346 +0,0 @@ |
|||
/******************************************************************************
|
|||
* 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. * |
|||
* * |
|||
******************************************************************************/ |
|||
|
|||
STRING_ARG(dpow,pending,fiat); |
|||
TWO_STRINGS(iguana,dpow,symbol,pubkey); |
|||
STRING_ARG(dpow,active,maskhex); |
|||
TWOINTS_AND_ARRAY(dpow,ratify,minsigs,timestamp,ratified); |
|||
ZERO_ARGS(dpow,cancelratify); |
|||
THREE_STRINGS(iguana,passthru,asset,function,hex); |
|||
STRING_ARG(dpow,bindaddr,ipaddr); |
|||
STRING_AND_INT(dpow,fundnotaries,symbol,numblocks); |
|||
ZERO_ARGS(dpow,notarychains); |
|||
INT_ARG(passthru,paxfiats,mask); |
|||
INT_ARG(basilisk,paxfiats,mask); |
|||
INT_ARG(iguana,paxfiats,mask); |
|||
STRING_AND_INT(iguana,snapshot,symbol,height); |
|||
INT_ARRAY_STRING(iguana,dividends,height,vals,symbol); |
|||
|
|||
TWO_STRINGS(dex,send,hex,handler); |
|||
HASH_AND_STRING(dex,gettransaction,txid,symbol); |
|||
STRING_ARG(dex,getinfo,symbol); |
|||
STRING_ARG(dex,getnotaries,symbol); |
|||
STRING_ARG(dex,alladdresses,symbol); |
|||
STRING_ARG(dex,getbestblockhash,symbol); |
|||
STRING_AND_INT(dex,getblockhash,symbol,height); |
|||
HASH_AND_STRING(dex,getblock,hash,symbol); |
|||
TWO_STRINGS(dex,sendrawtransaction,symbol,signedtx); |
|||
HASH_AND_STRING_AND_INT(dex,gettxout,txid,symbol,vout); |
|||
TWO_STRINGS(dex,importaddress,symbol,address); |
|||
TWO_STRINGS(dex,checkaddress,symbol,address); |
|||
TWO_STRINGS(dex,validateaddress,symbol,address); |
|||
TWO_STRINGS(dex,listunspent,symbol,address); |
|||
TWO_STRINGS_AND_TWO_DOUBLES(dex,listtransactions,symbol,address,count,skip); |
|||
|
|||
TWO_STRINGS(zcash,passthru,function,hex); |
|||
TWO_STRINGS(komodo,passthru,function,hex); |
|||
|
|||
ZERO_ARGS(pax,start); |
|||
HASH_ARRAY_STRING(tradebot,liquidity,hash,vals,targetcoin); |
|||
ZERO_ARGS(tradebot,amlp); |
|||
ZERO_ARGS(tradebot,notlp); |
|||
TWO_STRINGS(tradebot,gensvm,base,rel); |
|||
ZERO_ARGS(tradebot,openliquidity); |
|||
|
|||
INT_AND_ARRAY(iguana,rates,unused,quotes); |
|||
TWO_STRINGS(iguana,rate,base,rel); |
|||
THREE_STRINGS_AND_THREE_INTS(iguana,prices,exchange,base,rel,period,start,end); |
|||
|
|||
ZERO_ARGS(InstantDEX,allcoins); |
|||
STRING_ARG(InstantDEX,available,source); |
|||
HASH_ARRAY_STRING(InstantDEX,request,hash,vals,hexstr); |
|||
|
|||
INT_ARG(InstantDEX,incoming,requestid); |
|||
INT_ARG(InstantDEX,automatched,requestid); |
|||
|
|||
TWO_INTS(InstantDEX,accept,requestid,quoteid); |
|||
//TWO_INTS(InstantDEX,swapstatus,requestid,quoteid);
|
|||
|
|||
HASH_ARRAY_STRING(basilisk,genesis_opreturn,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,history,hash,vals,hexstr); |
|||
|
|||
HASH_ARRAY_STRING(basilisk,balances,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,value,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,rawtx,hash,vals,hexstr); |
|||
|
|||
HASH_ARRAY_STRING(basilisk,getmessage,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,sendmessage,hash,vals,hexstr); |
|||
|
|||
HASH_ARRAY_STRING(basilisk,geckoheaders,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,geckoblock,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,geckotx,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,geckoget,hash,vals,hexstr); |
|||
|
|||
HASH_ARRAY_STRING(basilisk,addrelay,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,dispatch,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,publish,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,subscribe,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,forward,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,mailbox,hash,vals,hexstr); |
|||
|
|||
/*HASH_ARRAY_STRING(basilisk,VPNcreate,hash,vals,hexstr);
|
|||
HASH_ARRAY_STRING(basilisk,VPNjoin,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,VPNmessage,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,VPNbroadcast,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,VPNreceive,hash,vals,hexstr); |
|||
HASH_ARRAY_STRING(basilisk,VPNlogout,hash,vals,hexstr); |
|||
|
|||
HASH_ARRAY_STRING(basilisk,vote,hash,vals,hexstr);*/ |
|||
|
|||
ZERO_ARGS(bitcoinrpc,getinfo); |
|||
ZERO_ARGS(bitcoinrpc,getblockcount); |
|||
ZERO_ARGS(bitcoinrpc,getdifficulty); |
|||
ZERO_ARGS(bitcoinrpc,getbestblockhash); |
|||
INT_ARG(bitcoinrpc,getblockhash,height); |
|||
HASH_AND_TWOINTS(bitcoinrpc,getblock,blockhash,verbose,remoteonly); |
|||
|
|||
HASH_AND_INT(bitcoinrpc,getrawtransaction,txid,verbose); |
|||
HASH_ARG(bitcoinrpc,gettransaction,txid); |
|||
HASH_AND_TWOINTS(bitcoinrpc,gettxout,txid,vout,mempool); |
|||
TWOINTS_AND_ARRAY(bitcoinrpc,listunspent,minconf,maxconf,array); |
|||
|
|||
STRING_ARG(bitcoinrpc,decodescript,scriptstr); |
|||
//STRING_ARG(bitcoinrpc,decoderawtransaction,rawtx);
|
|||
STRING_AND_INT(bitcoinrpc,decoderawtransaction,rawtx,suppress); |
|||
STRING_AND_INT(bitcoinrpc,validaterawtransaction,rawtx,suppress); |
|||
ARRAY_OBJ_INT(bitcoinrpc,createrawtransaction,vins,vouts,locktime); |
|||
|
|||
ZERO_ARGS(iguana,makekeypair); |
|||
STRING_ARG(bitcoinrpc,validatepubkey,pubkey); |
|||
STRING_ARG(bitcoinrpc,validateaddress,address); |
|||
THREE_INTS(iguana,splitfunds,satoshis,duplicates,sendflag); |
|||
|
|||
ZERO_ARGS(bitcoinrpc,walletlock); |
|||
TWOSTRINGS_AND_INT(bitcoinrpc,walletpassphrase,password,permanentfile,timeout); |
|||
THREE_STRINGS(bitcoinrpc,encryptwallet,passphrase,password,permanentfile); |
|||
FOUR_STRINGS(bitcoinrpc,walletpassphrasechange,oldpassword,newpassword,oldpermanentfile,permanentfile); |
|||
STRING_ARG(bitcoinrpc,dumpwallet,filename); |
|||
STRING_ARG(bitcoinrpc,backupwallet,filename); |
|||
STRING_ARG(bitcoinrpc,importwallet,filename); |
|||
STRING_ARG(bitcoinrpc,getnewaddress,account); |
|||
TWOSTRINGS_AND_INT(bitcoinrpc,importprivkey,wif,account,rescan); |
|||
STRING_ARG(bitcoinrpc,dumpprivkey,address); |
|||
|
|||
STRING_AND_THREEINTS(bitcoinrpc,listtransactions,account,count,skip,includewatchonly); |
|||
THREE_INTS(bitcoinrpc,listreceivedbyaddress,minconf,includeempty,flag); |
|||
THREE_INTS(bitcoinrpc,listreceivedbyaccount,confirmations,includeempty,watchonly); |
|||
TWO_INTS(bitcoinrpc,listaccounts,minconf,includewatchonly); |
|||
ZERO_ARGS(bitcoinrpc,listaddressgroupings); |
|||
STRING_AND_INT(bitcoinrpc,getreceivedbyaddress,address,minconf); |
|||
STRING_AND_INT(bitcoinrpc,getreceivedbyaccount,account,includeempty); |
|||
STRING_AND_THREEINTS(bitcoinrpc,getbalance,account,confirmations,includeempty,lastheight); |
|||
STRING_ARG(bitcoinrpc,getaddressesbyaccount,account); |
|||
STRING_ARG(bitcoinrpc,getaccount,address); |
|||
STRING_ARG(bitcoinrpc,getaccountaddress,account); |
|||
TWO_STRINGS(bitcoinrpc,setaccount,address,account); |
|||
|
|||
INT_ARRAY_STRING(bitcoinrpc,createmultisig,M,pubkeys,ignore); |
|||
INT_ARRAY_STRING(bitcoinrpc,addmultisigaddress,M,pubkeys,account); |
|||
DOUBLE_ARG(bitcoinrpc,settxfee,amount); |
|||
|
|||
ZERO_ARGS(bitcoinrpc,checkwallet); |
|||
ZERO_ARGS(bitcoinrpc,repairwallet); |
|||
|
|||
STRING_ARRAY_OBJ_STRING(bitcoinrpc,signrawtransaction,rawtx,vins,privkeys,sighash); |
|||
TWO_STRINGS(bitcoinrpc,signmessage,address,message); |
|||
THREE_STRINGS(bitcoinrpc,verifymessage,address,sig,message); |
|||
STRING_AND_INT(bitcoinrpc,sendrawtransaction,rawtx,allowhighfees); |
|||
|
|||
SS_D_I_SS(bitcoinrpc,sendfrom,fromaccount,toaddress,amount,minconf,comment,comment2); |
|||
S_A_I_S(bitcoinrpc,sendmany,fromaccount,payments,minconf,comment); |
|||
S_D_SS(bitcoinrpc,sendtoaddress,address,amount,comment,comment2); |
|||
INT_AND_ARRAY(bitcoinrpc,lockunspent,flag,array); //
|
|||
ZERO_ARGS(bitcoinrpc,listlockunspent); //
|
|||
STRING_ARG(bitcoinrpc,submitblock,rawbytes); //
|
|||
|
|||
// maybe later
|
|||
HASH_AND_TWOINTS(bitcoinrpc,listsinceblock,blockhash,target,flag); |
|||
ZERO_ARGS(bitcoinrpc,gettxoutsetinfo); |
|||
ZERO_ARGS(bitcoinrpc,getrawchangeaddress); |
|||
SS_D_I_S(bitcoinrpc,move,fromaccount,toaccount,amount,minconf,comment); |
|||
|
|||
STRING_ARG(iguana,initfastfind,activecoin); |
|||
STRING_ARG(iguana,peers,activecoin); |
|||
STRING_AND_INT(iguana,maxpeers,activecoin,max); |
|||
STRING_ARG(iguana,getconnectioncount,activecoin); |
|||
STRING_ARG(iguana,addcoin,newcoin); |
|||
STRING_ARG(iguana,validate,activecoin); |
|||
STRING_ARG(iguana,removecoin,activecoin); |
|||
STRING_ARG(iguana,startcoin,activecoin); |
|||
STRING_ARG(iguana,pausecoin,activecoin); |
|||
STRING_ARG(iguana,stopcoin,activecoin); |
|||
TWO_STRINGS(iguana,addnode,activecoin,ipaddr); |
|||
STRING_ARG(iguana,addnotary,ipaddr); |
|||
TWO_STRINGS(iguana,persistent,activecoin,ipaddr); |
|||
TWO_STRINGS(iguana,removenode,activecoin,ipaddr); |
|||
TWO_STRINGS(iguana,oneshot,activecoin,ipaddr); |
|||
TWO_STRINGS(iguana,nodestatus,activecoin,ipaddr); |
|||
TWO_STRINGS_AND_TWO_DOUBLES(iguana,balance,activecoin,address,heightd,minconfd); |
|||
P2SH_SPENDAPI(iguana,spendmsig,activecoin,vintxid,vinvout,destaddress,destamount,destaddress2,destamount2,M,N,pubA,wifA,pubB,wifB,pubC,wifC); |
|||
STRING_AND_INT(iguana,bundleaddresses,activecoin,height); |
|||
STRING_AND_INT(iguana,bundlehashes,activecoin,height); |
|||
STRING_AND_INT(iguana,PoSweights,activecoin,height); |
|||
STRING_ARG(iguana,stakers,activecoin); |
|||
|
|||
//TWO_STRINGS_AND_TWO_DOUBLES(InstantDEX,minaccept,base,rel,minprice,basevolume);
|
|||
//TWO_STRINGS_AND_TWO_DOUBLES(InstantDEX,maxaccept,base,rel,maxprice,basevolume);
|
|||
THREE_STRINGS_AND_THREE_DOUBLES(InstantDEX,buy,exchange,base,rel,price,volume,dotrade); |
|||
THREE_STRINGS_AND_THREE_DOUBLES(InstantDEX,sell,exchange,base,rel,price,volume,dotrade); |
|||
THREE_STRINGS_AND_DOUBLE(InstantDEX,withdraw,exchange,base,destaddr,amount); |
|||
THREE_STRINGS(InstantDEX,apikeypair,exchange,apikey,apisecret); |
|||
THREE_STRINGS(InstantDEX,setuserid,exchange,userid,tradepassword); |
|||
TWO_STRINGS(InstantDEX,balance,exchange,base); |
|||
TWO_STRINGS(InstantDEX,orderstatus,exchange,orderid); |
|||
TWO_STRINGS(InstantDEX,cancelorder,exchange,orderid); |
|||
STRING_ARG(InstantDEX,openorders,exchange); |
|||
STRING_ARG(InstantDEX,tradehistory,exchange); |
|||
|
|||
THREE_STRINGS_AND_THREE_INTS(InstantDEX,orderbook,exchange,base,rel,depth,allfields,ignore); |
|||
STRING_AND_INT(InstantDEX,pollgap,exchange,pollgap); |
|||
//TWO_STRINGS(InstantDEX,events,base,rel);
|
|||
ZERO_ARGS(InstantDEX,allexchanges); |
|||
STRING_ARG(InstantDEX,allpairs,exchange); |
|||
THREE_STRINGS(InstantDEX,supports,exchange,base,rel); |
|||
|
|||
//THREE_STRINGS(atomic,approve,myorderid,otherid,txname);
|
|||
//THREE_STRINGS(atomic,claim,myorderid,otherid,txname);
|
|||
|
|||
//TWOSTRINGS_AND_TWOHASHES_AND_TWOINTS(InstantDEX,proposal,reference,message,basetxid,reltxid,duration,flags);
|
|||
//TWOSTRINGS_AND_TWOHASHES_AND_TWOINTS(InstantDEX,accept,reference,message,basetxid,reltxid,duration,flags);
|
|||
//TWOSTRINGS_AND_TWOHASHES_AND_TWOINTS(InstantDEX,confirm,reference,message,basetxid,reltxid,baseheight,relheight);
|
|||
|
|||
THREE_STRINGS_AND_DOUBLE(tradebot,aveprice,comment,base,rel,basevolume); |
|||
THREE_STRINGS_AND_DOUBLE(tradebot,monitor,exchange,base,rel,commission); |
|||
STRING_AND_DOUBLE(tradebot,monitorall,exchange,commission); |
|||
THREE_STRINGS(tradebot,unmonitor,exchange,base,rel); |
|||
THREE_STRINGS_AND_THREE_DOUBLES(tradebot,accumulate,exchange,base,rel,price,volume,duration); |
|||
THREE_STRINGS_AND_THREE_DOUBLES(tradebot,divest,exchange,base,rel,price,volume,duration); |
|||
STRING_ARG(tradebot,activebots,exchange); |
|||
TWO_STRINGS(tradebot,status,exchange,botid); |
|||
TWO_STRINGS(tradebot,pause,exchange,botid); |
|||
TWO_STRINGS(tradebot,stop,exchange,botid); |
|||
TWO_STRINGS(tradebot,resume,exchange,botid); |
|||
|
|||
#ifndef WIN32 |
|||
/*HASH_ARG(pangea,call,tablehash);
|
|||
HASH_AND_INT(pangea,raise,tablehash,numchips); |
|||
HASH_AND_INT(pangea,bet,tablehash,numchips); |
|||
HASH_ARG(pangea,check,tablehash); |
|||
HASH_ARG(pangea,fold,tablehash); |
|||
HASH_ARG(pangea,allin,tablehash); |
|||
HASH_ARG(pangea,status,tablehash); |
|||
HASH_AND_STRING(pangea,mode,tablehash,params); |
|||
HASH_ARG(pangea,history,tablehash); |
|||
HASH_AND_INT(pangea,handhistory,tablehash,hand); |
|||
INT_AND_ARRAY(pangea,host,minplayers,params); |
|||
ZERO_ARGS(pangea,lobby); |
|||
HASH_AND_STRING(pangea,join,tablehash,handle); |
|||
HASH_AND_INT(pangea,buyin,tablehash,numchips); |
|||
HASH_ARG(pangea,start,tablehash);*/ |
|||
#endif |
|||
|
|||
ZERO_ARGS(SuperNET,help); |
|||
STRING_ARG(SuperNET,utime2utc,utime); |
|||
INT_ARG(SuperNET,utc2utime,utc); |
|||
STRING_ARG(SuperNET,getpeers,activecoin); |
|||
TWO_ARRAYS(SuperNET,mypeers,supernet,rawpeers); |
|||
ZERO_ARGS(SuperNET,stop); |
|||
HASH_AND_STRING(SuperNET,saveconf,wallethash,confjsonstr); |
|||
HASH_ARRAY_STRING(SuperNET,layer,mypriv,otherpubs,str); |
|||
|
|||
STRING_ARG(SuperNET,bitcoinrpc,setcoin); |
|||
STRING_ARG(SuperNET,myipaddr,ipaddr); |
|||
STRING_ARG(SuperNET,setmyipaddr,ipaddr); |
|||
|
|||
FOUR_STRINGS(SuperNET,login,handle,password,permanentfile,passphrase); |
|||
ZERO_ARGS(SuperNET,logout); |
|||
ZERO_ARGS(SuperNET,activehandle); |
|||
THREE_STRINGS(SuperNET,encryptjson,password,permanentfile,payload); |
|||
TWO_STRINGS(SuperNET,decryptjson,password,permanentfile); |
|||
|
|||
TWO_STRINGS(SuperNET,html,agentform,htmlfile); |
|||
//TWOSTRINGS_AND_TWOHASHES_AND_TWOINTS(SuperNET,DHT,hexmsg,destip,categoryhash,subhash,maxdelay,broadcast);
|
|||
|
|||
THREE_STRINGS(SuperNET,rosetta,passphrase,pin,showprivkey); |
|||
ZERO_ARGS(SuperNET,keypair); |
|||
HASH_AND_INT(SuperNET,priv2pub,privkey,addrtype); |
|||
STRING_ARG(SuperNET,wif2priv,wif); |
|||
STRING_ARG(SuperNET,priv2wif,priv); |
|||
STRING_ARG(SuperNET,addr2rmd160,address); |
|||
STRING_ARG(SuperNET,rmd160conv,rmd160); |
|||
|
|||
TWOHASHES_AND_STRING(SuperNET,cipher,privkey,destpubkey,message); |
|||
TWOHASHES_AND_STRING(SuperNET,decipher,privkey,srcpubkey,cipherstr); |
|||
|
|||
STRING_ARG(SuperNET,broadcastcipher,message); |
|||
STRING_ARG(SuperNET,broadcastdecipher,message); |
|||
|
|||
HASH_AND_STRING(SuperNET,multicastcipher,pubkey,message); |
|||
HASH_AND_STRING(SuperNET,multicastdecipher,privkey,cipherstr); |
|||
|
|||
/*TWO_STRINGS(SuperNET,subscribe,category,subcategory);
|
|||
TWO_STRINGS(SuperNET,gethexmsg,category,subcategory); |
|||
THREE_STRINGS(SuperNET,posthexmsg,category,subcategory,hexmsg); |
|||
THREE_STRINGS(SuperNET,announce,category,subcategory,message); |
|||
THREE_STRINGS(SuperNET,survey,category,subcategory,message); |
|||
TWO_STRINGS(SuperNET,categoryhashes,category,subcategory);*/ |
|||
|
|||
STRING_AND_TWOINTS(mouse,image,name,x,y); |
|||
STRING_AND_TWOINTS(mouse,change,name,x,y); |
|||
STRING_AND_TWOINTS(mouse,click,name,x,y); |
|||
STRING_ARG(mouse,close,name); |
|||
STRING_ARG(mouse,leave,name); |
|||
STRING_AND_INT(keyboard,key,name,c); |
|||
|
|||
STRING_ARG(hash,hex,message); |
|||
STRING_ARG(hash,unhex,hexmsg); |
|||
TWO_HASHES(hash,curve25519_pair,element,scalar); |
|||
STRING_ARG(hash,NXT,passphrase); |
|||
STRING_ARG(hash,curve25519,pubkey); |
|||
STRING_ARG(hash,crc32,message); |
|||
STRING_ARG(hash,base64_encode,message); |
|||
STRING_ARG(hash,base64_decode,message); |
|||
STRING_ARG(hash,rmd160_sha256,message); |
|||
STRING_ARG(hash,sha256_sha256,message); |
|||
|
|||
STRING_ARG(hash,sha224,message); |
|||
STRING_ARG(hash,sha256,message); |
|||
STRING_ARG(hash,sha384,message); |
|||
STRING_ARG(hash,sha512,message); |
|||
STRING_ARG(hash,rmd128,message); |
|||
STRING_ARG(hash,rmd160,message); |
|||
STRING_ARG(hash,rmd256,message); |
|||
STRING_ARG(hash,rmd320,message); |
|||
STRING_ARG(hash,sha1,message); |
|||
STRING_ARG(hash,md2,message); |
|||
STRING_ARG(hash,md4,message); |
|||
STRING_ARG(hash,md5,message); |
|||
STRING_ARG(hash,tiger192_3,message); |
|||
STRING_ARG(hash,whirlpool,message); |
|||
|
|||
TWO_STRINGS(hmac,sha224,message,passphrase); |
|||
TWO_STRINGS(hmac,sha256,message,passphrase); |
|||
TWO_STRINGS(hmac,sha384,message,passphrase); |
|||
TWO_STRINGS(hmac,sha512,message,passphrase); |
|||
TWO_STRINGS(hmac,rmd128,message,passphrase); |
|||
TWO_STRINGS(hmac,rmd160,message,passphrase); |
|||
TWO_STRINGS(hmac,rmd256,message,passphrase); |
|||
TWO_STRINGS(hmac,rmd320,message,passphrase); |
|||
TWO_STRINGS(hmac,sha1,message,passphrase); |
|||
TWO_STRINGS(hmac,md2,message,passphrase); |
|||
TWO_STRINGS(hmac,md4,message,passphrase); |
|||
TWO_STRINGS(hmac,md5,message,passphrase); |
|||
TWO_STRINGS(hmac,tiger192_3,message,passphrase); |
|||
TWO_STRINGS(hmac,whirlpool,message,passphrase); |
Loading…
Reference in new issue