@@ -3,7 +3,7 @@ extern crate diesel;
33#[ macro_use]
44extern crate diesel_migrations;
55
6- use std:: { collections:: HashMap , convert :: TryInto } ;
6+ use std:: collections:: HashMap ;
77
88use crate :: {
99 database:: { queries, Sqlite } ,
@@ -45,6 +45,7 @@ pub mod schema;
4545
4646use crate :: loan:: { Interest , LoanOffer } ;
4747pub use amounts:: * ;
48+ use elements:: bitcoin:: PublicKey ;
4849use rust_decimal_macros:: dec;
4950
5051pub const USDT_ASSET_ID : & str = "ce091c998b83c78bb71a632313ba3760f1763d9cfcffae02258ffa9865a37bd2" ;
@@ -295,17 +296,31 @@ where
295296 // Currently there is no ID for incoming loan requests, that would associate them with an offer,
296297 // so we just have to ensure that the loan is still "acceptable" in the current state of Bobtimus.
297298
299+ let oracle_secret_key = elements:: secp256k1_zkp:: key:: ONE_KEY ;
300+ let oralce_priv_key = elements:: bitcoin:: PrivateKey :: new (
301+ oracle_secret_key,
302+ elements:: bitcoin:: Network :: Regtest ,
303+ ) ;
304+ let oracle_pk = PublicKey :: from_private_key ( & self . secp , & oralce_priv_key) ;
305+
298306 let lender_address = self
299307 . elementsd
300308 . get_new_segwit_confidential_address ( )
301309 . await
302310 . context ( "failed to get lender address" ) ?;
303311
312+ let address_blinder = self
313+ . elementsd
314+ . get_address_blinding_key ( & lender_address)
315+ . await ?;
316+
304317 let lender0 = Lender0 :: new (
305318 & mut self . rng ,
306319 self . btc_asset_id ,
307320 self . usdt_asset_id ,
308321 lender_address,
322+ address_blinder,
323+ oracle_pk,
309324 )
310325 . unwrap ( ) ;
311326
@@ -328,7 +343,7 @@ where
328343 let loan_response = lender1. loan_response ( ) ;
329344
330345 self . lender_states
331- . insert ( loan_response. transaction . txid ( ) , lender1) ;
346+ . insert ( loan_response. transaction ( ) . txid ( ) , lender1) ;
332347
333348 Ok ( loan_response)
334349 }
@@ -360,16 +375,14 @@ where
360375
361376 let txid = self . elementsd . send_raw_transaction ( & transaction) . await ?;
362377
363- let liquidation_tx =
364- lender. liquidation_transaction ( & mut self . rng , & self . secp , Amount :: ONE_SAT ) ?;
365- let locktime = lender
366- . timelock
367- . try_into ( )
368- . expect ( "TODO: locktimes should be modelled as u32" ) ;
378+ let liquidation_tx = lender
379+ . liquidation_transaction ( & mut self . rng , & self . secp , Amount :: ONE_SAT )
380+ . await ?;
381+ let locktime = lender. collateral_contract ( ) . timelock ( ) ;
369382
370383 self . db
371384 . do_in_transaction ( |conn| {
372- LiquidationForm :: new ( txid, & liquidation_tx, locktime) . insert ( conn) ?;
385+ LiquidationForm :: new ( txid, & liquidation_tx, * locktime) . insert ( conn) ?;
373386
374387 Ok ( ( ) )
375388 } )
0 commit comments