mirror of
https://git.wownero.com/wownero/onion-wownero-blockchain-explorer.git
synced 2024-08-15 00:33:12 +00:00
adding timestamp to key images
This commit is contained in:
parent
f3411767cc
commit
566201c4bc
2 changed files with 80 additions and 11 deletions
65
src/page.h
65
src/page.h
|
@ -2026,12 +2026,30 @@ namespace xmreg {
|
||||||
{"key_imgs" , mstch::array{}}
|
{"key_imgs" , mstch::array{}}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
unique_ptr<xmreg::MyLMDB> mylmdb;
|
||||||
|
|
||||||
|
if (bf::is_directory(lmdb2_path))
|
||||||
|
{
|
||||||
|
|
||||||
|
mylmdb = make_unique<xmreg::MyLMDB>(lmdb2_path);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
cout << "Custom lmdb database seem does not exist at: " << lmdb2_path << endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
size_t no_key_images = (decoded_raw_data.size() - header_lenght) / record_lenght;
|
size_t no_key_images = (decoded_raw_data.size() - header_lenght) / record_lenght;
|
||||||
|
|
||||||
//vector<pair<crypto::key_image, crypto::signature>> signed_key_images;
|
//vector<pair<crypto::key_image, crypto::signature>> signed_key_images;
|
||||||
|
|
||||||
mstch::array& key_imgs_ctx = boost::get<mstch::array>(context["key_imgs"]);
|
mstch::array& key_imgs_ctx = boost::get<mstch::array>(context["key_imgs"]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for (size_t n = 0; n < no_key_images; ++n)
|
for (size_t n = 0; n < no_key_images; ++n)
|
||||||
{
|
{
|
||||||
const char* record_ptr = decoded_raw_data.data() + header_lenght + n * record_lenght;
|
const char* record_ptr = decoded_raw_data.data() + header_lenght + n * record_lenght;
|
||||||
|
@ -2042,12 +2060,53 @@ namespace xmreg {
|
||||||
crypto::signature signature
|
crypto::signature signature
|
||||||
= *reinterpret_cast<const crypto::signature*>(record_ptr + key_img_size);
|
= *reinterpret_cast<const crypto::signature*>(record_ptr + key_img_size);
|
||||||
|
|
||||||
key_imgs_ctx.push_back(mstch::map{
|
|
||||||
|
vector<string> found_tx_hashes;
|
||||||
|
|
||||||
|
if (mylmdb)
|
||||||
|
{
|
||||||
|
mylmdb->search(epee::string_tools::pod_to_hex(key_image),
|
||||||
|
found_tx_hashes, "key_images");
|
||||||
|
}
|
||||||
|
|
||||||
|
mstch::map key_img_info {
|
||||||
{"key_no" , fmt::format("{:03d}", n)},
|
{"key_no" , fmt::format("{:03d}", n)},
|
||||||
{"key_image" , REMOVE_HASH_BRAKETS(fmt::format("{:s}", key_image))},
|
{"key_image" , REMOVE_HASH_BRAKETS(fmt::format("{:s}", key_image))},
|
||||||
{"signature" , fmt::format("{:s}", signature)},
|
{"signature" , fmt::format("{:s}", signature)},
|
||||||
{"is_spent" , core_storage->have_tx_keyimg_as_spent(key_image)}
|
{"is_spent" , core_storage->have_tx_keyimg_as_spent(key_image)},
|
||||||
});
|
{"tx_hash_found" , !found_tx_hashes.empty()},
|
||||||
|
{"tx_hash" , string{}},
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
if (!found_tx_hashes.empty())
|
||||||
|
{
|
||||||
|
|
||||||
|
string tx_hash_str = found_tx_hashes.at(0);
|
||||||
|
|
||||||
|
key_img_info["tx_hash"] = tx_hash_str;
|
||||||
|
key_img_info["timestamp"] = "0";
|
||||||
|
|
||||||
|
transaction tx;
|
||||||
|
|
||||||
|
if (mcore->get_tx(tx_hash_str, tx))
|
||||||
|
{
|
||||||
|
crypto::hash tx_hash;
|
||||||
|
|
||||||
|
epee::string_tools::hex_to_pod(tx_hash_str, tx_hash);
|
||||||
|
|
||||||
|
// get timestamp of the tx's block
|
||||||
|
uint64_t blk_height = core_storage
|
||||||
|
->get_db().get_tx_block_height(tx_hash);
|
||||||
|
|
||||||
|
uint64_t blk_timestamp = core_storage
|
||||||
|
->get_db().get_block_timestamp(blk_height);
|
||||||
|
|
||||||
|
key_img_info["timestamp"] = xmreg::timestamp_to_str(blk_timestamp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
key_imgs_ctx.push_back(key_img_info);
|
||||||
|
|
||||||
//signed_key_images.push_back(make_pair(key_image, signature));
|
//signed_key_images.push_back(make_pair(key_image, signature));
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,17 +25,27 @@
|
||||||
|
|
||||||
<div class="center">
|
<div class="center">
|
||||||
<table class="center" style="width:80%">
|
<table class="center" style="width:80%">
|
||||||
<tr><td>Key no.</td><td>Key image</td><td>Is spent?</td></tr>
|
<tr><td>Key no.</td><td>Key image</td><td>Timestamp</td></td><td>Is spent?</td></tr>
|
||||||
{{#key_imgs}}
|
{{#key_imgs}}
|
||||||
<tr>
|
<tr>
|
||||||
<td>{{key_no}}</td>
|
<td>{{key_no}}</td>
|
||||||
<td>{{key_image}}</td>
|
<td>
|
||||||
|
{{#tx_hash_found}}
|
||||||
|
<a href="/tx/{{tx_hash}}">{{key_image}}</a>
|
||||||
|
{{/tx_hash_found}}
|
||||||
|
{{^tx_hash_found}}
|
||||||
|
{{key_image}}
|
||||||
|
{{/tx_hash_found}}
|
||||||
|
</td>
|
||||||
|
<td>{{timestamp}}</td>
|
||||||
|
<td>
|
||||||
{{#is_spent}}
|
{{#is_spent}}
|
||||||
<td><span style="color: #008009;font-weight: bold">{{is_spent}}</span></td>
|
<span style="color: #008009;font-weight: bold">{{is_spent}}</span>
|
||||||
{{/is_spent}}
|
{{/is_spent}}
|
||||||
{{^is_spent}}
|
{{^is_spent}}
|
||||||
<td>{{is_spent}}</td>
|
{{is_spent}}
|
||||||
{{/is_spent}}
|
{{/is_spent}}
|
||||||
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
{{/key_imgs}}
|
{{/key_imgs}}
|
||||||
</table>
|
</table>
|
||||||
|
|
Loading…
Reference in a new issue