crypsinous.rs 2.0 KB

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