test
This commit is contained in:
@@ -377,193 +377,6 @@ const char *komodo_opreturn(int32_t height,uint64_t value,uint8_t *opretbuf,int3
|
|||||||
return(typestr);
|
return(typestr);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef pollmethod
|
|
||||||
void komodo_gateway_voutupdate(char *symbol,int32_t isspecial,int32_t height,int32_t txi,bits256 txid,int32_t vout,int32_t numvouts,uint64_t value,uint8_t *script,int32_t len)
|
|
||||||
{
|
|
||||||
int32_t i,opretlen,offset = 0; uint256 zero,utxid; const char *typestr;
|
|
||||||
typestr = "unknown";
|
|
||||||
memcpy(&utxid,&txid,sizeof(utxid));
|
|
||||||
if ( script[offset++] == 0x6a )
|
|
||||||
{
|
|
||||||
offset += komodo_scriptitemlen(&opretlen,&script[offset]);
|
|
||||||
if ( isspecial != 0 && len >= offset+32*2+4 && strcmp((char *)&script[offset+32*2+4],ASSETCHAINS_SYMBOL[0]==0?"KMD":ASSETCHAINS_SYMBOL) == 0 )
|
|
||||||
typestr = "notarized";
|
|
||||||
else if ( txi == 0 && vout == 1 && opretlen == 149 )
|
|
||||||
{
|
|
||||||
typestr = "pricefeed";
|
|
||||||
komodo_paxpricefeed(height,&script[offset],opretlen);
|
|
||||||
//printf("height.%d pricefeed len.%d\n",height,opretlen);
|
|
||||||
}
|
|
||||||
else komodo_stateupdate(height,0,0,0,utxid,0,0,0,0,0,0,value,&script[offset],opretlen,vout);
|
|
||||||
}
|
|
||||||
else if ( numvouts >= KOMODO_MINRATIFY )
|
|
||||||
typestr = "ratify";
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t komodo_gateway_tx(char *symbol,int32_t height,int32_t txi,char *txidstr,uint32_t port)
|
|
||||||
{
|
|
||||||
char *retstr,params[256],*hexstr; uint8_t script[10000]; cJSON *oldpub,*newpub,*json,*result,*vouts,*item,*sobj; int32_t vout,n,len,isspecial,retval = -1; uint64_t value; bits256 txid;
|
|
||||||
sprintf(params,"[\"%s\", 1]",txidstr);
|
|
||||||
if ( (retstr= komodo_issuemethod((char *)"getrawtransaction",params,port)) != 0 )
|
|
||||||
{
|
|
||||||
if ( (json= cJSON_Parse(retstr)) != 0 )
|
|
||||||
{
|
|
||||||
if ( (result= jobj(json,(char *)"result")) != 0 )
|
|
||||||
{
|
|
||||||
oldpub = jobj(result,(char *)"vpub_old");
|
|
||||||
newpub = jobj(result,(char *)"vpub_new");
|
|
||||||
retval = 0;
|
|
||||||
if ( oldpub == 0 && newpub == 0 && (vouts= jarray(&n,result,(char *)"vout")) != 0 )
|
|
||||||
{
|
|
||||||
isspecial = 0;
|
|
||||||
txid = jbits256(result,(char *)"txid");
|
|
||||||
for (vout=0; vout<n; vout++)
|
|
||||||
{
|
|
||||||
item = jitem(vouts,vout);
|
|
||||||
value = SATOSHIDEN * jdouble(item,(char *)"value");
|
|
||||||
if ( (sobj= jobj(item,(char *)"scriptPubKey")) != 0 )
|
|
||||||
{
|
|
||||||
if ( (hexstr= jstr(sobj,(char *)"hex")) != 0 )
|
|
||||||
{
|
|
||||||
len = (int32_t)strlen(hexstr) >> 1;
|
|
||||||
if ( vout == 0 && ((memcmp(&hexstr[2],CRYPTO777_PUBSECPSTR,66) == 0 && len == 35) || (memcmp(&hexstr[6],CRYPTO777_RMD160STR,40) == 0 && len == 25)) )
|
|
||||||
isspecial = 1;
|
|
||||||
else if ( len <= sizeof(script) )
|
|
||||||
{
|
|
||||||
decode_hex(script,len,hexstr);
|
|
||||||
komodo_gateway_voutupdate(symbol,isspecial,height,txi,txid,vout,n,value,script,len);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else printf("error getting txids.(%s) %p\n",retstr,result);
|
|
||||||
free_json(json);
|
|
||||||
}
|
|
||||||
free(retstr);
|
|
||||||
}
|
|
||||||
return(retval);
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t komodo_gateway_block(char *symbol,int32_t height,uint16_t port)
|
|
||||||
{
|
|
||||||
char *retstr,*retstr2,params[128],*txidstr; int32_t i,n,retval = -1; cJSON *json,*tx=0,*result=0,*result2;
|
|
||||||
sprintf(params,"[%d]",height);
|
|
||||||
if ( (retstr= komodo_issuemethod((char *)"getblockhash",params,port)) != 0 )
|
|
||||||
{
|
|
||||||
if ( (result= cJSON_Parse(retstr)) != 0 )
|
|
||||||
{
|
|
||||||
if ( (txidstr= jstr(result,(char *)"result")) != 0 && strlen(txidstr) == 64 )
|
|
||||||
{
|
|
||||||
sprintf(params,"[\"%s\"]",txidstr);
|
|
||||||
if ( (retstr2= komodo_issuemethod((char *)"getblock",params,port)) != 0 )
|
|
||||||
{
|
|
||||||
//printf("getblock.(%s)\n",retstr2);
|
|
||||||
if ( (json= cJSON_Parse(retstr2)) != 0 )
|
|
||||||
{
|
|
||||||
if ( (result2= jobj(json,(char *)"result")) != 0 && (tx= jarray(&n,result2,(char *)"tx")) != 0 )
|
|
||||||
{
|
|
||||||
for (i=0; i<n; i++)
|
|
||||||
if ( komodo_gateway_tx(symbol,height,i,jstri(tx,i),port) < 0 )
|
|
||||||
break;
|
|
||||||
if ( i == n )
|
|
||||||
retval = 0;
|
|
||||||
else printf("komodo_gateway_block ht.%d error i.%d vs n.%d\n",height,i,n);
|
|
||||||
} else printf("cant get result.%p or tx.%p\n",result,tx);
|
|
||||||
free_json(json);
|
|
||||||
} else printf("cant parse2.(%s)\n",retstr2);
|
|
||||||
free(retstr2);
|
|
||||||
} else printf("error getblock %s\n",params);
|
|
||||||
} else printf("strlen.%ld (%s)\n",strlen(txidstr),txidstr);
|
|
||||||
free_json(result);
|
|
||||||
} else printf("couldnt parse.(%s)\n",retstr);
|
|
||||||
free(retstr);
|
|
||||||
} else printf("error from getblockhash %d\n",height);
|
|
||||||
return(retval);
|
|
||||||
}
|
|
||||||
|
|
||||||
void komodo_gateway_iteration(char *symbol)
|
|
||||||
{
|
|
||||||
char *retstr; int32_t i,kmdheight; cJSON *infoobj,*result; uint256 zero; uint16_t port = 7771;
|
|
||||||
if ( KMDHEIGHT <= 0 )
|
|
||||||
KMDHEIGHT = 1;
|
|
||||||
//KOMODO_REALTIME = 0;
|
|
||||||
if ( (retstr= komodo_issuemethod((char *)"getinfo",0,port)) != 0 )
|
|
||||||
{
|
|
||||||
if ( (infoobj= cJSON_Parse(retstr)) != 0 )
|
|
||||||
{
|
|
||||||
if ( (result= jobj(infoobj,(char *)"result")) != 0 && (kmdheight= jint(result,(char *)"blocks")) != 0 )
|
|
||||||
{
|
|
||||||
//printf("gateway KMDHEIGHT.%d kmdheight.%d\n",KMDHEIGHT,kmdheight);
|
|
||||||
for (i=0; i<1000 && KMDHEIGHT<kmdheight; i++,KMDHEIGHT++)
|
|
||||||
{
|
|
||||||
if ( (KMDHEIGHT % 10) == 0 )
|
|
||||||
{
|
|
||||||
if ( (KMDHEIGHT % 100) == 0 )
|
|
||||||
fprintf(stderr,"%s.%d ",symbol,KMDHEIGHT);
|
|
||||||
memset(&zero,0,sizeof(zero));
|
|
||||||
komodo_stateupdate(KMDHEIGHT,0,0,0,zero,0,0,0,0,KMDHEIGHT,0,0,0,0,0);
|
|
||||||
}
|
|
||||||
if ( komodo_gateway_block(symbol,KMDHEIGHT,port) < 0 )
|
|
||||||
{
|
|
||||||
printf("error KMDHEIGHT %d\n",KMDHEIGHT);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
usleep(10000);
|
|
||||||
}
|
|
||||||
if ( KMDHEIGHT >= kmdheight )
|
|
||||||
sp->KOMODO_REALTIME = (uint32_t)time(NULL);
|
|
||||||
}
|
|
||||||
free_json(infoobj);
|
|
||||||
}
|
|
||||||
free(retstr);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf("error from %s\n",symbol);
|
|
||||||
sleep(30);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void komodo_iteration(char *symbol)
|
|
||||||
{
|
|
||||||
char *retstr,*base,*coinaddr,*txidstr,cmd[512]; uint64_t value,fiatoshis; cJSON *array,*item; int32_t i,n,vout,shortflag,height,fiatheight; uint256 txid; uint8_t rmd160[20],addrtype;
|
|
||||||
if ( ASSETCHAINS_SYMBOL[0] == 0 )
|
|
||||||
{
|
|
||||||
sprintf(cmd,"{\"agent\":\"dpow\",\"method\":\"pending\",\"fiat\":\"%s\"}",symbol);
|
|
||||||
if ( (retstr= issue_curl(cmd)) != 0 )
|
|
||||||
{
|
|
||||||
if ( (array= cJSON_Parse(retstr)) != 0 )
|
|
||||||
{
|
|
||||||
if ( (n= cJSON_GetArraySize(array)) > 0 )
|
|
||||||
{
|
|
||||||
for (i=0; i<n; i++)
|
|
||||||
{
|
|
||||||
item = jitem(array,i);
|
|
||||||
coinaddr = jstr(item,(char *)"address");
|
|
||||||
value = jdouble(item,(char *)"KMD") * COIN;
|
|
||||||
base = jstr(item,(char *)"fiat");
|
|
||||||
shortflag = juint(item,(char *)"short");
|
|
||||||
vout = jint(item,(char *)"prev_vout");
|
|
||||||
height = jint(item,(char *)"kmdheight");
|
|
||||||
fiatheight = jint(item,(char *)"height");
|
|
||||||
txidstr = jstr(item,(char *)"prev_hash");
|
|
||||||
if ( coinaddr != 0 && base != 0 && value > 0 && height > 0 )
|
|
||||||
{
|
|
||||||
fiatoshis = jdouble(item,base) * COIN;
|
|
||||||
decode_hex((uint8_t *)&txid,sizeof(txid),txidstr);
|
|
||||||
bitcoin_addr2rmd160(&addrtype,rmd160,coinaddr);
|
|
||||||
komodo_gateway_deposit(coinaddr,value,shortflag,base,fiatoshis,rmd160,txid,vout,height,fiatheight);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//printf("retstr.(%s)\n",retstr);
|
|
||||||
free(retstr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
int32_t komodo_longestchain();
|
int32_t komodo_longestchain();
|
||||||
|
|
||||||
void komodo_passport_iteration()
|
void komodo_passport_iteration()
|
||||||
@@ -639,5 +452,4 @@ void komodo_passport_iteration()
|
|||||||
}
|
}
|
||||||
refsp->RTmask = RTmask;
|
refsp->RTmask = RTmask;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|||||||
@@ -492,7 +492,7 @@ Value paxdeposit(const Array& params, bool fHelp)
|
|||||||
if (!EnsureWalletIsAvailable(fHelp))
|
if (!EnsureWalletIsAvailable(fHelp))
|
||||||
return Value::null;
|
return Value::null;
|
||||||
if (fHelp || params.size() != 3)
|
if (fHelp || params.size() != 3)
|
||||||
throw runtime_error("paxdeposit \"address\" [-]fiatoshis \"base\"\nnegative fiatoshis means a short position, long position capped at 100% gain");
|
throw runtime_error("paxdeposit \"address\" fiatoshis base");
|
||||||
LOCK2(cs_main, pwalletMain->cs_wallet);
|
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||||
CBitcoinAddress address(params[0].get_str());
|
CBitcoinAddress address(params[0].get_str());
|
||||||
if (!address.IsValid())
|
if (!address.IsValid())
|
||||||
|
|||||||
Reference in New Issue
Block a user