This commit is contained in:
jl777
2018-08-01 02:33:52 -11:00
parent 214e2c4cf1
commit f3ad9d4865

View File

@@ -94,7 +94,7 @@ void *dicefinish(void *_ptr)
{ {
char str[65],str2[65],name[32]; std::string res; int32_t i,duplicate=0; struct dicefinish_info *ptr; char str[65],str2[65],name[32]; std::string res; int32_t i,duplicate=0; struct dicefinish_info *ptr;
ptr = (struct dicefinish_info *)_ptr; ptr = (struct dicefinish_info *)_ptr;
sleep(1); sleep(3); // wait for bettxid to be in mempool
for (i=0; i<sizeof(bettxids)/sizeof(*bettxids); i++) for (i=0; i<sizeof(bettxids)/sizeof(*bettxids); i++)
if ( bettxids[i] == ptr->bettxid ) if ( bettxids[i] == ptr->bettxid )
{ {
@@ -218,7 +218,7 @@ uint64_t DiceCalc(int64_t bet,int64_t odds,int64_t minbet,int64_t maxbet,int64_t
if ( odds > 1 ) if ( odds > 1 )
bettor = (bettor / arith_uint256(odds)); bettor = (bettor / arith_uint256(odds));
if ( bettor >= house ) if ( bettor >= house )
winnings = bet * odds; winnings = bet * (odds+1);
else winnings = 0; else winnings = 0;
fprintf(stderr,"winnings %.8f bet %.8f at odds %d:1 %s vs %s\n",(double)winnings/COIN,(double)bet/COIN,(int32_t)odds,uint256_str(str,*(uint256 *)&house),uint256_str(str2,*(uint256 *)&bettor)); fprintf(stderr,"winnings %.8f bet %.8f at odds %d:1 %s vs %s\n",(double)winnings/COIN,(double)bet/COIN,(int32_t)odds,uint256_str(str,*(uint256 *)&house),uint256_str(str2,*(uint256 *)&bettor));
return(winnings); return(winnings);
@@ -497,7 +497,7 @@ bool DiceValidate(struct CCcontract_info *cp,Eval *eval,const CTransaction &tx)
return eval->Invalid("vout[0] != inputs-txfee for win/timeout"); return eval->Invalid("vout[0] != inputs-txfee for win/timeout");
else if ( tx.vout[2].scriptPubKey != vinTx.vout[2].scriptPubKey ) else if ( tx.vout[2].scriptPubKey != vinTx.vout[2].scriptPubKey )
return eval->Invalid("vout[2] scriptPubKey mismatch for win/timeout"); return eval->Invalid("vout[2] scriptPubKey mismatch for win/timeout");
else if ( tx.vout[2].nValue != odds*vinTx.vout[1].nValue ) else if ( tx.vout[2].nValue != (odds+1)*vinTx.vout[1].nValue )
return eval->Invalid("vout[2] payut mismatch for win/timeout"); return eval->Invalid("vout[2] payut mismatch for win/timeout");
else if ( inputs != (outputs + tx.vout[2].nValue + txfee) ) else if ( inputs != (outputs + tx.vout[2].nValue + txfee) )
{ {
@@ -891,14 +891,14 @@ std::string DiceWinLoseTimeout(int32_t *resultp,uint64_t txfee,char *planstr,uin
return("0"); return("0");
} }
CCchange = betTx.vout[0].nValue; CCchange = betTx.vout[0].nValue;
fundsneeded = txfee + (odds-1)*betTx.vout[1].nValue; fundsneeded = txfee + odds*betTx.vout[1].nValue;
if ( (inputs= AddDiceInputs(cp,mtx,dicepk,fundsneeded,60)) > 0 ) if ( (inputs= AddDiceInputs(cp,mtx,dicepk,fundsneeded,60)) > 0 )
{ {
if ( inputs > fundsneeded ) if ( inputs > fundsneeded )
CCchange += (inputs - fundsneeded); CCchange += (inputs - fundsneeded);
mtx.vout.push_back(MakeCC1vout(cp->evalcode,CCchange,dicepk)); mtx.vout.push_back(MakeCC1vout(cp->evalcode,CCchange,dicepk));
mtx.vout.push_back(CTxOut(txfee,fundingPubKey)); mtx.vout.push_back(CTxOut(txfee,fundingPubKey));
mtx.vout.push_back(CTxOut(odds * betTx.vout[1].nValue,betTx.vout[2].scriptPubKey)); mtx.vout.push_back(CTxOut((odds+1) * betTx.vout[1].nValue,betTx.vout[2].scriptPubKey));
} }
else else
{ {