crypsinous.rs 2.8 KB

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