jl777
7 years ago
committed by
GitHub
32 changed files with 1046 additions and 237 deletions
@ -0,0 +1,2 @@ |
|||||
|
curl --url "http://127.0.0.1:7776" --data "{\"conf\":\"RFOX.conf\",\"path\":\"${HOME#"/"}/.komodo/RFOX\",\"unitval\":\"20\",\"zcash\":1,\"RELAY\":-1,\"VALIDATE\":0,\"prefetchlag\":-1,\"poll\":100,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":4,\"endpend\":4,\"services\":129,\"maxpeers\":8,\"newcoin\":\"RFOX\",\"name\":\"RFOX\",\"hasheaders\":1,\"useaddmultisig\":0,\"netmagic\":\"4cad0644\",\"p2p\":32268,\"rpc\":32269,\"pubval\":60,\"p2shval\":85,\"wifval\":188,\"txfee_satoshis\":\"10000\",\"isPoS\":0,\"minoutput\":10000,\"minconfirms\":2,\"genesishash\":\"027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71\",\"protover\":170002,\"genesisblock\":\"0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a000000000000000000000000000000000000000000000000000000000000000029ab5f490f0f0f200b00000000000000000000000000000000000000000000000000000000000000fd4005000d5ba7cda5d473947263bf194285317179d2b0d307119c2e7cc4bd8ac456f0774bd52b0cd9249be9d40718b6397a4c7bbd8f2b3272fed2823cd2af4bd1632200ba4bf796727d6347b225f670f292343274cc35099466f5fb5f0cd1c105121b28213d15db2ed7bdba490b4cedc69742a57b7c25af24485e523aadbb77a0144fc76f79ef73bd8530d42b9f3b9bed1c135ad1fe152923fafe98f95f76f1615e64c4abb1137f4c31b218ba2782bc15534788dda2cc08a0ee2987c8b27ff41bd4e31cd5fb5643dfe862c9a02ca9f90c8c51a6671d681d04ad47e4b53b1518d4befafefe8cadfb912f3d03051b1efbf1dfe37b56e93a741d8dfd80d576ca250bee55fab1311fc7b3255977558cdda6f7d6f875306e43a14413facdaed2f46093e0ef1e8f8a963e1632dcbeebd8e49fd16b57d49b08f9762de89157c65233f60c8e38a1f503a48c555f8ec45dedecd574a37601323c27be597b956343107f8bd80f3a925afaf30811df83c402116bb9c1e5231c70fff899a7c82f73c902ba54da53cc459b7bf1113db65cc8f6914d3618560ea69abd13658fa7b6af92d374d6eca9529f8bd565166e4fcbf2a8dfb3c9b69539d4d2ee2e9321b85b331925df195915f2757637c2805e1d4131e1ad9ef9bc1bb1c732d8dba4738716d351ab30c996c8657bab39567ee3b29c6d054b711495c0d52e1cd5d8e55b4f0f0325b97369280755b46a02afd54be4ddd9f77c22272b8bbb17ff5118fedbae2564524e797bd28b5f74f7079d532ccc059807989f94d267f47e724b3f1ecfe00ec9e6541c961080d8891251b84b4480bc292f6a180bea089fef5bbda56e1e41390d7c0e85ba0ef530f7177413481a226465a36ef6afe1e2bca69d2078712b3912bba1a99b1fbff0d355d6ffe726d2bb6fbc103c4ac5756e5bee6e47e17424ebcbf1b63d8cb90ce2e40198b4f4198689daea254307e52a25562f4c1455340f0ffeb10f9d8e914775e37d0edca019fb1b9c6ef81255ed86bc51c5391e0591480f66e2d88c5f4fd7277697968656a9b113ab97f874fdd5f2465e5559533e01ba13ef4a8f7a21d02c30c8ded68e8c54603ab9c8084ef6d9eb4e92c75b078539e2ae786ebab6dab73a09e0aa9ac575bcefb29e930ae656e58bcb513f7e3c17e079dce4f05b5dbc18c2a872b22509740ebe6a3903e00ad1abc55076441862643f93606e3dc35e8d9f2caef3ee6be14d513b2e062b21d0061de3bd56881713a1a5c17f5ace05e1ec09da53f99442df175a49bd154aa96e4949decd52fed79ccf7ccbce32941419c314e374e4a396ac553e17b5340336a1a25c22f9e42a243ba5404450b650acfc826a6e432971ace776e15719515e1634ceb9a4a35061b668c74998d3dfb5827f6238ec015377e6f9c94f38108768cf6e5c8b132e0303fb5a200368f845ad9d46343035a6ff94031df8d8309415bb3f6cd5ede9c135fdabcc030599858d803c0f85be7661c88984d88faa3d26fb0e9aac0056a53f1b5d0baed713c853c4a2726869a0a124a8a5bbc0fc0ef80c8ae4cb53636aa02503b86a1eb9836fcc259823e2692d921d88e1ffc1e6cb2bde43939ceb3f32a611686f539f8f7c9f0bf00381f743607d40960f06d347d1cd8ac8a51969c25e37150efdf7aa4c2037a2fd0516fb444525ab157a0ed0a7412b2fa69b217fe397263153782c0f64351fbdf2678fa0dc8569912dcd8e3ccad38f34f23bbbce14c6a26ac24911b308b82c7e43062d180baeac4ba7153858365c72c63dcf5f6a5b08070b730adb017aeae925b7d0439979e2679f45ed2f25a7edcfd2fb77a8794630285ccb0a071f5cce410b46dbf9750b0354aae8b65574501cc69efb5b6a43444074fee116641bb29da56c2b4a7f456991fc92b2\",\"debug\":0,\"seedipaddr\":\"78.47.196.146\"}" |
||||
|
|
@ -0,0 +1,2 @@ |
|||||
|
|
||||
|
curl --url "http://127.0.0.1:7776" --data "{\"conf\":\"VRSC.conf\",\"path\":\"${HOME#"/"}/.komodo/VRSC\",\"unitval\":\"20\",\"zcash\":1,\"RELAY\":-1,\"VALIDATE\":0,\"prefetchlag\":-1,\"poll\":100,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":4,\"endpend\":4,\"services\":129,\"maxpeers\":8,\"newcoin\":\"VRSC\",\"name\":\"Verus\",\"hasheaders\":1,\"useaddmultisig\":0,\"netmagic\":\"91db4d20\",\"p2p\":27485,\"rpc\":27486,\"pubval\":60,\"p2shval\":85,\"wifval\":188,\"txfee_satoshis\":\"10000\",\"isPoS\":0,\"minoutput\":10000,\"minconfirms\":2,\"genesishash\":\"027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71\",\"protover\":170002,\"genesisblock\":\"0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a000000000000000000000000000000000000000000000000000000000000000029ab5f490f0f0f200b00000000000000000000000000000000000000000000000000000000000000fd4005000d5ba7cda5d473947263bf194285317179d2b0d307119c2e7cc4bd8ac456f0774bd52b0cd9249be9d40718b6397a4c7bbd8f2b3272fed2823cd2af4bd1632200ba4bf796727d6347b225f670f292343274cc35099466f5fb5f0cd1c105121b28213d15db2ed7bdba490b4cedc69742a57b7c25af24485e523aadbb77a0144fc76f79ef73bd8530d42b9f3b9bed1c135ad1fe152923fafe98f95f76f1615e64c4abb1137f4c31b218ba2782bc15534788dda2cc08a0ee2987c8b27ff41bd4e31cd5fb5643dfe862c9a02ca9f90c8c51a6671d681d04ad47e4b53b1518d4befafefe8cadfb912f3d03051b1efbf1dfe37b56e93a741d8dfd80d576ca250bee55fab1311fc7b3255977558cdda6f7d6f875306e43a14413facdaed2f46093e0ef1e8f8a963e1632dcbeebd8e49fd16b57d49b08f9762de89157c65233f60c8e38a1f503a48c555f8ec45dedecd574a37601323c27be597b956343107f8bd80f3a925afaf30811df83c402116bb9c1e5231c70fff899a7c82f73c902ba54da53cc459b7bf1113db65cc8f6914d3618560ea69abd13658fa7b6af92d374d6eca9529f8bd565166e4fcbf2a8dfb3c9b69539d4d2ee2e9321b85b331925df195915f2757637c2805e1d4131e1ad9ef9bc1bb1c732d8dba4738716d351ab30c996c8657bab39567ee3b29c6d054b711495c0d52e1cd5d8e55b4f0f0325b97369280755b46a02afd54be4ddd9f77c22272b8bbb17ff5118fedbae2564524e797bd28b5f74f7079d532ccc059807989f94d267f47e724b3f1ecfe00ec9e6541c961080d8891251b84b4480bc292f6a180bea089fef5bbda56e1e41390d7c0e85ba0ef530f7177413481a226465a36ef6afe1e2bca69d2078712b3912bba1a99b1fbff0d355d6ffe726d2bb6fbc103c4ac5756e5bee6e47e17424ebcbf1b63d8cb90ce2e40198b4f4198689daea254307e52a25562f4c1455340f0ffeb10f9d8e914775e37d0edca019fb1b9c6ef81255ed86bc51c5391e0591480f66e2d88c5f4fd7277697968656a9b113ab97f874fdd5f2465e5559533e01ba13ef4a8f7a21d02c30c8ded68e8c54603ab9c8084ef6d9eb4e92c75b078539e2ae786ebab6dab73a09e0aa9ac575bcefb29e930ae656e58bcb513f7e3c17e079dce4f05b5dbc18c2a872b22509740ebe6a3903e00ad1abc55076441862643f93606e3dc35e8d9f2caef3ee6be14d513b2e062b21d0061de3bd56881713a1a5c17f5ace05e1ec09da53f99442df175a49bd154aa96e4949decd52fed79ccf7ccbce32941419c314e374e4a396ac553e17b5340336a1a25c22f9e42a243ba5404450b650acfc826a6e432971ace776e15719515e1634ceb9a4a35061b668c74998d3dfb5827f6238ec015377e6f9c94f38108768cf6e5c8b132e0303fb5a200368f845ad9d46343035a6ff94031df8d8309415bb3f6cd5ede9c135fdabcc030599858d803c0f85be7661c88984d88faa3d26fb0e9aac0056a53f1b5d0baed713c853c4a2726869a0a124a8a5bbc0fc0ef80c8ae4cb53636aa02503b86a1eb9836fcc259823e2692d921d88e1ffc1e6cb2bde43939ceb3f32a611686f539f8f7c9f0bf00381f743607d40960f06d347d1cd8ac8a51969c25e37150efdf7aa4c2037a2fd0516fb444525ab157a0ed0a7412b2fa69b217fe397263153782c0f64351fbdf2678fa0dc8569912dcd8e3ccad38f34f23bbbce14c6a26ac24911b308b82c7e43062d180baeac4ba7153858365c72c63dcf5f6a5b08070b730adb017aeae925b7d0439979e2679f45ed2f25a7edcfd2fb77a8794630285ccb0a071f5cce410b46dbf9750b0354aae8b65574501cc69efb5b6a43444074fee116641bb29da56c2b4a7f456991fc92b2\",\"debug\":0,\"seedipaddr\":\"54.39.23.248\"}" |
@ -0,0 +1 @@ |
|||||
|
curl --url "http://127.0.0.1:7776" --data "{\"conf\":\"ZILLA.conf\",\"path\":\"${HOME#"/"}/.komodo/ZILLA\",\"unitval\":\"20\",\"zcash\":1,\"RELAY\":-1,\"VALIDATE\":0,\"prefetchlag\":-1,\"poll\":100,\"active\":1,\"agent\":\"iguana\",\"method\":\"addcoin\",\"startpend\":4,\"endpend\":4,\"services\":129,\"maxpeers\":8,\"newcoin\":\"ZILLA\",\"name\":\"ZILLA\",\"hasheaders\":1,\"useaddmultisig\":0,\"netmagic\":\"91db4d20\",\"p2p\":10040,\"rpc\":10041,\"pubval\":60,\"p2shval\":85,\"wifval\":188,\"txfee_satoshis\":\"10000\",\"isPoS\":0,\"minoutput\":10000,\"minconfirms\":2,\"genesishash\":\"027e3758c3a65b12aa1046462b486d0a63bfa1beae327897f56c5cfb7daaae71\",\"protover\":170002,\"genesisblock\":\"0100000000000000000000000000000000000000000000000000000000000000000000003ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a000000000000000000000000000000000000000000000000000000000000000029ab5f490f0f0f200b00000000000000000000000000000000000000000000000000000000000000fd4005000d5ba7cda5d473947263bf194285317179d2b0d307119c2e7cc4bd8ac456f0774bd52b0cd9249be9d40718b6397a4c7bbd8f2b3272fed2823cd2af4bd1632200ba4bf796727d6347b225f670f292343274cc35099466f5fb5f0cd1c105121b28213d15db2ed7bdba490b4cedc69742a57b7c25af24485e523aadbb77a0144fc76f79ef73bd8530d42b9f3b9bed1c135ad1fe152923fafe98f95f76f1615e64c4abb1137f4c31b218ba2782bc15534788dda2cc08a0ee2987c8b27ff41bd4e31cd5fb5643dfe862c9a02ca9f90c8c51a6671d681d04ad47e4b53b1518d4befafefe8cadfb912f3d03051b1efbf1dfe37b56e93a741d8dfd80d576ca250bee55fab1311fc7b3255977558cdda6f7d6f875306e43a14413facdaed2f46093e0ef1e8f8a963e1632dcbeebd8e49fd16b57d49b08f9762de89157c65233f60c8e38a1f503a48c555f8ec45dedecd574a37601323c27be597b956343107f8bd80f3a925afaf30811df83c402116bb9c1e5231c70fff899a7c82f73c902ba54da53cc459b7bf1113db65cc8f6914d3618560ea69abd13658fa7b6af92d374d6eca9529f8bd565166e4fcbf2a8dfb3c9b69539d4d2ee2e9321b85b331925df195915f2757637c2805e1d4131e1ad9ef9bc1bb1c732d8dba4738716d351ab30c996c8657bab39567ee3b29c6d054b711495c0d52e1cd5d8e55b4f0f0325b97369280755b46a02afd54be4ddd9f77c22272b8bbb17ff5118fedbae2564524e797bd28b5f74f7079d532ccc059807989f94d267f47e724b3f1ecfe00ec9e6541c961080d8891251b84b4480bc292f6a180bea089fef5bbda56e1e41390d7c0e85ba0ef530f7177413481a226465a36ef6afe1e2bca69d2078712b3912bba1a99b1fbff0d355d6ffe726d2bb6fbc103c4ac5756e5bee6e47e17424ebcbf1b63d8cb90ce2e40198b4f4198689daea254307e52a25562f4c1455340f0ffeb10f9d8e914775e37d0edca019fb1b9c6ef81255ed86bc51c5391e0591480f66e2d88c5f4fd7277697968656a9b113ab97f874fdd5f2465e5559533e01ba13ef4a8f7a21d02c30c8ded68e8c54603ab9c8084ef6d9eb4e92c75b078539e2ae786ebab6dab73a09e0aa9ac575bcefb29e930ae656e58bcb513f7e3c17e079dce4f05b5dbc18c2a872b22509740ebe6a3903e00ad1abc55076441862643f93606e3dc35e8d9f2caef3ee6be14d513b2e062b21d0061de3bd56881713a1a5c17f5ace05e1ec09da53f99442df175a49bd154aa96e4949decd52fed79ccf7ccbce32941419c314e374e4a396ac553e17b5340336a1a25c22f9e42a243ba5404450b650acfc826a6e432971ace776e15719515e1634ceb9a4a35061b668c74998d3dfb5827f6238ec015377e6f9c94f38108768cf6e5c8b132e0303fb5a200368f845ad9d46343035a6ff94031df8d8309415bb3f6cd5ede9c135fdabcc030599858d803c0f85be7661c88984d88faa3d26fb0e9aac0056a53f1b5d0baed713c853c4a2726869a0a124a8a5bbc0fc0ef80c8ae4cb53636aa02503b86a1eb9836fcc259823e2692d921d88e1ffc1e6cb2bde43939ceb3f32a611686f539f8f7c9f0bf00381f743607d40960f06d347d1cd8ac8a51969c25e37150efdf7aa4c2037a2fd0516fb444525ab157a0ed0a7412b2fa69b217fe397263153782c0f64351fbdf2678fa0dc8569912dcd8e3ccad38f34f23bbbce14c6a26ac24911b308b82c7e43062d180baeac4ba7153858365c72c63dcf5f6a5b08070b730adb017aeae925b7d0439979e2679f45ed2f25a7edcfd2fb77a8794630285ccb0a071f5cce410b46dbf9750b0354aae8b65574501cc69efb5b6a43444074fee116641bb29da56c2b4a7f456991fc92b2\",\"debug\":0,\"seedipaddr\":\"54.39.23.248\"}" |
@ -0,0 +1,254 @@ |
|||||
|
|
||||
|
/******************************************************************************
|
||||
|
* Copyright © 2014-2018 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. * |
||||
|
* * |
||||
|
******************************************************************************/ |
||||
|
//
|
||||
|
// LP_mpnet.c
|
||||
|
// marketmaker
|
||||
|
//
|
||||
|
|
||||
|
bits256 MPNET_txids[1024]; |
||||
|
int32_t num_MPNET_txids; |
||||
|
|
||||
|
int32_t LP_tradecommand(int32_t from_mpnet,void *ctx,char *myipaddr,int32_t pubsock,cJSON *argjson,uint8_t *data,int32_t datalen); |
||||
|
int32_t LP_quoteparse(struct LP_quoteinfo *qp,cJSON *argjson); |
||||
|
void LP_gtc_addorder(struct LP_quoteinfo *qp); |
||||
|
char *LP_withdraw(struct iguana_info *coin,cJSON *argjson); |
||||
|
|
||||
|
int32_t LP_mpnet_find(bits256 txid) |
||||
|
{ |
||||
|
int32_t i; |
||||
|
for (i=0; i<num_MPNET_txids; i++) |
||||
|
if ( bits256_cmp(txid,MPNET_txids[i]) == 0 ) |
||||
|
return(i); |
||||
|
return(-1); |
||||
|
} |
||||
|
|
||||
|
int32_t LP_mpnet_add(bits256 txid) |
||||
|
{ |
||||
|
if ( num_MPNET_txids < sizeof(MPNET_txids)/sizeof(*MPNET_txids) ) |
||||
|
{ |
||||
|
MPNET_txids[num_MPNET_txids++] = txid; |
||||
|
return(num_MPNET_txids); |
||||
|
} |
||||
|
printf("MPNET_txids[] overflow\n"); |
||||
|
return(-1); |
||||
|
} |
||||
|
|
||||
|
int32_t LP_mpnet_remove(bits256 txid) |
||||
|
{ |
||||
|
int32_t i; |
||||
|
if ( (i= LP_mpnet_find(txid)) >= 0 ) |
||||
|
{ |
||||
|
MPNET_txids[i] = MPNET_txids[--num_MPNET_txids]; |
||||
|
return(i); |
||||
|
} |
||||
|
return(-1); |
||||
|
} |
||||
|
|
||||
|
int32_t LP_mpnet_addorder(struct LP_quoteinfo *qp) |
||||
|
{ |
||||
|
uint64_t destvalue,destvalue2; |
||||
|
if ( LP_iseligible(&destvalue,&destvalue2,0,qp->destcoin,qp->desttxid,qp->destvout,qp->destsatoshis,qp->feetxid,qp->feevout) > 0 ) |
||||
|
{ |
||||
|
LP_gtc_addorder(qp); |
||||
|
return(0); |
||||
|
} |
||||
|
return(-1); |
||||
|
} |
||||
|
|
||||
|
void LP_mpnet_init() // problem is coins not enabled yet
|
||||
|
{ |
||||
|
char fname[1024],line[8192]; FILE *fp; struct LP_quoteinfo Q; cJSON *argjson; |
||||
|
sprintf(fname,"%s/GTC/orders",GLOBAL_DBDIR), OS_compatible_path(fname); |
||||
|
if ( (fp= fopen(fname,"rb+")) != 0 ) |
||||
|
{ |
||||
|
while ( fgets(line,sizeof(line),fp) > 0 ) |
||||
|
{ |
||||
|
if ( (argjson= cJSON_Parse(line)) != 0 ) |
||||
|
{ |
||||
|
if ( LP_quoteparse(&Q,argjson) == 0 ) |
||||
|
{ |
||||
|
if ( LP_mpnet_addorder(&Q) == 0 ) |
||||
|
printf("GTC %s",line); |
||||
|
} |
||||
|
free_json(argjson); |
||||
|
} |
||||
|
} |
||||
|
fclose(fp); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
void LP_mpnet_send(int32_t localcopy,char *msg,int32_t sendflag,char *otheraddr) |
||||
|
{ |
||||
|
char fname[1024]; int32_t len; FILE *fp; char *hexstr,*retstr; cJSON *argjson,*outputs,*item; struct iguana_info *coin; uint8_t linebuf[8192]; |
||||
|
if ( localcopy != 0 ) |
||||
|
{ |
||||
|
sprintf(fname,"%s/GTC/orders",GLOBAL_DBDIR), OS_compatible_path(fname); |
||||
|
if ( (fp= fopen(fname,"rb+")) == 0 ) |
||||
|
fp = fopen(fname,"wb+"); |
||||
|
else fseek(fp,0,SEEK_END); |
||||
|
fprintf(fp,"%s\n",msg); |
||||
|
fclose(fp); |
||||
|
} |
||||
|
if ( G.mpnet != 0 && sendflag != 0 && (coin= LP_coinfind("CHIPS")) != 0 && coin->inactive == 0 ) |
||||
|
{ |
||||
|
len = MMJSON_encode(linebuf,msg); |
||||
|
//curl --url "http://127.0.0.1:7783" --data "{\"userpass\":\"$userpass\",\"method\":\"withdraw\",\"coin\":\"CHIPS\",\"outputs\":[{\"RHV2As4rox97BuE3LK96vMeNY8VsGRTmBj\":0.0001}],\"opreturn\":\"deadbeef\"}"
|
||||
|
if ( len > 0 ) |
||||
|
{ |
||||
|
argjson = cJSON_CreateObject(); |
||||
|
outputs = cJSON_CreateArray(); |
||||
|
if ( otheraddr != 0 && otheraddr[0] != 0 ) |
||||
|
{ |
||||
|
item = cJSON_CreateObject(); |
||||
|
jaddnum(item,otheraddr,dstr(10000)); |
||||
|
jaddi(outputs,item); |
||||
|
} |
||||
|
item = cJSON_CreateObject(); |
||||
|
jaddnum(item,coin->smartaddr,dstr(10000)); |
||||
|
jaddi(outputs,item); |
||||
|
jadd(argjson,"outputs",outputs); |
||||
|
jaddnum(argjson,"broadcast",1); |
||||
|
jaddstr(argjson,"coin",coin->symbol); |
||||
|
hexstr = calloc(1,len*2 + 1); |
||||
|
init_hexbytes_noT(hexstr,linebuf,len); |
||||
|
jaddstr(argjson,"opreturn",hexstr); |
||||
|
free(hexstr); |
||||
|
retstr = LP_withdraw(coin,argjson); |
||||
|
free_json(argjson); |
||||
|
if ( retstr != 0 ) |
||||
|
{ |
||||
|
//printf("mpnet.%s\n",retstr);
|
||||
|
free(retstr); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
cJSON *LP_mpnet_parse(struct iguana_info *coin,bits256 txid) |
||||
|
{ |
||||
|
cJSON *txobj,*vouts,*sobj,*argjson = 0; char *decodestr,*hexstr; uint8_t *buf,linebuf[8192]; int32_t len,n,hlen; |
||||
|
if ( (txobj= LP_gettx("mpnet",coin->symbol,txid,0)) != 0 ) |
||||
|
{ |
||||
|
if ( (vouts= jarray(&n,txobj,"vout")) != 0 ) |
||||
|
{ |
||||
|
if ( (sobj= jobj(jitem(vouts,n-1),"scriptPubKey")) != 0 && (hexstr= jstr(sobj,"hex")) != 0 && (hlen= strlen(hexstr)) < sizeof(linebuf)*2 ) |
||||
|
{ |
||||
|
len = (hlen >> 1); |
||||
|
decode_hex(linebuf,len,hexstr); |
||||
|
buf = linebuf; |
||||
|
//printf("hexstr.(%s)\n",hexstr);
|
||||
|
if ( *buf == 0x6a ) |
||||
|
{ |
||||
|
buf++, len--; |
||||
|
if ( *buf == 0x4d ) |
||||
|
{ |
||||
|
buf++, len--; |
||||
|
n = buf[0] + buf[1]*256; |
||||
|
buf += 2, len -= 2; |
||||
|
if ( n == len ) |
||||
|
{ |
||||
|
if ( (decodestr= MMJSON_decode(buf,len)) != 0 ) |
||||
|
argjson = cJSON_Parse(decodestr); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
if ( 0 && argjson == 0 ) |
||||
|
printf("unhandled case.(%s)\n",hexstr); |
||||
|
} |
||||
|
} |
||||
|
if ( 0 && argjson == 0 ) |
||||
|
printf("unhandled tx.(%s)\n",jprint(txobj,0)); |
||||
|
free_json(txobj); |
||||
|
} |
||||
|
return(argjson); |
||||
|
} |
||||
|
|
||||
|
// 2151978
|
||||
|
// 404bc4ac452db07ed16376b3d7e77dbfc22b4a68f7243797125bd0d3bdddf8d1
|
||||
|
// 893b46634456034a6d5d73b67026aa157b5e2addbfc6344dfbea6bae85f7dde0
|
||||
|
// 717c7ef9de8504bd331f3ef52ed0a16ea0e070434e12cb4d63f5f081e999c43d dup
|
||||
|
|
||||
|
void LP_mpnet_process(void *ctx,char *myipaddr,int32_t pubsock,struct iguana_info *coin,bits256 txid) |
||||
|
{ |
||||
|
cJSON *argjson; char str[65]; |
||||
|
if ( LP_mpnet_find(txid) < 0 ) |
||||
|
{ |
||||
|
//printf("unique %s\n",bits256_str(str,txid));
|
||||
|
if ( (argjson= LP_mpnet_parse(coin,txid)) != 0 ) |
||||
|
{ |
||||
|
//printf("MPNET.(%s)\n",jprint(argjson,0));
|
||||
|
LP_tradecommand(1,ctx,myipaddr,pubsock,argjson,0,0); |
||||
|
free_json(argjson); |
||||
|
} |
||||
|
LP_mpnet_add(txid); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
cJSON *LP_mpnet_get(void *ctx,char *myipaddr,int32_t pubsock,struct iguana_info *coin) |
||||
|
{ |
||||
|
static int32_t lastheight; static bits256 lasthash; |
||||
|
int32_t i,n=0,numtx,checkht = 0,height = 0; bits256 latesthash,hash,txid,zero; char hashstr[65],str[65]; cJSON *txs,*blockjson; |
||||
|
memset(zero.bytes,0,sizeof(zero)); |
||||
|
latesthash = LP_getbestblockhash(coin); |
||||
|
bits256_str(hashstr,latesthash); |
||||
|
if ( (blockjson= LP_blockjson(&checkht,coin->symbol,hashstr,0)) != 0 ) |
||||
|
{ |
||||
|
hash = latesthash; |
||||
|
while ( bits256_cmp(lasthash,hash) != 0 && n++ < 3 ) |
||||
|
{ |
||||
|
if ( (txs= jarray(&numtx,blockjson,"tx")) != 0 ) |
||||
|
{ |
||||
|
for (i=0; i<numtx; i++) |
||||
|
{ |
||||
|
txid = jbits256i(txs,i); |
||||
|
LP_mpnet_process(ctx,myipaddr,pubsock,coin,txid); |
||||
|
LP_mpnet_remove(txid); |
||||
|
//printf("ht.%d n.%d i.%d %s\n",checkht,n,i,bits256_str(str,txid));
|
||||
|
} |
||||
|
} |
||||
|
hash = jbits256(blockjson,"previousblockhash"); |
||||
|
free_json(blockjson); |
||||
|
bits256_str(hashstr,hash); |
||||
|
if ( (blockjson= LP_blockjson(&checkht,coin->symbol,hashstr,0)) == 0 ) |
||||
|
break; |
||||
|
} |
||||
|
lasthash = latesthash; |
||||
|
if ( blockjson != 0 ) |
||||
|
free_json(blockjson); |
||||
|
if ( (txs= LP_getmempool(coin->symbol,coin->smartaddr,zero,zero)) != 0 ) |
||||
|
{ |
||||
|
numtx = cJSON_GetArraySize(txs); |
||||
|
for (i=0; i<numtx; i++) |
||||
|
{ |
||||
|
txid = jbits256i(txs,i); |
||||
|
LP_mpnet_process(ctx,myipaddr,pubsock,coin,txid); |
||||
|
//printf("mp i.%d %s\n",i,bits256_str(str,txid));
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
return(0); |
||||
|
} |
||||
|
|
||||
|
void LP_mpnet_check(void *ctx,char *myipaddr,int32_t pubsock) |
||||
|
{ |
||||
|
static uint32_t lasttime; |
||||
|
struct iguana_info *coin = LP_coinfind("CHIPS"); |
||||
|
if ( coin != 0 && coin->inactive == 0 && time(NULL) > lasttime+5 ) |
||||
|
{ |
||||
|
LP_mpnet_get(ctx,myipaddr,pubsock,coin); |
||||
|
lasttime = (uint32_t)time(NULL); |
||||
|
} |
||||
|
} |
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue