POW setting for your posts [This currently blocks the overlord while it's computing PoW]

This commit is contained in:
Mike Dilger 2022-12-30 07:56:59 +13:00
parent 9d89d95350
commit 9aa2845366
4 changed files with 31 additions and 6 deletions

View File

@ -668,7 +668,9 @@ impl Overlord {
ots: None,
};
GLOBALS.signer.read().await.sign_preevent(pre_event)?
let powint = GLOBALS.settings.read().await.pow;
let pow = if powint > 0 { Some(powint) } else { None };
GLOBALS.signer.read().await.sign_preevent(pre_event, pow)?
};
let relays: Vec<DbRelay> = GLOBALS
@ -724,7 +726,9 @@ impl Overlord {
ots: None,
};
GLOBALS.signer.read().await.sign_preevent(pre_event)?
let powint = GLOBALS.settings.read().await.pow;
let pow = if powint > 0 { Some(powint) } else { None };
GLOBALS.signer.read().await.sign_preevent(pre_event, pow)?
};
let relays: Vec<DbRelay> = GLOBALS

View File

@ -14,6 +14,7 @@ pub const DEFAULT_NUM_RELAYS_PER_PERSON: u8 = 2;
pub const DEFAULT_MAX_RELAYS: u8 = 15;
pub const DEFAULT_MAX_FPS: u32 = 60;
pub const DEFAULT_FEED_RECOMPUTE_INTERVAL_MS: u32 = 1000;
pub const DEFAULT_POW: u8 = 0;
#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct Settings {
@ -29,6 +30,7 @@ pub struct Settings {
pub encrypted_private_key: Option<EncryptedPrivateKey>,
pub max_fps: u32,
pub feed_recompute_interval_ms: u32,
pub pow: u8,
}
impl Default for Settings {
@ -46,6 +48,7 @@ impl Default for Settings {
encrypted_private_key: None,
max_fps: DEFAULT_MAX_FPS,
feed_recompute_interval_ms: DEFAULT_FEED_RECOMPUTE_INTERVAL_MS,
pow: DEFAULT_POW,
}
}
}
@ -102,6 +105,7 @@ impl Settings {
.parse::<u32>()
.unwrap_or(DEFAULT_FEED_RECOMPUTE_INTERVAL_MS)
}
"pow" => settings.pow = row.1.parse::<u8>().unwrap_or(DEFAULT_POW),
_ => {}
}
}
@ -117,8 +121,9 @@ impl Settings {
"REPLACE INTO settings (key, value) VALUES \
('feed_chunk', ?),('overlap', ?),('autofollow', ?),\
('view_posts_referred_to', ?),('view_posts_referring_to', ?),\
('view_threaded', ?),('num_relays_per_person', ?), \
('max_relays', ?),('max_fps', ?),('feed_recompute_interval_ms', ?)",
('view_threaded', ?),('num_relays_per_person', ?),\
('max_relays', ?),('max_fps', ?),('feed_recompute_interval_ms', ?),\
('pow', ?)",
)?;
stmt.execute((
self.feed_chunk,
@ -139,6 +144,7 @@ impl Settings {
self.max_relays,
self.max_fps,
self.feed_recompute_interval_ms,
self.pow,
))?;
// Save private key identity

View File

@ -58,9 +58,12 @@ impl Signer {
}
#[allow(dead_code)]
pub fn sign_preevent(&self, preevent: PreEvent) -> Result<Event, Error> {
pub fn sign_preevent(&self, preevent: PreEvent, pow: Option<u8>) -> Result<Event, Error> {
match self {
Signer::Ready(pk) => Ok(Event::new(preevent, pk)?),
Signer::Ready(pk) => match pow {
Some(pow) => Ok(Event::new_with_pow(preevent, pk, pow)?),
None => Ok(Event::new(preevent, pk)?),
},
_ => Err(Error::NoPrivateKey),
}
}

View File

@ -90,6 +90,18 @@ pub(super) fn update(
ui.separator();
ui.add_space(12.0);
ui.heading("Posting");
ui.horizontal(|ui| {
ui.label("Proof of Work: ")
.on_hover_text("The larger the number, the longer it takes.");
ui.add(Slider::new(&mut app.settings.pow, 0..=40).text("leading zeroes"));
});
ui.add_space(12.0);
ui.separator();
ui.add_space(12.0);
ui.heading("User Interface");
ui.horizontal(|ui| {