#ifdef ENABLE_WALLET
{ "rawtransactions", "fundrawtransaction", &fundrawtransaction, false },
#endif
+ /* rewards */
+ { "rewards", "rewardsfund", &rewardsfund, true },
+ { "rewards", "rewardslock", &rewardslock, true },
+ { "rewards", "rewardsunlock", &rewardsunlock, true },
+ { "rewards", "rewardsaddress", &rewardsaddress true },
+
/* faucet */
{ "faucet", "faucetfund", &faucetfund, true },
{ "faucet", "faucetget", &faucetget, true },
else return(0);
}
+#define EVAL_REWARDS 0xe5
+std::string RewardsFund(uint64_t txfee,uint64_t funds,uint64_t APR,uint64_t minseconds,uint64_t maxseconds,uint64_t mindeposit);
+std::string RewardsLock(uint64_t txfee,uint64_t amount);
+std::string RewardsUnlock(uint64_t txfee);
+
+UniValue rewardsaddress(const UniValue& params, bool fHelp)
+{
+ UniValue result(UniValue::VOBJ); std::vector<unsigned char> pubkey; char destaddr[64];
+ if ( fHelp || params.size() > 1 )
+ throw runtime_error("rewardsaddress [pubkey]\n");
+ if ( ensure_CCrequirements() < 0 )
+ throw runtime_error("to use CC contracts, you need to launch daemon with valid -pubkey= for an address in your wallet\n");
+ result.push_back(Pair("result", "success"));
+ if ( GetCCaddress(EVAL_REWARDS,destaddr,pubkey2pk(pubkey)) != 0 )
+ result.push_back(Pair("RewardsCCaddress",destaddr));
+ if ( params.size() == 1 )
+ {
+ pubkey = ParseHex(params[0].get_str().c_str());
+ if ( GetCCaddress(EVAL_REWARDS,destaddr,pubkey2pk(pubkey)) != 0 )
+ result.push_back(Pair("CCaddress",destaddr));
+ }
+ if ( GetCCaddress(EVAL_REWARDS,destaddr,pubkey2pk(Mypubkey())) != 0 )
+ result.push_back(Pair("myCCaddress",destaddr));
+ return(result);
+}
+
+UniValue rewardsfund(const UniValue& params, bool fHelp)
+{
+ UniValue result(UniValue::VOBJ); uint64_t funds,APR,minseconds,maxseconds,mindeposit; std::string hex;
+ if ( fHelp || params.size() > 5 || params.size() < 1 )
+ throw runtime_error("rewardsfund amount APR mindays maxdays mindeposit\n");
+ if ( ensure_CCrequirements() < 0 )
+ throw runtime_error("to use CC contracts, you need to launch daemon with valid -pubkey= for an address in your wallet\n");
+ // default to OOT params
+ APR = 5 * COIN;
+ minseconds = maxseconds = 60 * 3600 * 24;
+ mindeposit = 100 * COIN;
+ funds = atof(params[0].get_str().c_str()) * COIN;
+ if ( params.size() > 1 )
+ {
+ APR = atof(params[1].get_str().c_str()) * COIN;
+ if ( params.size() > 2 )
+ {
+ minseconds = atol(params[2].get_str().c_str()) * 3600 * 24;
+ if ( params.size() > 3 )
+ {
+ maxseconds = atol(params[3].get_str().c_str()) * 3600 * 24;
+ if ( params.size() > 4 )
+ mindeposit = atof(params[4].get_str().c_str()) * COIN;
+ }
+ }
+ }
+ hex = RewardsFund(0,funds,APR,minseconds,maxseconds,mindeposit);
+ if ( hex.size() > 0 )
+ {
+ result.push_back(Pair("result", "success"));
+ result.push_back(Pair("hex", hex));
+ } else result.push_back(Pair("error", "couldnt create rewards funding transaction"));
+ return(result);
+}
+
+UniValue rewardslock(const UniValue& params, bool fHelp)
+{
+ UniValue result(UniValue::VOBJ); uint64_t amount; std::string hex;
+ if ( fHelp || params.size() > 1 )
+ throw runtime_error("rewardslock amount\n");
+ if ( ensure_CCrequirements() < 0 )
+ throw runtime_error("to use CC contracts, you need to launch daemon with valid -pubkey= for an address in your wallet\n");
+ amount = atof(params[0].get_str().c_str()) * COIN;
+ hex = RewardsLock(0,amount);
+ if ( hex.size() > 0 )
+ {
+ result.push_back(Pair("result", "success"));
+ result.push_back(Pair("hex", hex));
+ } else result.push_back(Pair("error", "couldnt create rewards lock transaction"));
+ return(result);
+}
+
+UniValue rewardsunlock(const UniValue& params, bool fHelp)
+{
+ UniValue result(UniValue::VOBJ); std::string hex;
+ if ( fHelp || params.size() > 0 )
+ throw runtime_error("rewardsunlock [txid]\n");
+ if ( ensure_CCrequirements() < 0 )
+ throw runtime_error("to use CC contracts, you need to launch daemon with valid -pubkey= for an address in your wallet\n");
+ hex = RewardsUnlock(0);
+ if ( hex.size() > 0 )
+ {
+ result.push_back(Pair("result", "success"));
+ result.push_back(Pair("hex", hex));
+ } else result.push_back(Pair("error", "couldnt create rewards unlock transaction"));
+ return(result);
+}
+
#include "../cc/CCfaucet.h"
UniValue faucetaddress(const UniValue& params, bool fHelp)
UniValue faucetget(const UniValue& params, bool fHelp)
{
- UniValue result(UniValue::VOBJ); uint64_t funds; std::string hex;
+ UniValue result(UniValue::VOBJ); std::string hex;
if ( fHelp || params.size() > 0 )
throw runtime_error("faucetget\n");
if ( ensure_CCrequirements() < 0 )