rpc.rs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. use serde_json::{json, Value};
  2. use darkfi::{rpc::jsonrpc::JsonRequest, Result};
  3. use crate::Rpc;
  4. impl Rpc {
  5. // --> {"jsonrpc": "2.0", "method": "create", "params": [], "id": 42}
  6. // <-- {"jsonrpc": "2.0", "result": "creating dao...", "id": 42}
  7. pub async fn create(
  8. &self,
  9. dao_proposer_limit: u64,
  10. dao_quorum: u64,
  11. dao_approval_ratio_quot: u64,
  12. dao_approval_ratio_base: u64,
  13. ) -> Result<Value> {
  14. let req = JsonRequest::new(
  15. "create",
  16. json!([
  17. dao_proposer_limit,
  18. dao_quorum,
  19. dao_approval_ratio_quot,
  20. dao_approval_ratio_base,
  21. ]),
  22. );
  23. self.client.request(req).await
  24. }
  25. // --> {"jsonrpc": "2.0", "method": "mint", "params": [], "id": 42}
  26. // <-- {"jsonrpc": "2.0", "result": "minting tokens...", "id": 42}
  27. pub async fn addr(&self) -> Result<Value> {
  28. let req = JsonRequest::new("get_dao_addr", json!([]));
  29. self.client.request(req).await
  30. }
  31. // --> {"jsonrpc": "2.0", "method": "mint", "params": [], "id": 42}
  32. // <-- {"jsonrpc": "2.0", "result": "minting tokens...", "id": 42}
  33. pub async fn mint(
  34. &self,
  35. token_supply: u64,
  36. dao_addr: String,
  37. dao_bulla: String,
  38. ) -> Result<Value> {
  39. let req = JsonRequest::new("mint", json!([token_supply, dao_addr, dao_bulla]));
  40. self.client.request(req).await
  41. }
  42. // --> {"jsonrpc": "2.0", "method": "airdrop", "params": [], "id": 42}
  43. // <-- {"jsonrpc": "2.0", "result": "airdropping tokens...", "id": 42}
  44. pub async fn airdrop(&self) -> Result<Value> {
  45. let req = JsonRequest::new("airdrop", json!([]));
  46. self.client.request(req).await
  47. }
  48. // --> {"jsonrpc": "2.0", "method": "propose", "params": [], "id": 42}
  49. // <-- {"jsonrpc": "2.0", "result": "creating proposal...", "id": 42}
  50. pub async fn propose(&self) -> Result<Value> {
  51. let req = JsonRequest::new("propose", json!([]));
  52. self.client.request(req).await
  53. }
  54. // --> {"jsonrpc": "2.0", "method": "vote", "params": [], "id": 42}
  55. // <-- {"jsonrpc": "2.0", "result": "voting...", "id": 42}
  56. pub async fn vote(&self) -> Result<Value> {
  57. let req = JsonRequest::new("vote", json!([]));
  58. self.client.request(req).await
  59. }
  60. // --> {"jsonrpc": "2.0", "method": "exec", "params": [], "id": 42}
  61. // <-- {"jsonrpc": "2.0", "result": "executing...", "id": 42}
  62. pub async fn exec(&self) -> Result<Value> {
  63. let req = JsonRequest::new("exec", json!([]));
  64. self.client.request(req).await
  65. }
  66. }