Janus 4 лет назад
Родитель
Сommit
e1df3eead7
3 измененных файлов с 36 добавлено и 1 удалено
  1. 9 0
      sql/cashier.sql
  2. 2 1
      src/service/btc.rs
  3. 25 0
      src/wallet/cashierdb.rs

+ 9 - 0
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,

+ 2 - 1
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");

+ 25 - 0
src/wallet/cashierdb.rs

@@ -105,7 +105,32 @@ impl CashierDb {
         )?;
         Ok(())
     }
+    pub fn put_btc_utxo(
+        &self,
+        tx_id: &Vec<u8>,
+        btc_key_public: &Vec<u8>,
+        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<Vec<jubjub::Fr>> {
         debug!(target: "CASHIERDB", "Get withdraw private keys");
         // open connection