Browse Source

Merge pull request #383 from jl777/spvdex

Spvdex
etomic
jl777 7 years ago
committed by GitHub
parent
commit
9d4780247e
  1. 5
      OSlibs/win/mingw.h
  2. 25
      README_decker.md
  3. 2
      iguana/dPoW.h
  4. 10
      iguana/dpow/dpow_network.c
  5. 18
      iguana/exchanges/LP_coins.c
  6. 2
      iguana/exchanges/LP_include.h
  7. 6
      iguana/exchanges/LP_nativeDEX.c
  8. 9
      iguana/exchanges/LP_ordermatch.c
  9. 33
      iguana/exchanges/LP_rpc.c
  10. 8
      iguana/exchanges/LP_socket.c
  11. 2
      iguana/exchanges/LP_swap.c
  12. 2
      iguana/exchanges/LP_transaction.c
  13. 3
      iguana/exchanges/LP_utxos.c
  14. 8
      iguana/exchanges/mm.c
  15. 5
      iguana/exchanges/stats.c
  16. 2
      iguana/iguana777.h
  17. 19
      iguana/iguana_mofn.c
  18. 3
      iguana/iguana_notary.c
  19. 8
      iguana/main.c
  20. 4
      includes/iguana_structs.h
  21. 28
      marketmaker.sln
  22. 257
      marketmaker.vcxproj
  23. 297
      marketmaker.vcxproj.filters

5
OSlibs/win/mingw.h

@ -5,6 +5,8 @@
#include <io.h> #include <io.h>
#define _USE_W32_SOCKETS 1 #define _USE_W32_SOCKETS 1
#define WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#include <windows.h> #include <windows.h>
#define PTW32_STATIC_LIB #define PTW32_STATIC_LIB
#include "pthread.h" #include "pthread.h"
@ -38,6 +40,9 @@
* @author - fadedreamz@gmail.com * @author - fadedreamz@gmail.com
*/ */
//TODO: need to update other values to match with WSAPoll() function //TODO: need to update other values to match with WSAPoll() function
#define POLLRDNORM 0x0100
#define POLLRDBAND 0x0200
#define POLLWRNORM 0x0010
#define POLLIN POLLRDNORM | POLLRDBAND /* There is data to read */ #define POLLIN POLLRDNORM | POLLRDBAND /* There is data to read */
#define POLLOUT POLLWRNORM /* Writing now will not block */ #define POLLOUT POLLWRNORM /* Writing now will not block */
#else #else

25
README_decker.md

