mirror of
https://github.com/mikedilger/gossip.git
synced 2024-09-29 08:21:47 +00:00
Log Proof of Work.
This commit is contained in:
parent
b4fbff9264
commit
bd1ca5992c
4
Cargo.lock
generated
4
Cargo.lock
generated
@ -1722,7 +1722,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "gossip-relay-picker"
|
||||
version = "0.2.0-unstable"
|
||||
source = "git+https://github.com/mikedilger/gossip-relay-picker?rev=4648e7b6dc74e52df0a7cc00a5814f689a8a9d3c#4648e7b6dc74e52df0a7cc00a5814f689a8a9d3c"
|
||||
source = "git+https://github.com/mikedilger/gossip-relay-picker?rev=18a8cb0648bbe48d55fb5c73d5a2a9ced9a1698b#18a8cb0648bbe48d55fb5c73d5a2a9ced9a1698b"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"dashmap",
|
||||
@ -2449,7 +2449,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "nostr-types"
|
||||
version = "0.6.0-unstable"
|
||||
source = "git+https://github.com/mikedilger/nostr-types?rev=3066f3dbe95c98ce5527777412db289b266d1f4a#3066f3dbe95c98ce5527777412db289b266d1f4a"
|
||||
source = "git+https://github.com/mikedilger/nostr-types?rev=3ecc9250f15962abe479d6d41a42b98a97ccf8b6#3ecc9250f15962abe479d6d41a42b98a97ccf8b6"
|
||||
dependencies = [
|
||||
"aes",
|
||||
"base64 0.21.0",
|
||||
|
@ -29,7 +29,7 @@ encoding_rs = "0.8"
|
||||
fallible-iterator = "0.2"
|
||||
futures = "0.3"
|
||||
futures-util = "0.3"
|
||||
gossip-relay-picker = { git = "https://github.com/mikedilger/gossip-relay-picker", rev = "4648e7b6dc74e52df0a7cc00a5814f689a8a9d3c" }
|
||||
gossip-relay-picker = { git = "https://github.com/mikedilger/gossip-relay-picker", rev = "18a8cb0648bbe48d55fb5c73d5a2a9ced9a1698b" }
|
||||
hex = "0.4"
|
||||
http = "0.2"
|
||||
humansize = "2.1"
|
||||
@ -38,7 +38,7 @@ lazy_static = "1.4"
|
||||
linkify = "0.9"
|
||||
memoize = "0.4"
|
||||
mime = "0.3"
|
||||
nostr-types = { git = "https://github.com/mikedilger/nostr-types", rev = "3066f3dbe95c98ce5527777412db289b266d1f4a" }
|
||||
nostr-types = { git = "https://github.com/mikedilger/nostr-types", rev = "3ecc9250f15962abe479d6d41a42b98a97ccf8b6" }
|
||||
parking_lot = "0.12"
|
||||
qrcode = { git = "https://github.com/mikedilger/qrcode-rust", rev = "519b77b3efa3f84961169b47d3de08c5ddd86548" }
|
||||
rand = "0.8"
|
||||
|
@ -148,7 +148,7 @@ impl Minion {
|
||||
content: "".to_string(),
|
||||
ots: None,
|
||||
};
|
||||
let event = GLOBALS.signer.sign_preevent(pre_event, None)?;
|
||||
let event = GLOBALS.signer.sign_preevent(pre_event, None, None)?;
|
||||
let msg = ClientMessage::Auth(Box::new(event));
|
||||
let wire = serde_json::to_string(&msg)?;
|
||||
let ws_sink = self.sink.as_mut().unwrap();
|
||||
|
@ -17,6 +17,7 @@ use nostr_types::{
|
||||
};
|
||||
use std::collections::HashMap;
|
||||
use std::sync::atomic::Ordering;
|
||||
use std::sync::mpsc;
|
||||
use tokio::sync::broadcast::Sender;
|
||||
use tokio::sync::mpsc::UnboundedReceiver;
|
||||
use tokio::{select, task};
|
||||
@ -903,7 +904,15 @@ impl Overlord {
|
||||
|
||||
let powint = GLOBALS.settings.read().pow;
|
||||
let pow = if powint > 0 { Some(powint) } else { None };
|
||||
GLOBALS.signer.sign_preevent(pre_event, pow)?
|
||||
let (work_sender, work_receiver) = mpsc::channel();
|
||||
|
||||
let event = GLOBALS
|
||||
.signer
|
||||
.sign_preevent(pre_event, pow, Some(work_sender))?;
|
||||
|
||||
work_logger(&work_receiver, powint).await;
|
||||
|
||||
event
|
||||
};
|
||||
|
||||
// Process this event locally
|
||||
@ -986,7 +995,7 @@ impl Overlord {
|
||||
ots: None,
|
||||
};
|
||||
|
||||
let event = GLOBALS.signer.sign_preevent(pre_event, None)?;
|
||||
let event = GLOBALS.signer.sign_preevent(pre_event, None, None)?;
|
||||
|
||||
let advertise_to_relay_urls: Vec<RelayUrl> = GLOBALS.relays_url_filtered(|r| r.advertise);
|
||||
|
||||
@ -1051,7 +1060,15 @@ impl Overlord {
|
||||
|
||||
let powint = GLOBALS.settings.read().pow;
|
||||
let pow = if powint > 0 { Some(powint) } else { None };
|
||||
GLOBALS.signer.sign_preevent(pre_event, pow)?
|
||||
let (work_sender, work_receiver) = mpsc::channel();
|
||||
|
||||
let event = GLOBALS
|
||||
.signer
|
||||
.sign_preevent(pre_event, pow, Some(work_sender))?;
|
||||
|
||||
work_logger(&work_receiver, powint).await;
|
||||
|
||||
event
|
||||
};
|
||||
|
||||
let relays: Vec<DbRelay> = GLOBALS.relays_filtered(|r| r.write);
|
||||
@ -1143,7 +1160,7 @@ impl Overlord {
|
||||
ots: None,
|
||||
};
|
||||
|
||||
let event = GLOBALS.signer.sign_preevent(pre_event, None)?;
|
||||
let event = GLOBALS.signer.sign_preevent(pre_event, None, None)?;
|
||||
|
||||
// Push to all of the relays we post to
|
||||
let relays: Vec<DbRelay> = GLOBALS.relays_filtered(|r| r.write);
|
||||
@ -1258,7 +1275,15 @@ impl Overlord {
|
||||
|
||||
let powint = GLOBALS.settings.read().pow;
|
||||
let pow = if powint > 0 { Some(powint) } else { None };
|
||||
GLOBALS.signer.sign_preevent(pre_event, pow)?
|
||||
let (work_sender, work_receiver) = mpsc::channel();
|
||||
|
||||
let event = GLOBALS
|
||||
.signer
|
||||
.sign_preevent(pre_event, pow, Some(work_sender))?;
|
||||
|
||||
work_logger(&work_receiver, powint).await;
|
||||
|
||||
event
|
||||
};
|
||||
|
||||
// Process this event locally
|
||||
@ -1515,7 +1540,7 @@ impl Overlord {
|
||||
};
|
||||
|
||||
// Should we add a pow? Maybe the relay needs it.
|
||||
GLOBALS.signer.sign_preevent(pre_event, None)?
|
||||
GLOBALS.signer.sign_preevent(pre_event, None, None)?
|
||||
};
|
||||
|
||||
// Process this event locally
|
||||
@ -1643,3 +1668,17 @@ impl Overlord {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
async fn work_logger(work_receiver: &mpsc::Receiver<u8>, powint: u8) {
|
||||
loop {
|
||||
if let Ok(work) = work_receiver.recv() {
|
||||
*GLOBALS.status_message.write().await = format!("PoW: {work}/{powint}");
|
||||
|
||||
if work >= powint {
|
||||
*GLOBALS.status_message.write().await =
|
||||
format!("Message sent with {work} bits of work computed.");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -822,7 +822,7 @@ impl People {
|
||||
ots: None,
|
||||
};
|
||||
|
||||
GLOBALS.signer.sign_preevent(pre_event, None)
|
||||
GLOBALS.signer.sign_preevent(pre_event, None, None)
|
||||
}
|
||||
|
||||
pub fn follow(&self, pubkeyhex: &PublicKeyHex, follow: bool) {
|
||||
|
@ -1,3 +1,5 @@
|
||||
use std::sync::mpsc::Sender;
|
||||
|
||||
use crate::error::{Error, ErrorKind};
|
||||
use crate::globals::GLOBALS;
|
||||
use nostr_types::{EncryptedPrivateKey, Event, KeySecurity, PreEvent, PrivateKey, PublicKey};
|
||||
@ -155,10 +157,15 @@ impl Signer {
|
||||
self.private.read().as_ref().map(|pk| pk.key_security())
|
||||
}
|
||||
|
||||
pub fn sign_preevent(&self, preevent: PreEvent, pow: Option<u8>) -> Result<Event, Error> {
|
||||
pub fn sign_preevent(
|
||||
&self,
|
||||
preevent: PreEvent,
|
||||
pow: Option<u8>,
|
||||
work_sender: Option<Sender<u8>>,
|
||||
) -> Result<Event, Error> {
|
||||
match &*self.private.read() {
|
||||
Some(pk) => match pow {
|
||||
Some(pow) => Ok(Event::new_with_pow(preevent, pk, pow, None)?),
|
||||
Some(pow) => Ok(Event::new_with_pow(preevent, pk, pow, work_sender)?),
|
||||
None => Ok(Event::new(preevent, pk)?),
|
||||
},
|
||||
_ => Err((ErrorKind::NoPrivateKey, file!(), line!()).into()),
|
||||
|
Loading…
Reference in New Issue
Block a user