Display rewards vs validated
This commit is contained in:
@@ -51,7 +51,7 @@
|
|||||||
#define NSPV_BROADCAST 0x0c
|
#define NSPV_BROADCAST 0x0c
|
||||||
#define NSPV_BROADCASTRESP 0x0d
|
#define NSPV_BROADCASTRESP 0x0d
|
||||||
|
|
||||||
int32_t NSPV_gettransaction(int32_t skipvalidation,int32_t vout,uint256 txid,int32_t height,CTransaction &tx,int64_t extradata,uint32_t tiptime);
|
int32_t NSPV_gettransaction(int32_t skipvalidation,int32_t vout,uint256 txid,int32_t height,CTransaction &tx,int64_t extradata,uint32_t tiptime,int64_t &rewardsum);
|
||||||
extern uint256 SIG_TXHASH;
|
extern uint256 SIG_TXHASH;
|
||||||
uint32_t NSPV_blocktime(int32_t hdrheight);
|
uint32_t NSPV_blocktime(int32_t hdrheight);
|
||||||
|
|
||||||
@@ -471,11 +471,11 @@ int32_t NSPV_fastnotariescount(CTransaction tx,uint8_t elected[64][33],uint32_t
|
|||||||
*/
|
*/
|
||||||
int32_t NSPV_notariescount(CTransaction tx,uint8_t elected[64][33])
|
int32_t NSPV_notariescount(CTransaction tx,uint8_t elected[64][33])
|
||||||
{
|
{
|
||||||
uint8_t *script; CTransaction vintx; int32_t i,j,utxovout,scriptlen,numsigs = 0;
|
uint8_t *script; CTransaction vintx; int64_t rewardsum = 0; int32_t i,j,utxovout,scriptlen,numsigs = 0;
|
||||||
for (i=0; i<tx.vin.size(); i++)
|
for (i=0; i<tx.vin.size(); i++)
|
||||||
{
|
{
|
||||||
utxovout = tx.vin[i].prevout.n;
|
utxovout = tx.vin[i].prevout.n;
|
||||||
if ( NSPV_gettransaction(1,utxovout,tx.vin[i].prevout.hash,0,vintx,-1,0) != 0 )
|
if ( NSPV_gettransaction(1,utxovout,tx.vin[i].prevout.hash,0,vintx,-1,0,rewardsum) != 0 )
|
||||||
{
|
{
|
||||||
fprintf(stderr,"error getting %s/v%d\n",tx.vin[i].prevout.hash.GetHex().c_str(),utxovout);
|
fprintf(stderr,"error getting %s/v%d\n",tx.vin[i].prevout.hash.GetHex().c_str(),utxovout);
|
||||||
return(numsigs);
|
return(numsigs);
|
||||||
|
|||||||
@@ -622,7 +622,7 @@ int32_t NSPV_validatehdrs(struct NSPV_ntzsproofresp *ptr)
|
|||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t NSPV_gettransaction(int32_t skipvalidation,int32_t vout,uint256 txid,int32_t height,CTransaction &tx,int64_t extradata,uint32_t tiptime)
|
int32_t NSPV_gettransaction(int32_t skipvalidation,int32_t vout,uint256 txid,int32_t height,CTransaction &tx,int64_t extradata,uint32_t tiptime,int64_t &rewardsum)
|
||||||
{
|
{
|
||||||
int32_t i,offset,retval = 0; int64_t rewards = 0; uint32_t nLockTime; std::vector<uint8_t> proof;
|
int32_t i,offset,retval = 0; int64_t rewards = 0; uint32_t nLockTime; std::vector<uint8_t> proof;
|
||||||
for (i=0; i<3; i++)
|
for (i=0; i<3; i++)
|
||||||
@@ -644,7 +644,11 @@ int32_t NSPV_gettransaction(int32_t skipvalidation,int32_t vout,uint256 txid,int
|
|||||||
else if ( ASSETCHAINS_SYMBOL[0] == 0 && extradata >= 0 && tiptime != 0 )
|
else if ( ASSETCHAINS_SYMBOL[0] == 0 && extradata >= 0 && tiptime != 0 )
|
||||||
{
|
{
|
||||||
rewards = komodo_interestnew(height,tx.vout[vout].nValue,tx.nLockTime,tiptime);
|
rewards = komodo_interestnew(height,tx.vout[vout].nValue,tx.nLockTime,tiptime);
|
||||||
fprintf(stderr,"extradata %.8f vs rewards %.8f\n",dstr(extradata),dstr(rewards));
|
if ( rewards != extradata )
|
||||||
|
{
|
||||||
|
fprintf(stderr,"extradata %.8f vs rewards %.8f\n",dstr(extradata),dstr(rewards));
|
||||||
|
}
|
||||||
|
rewardsum += rewards;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( skipvalidation == 0 )
|
if ( skipvalidation == 0 )
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ bool NSPV_SignTx(CMutableTransaction &mtx,int32_t vini,int64_t utxovalue,const C
|
|||||||
return(false);
|
return(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string NSPV_signtx(UniValue &retcodes,CMutableTransaction &mtx,uint64_t txfee,CScript opret,struct NSPV_utxoresp used[])
|
std::string NSPV_signtx(int64_t &rewardsum,int64_t &interestsum,UniValue &retcodes,CMutableTransaction &mtx,uint64_t txfee,CScript opret,struct NSPV_utxoresp used[])
|
||||||
{
|
{
|
||||||
CTransaction vintx; std::string hex; uint256 hashBlock; int64_t interest=0,change,totaloutputs=0,totalinputs=0; int32_t i,utxovout,n,validation;
|
CTransaction vintx; std::string hex; uint256 hashBlock; int64_t interest=0,change,totaloutputs=0,totalinputs=0; int32_t i,utxovout,n,validation;
|
||||||
n = mtx.vout.size();
|
n = mtx.vout.size();
|
||||||
@@ -158,6 +158,7 @@ std::string NSPV_signtx(UniValue &retcodes,CMutableTransaction &mtx,uint64_t txf
|
|||||||
totalinputs += used[i].satoshis;
|
totalinputs += used[i].satoshis;
|
||||||
interest += used[i].extradata;
|
interest += used[i].extradata;
|
||||||
}
|
}
|
||||||
|
interestsum = interest;
|
||||||
if ( (totalinputs+interest) >= totaloutputs+2*txfee )
|
if ( (totalinputs+interest) >= totaloutputs+2*txfee )
|
||||||
{
|
{
|
||||||
change = (totalinputs+interest) - (totaloutputs+txfee);
|
change = (totalinputs+interest) - (totaloutputs+txfee);
|
||||||
@@ -170,7 +171,7 @@ std::string NSPV_signtx(UniValue &retcodes,CMutableTransaction &mtx,uint64_t txf
|
|||||||
utxovout = mtx.vin[i].prevout.n;
|
utxovout = mtx.vin[i].prevout.n;
|
||||||
if ( i > 0 )
|
if ( i > 0 )
|
||||||
sleep(1);
|
sleep(1);
|
||||||
validation = NSPV_gettransaction(0,utxovout,mtx.vin[i].prevout.hash,used[i].height,vintx,used[i].extradata,NSPV_tiptime);
|
validation = NSPV_gettransaction(0,utxovout,mtx.vin[i].prevout.hash,used[i].height,vintx,used[i].extradata,NSPV_tiptime,rewardsum);
|
||||||
retcodes.push_back(validation);
|
retcodes.push_back(validation);
|
||||||
if ( validation != -1 ) // most others are degraded security
|
if ( validation != -1 ) // most others are degraded security
|
||||||
{
|
{
|
||||||
@@ -244,7 +245,7 @@ UniValue NSPV_spend(char *srcaddr,char *destaddr,int64_t satoshis) // what its a
|
|||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
printf("%s numutxos.%d balance %.8f\n",NSPV_utxosresult.coinaddr,NSPV_utxosresult.numutxos,(double)NSPV_utxosresult.total/COIN);
|
printf("%s numutxos.%d balance %.8f\n",NSPV_utxosresult.coinaddr,NSPV_utxosresult.numutxos,(double)NSPV_utxosresult.total/COIN);
|
||||||
std::vector<uint8_t> data; CScript opret; std::string hex; struct NSPV_utxoresp used[NSPV_MAXVINS]; CMutableTransaction mtx; CTransaction tx;
|
std::vector<uint8_t> data; CScript opret; std::string hex; struct NSPV_utxoresp used[NSPV_MAXVINS]; CMutableTransaction mtx; CTransaction tx; int64_t rewardsum=0,interestsum=0;
|
||||||
mtx.fOverwintered = true;
|
mtx.fOverwintered = true;
|
||||||
mtx.nExpiryHeight = 0;
|
mtx.nExpiryHeight = 0;
|
||||||
mtx.nVersionGroupId = SAPLING_VERSION_GROUP_ID;
|
mtx.nVersionGroupId = SAPLING_VERSION_GROUP_ID;
|
||||||
@@ -264,7 +265,12 @@ UniValue NSPV_spend(char *srcaddr,char *destaddr,int64_t satoshis) // what its a
|
|||||||
result.push_back(Pair("error","wif expired"));
|
result.push_back(Pair("error","wif expired"));
|
||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
hex = NSPV_signtx(retcodes,mtx,txfee,opret,used);
|
hex = NSPV_signtx(rewardsum,interestsum,retcodes,mtx,txfee,opret,used);
|
||||||
|
if ( interestsum != 0 || rewardsum != 0 )
|
||||||
|
{
|
||||||
|
result.push_back(Pair("rewards",dstr(interestsum)));
|
||||||
|
result.push_back(Pair("validated",dstr(rewardsum)));
|
||||||
|
}
|
||||||
if ( hex.size() > 0 )
|
if ( hex.size() > 0 )
|
||||||
{
|
{
|
||||||
if ( DecodeHexTx(tx,hex) != 0 )
|
if ( DecodeHexTx(tx,hex) != 0 )
|
||||||
|
|||||||
Reference in New Issue
Block a user