diff --git a/sql/cashier.sql b/sql/cashier.sql index 1e2dde2a6..48fa684c3 100644 --- a/sql/cashier.sql +++ b/sql/cashier.sql @@ -4,6 +4,15 @@ CREATE TABLE IF NOT EXISTS deposit_keypairs( coin_key_public BLOB NOT NULL, asset_id BLOB NOT NULL ); +PRAGMA foreign_keys=on; +CREATE TABLE IF NOT EXISTS btc_utxo( + tx_id BLOB PRIMARY KEY NOT NULL, + balance INTEGER NOT NULL, + btc_key_public BLOB NOT NULL, + FOREIGN KEY (btc_key_public) + REFERENCES deposit_keypairs (coin_key_public) + ON UPDATE CASCADE +); CREATE TABLE IF NOT EXISTS withdraw_keypairs( coin_key_id BLOB PRIMARY KEY NOT NULL, d_key_private BLOB NOT NULL, diff --git a/src/service/btc.rs b/src/service/btc.rs index c5afe33e7..a5051a152 100644 --- a/src/service/btc.rs +++ b/src/service/btc.rs @@ -135,6 +135,7 @@ impl BitcoinKeys { pub fn get_script(&self) -> &Script { &self.script } + } @@ -166,7 +167,7 @@ impl CoinClient for BtcClient { let btc_priv = btc_keys.clone(); let btc_priv = btc_priv.get_privkey(); - // let _ = btc_keys.start_subscribe().await?; + let _ = btc_keys.start_subscribe().await?; // start scheduler for checking balance debug!(target: "BRIDGE BITCOIN", "Subscribing for deposit"); diff --git a/src/wallet/cashierdb.rs b/src/wallet/cashierdb.rs index 3d3efc26d..49f875033 100644 --- a/src/wallet/cashierdb.rs +++ b/src/wallet/cashierdb.rs @@ -105,7 +105,32 @@ impl CashierDb { )?; Ok(()) } + pub fn put_btc_utxo( + &self, + tx_id: &Vec, + btc_key_public: &Vec, + balance: i64, + ) -> Result<()> { + debug!(target: "CASHIERDB", "Put BTC Utxo"); + let tx_id = self.get_value_serialized(tx_id)?; + + // open connection + let conn = Connection::open(&self.path)?; + // unlock database + conn.pragma_update(None, "key", &self.password)?; + + conn.execute( + "INSERT INTO btc_utxo(tx_id, btc_key_public, balance) + VALUES (:tx_id, :btc_key_public, :balance)", + named_params! { + ":tx_id": tx_id, + ":btc_key_public": btc_key_public, + ":balance": balance, + }, + )?; + Ok(()) + } pub fn get_withdraw_private_keys(&self) -> Result> { debug!(target: "CASHIERDB", "Get withdraw private keys"); // open connection