Parcourir la source

mmproxy: Add monerod config map in the toml config

parazyd il y a 2 ans
Parent
commit
a315e3368c

+ 23 - 0
Cargo.lock

@@ -1760,6 +1760,7 @@ dependencies = [
  "darkfi",
  "darkfi-serial",
  "easy-parallel",
+ "epee-encoding",
  "log",
  "monero",
  "serde",
@@ -2570,6 +2571,28 @@ dependencies = [
  "syn 2.0.38",
 ]
 
+[[package]]
+name = "epee-encoding"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c44bd9e53829522aae4d3b3a42f9be2e33c1030122fa8e28aba9be3b6385d4f7"
+dependencies = [
+ "epee-encoding-derive",
+ "sealed",
+ "thiserror",
+]
+
+[[package]]
+name = "epee-encoding-derive"
+version = "0.4.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "753b6b75774680e9ba43edd3f41f1c30715008a079a31285e06aeffd5dd3fb2f"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn 2.0.38",
+]
+
 [[package]]
 name = "equivalent"
 version = "1.0.1"

+ 1 - 0
bin/darkfi-mmproxy/Cargo.toml

@@ -16,6 +16,7 @@ darkfi-serial = {path = "../../src/serial", features = ["async"]}
 log = "0.4.20"
 
 # Monero
+epee-encoding = {version = "0.5.0", features = ["derive"]}
 monero = {version = "0.19.0", features = ["full"]}
 surf = "2.3.2"
 

+ 19 - 1
bin/darkfi-mmproxy/darkfi_mmproxy.toml

@@ -1,2 +1,20 @@
 # List of worker logins, comment out to allow anything.
-workers = ["x:x"]
+workers = ["x:x"]
+
+[monerod]
+# Testnet seed:
+# sequence atlas unveil summon pebbles tuesday beer rudely snake
+# rockets different fuselage woven tagged bested dented vegan hover
+# rapid fawns obvious muppet randomly seasons randomly
+#
+# monero-wallet-cli \
+#   --testnet \
+#   --generate-new-wallet wallet_01.bin \
+#   --restore-deterministic-wallet \
+#   --electrum-seed="$SEED"
+#   --password "" \
+#   --log-file wallet_01.log
+wallet_address = "9wviCeWe2D8XS82k2ovp5EUYLzBt9pYNW2LXUFsZiv8S3Mt21FZ5qQaAroko1enzw3eGr9qC7X1D7Geoo2RrAotYPwq9Gm"
+
+# monerod RPC address
+monerod_rpc = "http://127.0.0.1:28081/json_rpc"

+ 21 - 9
bin/darkfi-mmproxy/src/main.rs

@@ -67,10 +67,6 @@ struct Args {
     /// JSON-RPC server listen URL
     rpc_listen: Url,
 
-    #[structopt(long, default_value = "http://127.0.0.1:28081/json_rpc")]
-    /// monerod JSON-RPC server listen URL
-    monerod_rpc: Url,
-
     #[structopt(long)]
     /// List of worker logins
     workers: Vec<String>,
@@ -78,6 +74,22 @@ struct Args {
     #[structopt(long)]
     /// Set log file output
     log: Option<String>,
+
+    #[structopt(flatten)]
+    monerod: Monerod,
+}
+
+#[derive(Clone, Debug, Deserialize, StructOpt, StructOptToml)]
+#[serde(default)]
+#[structopt()]
+struct Monerod {
+    #[structopt(long)]
+    /// Coinbase wallet address
+    wallet_address: String,
+
+    #[structopt(long, default_value = "http://127.0.0.1:28081/json_rpc")]
+    /// monerod JSON-RPC server listen URL
+    monerod_rpc: Url,
 }
 
 struct Worker {
@@ -100,8 +112,8 @@ impl Worker {
 }
 
 struct MiningProxy {
-    /// monerod RPC endpoint
-    monerod_rpc: Url,
+    /// monerod settings
+    monerod: Monerod,
     /// Worker logins
     logins: HashMap<String, String>,
     /// Workers UUIDs
@@ -114,12 +126,12 @@ struct MiningProxy {
 
 impl MiningProxy {
     fn new(
-        monerod_rpc: Url,
+        monerod: Monerod,
         logins: HashMap<String, String>,
         executor: Arc<Executor<'static>>,
     ) -> Self {
         Self {
-            monerod_rpc,
+            monerod,
             logins,
             workers: Arc::new(RwLock::new(HashMap::new())),
             rpc_connections: Mutex::new(HashSet::new()),
@@ -202,7 +214,7 @@ async fn realmain(args: Args, ex: Arc<Executor<'static>>) -> Result<()> {
         logins.insert(user, pass);
     }
 
-    let mmproxy = Arc::new(MiningProxy::new(args.monerod_rpc, logins, ex.clone()));
+    let mmproxy = Arc::new(MiningProxy::new(args.monerod, logins, ex.clone()));
     let mmproxy_ = Arc::clone(&mmproxy);
 
     info!("Starting JSON-RPC server");

+ 1 - 1
bin/darkfi-mmproxy/src/monero.rs

@@ -35,7 +35,7 @@ impl MiningProxy {
         let client = surf::Client::new();
 
         let mut response = match client
-            .get(&self.monerod_rpc)
+            .get(&self.monerod.monerod_rpc)
             .header("Content-Type", "application/json")
             .body(req.stringify().unwrap())
             .send()