added skipping ringct coinbase txs as dont know what to do with them

pull/4/head
moneroexamples 7 years ago
parent d108417e7c
commit 3cc5d2dde9

@ -335,6 +335,27 @@ CurrentBlockchainStatus::get_random_outputs(
return true;
}
bool
CurrentBlockchainStatus::get_output(
const uint64_t amount,
const uint64_t global_output_index,
COMMAND_RPC_GET_OUTPUTS_BIN::outkey& output_info)
{
rpccalls rpc {deamon_url};
string error_msg;
if (!rpc.get_out(amount, global_output_index, output_info))
{
cerr << "rpc.get_out" << endl;
return false;
}
return true;
}
bool
CurrentBlockchainStatus::get_dynamic_per_kb_fee_estimate(uint64_t& fee_estimated)
{

@ -117,6 +117,11 @@ struct CurrentBlockchainStatus
const vector<uint64_t>& absolute_offsets,
vector<cryptonote::output_data_t>& outputs);
static bool
get_output(const uint64_t amount,
const uint64_t global_output_index,
COMMAND_RPC_GET_OUTPUTS_BIN::outkey& output_info);
static bool
get_amount_specific_indices(const crypto::hash& tx_hash,
vector<uint64_t>& out_indices);

@ -445,6 +445,12 @@ YourMoneroRequests::get_unspent_outs(const shared_ptr< Session > session, const
continue;
}
if (bool {tx.coinbase})
{
continue;
}
vector<XmrOutput> outs;
if (xmr_accounts->select_outputs_for_tx(tx.id, outs))
@ -484,9 +490,27 @@ YourMoneroRequests::get_unspent_outs(const shared_ptr< Session > session, const
CurrentBlockchainStatus::get_output_key(
0, global_amount_index);
string rtc_outpk = pod_to_hex(od.commitment);
string rtc_mask = pod_to_hex(rct::identity());
string rtc_amount(64, '0');
//
//
// COMMAND_RPC_GET_OUTPUTS_BIN::outkey output_info;
//
// CurrentBlockchainStatus::get_output(
// 0, global_amount_index, output_info);
// string rtc_outpk = pod_to_hex(od.commitment);
// string rtc_mask = pod_to_hex(rct::identity());
// string rtc_amount('0', 64);
string rtc_outpk = pod_to_hex(od.commitment);
//cout << "od.commitment: " << pod_to_hex(od.commitment) << endl;
string rtc_mask = pod_to_hex(rct::commit(out.amount, od.commitment));
string rtc_amount = pod_to_hex(rct::d2h(out.amount));
// string rtc_outpk = pod_to_hex(od.commitment);
// cout << "od.commitment: " << pod_to_hex(od.commitment) << endl;
// string rtc_mask = pod_to_hex(output_info.mask);
// string rtc_amount = pod_to_hex(rct::d2h(out.amount));
rct = rtc_outpk + rtc_mask + rtc_amount;
}

@ -169,56 +169,19 @@ namespace xmreg
* Not finished. get_random_outs_for_amounts is used instead of this.
*/
bool
get_random_outs(const vector<uint64_t>& amounts,
const uint64_t& outs_count)
get_out(const uint64_t amount,
const uint64_t global_output_index,
COMMAND_RPC_GET_OUTPUTS_BIN::outkey& output_key)
{
// get histogram for the amounts we need
epee::json_rpc::request<COMMAND_RPC_GET_OUTPUT_HISTOGRAM::request>
req_t = AUTO_VAL_INIT(req_t);
epee::json_rpc::response<COMMAND_RPC_GET_OUTPUT_HISTOGRAM::response, std::string>
resp_t = AUTO_VAL_INIT(resp_t);
req_t.jsonrpc = "2.0";
req_t.id = epee::serialization::storage_entry(0);
req_t.method = "get_output_histogram";
req_t.params.amounts = amounts;
std::lock_guard<std::mutex> guard(m_daemon_rpc_mutex);
if (!connect_to_monero_deamon())
{
cerr << "get_current_height: not connected to deamon" << endl;
return false;
}
bool r = epee::net_utils::invoke_http_json("/json_rpc",
req_t, resp_t,
m_http_client);
if (!r || resp_t.result.status == "Failed")
{
//error_msg = res.reason;
cerr << "Error get_output_histogram: " << resp_t.result.status << endl;
return false;
}
// generate output indices to request
COMMAND_RPC_GET_OUTPUTS_BIN::request req = AUTO_VAL_INIT(req);
COMMAND_RPC_GET_OUTPUTS_BIN::response res = AUTO_VAL_INIT(res);
for (auto hist: resp_t.result.histogram)
{
cout << hist.total_instances << endl;
req.outputs.push_back({hist.amount, 2});
}
req.outputs.push_back(get_outputs_out {amount, global_output_index});
r = epee::net_utils::invoke_http_bin("/get_outs.bin",
bool r = epee::net_utils::invoke_http_bin("/get_outs.bin",
req, res, m_http_client,
timeout_time_ms);
@ -231,20 +194,22 @@ namespace xmreg
}
for (auto o: res.outs)
{
cout << "\no.key: " << pod_to_hex(o.key) << endl;
cout << "o.mask: " << pod_to_hex(o.mask) << endl;
cout << "o.txid: " << pod_to_hex(o.txid) << endl;
cout << "o.height: " << pod_to_hex(o.height) << endl;
//rct::key mask = td.is_rct() ? rct::commit(td.amount(), td.m_mask) : rct::zeroCommit(td.amount());
rct::key rct_commitment = rct::zeroCommit(0);
}
// for (auto o: res.outs)
// {
//
// cout << "\no.key: " << pod_to_hex(o.key) << endl;
// cout << "o.mask: " << pod_to_hex(o.mask) << endl;
// cout << "o.txid: " << pod_to_hex(o.txid) << endl;
// cout << "o.height: " << pod_to_hex(o.height) << endl;
//
// //rct::key mask = td.is_rct() ? rct::commit(td.amount(), td.m_mask) : rct::zeroCommit(td.amount());
// rct::key rct_commitment = rct::zeroCommit(0);
// }
r;
output_key = res.outs.at(0);
return true;
}

Loading…
Cancel
Save