Adding ability to check for unconfirmed kernels

This commit is contained in:
aglkm
2024-05-25 16:17:40 +03:00
parent 2995b4f143
commit f315d31b58
4 changed files with 43 additions and 13 deletions

View File

@@ -118,6 +118,7 @@ pub struct Kernel {
pub excess: String,
pub ker_type: String,
pub fee: String,
pub status: String,
pub raw_data: String,
}
@@ -128,6 +129,7 @@ impl Kernel {
excess: String::new(),
ker_type: String::new(),
fee: String::new(),
status: String::new(),
raw_data: String::new(),
}
}

View File

@@ -126,7 +126,7 @@ async fn kernel(excess: &str) -> Template {
let _ = requests::get_kernel(&excess, &mut kernel).await;
if kernel.height.is_empty() == false {
if kernel.excess.is_empty() == false {
return Template::render("kernel", context! {
route: "kernel",
kernel,

View File

@@ -404,11 +404,31 @@ pub async fn get_block_header(hash: &str, height: &mut String)
// Get kernel.
pub async fn get_kernel(excess: &str, kernel: &mut Kernel)
-> Result<(), anyhow::Error> {
pub async fn get_kernel(excess: &str, kernel: &mut Kernel) -> Result<(), anyhow::Error> {
// First check whether kernel is broadcasted but not confirmed yet (in mempool)
let mut resp = call("get_unconfirmed_transactions", "[]", "1", "foreign").await?;
if resp["result"]["Ok"].is_null() == false {
for tx in resp["result"]["Ok"].as_array().unwrap() {
for ker in tx["tx"]["body"]["kernels"].as_array().unwrap() {
if ker["excess"].as_str().unwrap() == excess {
// Only Plain kernels in the mempool
kernel.ker_type = "Plain".to_string();
kernel.excess = ker["excess"].as_str().unwrap().to_string();
kernel.status = "Unconfirmed".to_string();
kernel.fee = format!("{}",
ker["features"]["Plain"]["fee"]
.to_string().parse::<f64>().unwrap() / 1000000000.0);
// Found it, no need to continue
return Ok(());
}
}
}
}
let params = &format!("[\"{}\", null, null]", excess)[..];
let resp = call("get_kernel", params, "1", "foreign").await?;
resp = call("get_kernel", params, "1", "foreign").await?;
if resp["result"]["Ok"].is_null() == false {
kernel.height = resp["result"]["Ok"]["height"].to_string();

View File

@@ -6,12 +6,18 @@
<div class="card">
<div class="card-body">
<div class="darkorange-text"><i class="bi bi-card-text"></i> KERNEL</div>
<div class="d-flex justify-content-between">
<div class="darkorange-text"><i class="bi bi-card-text"></i> KERNEL</div>
{% if kernel.status == "Unconfirmed" %}
<span class="badge text-bg-warning px-2 py-2">UNCONFIRMED</span>
{% endif %}
</div>
<br>
<div class="d-flex justify-content-between">
<div class="value-text">Excess&nbsp;</div>
<div class="value-text text-break text-end">{{ kernel.excess }}</div>
</div>
{% if kernel.status != "Unconfirmed" %}
<br>
<div class="d-flex justify-content-between">
<div class="value-text">Block Height&nbsp;</div>
@@ -21,6 +27,7 @@
</a>
</div>
</div>
{% endif %}
<br>
<div class="d-flex justify-content-between">
<div class="value-text">Type&nbsp;</div>
@@ -36,15 +43,16 @@
</div>
</div>
<br>
<div class="card">
<div class="card-body" align="left">
<div class="darkorange-text"><i class="bi bi-layout-text-sidebar-reverse"></i> RAW DATA</div>
<br>
<div class="value-text">{{ kernel.raw_data }}</div>
{% if kernel.status != "Unconfirmed" %}
<br>
<div class="card">
<div class="card-body" align="left">
<div class="darkorange-text"><i class="bi bi-layout-text-sidebar-reverse"></i> RAW DATA</div>
<br>
<div class="value-text">{{ kernel.raw_data }}</div>
</div>
</div>
</div>
{% endif %}
<br>