@@ -666,7 +666,7 @@ int64_t AddOracleInputs(struct CCcontract_info *cp,CMutableTransaction &mtx,CPub
|
|||||||
std::vector<std::pair<CAddressUnspentKey, CAddressUnspentValue> > unspentOutputs;
|
std::vector<std::pair<CAddressUnspentKey, CAddressUnspentValue> > unspentOutputs;
|
||||||
GetCCaddress(cp,coinaddr,pk);
|
GetCCaddress(cp,coinaddr,pk);
|
||||||
SetCCunspents(unspentOutputs,coinaddr);
|
SetCCunspents(unspentOutputs,coinaddr);
|
||||||
fprintf(stderr,"addoracleinputs from (%s)\n",coinaddr);
|
//fprintf(stderr,"addoracleinputs from (%s)\n",coinaddr);
|
||||||
for (std::vector<std::pair<CAddressUnspentKey, CAddressUnspentValue> >::const_iterator it=unspentOutputs.begin(); it!=unspentOutputs.end(); it++)
|
for (std::vector<std::pair<CAddressUnspentKey, CAddressUnspentValue> >::const_iterator it=unspentOutputs.begin(); it!=unspentOutputs.end(); it++)
|
||||||
{
|
{
|
||||||
txid = it->first.txhash;
|
txid = it->first.txhash;
|
||||||
|
|||||||
10
src/main.cpp
10
src/main.cpp
@@ -4425,7 +4425,15 @@ bool AcceptBlockHeader(int32_t *futureblockp,const CBlockHeader& block, CValidat
|
|||||||
if (ppindex)
|
if (ppindex)
|
||||||
*ppindex = pindex;
|
*ppindex = pindex;
|
||||||
if ( pindex != 0 && pindex->nStatus & BLOCK_FAILED_MASK )
|
if ( pindex != 0 && pindex->nStatus & BLOCK_FAILED_MASK )
|
||||||
return state.Invalid(error("%s: block is marked invalid", __func__), 0, "duplicate");
|
{
|
||||||
|
if ( ASSETCHAINS_CC == 0 )
|
||||||
|
return state.Invalid(error("%s: block is marked invalid", __func__), 0, "duplicate");
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf(stderr,"reconsider block %s\n",hash.GetHex().c_str());
|
||||||
|
pindex->nStatus &= ~BLOCK_FAILED_MASK;
|
||||||
|
}
|
||||||
|
}
|
||||||
/*if ( pindex != 0 && hash == komodo_requestedhash )
|
/*if ( pindex != 0 && hash == komodo_requestedhash )
|
||||||
{
|
{
|
||||||
fprintf(stderr,"AddToBlockIndex A komodo_requestedhash %s\n",komodo_requestedhash.ToString().c_str());
|
fprintf(stderr,"AddToBlockIndex A komodo_requestedhash %s\n",komodo_requestedhash.ToString().c_str());
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ extern uint16_t ASSETCHAINS_P2PPORT,ASSETCHAINS_RPCPORT;
|
|||||||
extern uint32_t ASSETCHAINS_CC;
|
extern uint32_t ASSETCHAINS_CC;
|
||||||
extern uint32_t ASSETCHAINS_MAGIC;
|
extern uint32_t ASSETCHAINS_MAGIC;
|
||||||
extern uint64_t ASSETCHAINS_ENDSUBSIDY,ASSETCHAINS_REWARD,ASSETCHAINS_HALVING,ASSETCHAINS_DECAY,ASSETCHAINS_COMMISSION,ASSETCHAINS_STAKED,ASSETCHAINS_SUPPLY;
|
extern uint64_t ASSETCHAINS_ENDSUBSIDY,ASSETCHAINS_REWARD,ASSETCHAINS_HALVING,ASSETCHAINS_DECAY,ASSETCHAINS_COMMISSION,ASSETCHAINS_STAKED,ASSETCHAINS_SUPPLY;
|
||||||
|
extern std::string NOTARY_PUBKEY; extern uint8_t NOTARY_PUBKEY33[];
|
||||||
|
|
||||||
UniValue getinfo(const UniValue& params, bool fHelp)
|
UniValue getinfo(const UniValue& params, bool fHelp)
|
||||||
{
|
{
|
||||||
@@ -158,6 +159,8 @@ UniValue getinfo(const UniValue& params, bool fHelp)
|
|||||||
obj.push_back(Pair("pubkey", pubkeystr));
|
obj.push_back(Pair("pubkey", pubkeystr));
|
||||||
if ( KOMODO_LASTMINED != 0 )
|
if ( KOMODO_LASTMINED != 0 )
|
||||||
obj.push_back(Pair("lastmined", KOMODO_LASTMINED));
|
obj.push_back(Pair("lastmined", KOMODO_LASTMINED));
|
||||||
|
} else if ( NOTARY_PUBKEY33[0] != 0 ) {
|
||||||
|
obj.push_back(Pair("pubkey", NOTARY_PUBKEY));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ( ASSETCHAINS_CC != 0 )
|
if ( ASSETCHAINS_CC != 0 )
|
||||||
|
|||||||
@@ -350,16 +350,16 @@ static const CRPCCommand vRPCCommands[] =
|
|||||||
#endif
|
#endif
|
||||||
/* auction */
|
/* auction */
|
||||||
{ "auction", "auctionaddress", &auctionaddress, true },
|
{ "auction", "auctionaddress", &auctionaddress, true },
|
||||||
|
|
||||||
/* lotto */
|
/* lotto */
|
||||||
{ "lotto", "lottoaddress", &lottoaddress, true },
|
{ "lotto", "lottoaddress", &lottoaddress, true },
|
||||||
|
|
||||||
/* fsm */
|
/* fsm */
|
||||||
{ "FSM", "FSMaddress", &FSMaddress, true },
|
{ "FSM", "FSMaddress", &FSMaddress, true },
|
||||||
{ "FSM", "FSMcreate", &FSMcreate, true },
|
{ "FSM", "FSMcreate", &FSMcreate, true },
|
||||||
{ "FSM", "FSMlist", &FSMlist, true },
|
{ "FSM", "FSMlist", &FSMlist, true },
|
||||||
{ "FSM", "FSMinfo", &FSMinfo, true },
|
{ "FSM", "FSMinfo", &FSMinfo, true },
|
||||||
|
|
||||||
/* rewards */
|
/* rewards */
|
||||||
{ "rewards", "rewardslist", &rewardslist, true },
|
{ "rewards", "rewardslist", &rewardslist, true },
|
||||||
{ "rewards", "rewardsinfo", &rewardsinfo, true },
|
{ "rewards", "rewardsinfo", &rewardsinfo, true },
|
||||||
@@ -368,16 +368,16 @@ static const CRPCCommand vRPCCommands[] =
|
|||||||
{ "rewards", "rewardslock", &rewardslock, true },
|
{ "rewards", "rewardslock", &rewardslock, true },
|
||||||
{ "rewards", "rewardsunlock", &rewardsunlock, true },
|
{ "rewards", "rewardsunlock", &rewardsunlock, true },
|
||||||
{ "rewards", "rewardsaddress", &rewardsaddress, true },
|
{ "rewards", "rewardsaddress", &rewardsaddress, true },
|
||||||
|
|
||||||
/* faucet */
|
/* faucet */
|
||||||
{ "faucet", "faucetinfo", &faucetinfo, true },
|
{ "faucet", "faucetinfo", &faucetinfo, true },
|
||||||
{ "faucet", "faucetfund", &faucetfund, true },
|
{ "faucet", "faucetfund", &faucetfund, true },
|
||||||
{ "faucet", "faucetget", &faucetget, true },
|
{ "faucet", "faucetget", &faucetget, true },
|
||||||
{ "faucet", "faucetaddress", &faucetaddress, true },
|
{ "faucet", "faucetaddress", &faucetaddress, true },
|
||||||
|
|
||||||
/* MofN */
|
/* MofN */
|
||||||
{ "MofN", "mofnaddress", &mofnaddress, true },
|
{ "MofN", "mofnaddress", &mofnaddress, true },
|
||||||
|
|
||||||
/* Channels */
|
/* Channels */
|
||||||
{ "channels", "channelsaddress", &channelsaddress, true },
|
{ "channels", "channelsaddress", &channelsaddress, true },
|
||||||
{ "channels", "channelsinfo", &channelsinfo, true },
|
{ "channels", "channelsinfo", &channelsinfo, true },
|
||||||
@@ -385,7 +385,7 @@ static const CRPCCommand vRPCCommands[] =
|
|||||||
{ "channels", "channelspayment", &channelspayment, true },
|
{ "channels", "channelspayment", &channelspayment, true },
|
||||||
{ "channels", "channelsclose", &channelsclose, true },
|
{ "channels", "channelsclose", &channelsclose, true },
|
||||||
{ "channels", "channelsrefund", &channelsrefund, true },
|
{ "channels", "channelsrefund", &channelsrefund, true },
|
||||||
|
|
||||||
/* Oracles */
|
/* Oracles */
|
||||||
{ "oracles", "oraclesaddress", &oraclesaddress, true },
|
{ "oracles", "oraclesaddress", &oraclesaddress, true },
|
||||||
{ "oracles", "oracleslist", &oracleslist, true },
|
{ "oracles", "oracleslist", &oracleslist, true },
|
||||||
@@ -395,7 +395,7 @@ static const CRPCCommand vRPCCommands[] =
|
|||||||
{ "oracles", "oraclessubscribe", &oraclessubscribe, true },
|
{ "oracles", "oraclessubscribe", &oraclessubscribe, true },
|
||||||
{ "oracles", "oraclesdata", &oraclesdata, true },
|
{ "oracles", "oraclesdata", &oraclesdata, true },
|
||||||
{ "oracles", "oraclessamples", &oraclessamples, true },
|
{ "oracles", "oraclessamples", &oraclessamples, true },
|
||||||
|
|
||||||
/* Prices */
|
/* Prices */
|
||||||
{ "prices", "pricesaddress", &pricesaddress, true },
|
{ "prices", "pricesaddress", &pricesaddress, true },
|
||||||
{ "prices", "priceslist", &priceslist, true },
|
{ "prices", "priceslist", &priceslist, true },
|
||||||
@@ -405,16 +405,16 @@ static const CRPCCommand vRPCCommands[] =
|
|||||||
{ "prices", "pricesbet", &pricesbet, true },
|
{ "prices", "pricesbet", &pricesbet, true },
|
||||||
{ "prices", "pricesstatus", &pricesstatus, true },
|
{ "prices", "pricesstatus", &pricesstatus, true },
|
||||||
{ "prices", "pricesfinish", &pricesfinish, true },
|
{ "prices", "pricesfinish", &pricesfinish, true },
|
||||||
|
|
||||||
/* Pegs */
|
/* Pegs */
|
||||||
{ "pegs", "pegsaddress", &pegsaddress, true },
|
{ "pegs", "pegsaddress", &pegsaddress, true },
|
||||||
|
|
||||||
/* Triggers */
|
/* Triggers */
|
||||||
{ "triggers", "triggersaddress", &triggersaddress, true },
|
{ "triggers", "triggersaddress", &triggersaddress, true },
|
||||||
|
|
||||||
/* Payments */
|
/* Payments */
|
||||||
{ "payments", "paymentsaddress", &paymentsaddress, true },
|
{ "payments", "paymentsaddress", &paymentsaddress, true },
|
||||||
|
|
||||||
/* Gateways */
|
/* Gateways */
|
||||||
{ "gateways", "gatewaysaddress", &gatewaysaddress, true },
|
{ "gateways", "gatewaysaddress", &gatewaysaddress, true },
|
||||||
{ "gateways", "gatewayslist", &gatewayslist, true },
|
{ "gateways", "gatewayslist", &gatewayslist, true },
|
||||||
@@ -521,6 +521,7 @@ static const CRPCCommand vRPCCommands[] =
|
|||||||
{ "wallet", "sendmany", &sendmany, false },
|
{ "wallet", "sendmany", &sendmany, false },
|
||||||
{ "wallet", "sendtoaddress", &sendtoaddress, false },
|
{ "wallet", "sendtoaddress", &sendtoaddress, false },
|
||||||
{ "wallet", "setaccount", &setaccount, true },
|
{ "wallet", "setaccount", &setaccount, true },
|
||||||
|
{ "wallet", "setpubkey", &setpubkey, true },
|
||||||
{ "wallet", "settxfee", &settxfee, true },
|
{ "wallet", "settxfee", &settxfee, true },
|
||||||
{ "wallet", "signmessage", &signmessage, true },
|
{ "wallet", "signmessage", &signmessage, true },
|
||||||
{ "wallet", "walletlock", &walletlock, true },
|
{ "wallet", "walletlock", &walletlock, true },
|
||||||
|
|||||||
@@ -322,6 +322,7 @@ extern UniValue walletlock(const UniValue& params, bool fHelp);
|
|||||||
extern UniValue encryptwallet(const UniValue& params, bool fHelp);
|
extern UniValue encryptwallet(const UniValue& params, bool fHelp);
|
||||||
extern UniValue validateaddress(const UniValue& params, bool fHelp);
|
extern UniValue validateaddress(const UniValue& params, bool fHelp);
|
||||||
extern UniValue getinfo(const UniValue& params, bool fHelp);
|
extern UniValue getinfo(const UniValue& params, bool fHelp);
|
||||||
|
extern UniValue setpubkey(const UniValue& params, bool fHelp);
|
||||||
extern UniValue getwalletinfo(const UniValue& params, bool fHelp);
|
extern UniValue getwalletinfo(const UniValue& params, bool fHelp);
|
||||||
extern UniValue getblockchaininfo(const UniValue& params, bool fHelp);
|
extern UniValue getblockchaininfo(const UniValue& params, bool fHelp);
|
||||||
extern UniValue getnetworkinfo(const UniValue& params, bool fHelp);
|
extern UniValue getnetworkinfo(const UniValue& params, bool fHelp);
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ extern UniValue TxJoinSplitToJSON(const CTransaction& tx);
|
|||||||
extern uint8_t ASSETCHAINS_PRIVATE;
|
extern uint8_t ASSETCHAINS_PRIVATE;
|
||||||
uint32_t komodo_segid32(char *coinaddr);
|
uint32_t komodo_segid32(char *coinaddr);
|
||||||
int32_t komodo_dpowconfs(int32_t height,int32_t numconfs);
|
int32_t komodo_dpowconfs(int32_t height,int32_t numconfs);
|
||||||
|
int32_t komodo_isnotaryvout(char *coinaddr); // from ac_private chains only
|
||||||
|
|
||||||
int64_t nWalletUnlockTime;
|
int64_t nWalletUnlockTime;
|
||||||
static CCriticalSection cs_nWalletUnlockTime;
|
static CCriticalSection cs_nWalletUnlockTime;
|
||||||
@@ -91,16 +92,17 @@ void WalletTxToJSON(const CWalletTx& wtx, UniValue& entry)
|
|||||||
//int32_t i,n,txheight; uint32_t locktime; uint64_t interest = 0;
|
//int32_t i,n,txheight; uint32_t locktime; uint64_t interest = 0;
|
||||||
int confirms = wtx.GetDepthInMainChain();
|
int confirms = wtx.GetDepthInMainChain();
|
||||||
entry.push_back(Pair("rawconfirmations", confirms));
|
entry.push_back(Pair("rawconfirmations", confirms));
|
||||||
entry.push_back(Pair("confirmations", komodo_dpowconfs((int32_t)mapBlockIndex[wtx.hashBlock]->nHeight,confirms)));
|
|
||||||
if (wtx.IsCoinBase())
|
if (wtx.IsCoinBase())
|
||||||
entry.push_back(Pair("generated", true));
|
entry.push_back(Pair("generated", true));
|
||||||
if (confirms > 0)
|
if (confirms > 0)
|
||||||
{
|
{
|
||||||
|
entry.push_back(Pair("confirmations", komodo_dpowconfs((int32_t)mapBlockIndex[wtx.hashBlock]->nHeight,confirms)));
|
||||||
entry.push_back(Pair("blockhash", wtx.hashBlock.GetHex()));
|
entry.push_back(Pair("blockhash", wtx.hashBlock.GetHex()));
|
||||||
entry.push_back(Pair("blockindex", wtx.nIndex));
|
entry.push_back(Pair("blockindex", wtx.nIndex));
|
||||||
entry.push_back(Pair("blocktime", mapBlockIndex[wtx.hashBlock]->GetBlockTime()));
|
entry.push_back(Pair("blocktime", mapBlockIndex[wtx.hashBlock]->GetBlockTime()));
|
||||||
entry.push_back(Pair("expiryheight", (int64_t)wtx.nExpiryHeight));
|
entry.push_back(Pair("expiryheight", (int64_t)wtx.nExpiryHeight));
|
||||||
}
|
} else entry.push_back(Pair("confirmations", confirms));
|
||||||
|
|
||||||
uint256 hash = wtx.GetHash();
|
uint256 hash = wtx.GetHash();
|
||||||
entry.push_back(Pair("txid", hash.GetHex()));
|
entry.push_back(Pair("txid", hash.GetHex()));
|
||||||
UniValue conflicts(UniValue::VARR);
|
UniValue conflicts(UniValue::VARR);
|
||||||
@@ -400,7 +402,7 @@ static void SendMoney(const CTxDestination &address, CAmount nValue, bool fSubtr
|
|||||||
|
|
||||||
// Parse Zcash address
|
// Parse Zcash address
|
||||||
CScript scriptPubKey = GetScriptForDestination(address);
|
CScript scriptPubKey = GetScriptForDestination(address);
|
||||||
|
|
||||||
// Create and send the transaction
|
// Create and send the transaction
|
||||||
CReserveKey reservekey(pwalletMain);
|
CReserveKey reservekey(pwalletMain);
|
||||||
CAmount nFeeRequired;
|
CAmount nFeeRequired;
|
||||||
@@ -3798,7 +3800,7 @@ UniValue z_sendmany(const UniValue& params, bool fHelp)
|
|||||||
throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid parameter, unknown address format: ")+address );
|
throw JSONRPCError(RPC_INVALID_PARAMETER, string("Invalid parameter, unknown address format: ")+address );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( ASSETCHAINS_PRIVATE != 0 )
|
else if ( ASSETCHAINS_PRIVATE != 0 && komodo_isnotaryvout((char *)address.c_str()) == 0 )
|
||||||
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "cant use transparent addresses in private chain");
|
throw JSONRPCError(RPC_INVALID_ADDRESS_OR_KEY, "cant use transparent addresses in private chain");
|
||||||
|
|
||||||
if (setAddress.count(address))
|
if (setAddress.count(address))
|
||||||
@@ -4537,6 +4539,9 @@ int32_t komodo_notaryvin(CMutableTransaction &txNew,uint8_t *notarypub33)
|
|||||||
set<CBitcoinAddress> setAddress; uint8_t *script,utxosig[128]; uint256 utxotxid; uint64_t utxovalue; int32_t i,siglen=0,nMinDepth = 1,nMaxDepth = 9999999; vector<COutput> vecOutputs; uint32_t utxovout,eligible,earliest = 0; CScript best_scriptPubKey; bool fNegative,fOverflow;
|
set<CBitcoinAddress> setAddress; uint8_t *script,utxosig[128]; uint256 utxotxid; uint64_t utxovalue; int32_t i,siglen=0,nMinDepth = 1,nMaxDepth = 9999999; vector<COutput> vecOutputs; uint32_t utxovout,eligible,earliest = 0; CScript best_scriptPubKey; bool fNegative,fOverflow;
|
||||||
bool signSuccess; SignatureData sigdata; uint64_t txfee; uint8_t *ptr;
|
bool signSuccess; SignatureData sigdata; uint64_t txfee; uint8_t *ptr;
|
||||||
auto consensusBranchId = CurrentEpochBranchId(chainActive.Height() + 1, Params().GetConsensus());
|
auto consensusBranchId = CurrentEpochBranchId(chainActive.Height() + 1, Params().GetConsensus());
|
||||||
|
if (!EnsureWalletIsAvailable(0))
|
||||||
|
return 0;
|
||||||
|
|
||||||
const CKeyStore& keystore = *pwalletMain;
|
const CKeyStore& keystore = *pwalletMain;
|
||||||
assert(pwalletMain != NULL);
|
assert(pwalletMain != NULL);
|
||||||
LOCK2(cs_main, pwalletMain->cs_wallet);
|
LOCK2(cs_main, pwalletMain->cs_wallet);
|
||||||
@@ -4697,6 +4702,9 @@ int32_t komodo_staked(CMutableTransaction &txNew,uint32_t nBits,uint32_t *blockt
|
|||||||
{
|
{
|
||||||
static struct komodo_staking *array; static int32_t numkp,maxkp; static uint32_t lasttime;
|
static struct komodo_staking *array; static int32_t numkp,maxkp; static uint32_t lasttime;
|
||||||
set<CBitcoinAddress> setAddress; struct komodo_staking *kp; int32_t winners,segid,minage,nHeight,counter=0,i,m,siglen=0,nMinDepth = 1,nMaxDepth = 99999999; vector<COutput> vecOutputs; uint32_t block_from_future_rejecttime,besttime,eligible,eligible2,earliest = 0; CScript best_scriptPubKey; arith_uint256 mindiff,ratio,bnTarget; CBlockIndex *tipindex,*pindex; CTxDestination address; bool fNegative,fOverflow; uint8_t hashbuf[256]; CTransaction tx; uint256 hashBlock;
|
set<CBitcoinAddress> setAddress; struct komodo_staking *kp; int32_t winners,segid,minage,nHeight,counter=0,i,m,siglen=0,nMinDepth = 1,nMaxDepth = 99999999; vector<COutput> vecOutputs; uint32_t block_from_future_rejecttime,besttime,eligible,eligible2,earliest = 0; CScript best_scriptPubKey; arith_uint256 mindiff,ratio,bnTarget; CBlockIndex *tipindex,*pindex; CTxDestination address; bool fNegative,fOverflow; uint8_t hashbuf[256]; CTransaction tx; uint256 hashBlock;
|
||||||
|
if (!EnsureWalletIsAvailable(0))
|
||||||
|
return 0;
|
||||||
|
|
||||||
bnTarget.SetCompact(nBits, &fNegative, &fOverflow);
|
bnTarget.SetCompact(nBits, &fNegative, &fOverflow);
|
||||||
mindiff.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow);
|
mindiff.SetCompact(KOMODO_MINDIFF_NBITS,&fNegative,&fOverflow);
|
||||||
ratio = (mindiff / bnTarget);
|
ratio = (mindiff / bnTarget);
|
||||||
@@ -4906,6 +4914,70 @@ UniValue CCaddress(struct CCcontract_info *cp,char *name,std::vector<unsigned ch
|
|||||||
return(result);
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool pubkey2addr(char *destaddr,uint8_t *pubkey33);
|
||||||
|
|
||||||
|
UniValue setpubkey(const UniValue& params, bool fHelp)
|
||||||
|
{
|
||||||
|
UniValue result(UniValue::VOBJ);
|
||||||
|
if ( fHelp || params.size() != 1 )
|
||||||
|
throw runtime_error(
|
||||||
|
"setpubkey\n"
|
||||||
|
"\nSets the -pubkey if the daemon was not started with it, if it was already set, it returns the pubkey.\n"
|
||||||
|
"\nArguments:\n"
|
||||||
|
"1. \"pubkey\" (string) pubkey to set.\n"
|
||||||
|
"\nResult:\n"
|
||||||
|
" {\n"
|
||||||
|
" \"pubkey\" : \"pubkey\", (string) The pubkey\n"
|
||||||
|
" \"ismine\" : \"true/false\", (bool)\n"
|
||||||
|
" \"R-address\" : \"R address\", (string) The pubkey\n"
|
||||||
|
" }\n"
|
||||||
|
"\nExamples:\n"
|
||||||
|
+ HelpExampleCli("setpubkey", "02f7597468703c1c5c8465dd6d43acaae697df9df30bed21494d193412a1ea193e")
|
||||||
|
+ HelpExampleRpc("setpubkey", "02f7597468703c1c5c8465dd6d43acaae697df9df30bed21494d193412a1ea193e")
|
||||||
|
);
|
||||||
|
|
||||||
|
#ifdef ENABLE_WALLET
|
||||||
|
LOCK2(cs_main, pwalletMain ? &pwalletMain->cs_wallet : NULL);
|
||||||
|
#else
|
||||||
|
LOCK(cs_main);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
char Raddress[18];
|
||||||
|
uint8_t pubkey33[33];
|
||||||
|
extern uint8_t NOTARY_PUBKEY33[];
|
||||||
|
extern std::string NOTARY_PUBKEY;
|
||||||
|
if ( NOTARY_PUBKEY33[0] == 0 ) {
|
||||||
|
if (strlen(params[0].get_str().c_str()) == 66) {
|
||||||
|
decode_hex(pubkey33,33,(char *)params[0].get_str().c_str());
|
||||||
|
pubkey2addr((char *)Raddress,(uint8_t *)pubkey33);
|
||||||
|
if (strcmp("RRmWExvapDM9YbLT9X9xAyzDgxomYf63ng",Raddress) == 0) {
|
||||||
|
result.push_back(Pair("error", "pubkey entered is invalid."));
|
||||||
|
} else {
|
||||||
|
CBitcoinAddress address(Raddress);
|
||||||
|
bool isValid = address.IsValid();
|
||||||
|
if (isValid)
|
||||||
|
{
|
||||||
|
CTxDestination dest = address.Get();
|
||||||
|
string currentAddress = address.ToString();
|
||||||
|
result.push_back(Pair("address", currentAddress));
|
||||||
|
#ifdef ENABLE_WALLET
|
||||||
|
isminetype mine = pwalletMain ? IsMine(*pwalletMain, dest) : ISMINE_NO;
|
||||||
|
result.push_back(Pair("ismine", (mine & ISMINE_SPENDABLE) ? true : false));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
NOTARY_PUBKEY = params[0].get_str();
|
||||||
|
decode_hex(NOTARY_PUBKEY33,33,(char *)NOTARY_PUBKEY.c_str());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result.push_back(Pair("error", "pubkey is wrong length, must be 66 char hex string."));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
result.push_back(Pair("error", "Can only set pubkey once, to change it you need to restart your daemon."));
|
||||||
|
}
|
||||||
|
result.push_back(Pair("pubkey", NOTARY_PUBKEY));
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
UniValue channelsaddress(const UniValue& params, bool fHelp)
|
UniValue channelsaddress(const UniValue& params, bool fHelp)
|
||||||
{
|
{
|
||||||
UniValue result(UniValue::VOBJ); struct CCcontract_info *cp,C; std::vector<unsigned char> destpubkey; CPubKey pk,pk2; char destaddr[64];
|
UniValue result(UniValue::VOBJ); struct CCcontract_info *cp,C; std::vector<unsigned char> destpubkey; CPubKey pk,pk2; char destaddr[64];
|
||||||
@@ -5676,7 +5748,7 @@ UniValue oraclessubscribe(const UniValue& params, bool fHelp)
|
|||||||
|
|
||||||
UniValue oraclessamples(const UniValue& params, bool fHelp)
|
UniValue oraclessamples(const UniValue& params, bool fHelp)
|
||||||
{
|
{
|
||||||
UniValue result(UniValue::VOBJ); uint256 txid,batontxid; int32_t num;
|
UniValue result(UniValue::VOBJ); uint256 txid,batontxid; int32_t num;
|
||||||
if ( fHelp || params.size() != 3 )
|
if ( fHelp || params.size() != 3 )
|
||||||
throw runtime_error("oraclessamples oracletxid batonutxo num\n");
|
throw runtime_error("oraclessamples oracletxid batonutxo num\n");
|
||||||
if ( ensure_CCrequirements() < 0 )
|
if ( ensure_CCrequirements() < 0 )
|
||||||
@@ -6604,6 +6676,9 @@ UniValue getbalance64(const UniValue& params, bool fHelp)
|
|||||||
{
|
{
|
||||||
set<CBitcoinAddress> setAddress; vector<COutput> vecOutputs;
|
set<CBitcoinAddress> setAddress; vector<COutput> vecOutputs;
|
||||||
UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR),b(UniValue::VARR); CTxDestination address;
|
UniValue ret(UniValue::VOBJ); UniValue a(UniValue::VARR),b(UniValue::VARR); CTxDestination address;
|
||||||
|
if (!EnsureWalletIsAvailable(fHelp))
|
||||||
|
return NullUniValue;
|
||||||
|
|
||||||
const CKeyStore& keystore = *pwalletMain;
|
const CKeyStore& keystore = *pwalletMain;
|
||||||
CAmount nValues[64],nValues2[64],nValue,total,total2; int32_t i,segid;
|
CAmount nValues[64],nValues2[64],nValue,total,total2; int32_t i,segid;
|
||||||
assert(pwalletMain != NULL);
|
assert(pwalletMain != NULL);
|
||||||
|
|||||||
Reference in New Issue
Block a user