From a4206b2e225734ccd6a0b901ed48984b739c092f Mon Sep 17 00:00:00 2001 From: conduition Date: Mon, 18 Mar 2024 18:39:12 +0000 Subject: [PATCH] add bitcoin core client into global state --- Cargo.lock | 1 + demo/mm_server/Cargo.toml | 1 + demo/mm_server/src/global_state.rs | 1 + demo/mm_server/src/main.rs | 14 ++++++++++++++ 4 files changed, 17 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 1897289..51a157d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -253,6 +253,7 @@ name = "mm_server" version = "0.1.0" dependencies = [ "bitcoin", + "bitcoincore-rpc", "common", "dlctix", "hex", diff --git a/demo/mm_server/Cargo.toml b/demo/mm_server/Cargo.toml index 1ecd2ed..57bedb9 100644 --- a/demo/mm_server/Cargo.toml +++ b/demo/mm_server/Cargo.toml @@ -15,3 +15,4 @@ hex = "0.4.3" serdect = "0.2.0" serde = "1.0.197" serde_json = "1.0.114" +bitcoincore-rpc = "0.18.0" diff --git a/demo/mm_server/src/global_state.rs b/demo/mm_server/src/global_state.rs index cdaa06f..a8c7610 100644 --- a/demo/mm_server/src/global_state.rs +++ b/demo/mm_server/src/global_state.rs @@ -34,6 +34,7 @@ pub(crate) enum Stage { pub(crate) struct GlobalState { pub(crate) event: EventAnnouncement, pub(crate) odds: OutcomeOdds, + pub(crate) bitcoind: bitcoincore_rpc::Client, pub(crate) market_maker_seckey: Scalar, pub(crate) market_maker_pubkey: Point, pub(crate) registrations: HashMap, diff --git a/demo/mm_server/src/main.rs b/demo/mm_server/src/main.rs index 02139de..130c421 100644 --- a/demo/mm_server/src/main.rs +++ b/demo/mm_server/src/main.rs @@ -3,6 +3,8 @@ mod global_state; mod payouts; mod server; +use bitcoincore_rpc::RpcApi; + use crate::global_state::{GlobalState, Stage}; use common::OutcomeOdds; use dlctix::secp::Scalar; @@ -28,11 +30,23 @@ fn run_server() -> Result<(), Box> { let odds: OutcomeOdds = serde_cbor::from_slice(&hex::decode(env::var("DLC_EVENT_ODDS_CBOR")?)?)?; + let bitcoind = { + let bitcoind_rpc_url = std::env::var("BITCOIND_RPC_URL")?; + let bitcoind_auth_username = std::env::var("BITCOIND_RPC_AUTH_USERNAME")?; + let bitcoind_auth_password = std::env::var("BITCOIND_RPC_AUTH_PASSWORD")?; + let auth = bitcoincore_rpc::Auth::UserPass(bitcoind_auth_username, bitcoind_auth_password); + bitcoincore_rpc::Client::new(&bitcoind_rpc_url, auth)? + }; + + // Check that a wallet is loaded + let _ = bitcoind.get_wallet_info()?; + let global_state = Arc::new(RwLock::new(GlobalState { event, odds, market_maker_seckey, market_maker_pubkey, + bitcoind, registrations: HashMap::new(), stage: Stage::IntentRegistry, }));