From 9c95ed3339b9cb8bed636e460fcdedf104896da2 Mon Sep 17 00:00:00 2001 From: jl777 Date: Mon, 10 Sep 2018 07:45:59 -1100 Subject: [PATCH] Test --- src/cc/CCinclude.h | 2 +- src/cc/CCtx.cpp | 2 +- src/cc/gateways.cpp | 9 +++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/cc/CCinclude.h b/src/cc/CCinclude.h index 79a1e0c75..ba57f2748 100644 --- a/src/cc/CCinclude.h +++ b/src/cc/CCinclude.h @@ -72,7 +72,7 @@ struct CCcontract_info CPubKey unspendablepk2; bool (*validate)(struct CCcontract_info *cp,Eval* eval,const CTransaction &tx); bool (*ismyvin)(CScript const& scriptSig); - uint8_t evalcode,didinit; + uint8_t evalcode,evalcode2,didinit; }; struct CCcontract_info *CCinit(struct CCcontract_info *cp,uint8_t evalcode); diff --git a/src/cc/CCtx.cpp b/src/cc/CCtx.cpp index 7c18b9dbe..c9196e951 100644 --- a/src/cc/CCtx.cpp +++ b/src/cc/CCtx.cpp @@ -124,7 +124,7 @@ std::string FinalizeCCTx(uint64_t CCmask,struct CCcontract_info *cp,CMutableTran //fprintf(stderr,"matched %s unspendable2!\n",cp->unspendableaddr2); privkey = cp->unspendablepriv2; if ( othercond2 == 0 ) - othercond2 = MakeCCcond1(cp->evalcode,cp->unspendablepk2); + othercond2 = MakeCCcond1(cp->evalcode2,cp->unspendablepk2); cond = othercond2; } else diff --git a/src/cc/gateways.cpp b/src/cc/gateways.cpp index b8cf5f4c5..66c71fb4e 100644 --- a/src/cc/gateways.cpp +++ b/src/cc/gateways.cpp @@ -554,12 +554,13 @@ std::string GatewaysClaim(uint64_t txfee,uint256 bindtxid,std::string refcoin,ui CMutableTransaction mtx; CTransaction tx; CPubKey mypk,gatewayspk; struct CCcontract_info *cp,C,*assetscp,C2; uint8_t M,N,taddr,prefix,prefix2; std::string coin; std::vector msigpubkeys; int64_t totalsupply,depositamount,inputs,CCchange=0; int32_t numvouts; uint256 hashBlock,assetid,oracletxid; char str[65],depositaddr[64]; cp = CCinit(&C,EVAL_GATEWAYS); assetscp = CCinit(&C2,EVAL_ASSETS); - memcpy(assetscp->unspendablepriv2,cp->CCpriv,32); if ( txfee == 0 ) txfee = 10000; mypk = pubkey2pk(Mypubkey()); gatewayspk = GetUnspendable(cp,0); - _GetCCaddress(assetscp->unspendableaddr2,EVAL_ASSETS,gatewayspk); + _GetCCaddress(cp->unspendableaddr2,EVAL_ASSETS,gatewayspk); + memcpy(cp->unspendablepriv2,cp->CCpriv,32); + cp->evalcode2 = EVAL_ASSETS; if ( GetTransaction(bindtxid,tx,hashBlock,false) == 0 || (numvouts= tx.vout.size()) <= 0 ) { fprintf(stderr,"cant find bindtxid %s\n",uint256_str(str,bindtxid)); @@ -582,7 +583,7 @@ std::string GatewaysClaim(uint64_t txfee,uint256 bindtxid,std::string refcoin,ui } if ( AddNormalinputs(mtx,mypk,txfee,1) > 0 ) { - if ( (inputs= AddAssetInputs(assetscp,mtx,gatewayspk,assetid,amount,60)) > 0 ) + if ( (inputs= AddAssetInputs(cp,mtx,gatewayspk,assetid,amount,60)) > 0 ) { if ( inputs > amount ) CCchange = (inputs - amount); @@ -590,7 +591,7 @@ std::string GatewaysClaim(uint64_t txfee,uint256 bindtxid,std::string refcoin,ui mtx.vout.push_back(MakeCC1vout(EVAL_ASSETS,amount,mypk)); if ( CCchange != 0 ) mtx.vout.push_back(MakeCC1vout(EVAL_ASSETS,CCchange,gatewayspk)); - return(FinalizeCCTx(0,assetscp,mtx,mypk,txfee,EncodeAssetOpRet('t',assetid,zeroid,0,Mypubkey()))); + return(FinalizeCCTx(0,cp,mtx,mypk,txfee,EncodeAssetOpRet('t',assetid,zeroid,0,Mypubkey()))); } } fprintf(stderr,"cant find enough inputs or mismatched total\n");