crypsinous.rs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. use ::darkfi::{blockchain::EpochConsensus, net::Settings, stakeholder::Stakeholder};
  2. use clap::Parser;
  3. use futures::executor::block_on;
  4. use std::thread;
  5. use url::Url;
  6. use vec;
  7. #[derive(Parser)]
  8. struct NetCli {
  9. addr: String,
  10. path: String,
  11. peers: Vec<String>,
  12. }
  13. #[async_std::main]
  14. async fn main() {
  15. let args = NetCli::parse();
  16. let addr = vec![Url::parse(args.addr.as_str()).unwrap()];
  17. let mut peers = vec![];
  18. for i in 0..args.peers.len() {
  19. peers.push(Url::parse(args.peers[i].as_str()).unwrap());
  20. }
  21. let seeds = [
  22. Url::parse("tls://irc0.dark.fi:11001").unwrap(),
  23. Url::parse("tls://irc1.dark.fi:11001").unwrap(),
  24. ]
  25. .to_vec();
  26. let slots = 3;
  27. let epochs = 3;
  28. let ticks = 10;
  29. let reward = 1;
  30. let epoch_consensus = EpochConsensus::new(Some(slots), Some(epochs), Some(ticks), Some(reward));
  31. // initialize n stakeholders
  32. let settings = Settings {
  33. inbound: addr.clone(),
  34. outbound_connections: 4,
  35. manual_attempt_limit: 0,
  36. seed_query_timeout_seconds: 8,
  37. connect_timeout_seconds: 10,
  38. channel_handshake_seconds: 4,
  39. channel_heartbeat_seconds: 10,
  40. external_addr: addr.clone(),
  41. peers,
  42. seeds,
  43. ..Default::default()
  44. };
  45. //proof's number of rows
  46. let k: u32 = 13;
  47. let mut handles = vec![];
  48. let path = args.path;
  49. for i in 0..2 {
  50. let rel_path = format!("{}{}", path, i.to_string());
  51. let mut stakeholder = block_on(Stakeholder::new(
  52. epoch_consensus.clone(),
  53. settings.clone(),
  54. &rel_path,
  55. i,
  56. Some(k),
  57. ))
  58. .unwrap();
  59. let handle = thread::spawn(move || {
  60. block_on(stakeholder.background(Some(9)));
  61. });
  62. handles.push(handle);
  63. }
  64. for handle in handles {
  65. handle.join().unwrap();
  66. }
  67. }