Преглед изворни кода

mmproxy: Stratum submit stub

parazyd пре 2 година
родитељ
комит
5e14347fe7
1 измењених фајлова са 31 додато и 0 уклоњено
  1. 31 0
      bin/darkfi-mmproxy/src/stratum.rs

+ 31 - 0
bin/darkfi-mmproxy/src/stratum.rs

@@ -98,6 +98,37 @@ impl MiningProxy {
     }
     }
 
 
     pub async fn stratum_submit(&self, id: u16, params: JsonValue) -> JsonResult {
     pub async fn stratum_submit(&self, id: u16, params: JsonValue) -> JsonResult {
+        let params = params.get::<Vec<JsonValue>>().unwrap();
+        if params.len() != 1 || !params[0].is_object() {
+            return JsonError::new(ErrorCode::InvalidParams, None, id).into()
+        }
+
+        let params = params[0].get::<HashMap<String, JsonValue>>().unwrap();
+
+        if !params.contains_key("id") ||
+            !params.contains_key("job_id") ||
+            !params.contains_key("nonce") ||
+            !params.contains_key("result")
+        {
+            return JsonError::new(ErrorCode::InvalidParams, None, id).into()
+        }
+
+        let Some(uuid) = params["id"].get::<String>() else {
+            return JsonError::new(ErrorCode::InvalidParams, None, id).into()
+        };
+
+        let Some(job_id) = params["job_id"].get::<String>() else {
+            return JsonError::new(ErrorCode::InvalidParams, None, id).into()
+        };
+
+        let Some(nonce) = params["nonce"].get::<String>() else {
+            return JsonError::new(ErrorCode::InvalidParams, None, id).into()
+        };
+
+        let Some(result) = params["result"].get::<String>() else {
+            return JsonError::new(ErrorCode::InvalidParams, None, id).into()
+        };
+
         todo!()
         todo!()
     }
     }