From f86c6a07e82a57ad0334df0c66360f2c7812e1d1 Mon Sep 17 00:00:00 2001 From: dimxy Date: Sun, 10 Feb 2019 23:54:08 +0500 Subject: [PATCH 1/3] added token support in register tx --- src/cc/rogue_rpc.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 0ba5bc6ae..9605d721e 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -710,7 +710,13 @@ UniValue rogue_register(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) mtx.vout.push_back(MakeCC1of2vout(cp->evalcode,buyin + inputsum - txfee,roguepk,mypk)); GetCCaddress1of2(cp,destaddr,roguepk,roguepk); CCaddr1of2set(cp,roguepk,roguepk,cp->CCpriv,destaddr); - rawtx = FinalizeCCTx(0,cp,mtx,mypk,txfee,rogue_registeropret(gametxid,playertxid)); + + std::vector vopretFinish, vopret2; uint8_t e, f; uint256 tokenid; std::vector voutPubkeys, voutPubkeysEmpty; + DecodeTokenOpRet(playertx.vout.back().scriptPubKey, e, tokenid, voutPubkeys, vopretFinish, vopret2); + + CScript opretRegister = rogue_registeropret(gametxid, playertxid); + rawtx = FinalizeCCTx(0,cp,mtx,CPubKey()/*=null pubkey*/,txfee, + EncodeTokenOpRet(tokenid, voutPubkeysEmpty, vopretFinish /*=non-fungible*/, opretRegister)); return(rogue_rawtxresult(result,rawtx,1)); } else return(cclib_error(result,"invalid gametxid")); } else return(cclib_error(result,"no gametxid")); From 4c3e9226b63042d89f3442a21d723f248f0f3bee Mon Sep 17 00:00:00 2001 From: dimxy Date: Mon, 11 Feb 2019 00:16:53 +0500 Subject: [PATCH 2/3] corrected for both token and no token vintx --- src/cc/rogue_rpc.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index 9605d721e..fe886e745 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -711,12 +711,18 @@ UniValue rogue_register(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) GetCCaddress1of2(cp,destaddr,roguepk,roguepk); CCaddr1of2set(cp,roguepk,roguepk,cp->CCpriv,destaddr); + mtx.vout.push_back(MakeTokensCC1vout(cp->evalcode, 1, mypk)); + std::vector vopretFinish, vopret2; uint8_t e, f; uint256 tokenid; std::vector voutPubkeys, voutPubkeysEmpty; - DecodeTokenOpRet(playertx.vout.back().scriptPubKey, e, tokenid, voutPubkeys, vopretFinish, vopret2); - CScript opretRegister = rogue_registeropret(gametxid, playertxid); - rawtx = FinalizeCCTx(0,cp,mtx,CPubKey()/*=null pubkey*/,txfee, - EncodeTokenOpRet(tokenid, voutPubkeysEmpty, vopretFinish /*=non-fungible*/, opretRegister)); + if (DecodeTokenOpRet(playertx.vout.back().scriptPubKey, e, tokenid, voutPubkeys, vopretFinish, vopret2) != 0) { // if token in the opret + rawtx = FinalizeCCTx(0, cp, mtx, mypk, txfee, + EncodeTokenOpRet(tokenid, voutPubkeysEmpty /*=never spent*/, vopretFinish /*=non-fungible*/, opretRegister)); + } + else { + rawtx = FinalizeCCTx(0, cp, mtx, mypk, txfee, opretRegister); + } + return(rogue_rawtxresult(result,rawtx,1)); } else return(cclib_error(result,"invalid gametxid")); } else return(cclib_error(result,"no gametxid")); From 917501e7c027187fece95cca66e7b1c76b1b5e1b Mon Sep 17 00:00:00 2001 From: dimxy Date: Mon, 11 Feb 2019 00:19:29 +0500 Subject: [PATCH 3/3] token vout changed to empty pk --- src/cc/rogue_rpc.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cc/rogue_rpc.cpp b/src/cc/rogue_rpc.cpp index fe886e745..d6eb540a8 100644 --- a/src/cc/rogue_rpc.cpp +++ b/src/cc/rogue_rpc.cpp @@ -711,7 +711,7 @@ UniValue rogue_register(uint64_t txfee,struct CCcontract_info *cp,cJSON *params) GetCCaddress1of2(cp,destaddr,roguepk,roguepk); CCaddr1of2set(cp,roguepk,roguepk,cp->CCpriv,destaddr); - mtx.vout.push_back(MakeTokensCC1vout(cp->evalcode, 1, mypk)); + mtx.vout.push_back(MakeTokensCC1vout(cp->evalcode, 1, CPubKey() /*nullpk*/)); std::vector vopretFinish, vopret2; uint8_t e, f; uint256 tokenid; std::vector voutPubkeys, voutPubkeysEmpty; CScript opretRegister = rogue_registeropret(gametxid, playertxid);