From 26e796c068feb640e16ec3f7c7014abe65451d55 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 23 Jul 2018 21:05:00 -1100 Subject: [PATCH] Create generic evalcode CC funds --- src/cc/CCcustom.cpp | 9 +++++---- src/cc/CCfaucet.h | 2 +- src/cc/CCinclude.h | 3 ++- src/cc/CCtx.cpp | 4 ++-- src/cc/CCutils.cpp | 9 +++++++++ src/cc/faucet.cpp | 7 ++++--- 6 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/cc/CCcustom.cpp b/src/cc/CCcustom.cpp index 6761497b0..a3fdef385 100644 --- a/src/cc/CCcustom.cpp +++ b/src/cc/CCcustom.cpp @@ -27,7 +27,7 @@ */ CC *MakeAssetCond(CPubKey pk); -CC *MakeFaucetCond(CPubKey pk); +//CC *MakeFaucetCond(CPubKey pk); CC *MakeRewardsCond(CPubKey pk); //BTCD Address: RAssetsAtGnvwgK9gVHBbAU4sVTah1hAm5 @@ -123,7 +123,7 @@ CPubKey GetUnspendable(uint8_t evalcode,uint8_t *unspendablepriv) else return(nullpk); } -CC *MakeCC(uint8_t evalcode,CPubKey pk) +/*CC *MakeCC(uint8_t evalcode,CPubKey pk) { if ( evalcode == EVAL_ASSETS || evalcode == EVAL_FAUCET || evalcode == EVAL_REWARDS ) { @@ -133,7 +133,7 @@ CC *MakeCC(uint8_t evalcode,CPubKey pk) CC *Sig = CCNewThreshold(1, pks); return CCNewThreshold(2, {assetCC, Sig}); } else return(0); -} +}*/ bool GetCCaddress(uint8_t evalcode,char *destaddr,CPubKey pk) { @@ -152,7 +152,8 @@ bool GetCCaddress(uint8_t evalcode,char *destaddr,CPubKey pk) } else if ( evalcode == EVAL_FAUCET ) { - if ( (payoutCond= MakeFaucetCond(pk)) != 0 ) + if ( (payoutCond= MakeCCcond1(evalcode,pk)) != 0 ) + //if ( (payoutCond= MakeFaucetCond(pk)) != 0 ) { Getscriptaddress(destaddr,CCPubKey(payoutCond)); cc_free(payoutCond); diff --git a/src/cc/CCfaucet.h b/src/cc/CCfaucet.h index 7dfd7263e..12a0c1897 100644 --- a/src/cc/CCfaucet.h +++ b/src/cc/CCfaucet.h @@ -26,7 +26,7 @@ extern char FaucetCChexstr[67]; // CCcustom bool IsFaucetInput(CScript const& scriptSig); -CC *MakeFaucetCond(CPubKey pk); +//CC *MakeFaucetCond(CPubKey pk); std::string FaucetFund(uint64_t txfee,uint64_t funds); std::string FaucetGet(uint64_t txfee); diff --git a/src/cc/CCinclude.h b/src/cc/CCinclude.h index d9367ec5a..1573deca2 100644 --- a/src/cc/CCinclude.h +++ b/src/cc/CCinclude.h @@ -37,10 +37,11 @@ static uint256 zeroid; // CCcustom CPubKey GetUnspendable(uint8_t evalcode,uint8_t *unspendablepriv); -CC *MakeCC(uint8_t evalcode,CPubKey pk); +//CC *MakeCC(uint8_t evalcode,CPubKey pk); bool GetCCaddress(uint8_t evalcode,char *destaddr,CPubKey pk); // CCutils +CC *MakeCCcond1(uint8_t evalcode,CPubKey pk); CC* GetCryptoCondition(CScript const& scriptSig); bool IsCCInput(CScript const& scriptSig); uint256 revuint256(uint256 txid); diff --git a/src/cc/CCtx.cpp b/src/cc/CCtx.cpp index 4d1dd0d00..5a8b3607a 100644 --- a/src/cc/CCtx.cpp +++ b/src/cc/CCtx.cpp @@ -56,9 +56,9 @@ std::string FinalizeCCTx(uint8_t evalcode,CMutableTransaction &mtx,CPubKey mypk, Myprivkey(myprivkey); unspendablepk = GetUnspendable(evalcode,unspendablepriv); GetCCaddress(evalcode,myaddr,mypk); - mycond = MakeCC(evalcode,mypk); + mycond = MakeCCcond1(evalcode,mypk); GetCCaddress(evalcode,unspendable,unspendablepk); - othercond = MakeCC(evalcode,unspendablepk); + othercond = MakeCCcond1(evalcode,unspendablepk); //fprintf(stderr,"myCCaddr.(%s) %p vs unspendable.(%s) %p\n",myaddr,mycond,unspendable,othercond); memset(utxovalues,0,sizeof(utxovalues)); for (i=0; i pks; + pks.push_back(CCNewSecp256k1(pk)); + CC *condCC = CCNewEval(E_MARSHAL(ss << evalcode)); + CC *Sig = CCNewThreshold(1, pks); + return CCNewThreshold(2, {condCC, Sig}); +} + CC* GetCryptoCondition(CScript const& scriptSig) { auto pc = scriptSig.begin(); diff --git a/src/cc/faucet.cpp b/src/cc/faucet.cpp index afb152121..778e2293b 100644 --- a/src/cc/faucet.cpp +++ b/src/cc/faucet.cpp @@ -26,19 +26,20 @@ To implement this, we can simply make any faucet vout fund the faucet. Then we can limit the number of confirmed utxo by combining faucet outputs and then only using utxo which are confirmed. This combined with a vout size limit will drastically limit the funds that can be withdrawn from the faucet. */ -CC *MakeFaucetCond(CPubKey pk) +/*CC *MakeFaucetCond(CPubKey pk) { std::vector pks; uint8_t evalcode = EVAL_FAUCET; pks.push_back(CCNewSecp256k1(pk)); CC *faucetCC = CCNewEval(E_MARSHAL(ss << evalcode)); CC *Sig = CCNewThreshold(1, pks); return CCNewThreshold(2, {faucetCC, Sig}); -} +}*/ CTxOut MakeFaucetVout(CAmount nValue,CPubKey pk) { CTxOut vout; - CC *payoutCond = MakeFaucetCond(pk); + //CC *payoutCond = MakeFaucetCond(pk); + CC *payoutCond = MakeCCcond1(EVAL_FAUCET,pk); vout = CTxOut(nValue,CCPubKey(payoutCond)); cc_free(payoutCond); return(vout);