rpc.rs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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(&self, token_supply: u64, dao_addr: String) -> Result<Value> {
  34. let req = JsonRequest::new("mint", json!([token_supply, dao_addr]));
  35. self.client.request(req).await
  36. }
  37. // --> {"jsonrpc": "2.0", "method": "airdrop", "params": [], "id": 42}
  38. // <-- {"jsonrpc": "2.0", "result": "airdropping tokens...", "id": 42}
  39. pub async fn airdrop(&self, nym: String, value: u64) -> Result<Value> {
  40. let req = JsonRequest::new("airdrop", json!([nym, value]));
  41. self.client.request(req).await
  42. }
  43. // --> {"jsonrpc": "2.0", "method": "airdrop", "params": [], "id": 42}
  44. // <-- {"jsonrpc": "2.0", "result": "airdropping tokens...", "id": 42}
  45. pub async fn keygen(&self, nym: String) -> Result<Value> {
  46. let req = JsonRequest::new("keygen", json!([nym]));
  47. self.client.request(req).await
  48. }
  49. // --> {"jsonrpc": "2.0", "method": "airdrop", "params": [], "id": 42}
  50. // <-- {"jsonrpc": "2.0", "result": "airdropping tokens...", "id": 42}
  51. pub async fn dao_balance(&self) -> Result<Value> {
  52. let req = JsonRequest::new("dao_balance", json!([]));
  53. self.client.request(req).await
  54. }
  55. // --> {"jsonrpc": "2.0", "method": "airdrop", "params": [], "id": 42}
  56. // <-- {"jsonrpc": "2.0", "result": "airdropping tokens...", "id": 42}
  57. pub async fn dao_bulla(&self) -> Result<Value> {
  58. let req = JsonRequest::new("dao_bulla", json!([]));
  59. self.client.request(req).await
  60. }
  61. // --> {"jsonrpc": "2.0", "method": "airdrop", "params": [], "id": 42}
  62. // <-- {"jsonrpc": "2.0", "result": "airdropping tokens...", "id": 42}
  63. pub async fn user_balance(&self, nym: String) -> Result<Value> {
  64. let req = JsonRequest::new("user_balance", json!([nym]));
  65. self.client.request(req).await
  66. }
  67. // --> {"jsonrpc": "2.0", "method": "propose", "params": [], "id": 42}
  68. // <-- {"jsonrpc": "2.0", "result": "creating proposal...", "id": 42}
  69. pub async fn propose(&self, sender: String, recipient: String, amount: u64) -> Result<Value> {
  70. let req = JsonRequest::new("propose", json!([sender, recipient, amount]));
  71. self.client.request(req).await
  72. }
  73. // --> {"jsonrpc": "2.0", "method": "vote", "params": [], "id": 42}
  74. // <-- {"jsonrpc": "2.0", "result": "voting...", "id": 42}
  75. pub async fn vote(&self, nym: String, vote: String) -> Result<Value> {
  76. let req = JsonRequest::new("vote", json!([nym, vote]));
  77. self.client.request(req).await
  78. }
  79. // --> {"jsonrpc": "2.0", "method": "exec", "params": [], "id": 42}
  80. // <-- {"jsonrpc": "2.0", "result": "executing...", "id": 42}
  81. pub async fn get_votes(&self) -> Result<Value> {
  82. let req = JsonRequest::new("get_votes", json!([]));
  83. self.client.request(req).await
  84. }
  85. // --> {"jsonrpc": "2.0", "method": "exec", "params": [], "id": 42}
  86. // <-- {"jsonrpc": "2.0", "result": "executing...", "id": 42}
  87. pub async fn get_proposals(&self) -> Result<Value> {
  88. let req = JsonRequest::new("get_proposals", json!([]));
  89. self.client.request(req).await
  90. }
  91. // --> {"jsonrpc": "2.0", "method": "exec", "params": [], "id": 42}
  92. // <-- {"jsonrpc": "2.0", "result": "executing...", "id": 42}
  93. pub async fn exec(&self) -> Result<Value> {
  94. let req = JsonRequest::new("exec", json!([]));
  95. self.client.request(req).await
  96. }
  97. }