rpc.rs 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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, nym: String, value: u64) -> Result<Value> {
  45. let req = JsonRequest::new("airdrop", json!([nym, value]));
  46. self.client.request(req).await
  47. }
  48. // --> {"jsonrpc": "2.0", "method": "airdrop", "params": [], "id": 42}
  49. // <-- {"jsonrpc": "2.0", "result": "airdropping tokens...", "id": 42}
  50. pub async fn keygen(&self, nym: String) -> Result<Value> {
  51. let req = JsonRequest::new("keygen", json!([nym]));
  52. self.client.request(req).await
  53. }
  54. // --> {"jsonrpc": "2.0", "method": "propose", "params": [], "id": 42}
  55. // <-- {"jsonrpc": "2.0", "result": "creating proposal...", "id": 42}
  56. pub async fn propose(&self) -> Result<Value> {
  57. let req = JsonRequest::new("propose", json!([]));
  58. self.client.request(req).await
  59. }
  60. // --> {"jsonrpc": "2.0", "method": "vote", "params": [], "id": 42}
  61. // <-- {"jsonrpc": "2.0", "result": "voting...", "id": 42}
  62. pub async fn vote(&self) -> Result<Value> {
  63. let req = JsonRequest::new("vote", json!([]));
  64. self.client.request(req).await
  65. }
  66. // --> {"jsonrpc": "2.0", "method": "exec", "params": [], "id": 42}
  67. // <-- {"jsonrpc": "2.0", "result": "executing...", "id": 42}
  68. pub async fn exec(&self) -> Result<Value> {
  69. let req = JsonRequest::new("exec", json!([]));
  70. self.client.request(req).await
  71. }
  72. }