mirror of
https://git.wownero.com/wownero/onion-wownero-blockchain-explorer.git
synced 2024-08-15 00:33:12 +00:00
use _tx_info.tx_blob instead of manually parsing json
https://github.com/moneroexamples/onion-monero-blockchain-explorer/issues/89
This commit is contained in:
parent
0186a57964
commit
e5f9a155c8
2 changed files with 48 additions and 54 deletions
|
@ -126,75 +126,64 @@ MempoolStatus::read_mempool()
|
||||||
// get transaction info of the tx in the mempool
|
// get transaction info of the tx in the mempool
|
||||||
const tx_info& _tx_info = mempool_tx_info.at(i);
|
const tx_info& _tx_info = mempool_tx_info.at(i);
|
||||||
|
|
||||||
crypto::hash mem_tx_hash = null_hash;
|
transaction tx;
|
||||||
|
crypto::hash tx_hash;
|
||||||
|
crypto::hash tx_prefix_hash;
|
||||||
|
|
||||||
if (epee::string_tools::hex_to_pod(_tx_info.id_hash, mem_tx_hash))
|
if (!parse_and_validate_tx_from_blob(
|
||||||
|
_tx_info.tx_blob, tx, tx_hash, tx_prefix_hash))
|
||||||
{
|
{
|
||||||
transaction tx;
|
cerr << "Cant make tx from _tx_info.tx_blob" << endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!xmreg::make_tx_from_json(_tx_info.tx_json, tx))
|
|
||||||
{
|
|
||||||
cerr << "Cant make tx from _tx_info.tx_json" << endl;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
crypto::hash tx_hash_reconstructed = get_transaction_hash(tx);
|
mempool_size_kB += _tx_info.blob_size;
|
||||||
|
|
||||||
if (mem_tx_hash != tx_hash_reconstructed)
|
local_copy_of_mempool_txs.push_back(mempool_tx {tx_hash, tx});
|
||||||
{
|
|
||||||
cerr << "Hash of reconstructed tx from json does not match "
|
|
||||||
"what we should get!"
|
|
||||||
<< endl;
|
|
||||||
|
|
||||||
return false;
|
mempool_tx& last_tx = local_copy_of_mempool_txs.back();
|
||||||
}
|
|
||||||
|
|
||||||
mempool_size_kB += _tx_info.blob_size;
|
// key images of inputs
|
||||||
|
vector<txin_to_key> input_key_imgs;
|
||||||
|
|
||||||
local_copy_of_mempool_txs.push_back(mempool_tx {tx_hash_reconstructed, tx});
|
// public keys and xmr amount of outputs
|
||||||
|
vector<pair<txout_to_key, uint64_t>> output_pub_keys;
|
||||||
|
|
||||||
mempool_tx& last_tx = local_copy_of_mempool_txs.back();
|
// sum xmr in inputs and ouputs in the given tx
|
||||||
|
const array<uint64_t, 4>& sum_data = summary_of_in_out_rct(
|
||||||
|
tx, output_pub_keys, input_key_imgs);
|
||||||
|
|
||||||
// key images of inputs
|
last_tx.receive_time = _tx_info.receive_time;
|
||||||
vector<txin_to_key> input_key_imgs;
|
|
||||||
|
|
||||||
// public keys and xmr amount of outputs
|
last_tx.sum_outputs = sum_data[0];
|
||||||
vector<pair<txout_to_key, uint64_t>> output_pub_keys;
|
last_tx.sum_inputs = sum_data[1];
|
||||||
|
last_tx.no_outputs = output_pub_keys.size();
|
||||||
|
last_tx.no_inputs = input_key_imgs.size();
|
||||||
|
last_tx.mixin_no = sum_data[2];
|
||||||
|
last_tx.num_nonrct_inputs = sum_data[3];
|
||||||
|
|
||||||
// sum xmr in inputs and ouputs in the given tx
|
last_tx.fee_str = xmreg::xmr_amount_to_str(_tx_info.fee, "{:0.3f}", false);
|
||||||
const array<uint64_t, 4>& sum_data = summary_of_in_out_rct(
|
last_tx.xmr_inputs_str = xmreg::xmr_amount_to_str(last_tx.sum_inputs , "{:0.3f}");
|
||||||
tx, output_pub_keys, input_key_imgs);
|
last_tx.xmr_outputs_str = xmreg::xmr_amount_to_str(last_tx.sum_outputs, "{:0.3f}");
|
||||||
|
last_tx.timestamp_str = xmreg::timestamp_to_str_gm(_tx_info.receive_time);
|
||||||
|
|
||||||
last_tx.receive_time = _tx_info.receive_time;
|
last_tx.txsize = fmt::format("{:0.2f}",
|
||||||
|
static_cast<double>(_tx_info.blob_size)/1024.0);
|
||||||
|
|
||||||
last_tx.sum_outputs = sum_data[0];
|
last_tx.pID = '-';
|
||||||
last_tx.sum_inputs = sum_data[1];
|
|
||||||
last_tx.no_outputs = output_pub_keys.size();
|
|
||||||
last_tx.no_inputs = input_key_imgs.size();
|
|
||||||
last_tx.mixin_no = sum_data[2];
|
|
||||||
last_tx.num_nonrct_inputs = sum_data[3];
|
|
||||||
|
|
||||||
last_tx.fee_str = xmreg::xmr_amount_to_str(_tx_info.fee, "{:0.3f}", false);
|
crypto::hash payment_id;
|
||||||
last_tx.xmr_inputs_str = xmreg::xmr_amount_to_str(last_tx.sum_inputs , "{:0.3f}");
|
crypto::hash8 payment_id8;
|
||||||
last_tx.xmr_outputs_str = xmreg::xmr_amount_to_str(last_tx.sum_outputs, "{:0.3f}");
|
|
||||||
last_tx.timestamp_str = xmreg::timestamp_to_str_gm(_tx_info.receive_time);
|
|
||||||
|
|
||||||
last_tx.txsize = fmt::format("{:0.2f}",
|
get_payment_id(tx, payment_id, payment_id8);
|
||||||
static_cast<double>(_tx_info.blob_size)/1024.0);
|
|
||||||
|
|
||||||
last_tx.pID = '-';
|
if (payment_id != null_hash)
|
||||||
|
last_tx.pID = 'l'; // legacy payment id
|
||||||
|
else if (payment_id8 != null_hash8)
|
||||||
|
last_tx.pID = 'e'; // encrypted payment id
|
||||||
|
|
||||||
crypto::hash payment_id;
|
// } // if (hex_to_pod(_tx_info.id_hash, mem_tx_hash))
|
||||||
crypto::hash8 payment_id8;
|
|
||||||
|
|
||||||
get_payment_id(tx, payment_id, payment_id8);
|
|
||||||
|
|
||||||
if (payment_id != null_hash)
|
|
||||||
last_tx.pID = 'l'; // legacy payment id
|
|
||||||
else if (payment_id8 != null_hash8)
|
|
||||||
last_tx.pID = 'e'; // encrypted payment id
|
|
||||||
|
|
||||||
} // if (hex_to_pod(_tx_info.id_hash, mem_tx_hash))
|
|
||||||
|
|
||||||
} // for (size_t i = 0; i < mempool_tx_info.size(); ++i)
|
} // for (size_t i = 0; i < mempool_tx_info.size(); ++i)
|
||||||
|
|
||||||
|
|
|
@ -1203,7 +1203,7 @@ namespace xmreg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// cout << "\n\n j.dump()" << j.dump(4) << endl;
|
cout << "\n\n j.dump()" << j.dump(4) << '\n';
|
||||||
|
|
||||||
// get version and unlock time from json
|
// get version and unlock time from json
|
||||||
tx.version = j["version"].get<size_t>();
|
tx.version = j["version"].get<size_t>();
|
||||||
|
@ -1401,7 +1401,8 @@ namespace xmreg
|
||||||
last_range_sig.asig = asig;
|
last_range_sig.asig = asig;
|
||||||
|
|
||||||
memcpy(&(last_range_sig.Ci), &(key64_contained.Ci), sizeof(rct::key64));
|
memcpy(&(last_range_sig.Ci), &(key64_contained.Ci), sizeof(rct::key64));
|
||||||
}
|
|
||||||
|
} // for (json& range_s: j["rctsig_prunable"]["rangeSigs"])
|
||||||
|
|
||||||
vector<rct::mgSig>& mg_sigs = rctsig_prunable.MGs;
|
vector<rct::mgSig>& mg_sigs = rctsig_prunable.MGs;
|
||||||
|
|
||||||
|
@ -1441,7 +1442,11 @@ namespace xmreg
|
||||||
}
|
}
|
||||||
|
|
||||||
mg_sigs.push_back(new_mg_sig);
|
mg_sigs.push_back(new_mg_sig);
|
||||||
}
|
} // for (json& a_mgs: j["rctsig_prunable"]["MGs"])
|
||||||
|
|
||||||
|
//std::vector<Bulletproof>& bulletproof = rctsig_prunable.bulletproofs;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
} // j.find("rctsig_prunable") != j.end()
|
} // j.find("rctsig_prunable") != j.end()
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue