crypsinous.rs 2.0 KB

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