@ -0,0 +1,25 @@
## What's this?
This is a first build of **MarketMaker** app from barterDEX for Windows (64-bit) platform. This branch includes all that you need to build marketmaker for Windows. 64-bit build uses MSVC 2015 as a default C/C++ compiler, to build - simply open *marketmaker.sln* project file via File -> Open -> Project/Solution ... next choose Release / x64 configuration and build solution. Your binaries will be placed x64\Release folder. To run marketmaker you also need following dll libraries:
- libcurl.dll
- nanomsg.dll
- curl.exe (win64 curl binary, used is scripts)
It already included in this branch.
## How to use?
Please, refer to original barterDEX documentation and Komodo Platform + SuperNET resources to learn how to work this it. Later i will add some examples and useful links here.
Important, coins.json on Windows shouldn't contain coins which haven't running daemons. Add to coins.json only coins that you plan to use, in other case starting marketmaker will too long: about 4 seconds on each not-running coin.
Get the latest binary release from release section and step-by-step run cmd files:
- 1-client.cmd - this runs marketmaker with passphrase taken from a passphrase file.
- 2-getuserpass.cmd - this will save and output your userpass in userpass file for future use.
- 3-orderbook.cmd - to get an orderbook (if u downloaded binary release from release section - it's have only REVS in coins.json and orderbook will be shown at KMD/REVS coins pair).
Other scripts will be post later ... this is just for example that it works.

2
iguana/dPoW.h

@ -134,7 +134,7 @@ struct dpow_info
struct dpow_checkpoint checkpoint,last,destchaintip,srcfifo[DPOW_FIFOSIZE],destfifo[DPOW_FIFOSIZE]; struct dpow_checkpoint checkpoint,last,destchaintip,srcfifo[DPOW_FIFOSIZE],destfifo[DPOW_FIFOSIZE];
struct dpow_hashheight approved[DPOW_FIFOSIZE],notarized[DPOW_FIFOSIZE]; struct dpow_hashheight approved[DPOW_FIFOSIZE],notarized[DPOW_FIFOSIZE];
bits256 activehash,lastnotarized,srctx[DPOW_MAXTX],desttx[DPOW_MAXTX]; bits256 activehash,lastnotarized,srctx[DPOW_MAXTX],desttx[DPOW_MAXTX];
uint32_t SRCREALTIME,destupdated,srcconfirms,numdesttx,numsrctx,lastsplit,cancelratify; uint32_t SRCREALTIME,lastsrcupdate,destupdated,srcconfirms,numdesttx,numsrctx,lastsplit,cancelratify;
int32_t lastheight,maxblocks,SRCHEIGHT,SHORTFLAG,ratifying; int32_t lastheight,maxblocks,SRCHEIGHT,SHORTFLAG,ratifying;
struct pax_transaction *PAX; struct pax_transaction *PAX;
portable_mutex_t paxmutex,dexmutex; portable_mutex_t paxmutex,dexmutex;

10
iguana/dpow/dpow_network.c

@ -170,7 +170,7 @@ int32_t signed_nn_recv(void **freeptrp,struct supernet_info *myinfo,uint8_t nota
vcalc_sha256(0,packethash.bytes,(void *)&sigpacket->nonce,(int32_t)(sigpacket->packetlen+sizeof(sigpacket->nonce)+sizeof(sigpacket->packetlen))); vcalc_sha256(0,packethash.bytes,(void *)&sigpacket->nonce,(int32_t)(sigpacket->packetlen+sizeof(sigpacket->nonce)+sizeof(sigpacket->packetlen)));
if ( bits256_cmp(packethash,sigpacket->packethash) == 0 && sigpacket->packethash.bytes[0] == 0 ) if ( bits256_cmp(packethash,sigpacket->packethash) == 0 && sigpacket->packethash.bytes[0] == 0 )
{ {
if ( bitcoin_recoververify(myinfo->ctx[1],"nnrecv",sigpacket->sig64,sigpacket->packethash,pubkey33,33) == 0 ) if ( bitcoin_recoververify(myinfo->ctx,"nnrecv",sigpacket->sig64,sigpacket->packethash,pubkey33,33) == 0 )
{ {
char *notary0 = "03b7621b44118017a16043f19b30cc8a4cfe068ac4e42417bae16ba460c80f3828"; char *notary0 = "03b7621b44118017a16043f19b30cc8a4cfe068ac4e42417bae16ba460c80f3828";
// expand to official notaries // expand to official notaries
@ -2020,7 +2020,7 @@ void dpow_send(struct supernet_info *myinfo,struct dpow_info *dp,struct dpow_blo
pfd.events = NN_POLLOUT; pfd.events = NN_POLLOUT;
if ( nn_poll(&pfd,1,100) > 0 ) if ( nn_poll(&pfd,1,100) > 0 )
{ {
sentbytes = signed_nn_send(myinfo,myinfo->ctx[2],myinfo->persistent_priv,myinfo->dpowsock,np,size); sentbytes = signed_nn_send(myinfo,myinfo->ctx,myinfo->persistent_priv,myinfo->dpowsock,np,size);
break; break;
} }
usleep(1000); usleep(1000);
@ -2168,13 +2168,13 @@ int32_t dpow_nanomsg_update(struct supernet_info *myinfo)
//printf("REP got %d crc.%08x\n",size,calc_crc32(0,(void *)dexp,size)); //printf("REP got %d crc.%08x\n",size,calc_crc32(0,(void *)dexp,size));
if ( (retstr= dex_response(&broadcastflag,myinfo,dexp)) != 0 ) if ( (retstr= dex_response(&broadcastflag,myinfo,dexp)) != 0 )
{ {
signed_nn_send(myinfo,myinfo->ctx[3],myinfo->persistent_priv,myinfo->repsock,retstr,(int32_t)strlen(retstr)+1); signed_nn_send(myinfo,myinfo->ctx,myinfo->persistent_priv,myinfo->repsock,retstr,(int32_t)strlen(retstr)+1);
//printf("send back[%ld]\n",strlen(retstr)+1); //printf("send back[%ld]\n",strlen(retstr)+1);
free(retstr); free(retstr);
if ( broadcastflag != 0 ) if ( broadcastflag != 0 )
{ {
printf("BROADCAST dexp request.[%d]\n",size); printf("BROADCAST dexp request.[%d]\n",size);
signed_nn_send(myinfo,myinfo->ctx[4],myinfo->persistent_priv,myinfo->dexsock,dexp,size); signed_nn_send(myinfo,myinfo->ctx,myinfo->persistent_priv,myinfo->dexsock,dexp,size);
//signed_nn_send(myinfo,myinfo->ctx,myinfo->persistent_priv,myinfo->pubsock,dexp,size); //signed_nn_send(myinfo,myinfo->ctx,myinfo->persistent_priv,myinfo->pubsock,dexp,size);
} }
} }
@ -2183,7 +2183,7 @@ int32_t dpow_nanomsg_update(struct supernet_info *myinfo)
if ( (m= myinfo->numdpowipbits) > 0 ) if ( (m= myinfo->numdpowipbits) > 0 )
{ {
r = myinfo->dpowipbits[rand() % m]; r = myinfo->dpowipbits[rand() % m];
signed_nn_send(myinfo,myinfo->ctx[5],myinfo->persistent_priv,myinfo->repsock,&r,sizeof(r)); signed_nn_send(myinfo,myinfo->ctx,myinfo->persistent_priv,myinfo->repsock,&r,sizeof(r));
printf("REP.%08x <- rand ip m.%d %x\n",dexp->crc32,m,r); printf("REP.%08x <- rand ip m.%d %x\n",dexp->crc32,m,r);
} else printf("illegal state without dpowipbits?\n"); } else printf("illegal state without dpowipbits?\n");
if ( dex_packetcheck(myinfo,dexp,size) == 0 ) if ( dex_packetcheck(myinfo,dexp,size) == 0 )

18
iguana/exchanges/LP_coins.c

@ -107,7 +107,7 @@ void LP_statefname(char *fname,char *symbol,char *assetname,char *str,char *name
#endif #endif
if ( strcmp(symbol,"BTC") == 0 ) if ( strcmp(symbol,"BTC") == 0 )
{ {
#ifdef __APPLE__ #if defined(__APPLE__) || defined(NATIVE_WINDOWS)
strcat(fname,"Bitcoin"); strcat(fname,"Bitcoin");
#else #else
strcat(fname,".bitcoin"); strcat(fname,".bitcoin");
@ -131,7 +131,7 @@ void LP_statefname(char *fname,char *symbol,char *assetname,char *str,char *name
} }
else else
{ {
#ifdef __APPLE__ #if defined(__APPLE__) || defined(NATIVE_WINDOWS)
strcat(fname,"Komodo"); strcat(fname,"Komodo");
#else #else
strcat(fname,".komodo"); strcat(fname,".komodo");
@ -186,7 +186,6 @@ cJSON *LP_coinjson(struct iguana_info *coin,int32_t showwif)
{ {
struct electrum_info *ep; char wifstr[128],ipaddr[64]; uint8_t tmptype; bits256 checkkey; cJSON *item = cJSON_CreateObject(); struct electrum_info *ep; char wifstr[128],ipaddr[64]; uint8_t tmptype; bits256 checkkey; cJSON *item = cJSON_CreateObject();
jaddstr(item,"coin",coin->symbol); jaddstr(item,"coin",coin->symbol);
jaddnum(item,"height",coin->height);
if ( showwif != 0 ) if ( showwif != 0 )
{ {
bitcoin_priv2wif(coin->wiftaddr,wifstr,G.LP_mypriv25519,coin->wiftype); bitcoin_priv2wif(coin->wiftaddr,wifstr,G.LP_mypriv25519,coin->wiftype);
@ -195,8 +194,21 @@ cJSON *LP_coinjson(struct iguana_info *coin,int32_t showwif)
jaddstr(item,"wif",wifstr); jaddstr(item,"wif",wifstr);
else jaddstr(item,"wif","error creating wif"); else jaddstr(item,"wif","error creating wif");
} }
jadd(item,"installed",coin->userpass[0] == 0 ? jfalse() : jtrue());
if ( coin->userpass[0] != 0 )
{
jaddnum(item,"height",LP_getheight(coin));
jaddnum(item,"balance",dstr(LP_smartbalance(coin)));
}
else
{
jaddnum(item,"height",-1);
jaddnum(item,"balance",0);
}
if ( coin->inactive != 0 ) if ( coin->inactive != 0 )
{
jaddstr(item,"status","inactive"); jaddstr(item,"status","inactive");
}
else jaddstr(item,"status","active"); else jaddstr(item,"status","active");
if ( coin->isPoS != 0 ) if ( coin->isPoS != 0 )
jaddstr(item,"type","PoS"); jaddstr(item,"type","PoS");

2
iguana/exchanges/LP_include.h

@ -299,6 +299,8 @@ uint16_t LP_psock_get(char *connectaddr,char *publicaddr,int32_t ispaired);
int32_t LP_coinbus(uint16_t coin_busport); int32_t LP_coinbus(uint16_t coin_busport);
int32_t LP_nanomsg_recvs(void *ctx); int32_t LP_nanomsg_recvs(void *ctx);
int32_t LP_reserved_msgs(); int32_t LP_reserved_msgs();
uint64_t LP_smartbalance(struct iguana_info *coin);
int32_t LP_getheight(struct iguana_info *coin);
int32_t LP_reserved_msg(char *base,char *rel,bits256 pubkey,char *msg); int32_t LP_reserved_msg(char *base,char *rel,bits256 pubkey,char *msg);
struct iguana_info *LP_coinfind(char *symbol); struct iguana_info *LP_coinfind(char *symbol);
int32_t LP_crc32find(int32_t *duplicatep,int32_t ind,uint32_t crc32); int32_t LP_crc32find(int32_t *duplicatep,int32_t ind,uint32_t crc32);

6
iguana/exchanges/LP_nativeDEX.c

@ -19,10 +19,10 @@
// marketmaker // marketmaker
// //
// dPoW security -> 4: KMD notarized, 5: BTC notarized // dPoW security -> 4: KMD notarized, 5: BTC notarized
// locktime to fee
// new testchain
// sign critical api calls (pubkey reg, listunspent, orders?) // sign critical api calls (pubkey reg, listunspent, orders?)
// // process stats.log local file -> map of realtime activity!
// process stats.log local file
//
// handles <-> pubkeys, deal with offline pubkeys, reputations, bonds etc. // handles <-> pubkeys, deal with offline pubkeys, reputations, bonds etc.
// //
// alice only coins GAME UNO BTM ANC: GAME BTCD PPC RDD XZC POT EAC FTC BASH SPR WDC UNO XPM XCN BELA CHC DIME MEC NAUT MED AUR MAX DGC RIC EB3 DOT BTM GEO ANC CANN ICASH WBB SRC PTC ADZ TIPS EQT START EFL FST FJC NYC GCN // alice only coins GAME UNO BTM ANC: GAME BTCD PPC RDD XZC POT EAC FTC BASH SPR WDC UNO XPM XCN BELA CHC DIME MEC NAUT MED AUR MAX DGC RIC EB3 DOT BTM GEO ANC CANN ICASH WBB SRC PTC ADZ TIPS EQT START EFL FST FJC NYC GCN

9
iguana/exchanges/LP_ordermatch.c

@ -816,6 +816,7 @@ void LP_reserved(void *ctx,char *myipaddr,int32_t mypubsock,struct LP_quoteinfo
{ {
memset(&LP_Alicequery,0,sizeof(LP_Alicequery)); memset(&LP_Alicequery,0,sizeof(LP_Alicequery));
LP_Alicemaxprice = 0.; LP_Alicemaxprice = 0.;
Alice_expiration = 0;
LP_query(ctx,myipaddr,mypubsock,"connect",qp); LP_query(ctx,myipaddr,mypubsock,"connect",qp);
} }
} }
@ -1057,6 +1058,14 @@ char *LP_autobuy(void *ctx,char *myipaddr,int32_t mypubsock,char *base,char *rel
duration = LP_ORDERBOOK_DURATION; duration = LP_ORDERBOOK_DURATION;
if ( timeout <= 0 ) if ( timeout <= 0 )
timeout = LP_AUTOTRADE_TIMEOUT; timeout = LP_AUTOTRADE_TIMEOUT;
if ( time(NULL) < Alice_expiration )
return(clonestr("{\"error\":\"only one pending request at a time\"}"));
else
{
Alice_expiration = 0;
memset(&LP_Alicequery,0,sizeof(LP_Alicequery));
LP_Alicemaxprice = 0.;
}
if ( maxprice <= 0. || relvolume <= 0. || LP_priceinfofind(base) == 0 || LP_priceinfofind(rel) == 0 ) if ( maxprice <= 0. || relvolume <= 0. || LP_priceinfofind(base) == 0 || LP_priceinfofind(rel) == 0 )
return(clonestr("{\"error\":\"invalid parameter\"}")); return(clonestr("{\"error\":\"invalid parameter\"}"));
//if ( strcmp("BTC",rel) == 0 ) //if ( strcmp("BTC",rel) == 0 )

33
iguana/exchanges/LP_rpc.c

@ -203,7 +203,7 @@ cJSON *LP_assethbla(char *assetid)
int32_t LP_getheight(struct iguana_info *coin) int32_t LP_getheight(struct iguana_info *coin)
{ {
cJSON *retjson; char *method = "getinfo"; int32_t height; cJSON *retjson; char *retstr,*method = "getinfo"; int32_t height;
if ( coin == 0 ) if ( coin == 0 )
return(-1); return(-1);
height = coin->height; height = coin->height;
@ -211,16 +211,43 @@ int32_t LP_getheight(struct iguana_info *coin)
{ {
if ( strcmp(coin->symbol,"BTC") == 0 ) if ( strcmp(coin->symbol,"BTC") == 0 )
method = "getblockchaininfo"; method = "getblockchaininfo";
if ( (retjson= bitcoin_json(coin,method,"[]")) != 0 ) retstr = bitcoind_passthru(coin->symbol,coin->serverport,coin->userpass,method,"[]");
if ( retstr != 0 && retstr[0] != 0 )
{ {
retjson = cJSON_Parse(retstr);
coin->height = height = jint(retjson,"blocks"); coin->height = height = jint(retjson,"blocks");
free_json(retjson); free_json(retjson);
coin->heighttime = (uint32_t)time(NULL); if ( coin->height > 0 )
coin->heighttime = (uint32_t)time(NULL);
free(retstr);
} }
} }
return(height); return(height);
} }
uint64_t LP_smartbalance(struct iguana_info *coin)
{
cJSON *array,*item; char buf[512],*retstr; int32_t i,n; uint64_t valuesum,value;
valuesum = 0;
sprintf(buf,"[0, 99999999, [\"%s\"]]",coin->smartaddr);
retstr = bitcoind_passthru(coin->symbol,coin->serverport,coin->userpass,"listunspent","[]");
if ( retstr != 0 && retstr[0] != 0 )
{
array = cJSON_Parse(retstr);
if ( is_cJSON_Array(array) != 0 && (n= cJSON_GetArraySize(array)) > 0 )
{
for (i=0; i<n; i++)
{
item = jitem(array,i);
value = LP_value_extract(item,1);
valuesum += value;
}
}
free_json(array);
}
return(valuesum);
}
cJSON *LP_getmempool(char *symbol,char *coinaddr) cJSON *LP_getmempool(char *symbol,char *coinaddr)
{ {
cJSON *array; struct iguana_info *coin; cJSON *array; struct iguana_info *coin;

8
iguana/exchanges/LP_socket.c

@ -21,10 +21,10 @@
* @remarks - #if (defined(_M_X64) || defined(__amd64__)) && defined(WIN32) * @remarks - #if (defined(_M_X64) || defined(__amd64__)) && defined(WIN32)
* is equivalent to #if defined(_M_X64) as _M_X64 is defined for MSVC only * is equivalent to #if defined(_M_X64) as _M_X64 is defined for MSVC only
*/ */
//#if defined(_M_X64) #if defined(_M_X64)
//#define WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN
//#include <WinSock2.h> #include <WinSock2.h>
//#endif #endif
#define ELECTRUM_TIMEOUT 10 #define ELECTRUM_TIMEOUT 10

2
iguana/exchanges/LP_swap.c

@ -1097,6 +1097,8 @@ struct basilisk_swap *bitcoin_swapinit(bits256 privkey,uint8_t *pubkey33,bits256
basilisk_rawtx_setparms("myfee",swap->I.req.quoteid,&swap->myfee,&swap->alicecoin,0,0,LP_DEXFEE(swap->I.alicesatoshis) + swap->alicecoin.txfee,0,0,jumblrflag); basilisk_rawtx_setparms("myfee",swap->I.req.quoteid,&swap->myfee,&swap->alicecoin,0,0,LP_DEXFEE(swap->I.alicesatoshis) + swap->alicecoin.txfee,0,0,jumblrflag);
alicepub33 = pubkey33; alicepub33 = pubkey33;
} }
swap->myfee.I.locktime = swap->I.started + 1;
swap->otherfee.I.locktime = swap->I.started + 1;
basilisk_rawtx_setparms("bobdeposit",swap->I.req.quoteid,&swap->bobdeposit,&swap->bobcoin,swap->I.bobconfirms,0,LP_DEPOSITSATOSHIS(swap->I.bobsatoshis) + swap->bobcoin.txfee,4,0,jumblrflag); basilisk_rawtx_setparms("bobdeposit",swap->I.req.quoteid,&swap->bobdeposit,&swap->bobcoin,swap->I.bobconfirms,0,LP_DEPOSITSATOSHIS(swap->I.bobsatoshis) + swap->bobcoin.txfee,4,0,jumblrflag);
basilisk_rawtx_setparms("bobrefund",swap->I.req.quoteid,&swap->bobrefund,&swap->bobcoin,1,4,LP_DEPOSITSATOSHIS(swap->I.bobsatoshis),1,bobpub33,jumblrflag); basilisk_rawtx_setparms("bobrefund",swap->I.req.quoteid,&swap->bobrefund,&swap->bobcoin,1,4,LP_DEPOSITSATOSHIS(swap->I.bobsatoshis),1,bobpub33,jumblrflag);
swap->bobrefund.I.suppress_pubkeys = 1; swap->bobrefund.I.suppress_pubkeys = 1;

2
iguana/exchanges/LP_transaction.c

@ -1630,7 +1630,7 @@ int32_t LP_verify_otherfee(struct basilisk_swap *swap,uint8_t *data,int32_t data
{ {
if ( LP_rawtx_spendscript(swap,swap->bobcoin.longestchain,&swap->otherfee,0,data,datalen,0) == 0 ) if ( LP_rawtx_spendscript(swap,swap->bobcoin.longestchain,&swap->otherfee,0,data,datalen,0) == 0 )
{ {
printf("otherfee amount %.8f -> %s vs %s\n",dstr(swap->otherfee.I.amount),swap->otherfee.p2shaddr,swap->otherfee.I.destaddr); printf("otherfee amount %.8f -> %s vs %s locktime %u vs %u\n",dstr(swap->otherfee.I.amount),swap->otherfee.p2shaddr,swap->otherfee.I.destaddr,swap->otherfee.I.locktime,swap->I.started+1);
if ( strcmp(swap->otherfee.I.destaddr,swap->otherfee.p2shaddr) == 0 ) if ( strcmp(swap->otherfee.I.destaddr,swap->otherfee.p2shaddr) == 0 )
{ {
printf("dexfee verified\n"); printf("dexfee verified\n");

3
iguana/exchanges/LP_utxos.c

@ -771,8 +771,11 @@ void LP_privkey_updates(void *ctx,int32_t pubsock,char *passphrase)
initonly = (passphrase != 0); initonly = (passphrase != 0);
memset(privkey.bytes,0,sizeof(privkey)); memset(privkey.bytes,0,sizeof(privkey));
memset(pubkey.bytes,0,sizeof(pubkey)); memset(pubkey.bytes,0,sizeof(pubkey));
//printf("Total coins: %d\n", HASH_COUNT(LP_coins));
//int num_iter = 0;
HASH_ITER(hh,LP_coins,coin,tmp) HASH_ITER(hh,LP_coins,coin,tmp)
{ {
//printf("LP_privkey_updates [%02d / %02d]\n", num_iter++, HASH_COUNT(LP_coins));
if ( initonly != 0 ) if ( initonly != 0 )
{ {
coin->counter = 0; coin->counter = 0;

8
iguana/exchanges/mm.c

@ -22,7 +22,13 @@
#define FROM_MARKETMAKER #define FROM_MARKETMAKER
#include <stdio.h> #include <stdio.h>
#include <stdint.h> #include <stdint.h>
#include "OS_portable.h" #ifndef NATIVE_WINDOWS
#include "OS_portable.h"
#else
#include "../../crypto777/OS_portable.h"
#endif // !_WIN_32
#define MAX(a,b) ((a) > (b) ? (a) : (b)) #define MAX(a,b) ((a) > (b) ? (a) : (b))
char *stats_JSON(void *ctx,char *myipaddr,int32_t pubsock,cJSON *argjson,char *remoteaddr,uint16_t port); char *stats_JSON(void *ctx,char *myipaddr,int32_t pubsock,cJSON *argjson,char *remoteaddr,uint16_t port);
#include "stats.c" #include "stats.c"

5
iguana/exchanges/stats.c

@ -19,6 +19,8 @@
// Copyright © 2017 SuperNET. All rights reserved. // Copyright © 2017 SuperNET. All rights reserved.
// //
#include <stdio.h> #include <stdio.h>
#include <stdint.h> #include <stdint.h>
#include "../../crypto777/OS_portable.h" #include "../../crypto777/OS_portable.h"
@ -70,6 +72,7 @@ int32_t iguana_socket(int32_t bindflag,char *hostname,uint16_t port)
* it is standard posix function and is correctly supported in win32/win64/linux * it is standard posix function and is correctly supported in win32/win64/linux
* @author - fadedreamz@gmail.com * @author - fadedreamz@gmail.com
*/ */
#if defined(_M_X64) #if defined(_M_X64)
struct addrinfo *addrresult = NULL; struct addrinfo *addrresult = NULL;
struct addrinfo *returnptr = NULL; struct addrinfo *returnptr = NULL;
@ -82,7 +85,7 @@ int32_t iguana_socket(int32_t bindflag,char *hostname,uint16_t port)
hints.ai_socktype = SOCK_STREAM; hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP; hints.ai_protocol = IPPROTO_TCP;
#endif #endif
if ( parse_ipaddr(ipaddr,hostname) != 0 ) if ( parse_ipaddr(ipaddr,hostname) != 0 )
port = parse_ipaddr(ipaddr,hostname); port = parse_ipaddr(ipaddr,hostname);

2
iguana/iguana777.h

@ -150,7 +150,7 @@ struct supernet_info
struct queueitem *DEX_quotes; cJSON *Cunspents,*Cspends; struct queueitem *DEX_quotes; cJSON *Cunspents,*Cspends;
struct basilisk_swap *swaps[256]; int32_t numswaps; struct basilisk_swap *swaps[256]; int32_t numswaps;
struct basilisk_message *messagetable; portable_mutex_t messagemutex; queue_t msgQ,p2pQ; struct basilisk_message *messagetable; portable_mutex_t messagemutex; queue_t msgQ,p2pQ;
void *ctx[8]; void *ctx;
uint8_t *pingbuf; uint8_t *pingbuf;
struct basilisk_request DEXaccept; struct basilisk_request DEXaccept;
FILE *dexfp; FILE *dexfp;

19
iguana/iguana_mofn.c

@ -249,24 +249,17 @@ void *bitcoin_ctx()
void iguana_fixsecp(struct supernet_info *myinfo) void iguana_fixsecp(struct supernet_info *myinfo)
{ {
int32_t i; myinfo->ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);
for (i=0; i<sizeof(myinfo->ctx)/sizeof(*myinfo->ctx); i++) secp256k1_pedersen_context_initialize(myinfo->ctx);
{ secp256k1_rangeproof_context_initialize(myinfo->ctx);
myinfo->ctx[i] = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);
secp256k1_pedersen_context_initialize(myinfo->ctx[i]);
secp256k1_rangeproof_context_initialize(myinfo->ctx[i]);
}
} }
void libgfshare_init(struct supernet_info *myinfo,uint8_t _logs[256],uint8_t _exps[510]) void libgfshare_init(struct supernet_info *myinfo,uint8_t _logs[256],uint8_t _exps[510])
{ {
uint32_t i,x = 1; uint32_t i,x = 1;
for (i=0; i<sizeof(myinfo->ctx)/sizeof(*myinfo->ctx); i++) myinfo->ctx = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY);
{ secp256k1_pedersen_context_initialize(myinfo->ctx);
myinfo->ctx[i] = secp256k1_context_create(SECP256K1_CONTEXT_SIGN | SECP256K1_CONTEXT_VERIFY); secp256k1_rangeproof_context_initialize(myinfo->ctx);
secp256k1_pedersen_context_initialize(myinfo->ctx[i]);
secp256k1_rangeproof_context_initialize(myinfo->ctx[i]);
}
for (i=0; i<255; i++) for (i=0; i<255; i++)
{ {
_exps[i] = x; _exps[i] = x;

3
iguana/iguana_notary.c

@ -318,8 +318,9 @@ void iguana_dPoWupdate(struct supernet_info *myinfo,struct dpow_info *dp)
dpow_srcupdate(myinfo,dp,dp->lastheight++,blockhash,(uint32_t)time(NULL),blocktime); dpow_srcupdate(myinfo,dp,dp->lastheight++,blockhash,(uint32_t)time(NULL),blocktime);
} }
} }
else else if ( time(NULL) > dp->lastsrcupdate+60 || height != dp->lastheight )
{ {
dp->lastsrcupdate = (uint32_t)time(NULL);
dp->lastheight = height; dp->lastheight = height;
blockhash = dpow_getblockhash(myinfo,src,dp->lastheight); blockhash = dpow_getblockhash(myinfo,src,dp->lastheight);
dpow_srcupdate(myinfo,dp,dp->lastheight,blockhash,(uint32_t)time(NULL),blocktime); dpow_srcupdate(myinfo,dp,dp->lastheight,blockhash,(uint32_t)time(NULL),blocktime);

8
iguana/main.c

@ -77,11 +77,11 @@ void SuperNET_hex2str(char *str,uint8_t *hex,int32_t len)
void *bitcoin_ctx(); void *bitcoin_ctx();
struct supernet_info *SuperNET_MYINFO(char *passphrase) struct supernet_info *SuperNET_MYINFO(char *passphrase)
{ {
int32_t i; //int32_t i;
if ( MYINFO.ctx[0] == 0 ) if ( MYINFO.ctx == 0 )
{ {
for (i=0; i<sizeof(MYINFO.ctx)/sizeof(*MYINFO.ctx); i++) //for (i=0; i<sizeof(MYINFO.ctx)/sizeof(*MYINFO.ctx); i++)
MYINFO.ctx[i] = bitcoin_ctx(); // MYINFO.ctx[i] = bitcoin_ctx();
OS_randombytes(MYINFO.privkey.bytes,sizeof(MYINFO.privkey)); OS_randombytes(MYINFO.privkey.bytes,sizeof(MYINFO.privkey));
MYINFO.myaddr.pubkey = curve25519(MYINFO.privkey,curve25519_basepoint9()); MYINFO.myaddr.pubkey = curve25519(MYINFO.privkey,curve25519_basepoint9());
printf("SuperNET_MYINFO: generate session keypair\n"); printf("SuperNET_MYINFO: generate session keypair\n");

4
includes/iguana_structs.h

@ -252,7 +252,7 @@ struct iguana_counts
struct iguana_blocks struct iguana_blocks
{ {
char coin[8]; char coin[16];
struct iguanakv *db; struct iguanakv *db;
struct iguana_block *hash; struct iguana_block *hash;
int32_t maxblocks,initblocks,hashblocks,pending,issuedblocks,recvblocks,emitblocks,parsedblocks,dirty; int32_t maxblocks,initblocks,hashblocks,pending,issuedblocks,recvblocks,emitblocks,parsedblocks,dirty;
@ -414,7 +414,7 @@ struct basilisk_spend { bits256 txid,spentfrom; uint64_t relaymask,value; uint32
struct basilisk_unspent { bits256 txid; uint64_t value,relaymask; uint32_t unspentind,timestamp; int32_t RTheight,height,spentheight; int16_t status,hdrsi,vout,spendlen; char symbol[16]; uint8_t script[256]; }; struct basilisk_unspent { bits256 txid; uint64_t value,relaymask; uint32_t unspentind,timestamp; int32_t RTheight,height,spentheight; int16_t status,hdrsi,vout,spendlen; char symbol[16]; uint8_t script[256]; };
struct iguana_waddress { UT_hash_handle hh; uint64_t balance; uint16_t scriptlen; uint8_t rmd160[20],pubkey[33],wiftype,addrtype; bits256 privkey; char symbol[8],coinaddr[36],wifstr[54]; uint8_t redeemScript[]; }; struct iguana_waddress { UT_hash_handle hh; uint64_t balance; uint16_t scriptlen; uint8_t rmd160[20],pubkey[33],wiftype,addrtype; bits256 privkey; char symbol[16],coinaddr[36],wifstr[54]; uint8_t redeemScript[]; };
struct iguana_waccount { UT_hash_handle hh; struct iguana_waddress *waddr,*current; char account[]; }; struct iguana_waccount { UT_hash_handle hh; struct iguana_waddress *waddr,*current; char account[]; };
struct iguana_wallet { UT_hash_handle hh; struct iguana_waccount *wacct; }; struct iguana_wallet { UT_hash_handle hh; struct iguana_waccount *wacct; };

28
marketmaker.sln

@ -0,0 +1,28 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 14
VisualStudioVersion = 14.0.25420.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "marketmaker", "marketmaker.vcxproj", "{BE4A118A-115D-44B5-B9D9-AD17C1C1AAE8}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{BE4A118A-115D-44B5-B9D9-AD17C1C1AAE8}.Debug|x64.ActiveCfg = Debug|x64
{BE4A118A-115D-44B5-B9D9-AD17C1C1AAE8}.Debug|x64.Build.0 = Debug|x64
{BE4A118A-115D-44B5-B9D9-AD17C1C1AAE8}.Debug|x86.ActiveCfg = Debug|Win32
{BE4A118A-115D-44B5-B9D9-AD17C1C1AAE8}.Debug|x86.Build.0 = Debug|Win32
{BE4A118A-115D-44B5-B9D9-AD17C1C1AAE8}.Release|x64.ActiveCfg = Release|x64
{BE4A118A-115D-44B5-B9D9-AD17C1C1AAE8}.Release|x64.Build.0 = Release|x64
{BE4A118A-115D-44B5-B9D9-AD17C1C1AAE8}.Release|x86.ActiveCfg = Release|Win32
{BE4A118A-115D-44B5-B9D9-AD17C1C1AAE8}.Release|x86.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

257
marketmaker.vcxproj

@ -0,0 +1,257 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|x64">
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|x64">
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{BE4A118A-115D-44B5-B9D9-AD17C1C1AAE8}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v140</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="Shared">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>$(ProjectDir)\includes;$(ProjectDir)\includes\curl;$(IncludePath)</IncludePath>
<LibraryPath>$(ProjectDir)\OSlibs\win;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LinkIncremental>true</LinkIncremental>
<IncludePath>$(SolutionDir)/includes;$(SolutionDir)/includes/curl;$(IncludePath)</IncludePath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<LinkIncremental>false</LinkIncremental>
<IncludePath>$(ProjectDir)\includes;$(ProjectDir)\includes\curl;$(IncludePath)</IncludePath>
<LibraryPath>$(ProjectDir)\OSlibs\win;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<LinkIncremental>false</LinkIncremental>
<EmbedManifest>false</EmbedManifest>
<IncludePath>$(ProjectDir)\includes;$(ProjectDir)\includes\curl;$(IncludePath)</IncludePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level2</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NATIVE_WINDOWS;WIN32;_DEBUG;_CONSOLE;IGUANA_LOG2PACKETSIZE=20;IGUANA_MAXPACKETSIZE=1572864;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StructMemberAlignment>1Byte</StructMemberAlignment>
<AdditionalIncludeDirectories>.\iguana;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>Ws2_32.lib;pthreadVC2.lib;nanomsg.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>.\iguana;.\OSlibs\win;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<ClCompile>
<PrecompiledHeader>
</PrecompiledHeader>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;NATIVE_WINDOWS;WIN32;IGUANA_LOG2PACKETSIZE=20;IGUANA_MAXPACKETSIZE=1572864;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StructMemberAlignment>1Byte</StructMemberAlignment>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>.\OSlibs\win\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>pthread_lib.lib;Ws2_32.lib;nanomsg.lib;libcurl.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;NATIVE_WINDOWS;WIN32;_CONSOLE;NDEBUG;IGUANA_LOG2PACKETSIZE=20;IGUANA_MAXPACKETSIZE=1572864;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StructMemberAlignment>1Byte</StructMemberAlignment>
</ClCompile>
<Link>
<TargetMachine>MachineX86</TargetMachine>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<PrecompiledHeader>
</PrecompiledHeader>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN64;_WIN64;_CRT_SECURE_NO_WARNINGS;NATIVE_WINDOWS;WIN32;WIN32_LEAN_AND_MEAN;_CONSOLE;NDEBUG;IGUANA_LOG2PACKETSIZE=20;IGUANA_MAXPACKETSIZE=1572864;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StructMemberAlignment>1Byte</StructMemberAlignment>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>Ws2_32.lib;Advapi32.lib;$(SolutionDir)OSlibs\win\x64\pthread_lib.lib;libcurl.lib;nanomsg.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>.\OSlibs\win\x64\release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="basilisk\basilisk.h" />
<ClInclude Include="crypto777\jpeg\cderror.h" />
<ClInclude Include="crypto777\jpeg\cdjpeg.h" />
<ClInclude Include="crypto777\jpeg\jconfig.h" />
<ClInclude Include="crypto777\jpeg\jdct.h" />
<ClInclude Include="crypto777\jpeg\jerror.h" />
<ClInclude Include="crypto777\jpeg\jinclude.h" />
<ClInclude Include="crypto777\jpeg\jmemsys.h" />
<ClInclude Include="crypto777\jpeg\jmorecfg.h" />
<ClInclude Include="crypto777\jpeg\jpegint.h" />
<ClInclude Include="crypto777\jpeg\jpeglib.h" />
<ClInclude Include="crypto777\jpeg\jversion.h" />
<ClInclude Include="crypto777\jpeg\transupp.h" />
<ClInclude Include="crypto777\OS_portable.h" />
<ClInclude Include="datachain\datachain.h" />
<ClInclude Include="gecko\gecko.h" />
<ClInclude Include="iguana\exchanges777.h" />
<ClInclude Include="iguana\iguana777.h" />
<ClInclude Include="iguana\mini-gmp.h" />
<ClInclude Include="includes\iguana_defines.h" />
<ClInclude Include="includes\iguana_funcs.h" />
<ClInclude Include="includes\iguana_structs.h" />
<ClInclude Include="OSlibs\win\mingw.h" />
<ClInclude Include="OSlibs\win\mman.h" />
<ClInclude Include="OSlibs\win\pthread.h" />
<ClInclude Include="targetver.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="crypto777\bitcoind_RPC.c" />
<ClCompile Include="crypto777\cJSON.c" />
<ClCompile Include="crypto777\curve25519-donna.c" />
<ClCompile Include="crypto777\curve25519.c" />
<ClCompile Include="crypto777\hmac_sha512.c" />
<ClCompile Include="crypto777\iguana_OS.c" />
<ClCompile Include="crypto777\iguana_utils.c" />
<ClCompile Include="crypto777\inet.c" />
<ClCompile Include="crypto777\jpeg\jaricom.c" />
<ClCompile Include="crypto777\jpeg\jcapimin.c" />
<ClCompile Include="crypto777\jpeg\jcapistd.c" />
<ClCompile Include="crypto777\jpeg\jcarith.c" />
<ClCompile Include="crypto777\jpeg\jccoefct.c" />
<ClCompile Include="crypto777\jpeg\jccolor.c" />
<ClCompile Include="crypto777\jpeg\jcdctmgr.c" />
<ClCompile Include="crypto777\jpeg\jchuff.c" />
<ClCompile Include="crypto777\jpeg\jcinit.c" />
<ClCompile Include="crypto777\jpeg\jcmainct.c" />
<ClCompile Include="crypto777\jpeg\jcmarker.c" />
<ClCompile Include="crypto777\jpeg\jcmaster.c" />
<ClCompile Include="crypto777\jpeg\jcomapi.c" />
<ClCompile Include="crypto777\jpeg\jcparam.c" />
<ClCompile Include="crypto777\jpeg\jcprepct.c" />
<ClCompile Include="crypto777\jpeg\jcsample.c" />
<ClCompile Include="crypto777\jpeg\jctrans.c" />
<ClCompile Include="crypto777\jpeg\jdapimin.c" />
<ClCompile Include="crypto777\jpeg\jdapistd.c" />
<ClCompile Include="crypto777\jpeg\jdarith.c" />
<ClCompile Include="crypto777\jpeg\jdatadst.c" />
<ClCompile Include="crypto777\jpeg\jdatasrc.c" />
<ClCompile Include="crypto777\jpeg\jdcoefct.c" />
<ClCompile Include="crypto777\jpeg\jdcolor.c" />
<ClCompile Include="crypto777\jpeg\jddctmgr.c" />
<ClCompile Include="crypto777\jpeg\jdhuff.c" />
<ClCompile Include="crypto777\jpeg\jdinput.c" />
<ClCompile Include="crypto777\jpeg\jdmainct.c" />
<ClCompile Include="crypto777\jpeg\jdmarker.c" />
<ClCompile Include="crypto777\jpeg\jdmaster.c" />
<ClCompile Include="crypto777\jpeg\jdmerge.c" />
<ClCompile Include="crypto777\jpeg\jdpostct.c" />
<ClCompile Include="crypto777\jpeg\jdsample.c" />
<ClCompile Include="crypto777\jpeg\jdtrans.c" />
<ClCompile Include="crypto777\jpeg\jerror.c" />
<ClCompile Include="crypto777\jpeg\jfdctflt.c" />
<ClCompile Include="crypto777\jpeg\jfdctfst.c" />
<ClCompile Include="crypto777\jpeg\jfdctint.c" />
<ClCompile Include="crypto777\jpeg\jidctflt.c" />
<ClCompile Include="crypto777\jpeg\jidctfst.c" />
<ClCompile Include="crypto777\jpeg\jidctint.c" />
<ClCompile Include="crypto777\jpeg\jmemmgr.c" />
<ClCompile Include="crypto777\jpeg\jquant1.c" />
<ClCompile Include="crypto777\jpeg\jquant2.c" />
<ClCompile Include="crypto777\jpeg\jutils.c" />
<ClCompile Include="crypto777\jpeg\unix\jmemname.c" />
<ClCompile Include="crypto777\OS_nonportable.c" />
<ClCompile Include="crypto777\OS_portable.c" />
<ClCompile Include="crypto777\OS_time.c" />
<ClCompile Include="crypto777\ramcoder.c" />
<ClCompile Include="crypto777\SaM.c" />
<ClCompile Include="crypto777\scrypt.c" />
<ClCompile Include="crypto777\tweetnacl.c" />
<ClCompile Include="iguana\exchanges\mm.c" />
<ClCompile Include="iguana\mini-gmp.c" />
<ClCompile Include="iguana\secp256k1\src\secp256k1.c" />
<ClCompile Include="OSlibs\win\mingw.c" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

297
marketmaker.vcxproj.filters

@ -0,0 +1,297 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="basilisk\basilisk.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypto777\jpeg\cderror.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypto777\jpeg\cdjpeg.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypto777\jpeg\jconfig.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypto777\jpeg\jdct.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypto777\jpeg\jerror.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypto777\jpeg\jinclude.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypto777\jpeg\jmemsys.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypto777\jpeg\jmorecfg.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypto777\jpeg\jpegint.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypto777\jpeg\jpeglib.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypto777\jpeg\jversion.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypto777\jpeg\transupp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="crypto777\OS_portable.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="datachain\datachain.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="gecko\gecko.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="iguana\exchanges777.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="iguana\iguana777.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="iguana\mini-gmp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="includes\iguana_defines.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="includes\iguana_funcs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="includes\iguana_structs.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="OSlibs\win\mingw.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="OSlibs\win\mman.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="OSlibs\win\pthread.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="targetver.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="iguana\secp256k1\src\secp256k1.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="iguana\exchanges\mm.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="OSlibs\win\mingw.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\bitcoind_RPC.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\cJSON.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\curve25519-donna.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\curve25519.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\hmac_sha512.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\iguana_OS.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\iguana_utils.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\inet.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jaricom.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jcapimin.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jcapistd.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jcarith.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jccoefct.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jccolor.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jcdctmgr.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jchuff.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jcinit.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jcmainct.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jcmarker.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jcmaster.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jcomapi.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jcparam.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jcprepct.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jcsample.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jctrans.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdapimin.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdapistd.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdarith.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdatadst.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdatasrc.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdcoefct.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdcolor.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jddctmgr.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdhuff.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdinput.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdmainct.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdmarker.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdmaster.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdmerge.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdpostct.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdsample.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jdtrans.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jerror.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jfdctflt.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jfdctfst.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jfdctint.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jidctflt.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jidctfst.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jidctint.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jmemmgr.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jquant1.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jquant2.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\jutils.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\jpeg\unix\jmemname.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\OS_nonportable.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\OS_portable.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\OS_time.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\ramcoder.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\SaM.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\scrypt.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="crypto777\tweetnacl.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="iguana\mini-gmp.c">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<Text Include="ReadMe.txt" />
</ItemGroup>
</Project>
Loading…
Cancel
Save