.
This commit is contained in:
@@ -1,3 +1,7 @@
|
|||||||
|
# Copyright 2016-2021 The Hush developers
|
||||||
|
# Distributed under the GPLv3 software license, see the accompanying
|
||||||
|
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
|
||||||
|
|
||||||
ACLOCAL_AMFLAGS = -I build-aux/m4
|
ACLOCAL_AMFLAGS = -I build-aux/m4
|
||||||
SUBDIRS = src
|
SUBDIRS = src
|
||||||
if ENABLE_MAN
|
if ENABLE_MAN
|
||||||
|
|||||||
@@ -675,7 +675,7 @@ int32_t hush_get_current_height()
|
|||||||
else return chainActive.LastTip()->GetHeight();
|
else return chainActive.LastTip()->GetHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool komodo_txnotarizedconfirmed(uint256 txid)
|
bool hush_txnotarizedconfirmed(uint256 txid)
|
||||||
{
|
{
|
||||||
char str[65];
|
char str[65];
|
||||||
int32_t confirms,notarized=0,txheight=0,currentheight=0;;
|
int32_t confirms,notarized=0,txheight=0,currentheight=0;;
|
||||||
@@ -688,17 +688,17 @@ bool komodo_txnotarizedconfirmed(uint256 txid)
|
|||||||
{
|
{
|
||||||
if ( NSPV_myGetTransaction(txid,tx,hashBlock,txheight,currentheight) == 0 )
|
if ( NSPV_myGetTransaction(txid,tx,hashBlock,txheight,currentheight) == 0 )
|
||||||
{
|
{
|
||||||
fprintf(stderr,"komodo_txnotarizedconfirmed cant find txid %s\n",txid.ToString().c_str());
|
fprintf(stderr,"hush_txnotarizedconfirmed cant find txid %s\n",txid.ToString().c_str());
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
else if (txheight<=0)
|
else if (txheight<=0)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"komodo_txnotarizedconfirmed no txheight.%d for txid %s\n",txheight,txid.ToString().c_str());
|
fprintf(stderr,"hush_txnotarizedconfirmed no txheight.%d for txid %s\n",txheight,txid.ToString().c_str());
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
else if (txheight>currentheight)
|
else if (txheight>currentheight)
|
||||||
{
|
{
|
||||||
fprintf(stderr,"komodo_txnotarizedconfirmed backwards heights for txid %s hts.(%d %d)\n",txid.ToString().c_str(),txheight,currentheight);
|
fprintf(stderr,"hush_txnotarizedconfirmed backwards heights for txid %s hts.(%d %d)\n",txid.ToString().c_str(),txheight,currentheight);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
confirms=1 + currentheight - txheight;
|
confirms=1 + currentheight - txheight;
|
||||||
@@ -707,22 +707,22 @@ bool komodo_txnotarizedconfirmed(uint256 txid)
|
|||||||
{
|
{
|
||||||
if ( myGetTransaction(txid,tx,hashBlock) == 0 )
|
if ( myGetTransaction(txid,tx,hashBlock) == 0 )
|
||||||
{
|
{
|
||||||
fprintf(stderr,"komodo_txnotarizedconfirmed cant find txid %s\n",txid.ToString().c_str());
|
fprintf(stderr,"hush_txnotarizedconfirmed cant find txid %s\n",txid.ToString().c_str());
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
else if ( hashBlock == zeroid )
|
else if ( hashBlock == zeroid )
|
||||||
{
|
{
|
||||||
fprintf(stderr,"komodo_txnotarizedconfirmed no hashBlock for txid %s\n",txid.ToString().c_str());
|
fprintf(stderr,"hush_txnotarizedconfirmed no hashBlock for txid %s\n",txid.ToString().c_str());
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
else if ( (pindex= hush_blockindex(hashBlock)) == 0 || (txheight= pindex->GetHeight()) <= 0 )
|
else if ( (pindex= hush_blockindex(hashBlock)) == 0 || (txheight= pindex->GetHeight()) <= 0 )
|
||||||
{
|
{
|
||||||
fprintf(stderr,"komodo_txnotarizedconfirmed no txheight.%d %p for txid %s\n",txheight,pindex,txid.ToString().c_str());
|
fprintf(stderr,"hush_txnotarizedconfirmed no txheight.%d %p for txid %s\n",txheight,pindex,txid.ToString().c_str());
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
else if ( (pindex= chainActive.LastTip()) == 0 || pindex->GetHeight() < txheight )
|
else if ( (pindex= chainActive.LastTip()) == 0 || pindex->GetHeight() < txheight )
|
||||||
{
|
{
|
||||||
fprintf(stderr,"komodo_txnotarizedconfirmed backwards heights for txid %s hts.(%d %d)\n",txid.ToString().c_str(),txheight,(int32_t)pindex->GetHeight());
|
fprintf(stderr,"hush_txnotarizedconfirmed backwards heights for txid %s hts.(%d %d)\n",txid.ToString().c_str(),txheight,(int32_t)pindex->GetHeight());
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
confirms=1 + pindex->GetHeight() - txheight;
|
confirms=1 + pindex->GetHeight() - txheight;
|
||||||
|
|||||||
@@ -249,7 +249,7 @@ bool ChannelsValidate(struct CCcontract_info *cp,Eval* eval,const CTransaction &
|
|||||||
return eval->Invalid("vout.1 is CC marker to srcpub or invalid amount for channelopen!");
|
return eval->Invalid("vout.1 is CC marker to srcpub or invalid amount for channelopen!");
|
||||||
else if ( ConstrainVout(channelOpenTx.vout[2],1,destmarker,CC_MARKER_VALUE)==0 )
|
else if ( ConstrainVout(channelOpenTx.vout[2],1,destmarker,CC_MARKER_VALUE)==0 )
|
||||||
return eval->Invalid("vout.2 is CC marker to destpub or invalid amount for channelopen!");
|
return eval->Invalid("vout.2 is CC marker to destpub or invalid amount for channelopen!");
|
||||||
else if (komodo_txnotarizedconfirmed(opentxid) == 0)
|
else if (hush_txnotarizedconfirmed(opentxid) == 0)
|
||||||
return eval->Invalid("channelopen is not yet confirmed(notarised)!");
|
return eval->Invalid("channelopen is not yet confirmed(notarised)!");
|
||||||
else if ( IsCCInput(tx.vin[0].scriptSig) != 0 )
|
else if ( IsCCInput(tx.vin[0].scriptSig) != 0 )
|
||||||
return eval->Invalid("vin.0 is normal for channelpayment!");
|
return eval->Invalid("vin.0 is normal for channelpayment!");
|
||||||
@@ -310,7 +310,7 @@ bool ChannelsValidate(struct CCcontract_info *cp,Eval* eval,const CTransaction &
|
|||||||
return eval->Invalid("vout.1 is CC marker to srcpub or invalid amount for channelopen!");
|
return eval->Invalid("vout.1 is CC marker to srcpub or invalid amount for channelopen!");
|
||||||
else if ( ConstrainVout(channelOpenTx.vout[2],1,destmarker,CC_MARKER_VALUE)==0 )
|
else if ( ConstrainVout(channelOpenTx.vout[2],1,destmarker,CC_MARKER_VALUE)==0 )
|
||||||
return eval->Invalid("vout.2 is CC marker to destpub or invalid amount for channelopen!");
|
return eval->Invalid("vout.2 is CC marker to destpub or invalid amount for channelopen!");
|
||||||
else if (komodo_txnotarizedconfirmed(opentxid) == 0)
|
else if (hush_txnotarizedconfirmed(opentxid) == 0)
|
||||||
return eval->Invalid("channelopen is not yet confirmed(notarised)!");
|
return eval->Invalid("channelopen is not yet confirmed(notarised)!");
|
||||||
else if ( IsCCInput(tx.vin[0].scriptSig) != 0 )
|
else if ( IsCCInput(tx.vin[0].scriptSig) != 0 )
|
||||||
return eval->Invalid("vin.0 is normal for channelclose!");
|
return eval->Invalid("vin.0 is normal for channelclose!");
|
||||||
@@ -351,9 +351,9 @@ bool ChannelsValidate(struct CCcontract_info *cp,Eval* eval,const CTransaction &
|
|||||||
return eval->Invalid("vout.1 is CC marker to srcpub or invalid amount for channelopen!");
|
return eval->Invalid("vout.1 is CC marker to srcpub or invalid amount for channelopen!");
|
||||||
else if ( ConstrainVout(channelOpenTx.vout[2],1,destmarker,CC_MARKER_VALUE)==0 )
|
else if ( ConstrainVout(channelOpenTx.vout[2],1,destmarker,CC_MARKER_VALUE)==0 )
|
||||||
return eval->Invalid("vout.2 is CC marker to destpub or invalid amount for channelopen!");
|
return eval->Invalid("vout.2 is CC marker to destpub or invalid amount for channelopen!");
|
||||||
else if (komodo_txnotarizedconfirmed(opentxid) == 0)
|
else if (hush_txnotarizedconfirmed(opentxid) == 0)
|
||||||
return eval->Invalid("channelopen is not yet confirmed(notarised)!");
|
return eval->Invalid("channelopen is not yet confirmed(notarised)!");
|
||||||
else if (komodo_txnotarizedconfirmed(param3) == 0)
|
else if (hush_txnotarizedconfirmed(param3) == 0)
|
||||||
return eval->Invalid("channelClose is not yet confirmed(notarised)!");
|
return eval->Invalid("channelClose is not yet confirmed(notarised)!");
|
||||||
else if ( IsCCInput(tx.vin[0].scriptSig) != 0 )
|
else if ( IsCCInput(tx.vin[0].scriptSig) != 0 )
|
||||||
return eval->Invalid("vin.0 is normal for channelrefund!");
|
return eval->Invalid("vin.0 is normal for channelrefund!");
|
||||||
@@ -537,7 +537,7 @@ UniValue ChannelPayment(const CPubKey& pk, uint64_t txfee,uint256 opentxid,int64
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "invalid channel open tx");
|
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "invalid channel open tx");
|
||||||
if (komodo_txnotarizedconfirmed(opentxid)==false) CCERR_RESULT("channelscc",CCLOG_INFO, stream << "channelsopen tx not yet confirmed/notarized");
|
if (hush_txnotarizedconfirmed(opentxid)==false) CCERR_RESULT("channelscc",CCLOG_INFO, stream << "channelsopen tx not yet confirmed/notarized");
|
||||||
if (AddNormalinputs(mtx,mypk,txfee+CC_MARKER_VALUE,3,pk.IsValid()) > 0)
|
if (AddNormalinputs(mtx,mypk,txfee+CC_MARKER_VALUE,3,pk.IsValid()) > 0)
|
||||||
{
|
{
|
||||||
if ((funds=AddChannelsInputs(cp,mtx,channelOpenTx,prevtxid,mypk)) !=0 && (change=funds-amount)>=0)
|
if ((funds=AddChannelsInputs(cp,mtx,channelOpenTx,prevtxid,mypk)) !=0 && (change=funds-amount)>=0)
|
||||||
@@ -612,7 +612,7 @@ UniValue ChannelClose(const CPubKey& pk, uint64_t txfee,uint256 opentxid)
|
|||||||
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "invalid channel open txid");
|
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "invalid channel open txid");
|
||||||
if ((numvouts=channelOpenTx.vout.size()) < 1 || DecodeChannelsOpRet(channelOpenTx.vout[numvouts-1].scriptPubKey,tokenid,tmp_txid,srcpub,destpub,numpayments,payment,hashchain)!='O')
|
if ((numvouts=channelOpenTx.vout.size()) < 1 || DecodeChannelsOpRet(channelOpenTx.vout[numvouts-1].scriptPubKey,tokenid,tmp_txid,srcpub,destpub,numpayments,payment,hashchain)!='O')
|
||||||
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "invalid channel open tx");
|
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "invalid channel open tx");
|
||||||
if (komodo_txnotarizedconfirmed(opentxid)==false)
|
if (hush_txnotarizedconfirmed(opentxid)==false)
|
||||||
CCERR_RESULT("channelscc",CCLOG_INFO, stream <<"channelsopen tx not yet confirmed/notarized");
|
CCERR_RESULT("channelscc",CCLOG_INFO, stream <<"channelsopen tx not yet confirmed/notarized");
|
||||||
if (mypk != srcpub)
|
if (mypk != srcpub)
|
||||||
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "cannot close, you are not channel owner");
|
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "cannot close, you are not channel owner");
|
||||||
@@ -650,13 +650,13 @@ UniValue ChannelRefund(const CPubKey& pk, uint64_t txfee,uint256 opentxid,uint25
|
|||||||
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "invalid channel close txid");
|
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "invalid channel close txid");
|
||||||
if ((numvouts=channelCloseTx.vout.size()) < 1 || DecodeChannelsOpRet(channelCloseTx.vout[numvouts-1].scriptPubKey,tokenid,txid,srcpub,destpub,param1,param2,param3)!='C')
|
if ((numvouts=channelCloseTx.vout.size()) < 1 || DecodeChannelsOpRet(channelCloseTx.vout[numvouts-1].scriptPubKey,tokenid,txid,srcpub,destpub,param1,param2,param3)!='C')
|
||||||
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "invalid channel close tx");
|
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "invalid channel close tx");
|
||||||
if (komodo_txnotarizedconfirmed(closetxid)==false)
|
if (hush_txnotarizedconfirmed(closetxid)==false)
|
||||||
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "channelsclose tx not yet confirmed/notarized");
|
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "channelsclose tx not yet confirmed/notarized");
|
||||||
if (txid!=opentxid)
|
if (txid!=opentxid)
|
||||||
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "open and close txid are not from same channel");
|
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "open and close txid are not from same channel");
|
||||||
if (myGetTransaction(opentxid,channelOpenTx,hashblock) == 0)
|
if (myGetTransaction(opentxid,channelOpenTx,hashblock) == 0)
|
||||||
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "invalid channel open txid");
|
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "invalid channel open txid");
|
||||||
if (komodo_txnotarizedconfirmed(opentxid)==false)
|
if (hush_txnotarizedconfirmed(opentxid)==false)
|
||||||
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "channelsopen tx not yet confirmed/notarized");
|
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "channelsopen tx not yet confirmed/notarized");
|
||||||
if ((numvouts=channelOpenTx.vout.size()) < 1 || DecodeChannelsOpRet(channelOpenTx.vout[numvouts-1].scriptPubKey,tokenid,txid,srcpub,destpub,numpayments,payment,hashchain)!='O')
|
if ((numvouts=channelOpenTx.vout.size()) < 1 || DecodeChannelsOpRet(channelOpenTx.vout[numvouts-1].scriptPubKey,tokenid,txid,srcpub,destpub,numpayments,payment,hashchain)!='O')
|
||||||
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "invalid channel open tx");
|
CCERR_RESULT("channelscc",CCLOG_INFO, stream << "invalid channel open tx");
|
||||||
|
|||||||
@@ -612,7 +612,7 @@ bool GatewaysValidate(struct CCcontract_info *cp,Eval *eval,const CTransaction &
|
|||||||
sprintf(validationError,"illegal format %s != Ihh\n",format.c_str());
|
sprintf(validationError,"illegal format %s != Ihh\n",format.c_str());
|
||||||
return eval->Invalid(validationError);
|
return eval->Invalid(validationError);
|
||||||
}
|
}
|
||||||
else if (komodo_txnotarizedconfirmed(bindtxid) == false)
|
else if (hush_txnotarizedconfirmed(bindtxid) == false)
|
||||||
return eval->Invalid("gatewaysbind tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewaysbind tx is not yet confirmed(notarised)!");
|
||||||
else if (myGetTransaction(deposittxid,tmptx,hashblock) == 0)
|
else if (myGetTransaction(deposittxid,tmptx,hashblock) == 0)
|
||||||
return eval->Invalid("invalid gatewaysdeposittxid!");
|
return eval->Invalid("invalid gatewaysdeposittxid!");
|
||||||
@@ -630,7 +630,7 @@ bool GatewaysValidate(struct CCcontract_info *cp,Eval *eval,const CTransaction &
|
|||||||
return eval->Invalid("bindtxid does not match to bindtxid from gatewaysdeposit");
|
return eval->Invalid("bindtxid does not match to bindtxid from gatewaysdeposit");
|
||||||
else if (tmpamount>totalsupply)
|
else if (tmpamount>totalsupply)
|
||||||
return eval->Invalid("deposit amount greater then bind total supply");
|
return eval->Invalid("deposit amount greater then bind total supply");
|
||||||
else if (komodo_txnotarizedconfirmed(deposittxid) == false)
|
else if (hush_txnotarizedconfirmed(deposittxid) == false)
|
||||||
return eval->Invalid("gatewaysdeposit tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewaysdeposit tx is not yet confirmed(notarised)!");
|
||||||
else if (tx.vin.size()>0)
|
else if (tx.vin.size()>0)
|
||||||
{
|
{
|
||||||
@@ -704,7 +704,7 @@ bool GatewaysValidate(struct CCcontract_info *cp,Eval *eval,const CTransaction &
|
|||||||
return eval->Invalid("invalid marker vout for gatewaysWithdraw!");
|
return eval->Invalid("invalid marker vout for gatewaysWithdraw!");
|
||||||
else if ( ConstrainVout(tmptx.vout[1],1,gatewaystokensaddr,amount)==0)
|
else if ( ConstrainVout(tmptx.vout[1],1,gatewaystokensaddr,amount)==0)
|
||||||
return eval->Invalid("invalid tokens to gateways vout for gatewaysWithdraw!");
|
return eval->Invalid("invalid tokens to gateways vout for gatewaysWithdraw!");
|
||||||
else if (komodo_txnotarizedconfirmed(withdrawtxid) == false)
|
else if (hush_txnotarizedconfirmed(withdrawtxid) == false)
|
||||||
return eval->Invalid("gatewayswithdraw tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewayswithdraw tx is not yet confirmed(notarised)!");
|
||||||
else if (myGetTransaction(bindtxid,tmptx,hashblock) == 0)
|
else if (myGetTransaction(bindtxid,tmptx,hashblock) == 0)
|
||||||
return eval->Invalid("invalid gatewaysbind txid!");
|
return eval->Invalid("invalid gatewaysbind txid!");
|
||||||
@@ -714,7 +714,7 @@ bool GatewaysValidate(struct CCcontract_info *cp,Eval *eval,const CTransaction &
|
|||||||
return eval->Invalid("refcoin different than in bind tx");
|
return eval->Invalid("refcoin different than in bind tx");
|
||||||
else if (tmptokenid!=tokenid)
|
else if (tmptokenid!=tokenid)
|
||||||
return eval->Invalid("tokenid does not match tokenid from gatewaysbind");
|
return eval->Invalid("tokenid does not match tokenid from gatewaysbind");
|
||||||
else if (komodo_txnotarizedconfirmed(bindtxid) == false)
|
else if (hush_txnotarizedconfirmed(bindtxid) == false)
|
||||||
return eval->Invalid("gatewaysbind tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewaysbind tx is not yet confirmed(notarised)!");
|
||||||
else if (IsCCInput(tx.vin[0].scriptSig) != 0)
|
else if (IsCCInput(tx.vin[0].scriptSig) != 0)
|
||||||
return eval->Invalid("vin.0 is normal for gatewayspartialsign!");
|
return eval->Invalid("vin.0 is normal for gatewayspartialsign!");
|
||||||
@@ -746,7 +746,7 @@ bool GatewaysValidate(struct CCcontract_info *cp,Eval *eval,const CTransaction &
|
|||||||
return eval->Invalid("invalid tokens to gateways vout for gatewaysWithdraw!");
|
return eval->Invalid("invalid tokens to gateways vout for gatewaysWithdraw!");
|
||||||
else if (tmptx.vout[1].nValue!=amount)
|
else if (tmptx.vout[1].nValue!=amount)
|
||||||
return eval->Invalid("amount in opret not matching tx tokens amount!");
|
return eval->Invalid("amount in opret not matching tx tokens amount!");
|
||||||
else if (komodo_txnotarizedconfirmed(withdrawtxid) == false)
|
else if (hush_txnotarizedconfirmed(withdrawtxid) == false)
|
||||||
return eval->Invalid("gatewayswithdraw tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewayswithdraw tx is not yet confirmed(notarised)!");
|
||||||
else if (myGetTransaction(bindtxid,tmptx,hashblock) == 0)
|
else if (myGetTransaction(bindtxid,tmptx,hashblock) == 0)
|
||||||
return eval->Invalid("invalid gatewaysbind txid!");
|
return eval->Invalid("invalid gatewaysbind txid!");
|
||||||
@@ -756,7 +756,7 @@ bool GatewaysValidate(struct CCcontract_info *cp,Eval *eval,const CTransaction &
|
|||||||
return eval->Invalid("refcoin different than in bind tx");
|
return eval->Invalid("refcoin different than in bind tx");
|
||||||
else if (tmptokenid!=tokenid)
|
else if (tmptokenid!=tokenid)
|
||||||
return eval->Invalid("tokenid does not match tokenid from gatewaysbind");
|
return eval->Invalid("tokenid does not match tokenid from gatewaysbind");
|
||||||
else if (komodo_txnotarizedconfirmed(bindtxid) == false)
|
else if (hush_txnotarizedconfirmed(bindtxid) == false)
|
||||||
return eval->Invalid("gatewaysbind tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewaysbind tx is not yet confirmed(notarised)!");
|
||||||
else if (IsCCInput(tx.vin[0].scriptSig) != 0)
|
else if (IsCCInput(tx.vin[0].scriptSig) != 0)
|
||||||
return eval->Invalid("vin.0 is normal for gatewayscompletesigning!");
|
return eval->Invalid("vin.0 is normal for gatewayscompletesigning!");
|
||||||
@@ -777,7 +777,7 @@ bool GatewaysValidate(struct CCcontract_info *cp,Eval *eval,const CTransaction &
|
|||||||
return eval->Invalid("invalid gatewayscompletesigning txid!");
|
return eval->Invalid("invalid gatewayscompletesigning txid!");
|
||||||
else if ((numvouts=tmptx.vout.size()) > 0 && DecodeGatewaysCompleteSigningOpRet(tmptx.vout[numvouts-1].scriptPubKey,withdrawtxid,tmprefcoin,K,hex)!='S')
|
else if ((numvouts=tmptx.vout.size()) > 0 && DecodeGatewaysCompleteSigningOpRet(tmptx.vout[numvouts-1].scriptPubKey,withdrawtxid,tmprefcoin,K,hex)!='S')
|
||||||
return eval->Invalid("invalid gatewayscompletesigning OP_RETURN data!");
|
return eval->Invalid("invalid gatewayscompletesigning OP_RETURN data!");
|
||||||
else if (komodo_txnotarizedconfirmed(completetxid) == false)
|
else if (hush_txnotarizedconfirmed(completetxid) == false)
|
||||||
return eval->Invalid("gatewayscompletesigning tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewayscompletesigning tx is not yet confirmed(notarised)!");
|
||||||
else if (myGetTransaction(withdrawtxid,tmptx,hashblock) == 0)
|
else if (myGetTransaction(withdrawtxid,tmptx,hashblock) == 0)
|
||||||
return eval->Invalid("invalid withdraw txid!");
|
return eval->Invalid("invalid withdraw txid!");
|
||||||
@@ -785,7 +785,7 @@ bool GatewaysValidate(struct CCcontract_info *cp,Eval *eval,const CTransaction &
|
|||||||
return eval->Invalid("invalid gatewayswithdraw OP_RETURN data!");
|
return eval->Invalid("invalid gatewayswithdraw OP_RETURN data!");
|
||||||
else if (tmprefcoin!=refcoin)
|
else if (tmprefcoin!=refcoin)
|
||||||
return eval->Invalid("refcoin different than in bind tx");
|
return eval->Invalid("refcoin different than in bind tx");
|
||||||
else if (komodo_txnotarizedconfirmed(withdrawtxid) == false)
|
else if (hush_txnotarizedconfirmed(withdrawtxid) == false)
|
||||||
return eval->Invalid("gatewayswithdraw tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewayswithdraw tx is not yet confirmed(notarised)!");
|
||||||
else if (myGetTransaction(bindtxid,tmptx,hashblock) == 0)
|
else if (myGetTransaction(bindtxid,tmptx,hashblock) == 0)
|
||||||
return eval->Invalid("invalid gatewaysbind txid!");
|
return eval->Invalid("invalid gatewaysbind txid!");
|
||||||
@@ -795,7 +795,7 @@ bool GatewaysValidate(struct CCcontract_info *cp,Eval *eval,const CTransaction &
|
|||||||
return eval->Invalid("refcoin different than in bind tx");
|
return eval->Invalid("refcoin different than in bind tx");
|
||||||
else if (tmptokenid!=tokenid)
|
else if (tmptokenid!=tokenid)
|
||||||
return eval->Invalid("tokenid does not match tokenid from gatewaysbind");
|
return eval->Invalid("tokenid does not match tokenid from gatewaysbind");
|
||||||
else if (komodo_txnotarizedconfirmed(bindtxid) == false)
|
else if (hush_txnotarizedconfirmed(bindtxid) == false)
|
||||||
return eval->Invalid("gatewaysbind tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewaysbind tx is not yet confirmed(notarised)!");
|
||||||
else if ( IsCCInput(tx.vin[0].scriptSig) != 0 )
|
else if ( IsCCInput(tx.vin[0].scriptSig) != 0 )
|
||||||
return eval->Invalid("vin.0 is normal for gatewaysmarkdone!");
|
return eval->Invalid("vin.0 is normal for gatewaysmarkdone!");
|
||||||
@@ -946,7 +946,7 @@ UniValue GatewaysDeposit(const CPubKey& pk, uint64_t txfee,uint256 bindtxid,int3
|
|||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "cant find bindtxid " << bindtxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "cant find bindtxid " << bindtxid.GetHex());
|
||||||
if ( DecodeGatewaysBindOpRet(depositaddr,tx.vout[numvouts-1].scriptPubKey,tokenid,coin,totalsupply,oracletxid,M,N,pubkeys,taddr,prefix,prefix2,wiftype) != 'B' || refcoin != coin )
|
if ( DecodeGatewaysBindOpRet(depositaddr,tx.vout[numvouts-1].scriptPubKey,tokenid,coin,totalsupply,oracletxid,M,N,pubkeys,taddr,prefix,prefix2,wiftype) != 'B' || refcoin != coin )
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid coin - bindtxid " << bindtxid.GetHex() << " coin." << coin);
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid coin - bindtxid " << bindtxid.GetHex() << " coin." << coin);
|
||||||
if (komodo_txnotarizedconfirmed(bindtxid)==false)
|
if (hush_txnotarizedconfirmed(bindtxid)==false)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewaysbind tx not yet confirmed/notarized");
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewaysbind tx not yet confirmed/notarized");
|
||||||
n = (int32_t)pubkeys.size();
|
n = (int32_t)pubkeys.size();
|
||||||
merkleroot = zeroid;
|
merkleroot = zeroid;
|
||||||
@@ -997,13 +997,13 @@ UniValue GatewaysClaim(const CPubKey& pk, uint64_t txfee,uint256 bindtxid,std::s
|
|||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "cant find bindtxid " << bindtxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "cant find bindtxid " << bindtxid.GetHex());
|
||||||
if ( DecodeGatewaysBindOpRet(depositaddr,tx.vout[numvouts-1].scriptPubKey,tokenid,coin,totalsupply,oracletxid,M,N,pubkeys,taddr,prefix,prefix2,wiftype) != 'B' || refcoin != coin )
|
if ( DecodeGatewaysBindOpRet(depositaddr,tx.vout[numvouts-1].scriptPubKey,tokenid,coin,totalsupply,oracletxid,M,N,pubkeys,taddr,prefix,prefix2,wiftype) != 'B' || refcoin != coin )
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid coin - bindtxid " << bindtxid.GetHex() << " coin." << coin);
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid coin - bindtxid " << bindtxid.GetHex() << " coin." << coin);
|
||||||
if (komodo_txnotarizedconfirmed(bindtxid)==false)
|
if (hush_txnotarizedconfirmed(bindtxid)==false)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewaysbind tx not yet confirmed/notarized");
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewaysbind tx not yet confirmed/notarized");
|
||||||
if ( myGetTransaction(deposittxid,tx,hashBlock) == 0 || (numvouts= tx.vout.size()) <= 0 )
|
if ( myGetTransaction(deposittxid,tx,hashBlock) == 0 || (numvouts= tx.vout.size()) <= 0 )
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "cant find deposittxid " << bindtxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "cant find deposittxid " << bindtxid.GetHex());
|
||||||
if (DecodeGatewaysDepositOpRet(tx.vout[numvouts-1].scriptPubKey,tmptxid,coin,publishers,txids,height,cointxid,claimvout,deposithex,proof,tmpdestpub,tmpamount) != 'D' || coin != refcoin)
|
if (DecodeGatewaysDepositOpRet(tx.vout[numvouts-1].scriptPubKey,tmptxid,coin,publishers,txids,height,cointxid,claimvout,deposithex,proof,tmpdestpub,tmpamount) != 'D' || coin != refcoin)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid coin - deposittxid " << bindtxid.GetHex() << " coin." << coin);
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid coin - deposittxid " << bindtxid.GetHex() << " coin." << coin);
|
||||||
if (komodo_txnotarizedconfirmed(deposittxid)==false)
|
if (hush_txnotarizedconfirmed(deposittxid)==false)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewaysdeposit tx not yet confirmed/notarized");
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewaysdeposit tx not yet confirmed/notarized");
|
||||||
if (tmpdestpub!=destpub)
|
if (tmpdestpub!=destpub)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "different destination pubkey from desdeposit tx");
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "different destination pubkey from desdeposit tx");
|
||||||
@@ -1038,7 +1038,7 @@ UniValue GatewaysWithdraw(const CPubKey& pk, uint64_t txfee,uint256 bindtxid,std
|
|||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "cant find bindtxid " << bindtxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "cant find bindtxid " << bindtxid.GetHex());
|
||||||
if ( DecodeGatewaysBindOpRet(depositaddr,tx.vout[numvouts-1].scriptPubKey,tokenid,coin,totalsupply,oracletxid,M,N,pubkeys,taddr,prefix,prefix2,wiftype) != 'B' || refcoin != coin )
|
if ( DecodeGatewaysBindOpRet(depositaddr,tx.vout[numvouts-1].scriptPubKey,tokenid,coin,totalsupply,oracletxid,M,N,pubkeys,taddr,prefix,prefix2,wiftype) != 'B' || refcoin != coin )
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid coin - bindtxid " << bindtxid.GetHex() << " coin." << coin);
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid coin - bindtxid " << bindtxid.GetHex() << " coin." << coin);
|
||||||
if (komodo_txnotarizedconfirmed(bindtxid)==false)
|
if (hush_txnotarizedconfirmed(bindtxid)==false)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewaysbind tx not yet confirmed/notarized");
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewaysbind tx not yet confirmed/notarized");
|
||||||
_GetCCaddress(coinaddr,EVAL_GATEWAYS,gatewayspk);
|
_GetCCaddress(coinaddr,EVAL_GATEWAYS,gatewayspk);
|
||||||
SetCCunspents(unspentOutputs,coinaddr,true);
|
SetCCunspents(unspentOutputs,coinaddr,true);
|
||||||
@@ -1097,7 +1097,7 @@ UniValue GatewaysPartialSign(const CPubKey& pk, uint64_t txfee,uint256 lasttxid,
|
|||||||
withdrawtxid=lasttxid;
|
withdrawtxid=lasttxid;
|
||||||
if (DecodeGatewaysWithdrawOpRet(tx.vout[numvouts-1].scriptPubKey,tmptokenid,bindtxid,coin,withdrawpub,amount)!='W' || refcoin!=coin)
|
if (DecodeGatewaysWithdrawOpRet(tx.vout[numvouts-1].scriptPubKey,tmptokenid,bindtxid,coin,withdrawpub,amount)!='W' || refcoin!=coin)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid withdraw tx " << lasttxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid withdraw tx " << lasttxid.GetHex());
|
||||||
else if (komodo_txnotarizedconfirmed(withdrawtxid)==false)
|
else if (hush_txnotarizedconfirmed(withdrawtxid)==false)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewayswithdraw tx not yet confirmed/notarized");
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewayswithdraw tx not yet confirmed/notarized");
|
||||||
else if (myGetTransaction(bindtxid,tmptx,hashBlock)==0 || (numvouts=tmptx.vout.size())<=0)
|
else if (myGetTransaction(bindtxid,tmptx,hashBlock)==0 || (numvouts=tmptx.vout.size())<=0)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "can't find bind tx " << bindtxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "can't find bind tx " << bindtxid.GetHex());
|
||||||
@@ -1114,7 +1114,7 @@ UniValue GatewaysPartialSign(const CPubKey& pk, uint64_t txfee,uint256 lasttxid,
|
|||||||
else if (DecodeGatewaysWithdrawOpRet(tmptx.vout[numvouts-1].scriptPubKey,tmptokenid,bindtxid,coin,withdrawpub,amount)!='W'
|
else if (DecodeGatewaysWithdrawOpRet(tmptx.vout[numvouts-1].scriptPubKey,tmptokenid,bindtxid,coin,withdrawpub,amount)!='W'
|
||||||
|| refcoin!=coin)
|
|| refcoin!=coin)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid withdraw tx " << withdrawtxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid withdraw tx " << withdrawtxid.GetHex());
|
||||||
else if (komodo_txnotarizedconfirmed(withdrawtxid)==false)
|
else if (hush_txnotarizedconfirmed(withdrawtxid)==false)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewayswithdraw tx not yet confirmed/notarized");
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewayswithdraw tx not yet confirmed/notarized");
|
||||||
else if (myGetTransaction(bindtxid,tmptx,hashBlock)==0 || (numvouts=tmptx.vout.size())<=0)
|
else if (myGetTransaction(bindtxid,tmptx,hashBlock)==0 || (numvouts=tmptx.vout.size())<=0)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "can't find bind tx " << bindtxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "can't find bind tx " << bindtxid.GetHex());
|
||||||
@@ -1151,7 +1151,7 @@ UniValue GatewaysCompleteSigning(const CPubKey& pk, uint64_t txfee,uint256 lastt
|
|||||||
withdrawtxid=lasttxid;
|
withdrawtxid=lasttxid;
|
||||||
if (DecodeGatewaysWithdrawOpRet(tx.vout[numvouts-1].scriptPubKey,tmptokenid,bindtxid,coin,withdrawpub,amount)!='W' || refcoin!=coin)
|
if (DecodeGatewaysWithdrawOpRet(tx.vout[numvouts-1].scriptPubKey,tmptokenid,bindtxid,coin,withdrawpub,amount)!='W' || refcoin!=coin)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid withdraw tx " << lasttxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid withdraw tx " << lasttxid.GetHex());
|
||||||
else if (komodo_txnotarizedconfirmed(withdrawtxid)==false)
|
else if (hush_txnotarizedconfirmed(withdrawtxid)==false)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewayswithdraw tx not yet confirmed/notarized");
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewayswithdraw tx not yet confirmed/notarized");
|
||||||
else if (myGetTransaction(bindtxid,tmptx,hashBlock)==0 || (numvouts=tmptx.vout.size())<=0)
|
else if (myGetTransaction(bindtxid,tmptx,hashBlock)==0 || (numvouts=tmptx.vout.size())<=0)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "can't find bind tx " << bindtxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "can't find bind tx " << bindtxid.GetHex());
|
||||||
@@ -1168,7 +1168,7 @@ UniValue GatewaysCompleteSigning(const CPubKey& pk, uint64_t txfee,uint256 lastt
|
|||||||
else if (DecodeGatewaysWithdrawOpRet(tmptx.vout[numvouts-1].scriptPubKey,tmptokenid,bindtxid,coin,withdrawpub,amount)!='W'
|
else if (DecodeGatewaysWithdrawOpRet(tmptx.vout[numvouts-1].scriptPubKey,tmptokenid,bindtxid,coin,withdrawpub,amount)!='W'
|
||||||
|| refcoin!=coin)
|
|| refcoin!=coin)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid withdraw tx " << withdrawtxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid withdraw tx " << withdrawtxid.GetHex());
|
||||||
else if (komodo_txnotarizedconfirmed(withdrawtxid)==false)
|
else if (hush_txnotarizedconfirmed(withdrawtxid)==false)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewayswithdraw tx not yet confirmed/notarized");
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewayswithdraw tx not yet confirmed/notarized");
|
||||||
else if (myGetTransaction(bindtxid,tmptx,hashBlock)==0 || (numvouts=tmptx.vout.size())<=0)
|
else if (myGetTransaction(bindtxid,tmptx,hashBlock)==0 || (numvouts=tmptx.vout.size())<=0)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "can't find bind tx " << bindtxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "can't find bind tx " << bindtxid.GetHex());
|
||||||
@@ -1200,7 +1200,7 @@ UniValue GatewaysMarkDone(const CPubKey& pk, uint64_t txfee,uint256 completetxid
|
|||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid completesigning txid " << completetxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid completesigning txid " << completetxid.GetHex());
|
||||||
else if (DecodeGatewaysCompleteSigningOpRet(tx.vout[numvouts-1].scriptPubKey,withdrawtxid,coin,K,hex)!='S' || refcoin!=coin)
|
else if (DecodeGatewaysCompleteSigningOpRet(tx.vout[numvouts-1].scriptPubKey,withdrawtxid,coin,K,hex)!='S' || refcoin!=coin)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "cannot decode completesigning tx opret " << completetxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "cannot decode completesigning tx opret " << completetxid.GetHex());
|
||||||
if (komodo_txnotarizedconfirmed(completetxid)==false)
|
if (hush_txnotarizedconfirmed(completetxid)==false)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewayscompletesigning tx not yet confirmed/notarized");
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "gatewayscompletesigning tx not yet confirmed/notarized");
|
||||||
else if (myGetTransaction(withdrawtxid,tx,hashBlock)==0 || (numvouts= tx.vout.size())==0)
|
else if (myGetTransaction(withdrawtxid,tx,hashBlock)==0 || (numvouts= tx.vout.size())==0)
|
||||||
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid withdraw txid " << withdrawtxid.GetHex());
|
CCERR_RESULT("gatewayscc",CCLOG_INFO, stream << "invalid withdraw txid " << withdrawtxid.GetHex());
|
||||||
@@ -1266,7 +1266,7 @@ UniValue GatewaysPendingDeposits(const CPubKey& pk, uint256 bindtxid,std::string
|
|||||||
pub=HexStr(destpub);
|
pub=HexStr(destpub);
|
||||||
obj.push_back(Pair("claim_pubkey",pub));
|
obj.push_back(Pair("claim_pubkey",pub));
|
||||||
obj.push_back(Pair("amount",(double)amount/COIN));
|
obj.push_back(Pair("amount",(double)amount/COIN));
|
||||||
obj.push_back(Pair("confirmed_or_notarized",komodo_txnotarizedconfirmed(txid)));
|
obj.push_back(Pair("confirmed_or_notarized",hush_txnotarizedconfirmed(txid)));
|
||||||
pending.push_back(obj);
|
pending.push_back(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1340,7 +1340,7 @@ UniValue GatewaysPendingWithdraws(const CPubKey& pk, uint256 bindtxid,std::strin
|
|||||||
obj.push_back(Pair("withdrawaddr",withaddr));
|
obj.push_back(Pair("withdrawaddr",withaddr));
|
||||||
sprintf(numstr,"%.8f",(double)tx.vout[1].nValue/COIN);
|
sprintf(numstr,"%.8f",(double)tx.vout[1].nValue/COIN);
|
||||||
obj.push_back(Pair("amount",numstr));
|
obj.push_back(Pair("amount",numstr));
|
||||||
obj.push_back(Pair("confirmed_or_notarized",komodo_txnotarizedconfirmed(tx.GetHash())));
|
obj.push_back(Pair("confirmed_or_notarized",hush_txnotarizedconfirmed(tx.GetHash())));
|
||||||
if ( queueflag != 0 )
|
if ( queueflag != 0 )
|
||||||
{
|
{
|
||||||
obj.push_back(Pair("depositaddr",depositaddr));
|
obj.push_back(Pair("depositaddr",depositaddr));
|
||||||
@@ -1415,7 +1415,7 @@ UniValue GatewaysProcessedWithdraws(const CPubKey& pk, uint256 bindtxid,std::str
|
|||||||
obj.push_back(Pair("withdrawtxidaddr",txidaddr));
|
obj.push_back(Pair("withdrawtxidaddr",txidaddr));
|
||||||
GetCustomscriptaddress(withaddr,CScript() << ParseHex(HexStr(withdrawpub)) << OP_CHECKSIG,taddr,prefix,prefix2);
|
GetCustomscriptaddress(withaddr,CScript() << ParseHex(HexStr(withdrawpub)) << OP_CHECKSIG,taddr,prefix,prefix2);
|
||||||
obj.push_back(Pair("withdrawaddr",withaddr));
|
obj.push_back(Pair("withdrawaddr",withaddr));
|
||||||
obj.push_back(Pair("confirmed_or_notarized",komodo_txnotarizedconfirmed(txid)));
|
obj.push_back(Pair("confirmed_or_notarized",hush_txnotarizedconfirmed(txid)));
|
||||||
sprintf(numstr,"%.8f",(double)tx.vout[1].nValue/COIN);
|
sprintf(numstr,"%.8f",(double)tx.vout[1].nValue/COIN);
|
||||||
obj.push_back(Pair("amount",numstr));
|
obj.push_back(Pair("amount",numstr));
|
||||||
obj.push_back(Pair("hex",hex));
|
obj.push_back(Pair("hex",hex));
|
||||||
|
|||||||
@@ -395,7 +395,7 @@ int32_t CheckGATEWAYimport(CTransaction importTx,CTransaction burnTx,std::string
|
|||||||
LOGSTREAM("importgateway", CCLOG_INFO, stream << "CheckGATEWAYimport not enough pubkeys for given N " << std::endl);
|
LOGSTREAM("importgateway", CCLOG_INFO, stream << "CheckGATEWAYimport not enough pubkeys for given N " << std::endl);
|
||||||
return(-1);
|
return(-1);
|
||||||
}
|
}
|
||||||
else if (komodo_txnotarizedconfirmed(bindtxid) == false)
|
else if (hush_txnotarizedconfirmed(bindtxid) == false)
|
||||||
{
|
{
|
||||||
LOGSTREAM("importgateway", CCLOG_INFO, stream << "CheckGATEWAYimport bindtx not yet confirmed/notarized" << std::endl);
|
LOGSTREAM("importgateway", CCLOG_INFO, stream << "CheckGATEWAYimport bindtx not yet confirmed/notarized" << std::endl);
|
||||||
return(-1);
|
return(-1);
|
||||||
|
|||||||
@@ -362,7 +362,7 @@ bool ImportGatewayValidate(struct CCcontract_info *cp,Eval *eval,const CTransact
|
|||||||
return eval->Invalid("invalid tokens to gateways vout for gatewaysWithdraw!");
|
return eval->Invalid("invalid tokens to gateways vout for gatewaysWithdraw!");
|
||||||
else if (tmptx.vout[1].nValue!=amount)
|
else if (tmptx.vout[1].nValue!=amount)
|
||||||
return eval->Invalid("amount in opret not matching tx tokens amount!");
|
return eval->Invalid("amount in opret not matching tx tokens amount!");
|
||||||
else if (komodo_txnotarizedconfirmed(withdrawtxid) == false)
|
else if (hush_txnotarizedconfirmed(withdrawtxid) == false)
|
||||||
return eval->Invalid("gatewayswithdraw tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewayswithdraw tx is not yet confirmed(notarised)!");
|
||||||
else if (myGetTransaction(bindtxid,tmptx,hashblock) == 0)
|
else if (myGetTransaction(bindtxid,tmptx,hashblock) == 0)
|
||||||
return eval->Invalid("invalid gatewaysbind txid!");
|
return eval->Invalid("invalid gatewaysbind txid!");
|
||||||
@@ -370,7 +370,7 @@ bool ImportGatewayValidate(struct CCcontract_info *cp,Eval *eval,const CTransact
|
|||||||
return eval->Invalid("invalid gatewaysbind OP_RETURN data!");
|
return eval->Invalid("invalid gatewaysbind OP_RETURN data!");
|
||||||
else if (tmprefcoin!=refcoin)
|
else if (tmprefcoin!=refcoin)
|
||||||
return eval->Invalid("refcoin different than in bind tx");
|
return eval->Invalid("refcoin different than in bind tx");
|
||||||
else if (komodo_txnotarizedconfirmed(bindtxid) == false)
|
else if (hush_txnotarizedconfirmed(bindtxid) == false)
|
||||||
return eval->Invalid("gatewaysbind tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewaysbind tx is not yet confirmed(notarised)!");
|
||||||
else if (IsCCInput(tx.vin[0].scriptSig) != 0)
|
else if (IsCCInput(tx.vin[0].scriptSig) != 0)
|
||||||
return eval->Invalid("vin.0 is normal for gatewayspartialsign!");
|
return eval->Invalid("vin.0 is normal for gatewayspartialsign!");
|
||||||
@@ -404,7 +404,7 @@ bool ImportGatewayValidate(struct CCcontract_info *cp,Eval *eval,const CTransact
|
|||||||
return eval->Invalid("invalid tokens to gateways vout for gatewaysWithdraw!");
|
return eval->Invalid("invalid tokens to gateways vout for gatewaysWithdraw!");
|
||||||
else if (tmptx.vout[1].nValue!=amount)
|
else if (tmptx.vout[1].nValue!=amount)
|
||||||
return eval->Invalid("amount in opret not matching tx tokens amount!");
|
return eval->Invalid("amount in opret not matching tx tokens amount!");
|
||||||
else if (komodo_txnotarizedconfirmed(withdrawtxid) == false)
|
else if (hush_txnotarizedconfirmed(withdrawtxid) == false)
|
||||||
return eval->Invalid("gatewayswithdraw tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewayswithdraw tx is not yet confirmed(notarised)!");
|
||||||
else if (myGetTransaction(bindtxid,tmptx,hashblock) == 0)
|
else if (myGetTransaction(bindtxid,tmptx,hashblock) == 0)
|
||||||
return eval->Invalid("invalid gatewaysbind txid!");
|
return eval->Invalid("invalid gatewaysbind txid!");
|
||||||
@@ -412,7 +412,7 @@ bool ImportGatewayValidate(struct CCcontract_info *cp,Eval *eval,const CTransact
|
|||||||
return eval->Invalid("invalid gatewaysbind OP_RETURN data!");
|
return eval->Invalid("invalid gatewaysbind OP_RETURN data!");
|
||||||
else if (tmprefcoin!=refcoin)
|
else if (tmprefcoin!=refcoin)
|
||||||
return eval->Invalid("refcoin different than in bind tx");
|
return eval->Invalid("refcoin different than in bind tx");
|
||||||
else if (komodo_txnotarizedconfirmed(bindtxid) == false)
|
else if (hush_txnotarizedconfirmed(bindtxid) == false)
|
||||||
return eval->Invalid("gatewaysbind tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewaysbind tx is not yet confirmed(notarised)!");
|
||||||
else if (IsCCInput(tx.vin[0].scriptSig) != 0)
|
else if (IsCCInput(tx.vin[0].scriptSig) != 0)
|
||||||
return eval->Invalid("vin.0 is normal for gatewayscompletesigning!");
|
return eval->Invalid("vin.0 is normal for gatewayscompletesigning!");
|
||||||
@@ -433,7 +433,7 @@ bool ImportGatewayValidate(struct CCcontract_info *cp,Eval *eval,const CTransact
|
|||||||
return eval->Invalid("invalid gatewayscompletesigning txid!");
|
return eval->Invalid("invalid gatewayscompletesigning txid!");
|
||||||
else if ((numvouts=tmptx.vout.size()) > 0 && DecodeImportGatewayCompleteSigningOpRet(tmptx.vout[numvouts-1].scriptPubKey,withdrawtxid,tmprefcoin,K,hex)!='S')
|
else if ((numvouts=tmptx.vout.size()) > 0 && DecodeImportGatewayCompleteSigningOpRet(tmptx.vout[numvouts-1].scriptPubKey,withdrawtxid,tmprefcoin,K,hex)!='S')
|
||||||
return eval->Invalid("invalid gatewayscompletesigning OP_RETURN data!");
|
return eval->Invalid("invalid gatewayscompletesigning OP_RETURN data!");
|
||||||
else if (komodo_txnotarizedconfirmed(completetxid) == false)
|
else if (hush_txnotarizedconfirmed(completetxid) == false)
|
||||||
return eval->Invalid("gatewayscompletesigning tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewayscompletesigning tx is not yet confirmed(notarised)!");
|
||||||
else if (myGetTransaction(withdrawtxid,tmptx,hashblock) == 0)
|
else if (myGetTransaction(withdrawtxid,tmptx,hashblock) == 0)
|
||||||
return eval->Invalid("invalid withdraw txid!");
|
return eval->Invalid("invalid withdraw txid!");
|
||||||
@@ -441,7 +441,7 @@ bool ImportGatewayValidate(struct CCcontract_info *cp,Eval *eval,const CTransact
|
|||||||
return eval->Invalid("invalid gatewayswithdraw OP_RETURN data!");
|
return eval->Invalid("invalid gatewayswithdraw OP_RETURN data!");
|
||||||
else if (tmprefcoin!=refcoin)
|
else if (tmprefcoin!=refcoin)
|
||||||
return eval->Invalid("refcoin different than in bind tx");
|
return eval->Invalid("refcoin different than in bind tx");
|
||||||
else if (komodo_txnotarizedconfirmed(withdrawtxid) == false)
|
else if (hush_txnotarizedconfirmed(withdrawtxid) == false)
|
||||||
return eval->Invalid("gatewayswithdraw tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewayswithdraw tx is not yet confirmed(notarised)!");
|
||||||
else if (myGetTransaction(bindtxid,tmptx,hashblock) == 0)
|
else if (myGetTransaction(bindtxid,tmptx,hashblock) == 0)
|
||||||
return eval->Invalid("invalid gatewaysbind txid!");
|
return eval->Invalid("invalid gatewaysbind txid!");
|
||||||
@@ -449,7 +449,7 @@ bool ImportGatewayValidate(struct CCcontract_info *cp,Eval *eval,const CTransact
|
|||||||
return eval->Invalid("invalid gatewaysbind OP_RETURN data!");
|
return eval->Invalid("invalid gatewaysbind OP_RETURN data!");
|
||||||
else if (tmprefcoin!=refcoin)
|
else if (tmprefcoin!=refcoin)
|
||||||
return eval->Invalid("refcoin different than in bind tx");
|
return eval->Invalid("refcoin different than in bind tx");
|
||||||
else if (komodo_txnotarizedconfirmed(bindtxid) == false)
|
else if (hush_txnotarizedconfirmed(bindtxid) == false)
|
||||||
return eval->Invalid("gatewaysbind tx is not yet confirmed(notarised)!");
|
return eval->Invalid("gatewaysbind tx is not yet confirmed(notarised)!");
|
||||||
else if ( IsCCInput(tx.vin[0].scriptSig) != 0 )
|
else if ( IsCCInput(tx.vin[0].scriptSig) != 0 )
|
||||||
return eval->Invalid("vin.0 is normal for gatewaysmarkdone!");
|
return eval->Invalid("vin.0 is normal for gatewaysmarkdone!");
|
||||||
@@ -597,7 +597,7 @@ std::string ImportGatewayDeposit(uint64_t txfee,uint256 bindtxid,int32_t height,
|
|||||||
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
||||||
return("");
|
return("");
|
||||||
}
|
}
|
||||||
if (komodo_txnotarizedconfirmed(bindtxid)==false)
|
if (hush_txnotarizedconfirmed(bindtxid)==false)
|
||||||
{
|
{
|
||||||
CCerror = strprintf("gatewaysbind tx not yet confirmed/notarized");
|
CCerror = strprintf("gatewaysbind tx not yet confirmed/notarized");
|
||||||
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
||||||
@@ -673,7 +673,7 @@ std::string ImportGatewayWithdraw(uint64_t txfee,uint256 bindtxid,std::string re
|
|||||||
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
||||||
return("");
|
return("");
|
||||||
}
|
}
|
||||||
if (komodo_txnotarizedconfirmed(bindtxid)==false)
|
if (hush_txnotarizedconfirmed(bindtxid)==false)
|
||||||
{
|
{
|
||||||
CCerror = strprintf("gatewaysbind tx not yet confirmed/notarized");
|
CCerror = strprintf("gatewaysbind tx not yet confirmed/notarized");
|
||||||
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
||||||
@@ -754,7 +754,7 @@ std::string ImportGatewayPartialSign(uint64_t txfee,uint256 lasttxid,std::string
|
|||||||
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
||||||
return("");
|
return("");
|
||||||
}
|
}
|
||||||
else if (komodo_txnotarizedconfirmed(withdrawtxid)==false)
|
else if (hush_txnotarizedconfirmed(withdrawtxid)==false)
|
||||||
{
|
{
|
||||||
CCerror = strprintf("gatewayswithdraw tx not yet confirmed/notarized");
|
CCerror = strprintf("gatewayswithdraw tx not yet confirmed/notarized");
|
||||||
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
||||||
@@ -801,7 +801,7 @@ std::string ImportGatewayPartialSign(uint64_t txfee,uint256 lasttxid,std::string
|
|||||||
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
||||||
return("");
|
return("");
|
||||||
}
|
}
|
||||||
else if (komodo_txnotarizedconfirmed(withdrawtxid)==false)
|
else if (hush_txnotarizedconfirmed(withdrawtxid)==false)
|
||||||
{
|
{
|
||||||
CCerror = strprintf("gatewayswithdraw tx not yet confirmed/notarized");
|
CCerror = strprintf("gatewayswithdraw tx not yet confirmed/notarized");
|
||||||
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
||||||
@@ -872,7 +872,7 @@ std::string ImportGatewayCompleteSigning(uint64_t txfee,uint256 lasttxid,std::st
|
|||||||
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
||||||
return("");
|
return("");
|
||||||
}
|
}
|
||||||
else if (komodo_txnotarizedconfirmed(withdrawtxid)==false)
|
else if (hush_txnotarizedconfirmed(withdrawtxid)==false)
|
||||||
{
|
{
|
||||||
CCerror = strprintf("gatewayswithdraw tx not yet confirmed/notarized");
|
CCerror = strprintf("gatewayswithdraw tx not yet confirmed/notarized");
|
||||||
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
||||||
@@ -918,7 +918,7 @@ std::string ImportGatewayCompleteSigning(uint64_t txfee,uint256 lasttxid,std::st
|
|||||||
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
||||||
return("");
|
return("");
|
||||||
}
|
}
|
||||||
else if (komodo_txnotarizedconfirmed(withdrawtxid)==false)
|
else if (hush_txnotarizedconfirmed(withdrawtxid)==false)
|
||||||
{
|
{
|
||||||
CCerror = strprintf("gatewayswithdraw tx not yet confirmed/notarized");
|
CCerror = strprintf("gatewayswithdraw tx not yet confirmed/notarized");
|
||||||
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
||||||
@@ -972,7 +972,7 @@ std::string ImportGatewayMarkDone(uint64_t txfee,uint256 completetxid,std::strin
|
|||||||
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
||||||
return("");
|
return("");
|
||||||
}
|
}
|
||||||
if (komodo_txnotarizedconfirmed(completetxid)==false)
|
if (hush_txnotarizedconfirmed(completetxid)==false)
|
||||||
{
|
{
|
||||||
CCerror = strprintf("gatewayscompletesigning tx not yet confirmed/notarized");
|
CCerror = strprintf("gatewayscompletesigning tx not yet confirmed/notarized");
|
||||||
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
LOGSTREAM("importgateway",CCLOG_INFO, stream << CCerror << std::endl);
|
||||||
@@ -1084,7 +1084,7 @@ UniValue ImportGatewayPendingWithdraws(uint256 bindtxid,std::string refcoin)
|
|||||||
obj.push_back(Pair("withdrawaddr",withaddr));
|
obj.push_back(Pair("withdrawaddr",withaddr));
|
||||||
sprintf(numstr,"%.8f",(double)tx.vout[1].nValue/COIN);
|
sprintf(numstr,"%.8f",(double)tx.vout[1].nValue/COIN);
|
||||||
obj.push_back(Pair("amount",numstr));
|
obj.push_back(Pair("amount",numstr));
|
||||||
obj.push_back(Pair("confirmed_or_notarized",komodo_txnotarizedconfirmed(tx.GetHash())));
|
obj.push_back(Pair("confirmed_or_notarized",hush_txnotarizedconfirmed(tx.GetHash())));
|
||||||
if ( queueflag != 0 )
|
if ( queueflag != 0 )
|
||||||
{
|
{
|
||||||
obj.push_back(Pair("depositaddr",burnaddr));
|
obj.push_back(Pair("depositaddr",burnaddr));
|
||||||
@@ -1159,7 +1159,7 @@ UniValue ImportGatewayProcessedWithdraws(uint256 bindtxid,std::string refcoin)
|
|||||||
obj.push_back(Pair("withdrawtxidaddr",txidaddr));
|
obj.push_back(Pair("withdrawtxidaddr",txidaddr));
|
||||||
GetCustomscriptaddress(withaddr,CScript() << ParseHex(HexStr(withdrawpub)) << OP_CHECKSIG,taddr,prefix,prefix2);
|
GetCustomscriptaddress(withaddr,CScript() << ParseHex(HexStr(withdrawpub)) << OP_CHECKSIG,taddr,prefix,prefix2);
|
||||||
obj.push_back(Pair("withdrawaddr",withaddr));
|
obj.push_back(Pair("withdrawaddr",withaddr));
|
||||||
obj.push_back(Pair("confirmed_or_notarized",komodo_txnotarizedconfirmed(txid)));
|
obj.push_back(Pair("confirmed_or_notarized",hush_txnotarizedconfirmed(txid)));
|
||||||
sprintf(numstr,"%.8f",(double)tx.vout[1].nValue/COIN);
|
sprintf(numstr,"%.8f",(double)tx.vout[1].nValue/COIN);
|
||||||
obj.push_back(Pair("amount",numstr));
|
obj.push_back(Pair("amount",numstr));
|
||||||
obj.push_back(Pair("hex",hex));
|
obj.push_back(Pair("hex",hex));
|
||||||
|
|||||||
@@ -384,11 +384,11 @@ char *komodo_issuemethod(char *userpass,char *method,char *params,uint16_t port)
|
|||||||
return(retstr2);
|
return(retstr2);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t notarizedtxid_height(char *dest,char *txidstr,int32_t *kmdnotarized_heightp)
|
int32_t notarizedtxid_height(char *dest,char *txidstr,int32_t *hushnotarized_heightp)
|
||||||
{
|
{
|
||||||
char *jsonstr,params[256],*userpass; uint16_t port; cJSON *json,*item; int32_t height = 0,txid_height = 0,txid_confirmations = 0;
|
char *jsonstr,params[256],*userpass; uint16_t port; cJSON *json,*item; int32_t height = 0,txid_height = 0,txid_confirmations = 0;
|
||||||
params[0] = 0;
|
params[0] = 0;
|
||||||
*kmdnotarized_heightp = 0;
|
*hushnotarized_heightp = 0;
|
||||||
if ( strcmp(dest,"HUSH3") == 0 ) {
|
if ( strcmp(dest,"HUSH3") == 0 ) {
|
||||||
port = HUSH3_PORT;
|
port = HUSH3_PORT;
|
||||||
userpass = HUSHUSERPASS;
|
userpass = HUSHUSERPASS;
|
||||||
@@ -409,7 +409,7 @@ int32_t notarizedtxid_height(char *dest,char *txidstr,int32_t *kmdnotarized_heig
|
|||||||
if ( (item= jobj(json,(char *)"result")) != 0 )
|
if ( (item= jobj(json,(char *)"result")) != 0 )
|
||||||
{
|
{
|
||||||
height = jint(item,(char *)"blocks");
|
height = jint(item,(char *)"blocks");
|
||||||
*kmdnotarized_heightp = strcmp(dest,"KMD") == 0 ? jint(item,(char *)"notarized") : height;
|
*hushnotarized_heightp = strcmp(dest,"KMD") == 0 ? jint(item,(char *)"notarized") : height;
|
||||||
}
|
}
|
||||||
free_json(json);
|
free_json(json);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -567,7 +567,7 @@ int32_t hush_nextheight();
|
|||||||
CBlockIndex *hush_blockindex(uint256 hash);
|
CBlockIndex *hush_blockindex(uint256 hash);
|
||||||
CBlockIndex *hush_chainactive(int32_t height);
|
CBlockIndex *hush_chainactive(int32_t height);
|
||||||
int32_t hush_blockheight(uint256 hash);
|
int32_t hush_blockheight(uint256 hash);
|
||||||
bool komodo_txnotarizedconfirmed(uint256 txid);
|
bool hush_txnotarizedconfirmed(uint256 txid);
|
||||||
int32_t hush_blockload(CBlock& block, CBlockIndex *pindex);
|
int32_t hush_blockload(CBlock& block, CBlockIndex *pindex);
|
||||||
uint32_t hush_chainactive_timestamp();
|
uint32_t hush_chainactive_timestamp();
|
||||||
uint32_t GetLatestTimestamp(int32_t height);
|
uint32_t GetLatestTimestamp(int32_t height);
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ using namespace std;
|
|||||||
|
|
||||||
int32_t hush_longestchain();
|
int32_t hush_longestchain();
|
||||||
int32_t hush_notarized_height(int32_t *prevMoMheightp,uint256 *hashp,uint256 *txidp);
|
int32_t hush_notarized_height(int32_t *prevMoMheightp,uint256 *hashp,uint256 *txidp);
|
||||||
bool komodo_txnotarizedconfirmed(uint256 txid);
|
bool hush_txnotarizedconfirmed(uint256 txid);
|
||||||
uint32_t hush_chainactive_timestamp();
|
uint32_t hush_chainactive_timestamp();
|
||||||
int32_t hush_whoami(char *pubkeystr,int32_t height,uint32_t timestamp);
|
int32_t hush_whoami(char *pubkeystr,int32_t height,uint32_t timestamp);
|
||||||
extern int32_t HUSH_LASTMINED,HUSH_LONGESTCHAIN,IS_HUSH_NOTARY,HUSH_INSYNC;
|
extern int32_t HUSH_LASTMINED,HUSH_LONGESTCHAIN,IS_HUSH_NOTARY,HUSH_INSYNC;
|
||||||
@@ -230,7 +230,7 @@ UniValue getinfo(const UniValue& params, bool fHelp, const CPubKey& mypk)
|
|||||||
obj.push_back(Pair("notarizedtxid", notarized_desttxid.ToString()));
|
obj.push_back(Pair("notarizedtxid", notarized_desttxid.ToString()));
|
||||||
if ( HUSH_NSPV_FULLNODE )
|
if ( HUSH_NSPV_FULLNODE )
|
||||||
{
|
{
|
||||||
txid_height = notarizedtxid_height(SMART_CHAIN_SYMBOL[0] != 0 ? (char *)"HUSH" : (char *)"BTC",(char *)notarized_desttxid.ToString().c_str(),&hushnotarized_height);
|
txid_height = notarizedtxid_height(SMART_CHAIN_SYMBOL[0] != 0 ? (char *)"HUSH3" : (char *)"BTC",(char *)notarized_desttxid.ToString().c_str(),&hushnotarized_height);
|
||||||
if ( txid_height > 0 )
|
if ( txid_height > 0 )
|
||||||
obj.push_back(Pair("notarizedtxid_height", txid_height));
|
obj.push_back(Pair("notarizedtxid_height", txid_height));
|
||||||
else obj.push_back(Pair("notarizedtxid_height", "mempool"));
|
else obj.push_back(Pair("notarizedtxid_height", "mempool"));
|
||||||
@@ -1463,7 +1463,7 @@ UniValue txnotarizedconfirmed(const UniValue& params, bool fHelp, const CPubKey&
|
|||||||
if (fHelp || params.size() < 1 || params.size() > 1)
|
if (fHelp || params.size() < 1 || params.size() > 1)
|
||||||
{
|
{
|
||||||
string msg = "txnotarizedconfirmed txid\n"
|
string msg = "txnotarizedconfirmed txid\n"
|
||||||
"\nReturns true if transaction is notarized on chain that has dPoW or if confirmation number is greater than 60 on chain taht does not have dPoW.\n"
|
"\nReturns true if transaction is notarized on chain that has dPoW or if confirmation number is greater than 60 on chain that does not have dPoW.\n"
|
||||||
|
|
||||||
"\nArguments:\n"
|
"\nArguments:\n"
|
||||||
"1. txid (string, required) Transaction id.\n"
|
"1. txid (string, required) Transaction id.\n"
|
||||||
@@ -1476,7 +1476,7 @@ UniValue txnotarizedconfirmed(const UniValue& params, bool fHelp, const CPubKey&
|
|||||||
throw runtime_error(msg);
|
throw runtime_error(msg);
|
||||||
}
|
}
|
||||||
txid = uint256S((char *)params[0].get_str().c_str());
|
txid = uint256S((char *)params[0].get_str().c_str());
|
||||||
notarizedconfirmed=komodo_txnotarizedconfirmed(txid);
|
notarizedconfirmed=hush_txnotarizedconfirmed(txid);
|
||||||
UniValue result(UniValue::VOBJ);
|
UniValue result(UniValue::VOBJ);
|
||||||
result.push_back(Pair("result", notarizedconfirmed));
|
result.push_back(Pair("result", notarizedconfirmed));
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
Reference in New Issue
Block a user