@@ -26,48 +26,41 @@ const DEFAULT_MIN_FEE_RATE: FeeRate = FeeRate(1000);
2626
2727/// Used to verify if a transaction meets the lowest fee rate
2828/// Use self reference here since `DaoCalculator` requires references to consensus and data_loader, but `ContextualTransactionVerifier` can only provide `Arc`s
29- #[ ouroboros:: self_referencing]
30- pub struct MinFeeVerifier < DL : ' static > {
29+ pub struct MinFeeVerifier < DL > {
3130 min_fee_rate : FeeRate ,
3231 resolved_tx : Arc < ResolvedTransaction > ,
3332 consensus : Arc < Consensus > ,
3433 data_loader : Arc < DL > ,
35- #[ borrows( consensus, data_loader) ]
36- #[ covariant]
37- fee_calculator : DaoCalculator < ' this , DL > ,
3834}
39- impl < DL : CellDataProvider + HeaderProvider + ' static > MinFeeVerifier < DL > {
35+ impl < DL : CellDataProvider + HeaderProvider > MinFeeVerifier < DL > {
4036 /// Creates a new `MinFeeVerifier`.
4137 pub fn new_with_arc (
4238 min_fee_rate : FeeRate ,
4339 resolved_tx : Arc < ResolvedTransaction > ,
4440 consensus : Arc < Consensus > ,
4541 data_loader : Arc < DL > ,
4642 ) -> Self {
47- MinFeeVerifierBuilder {
43+ Self {
4844 min_fee_rate,
4945 resolved_tx,
5046 consensus,
5147 data_loader,
52- fee_calculator_builder : |a : & Arc < Consensus > , b : & Arc < DL > | DaoCalculator :: new ( a, b) ,
5348 }
54- . build ( )
5549 }
5650 /// Verify if the transaction meets the lowest fee rate set by `min_fee_rate`
5751 pub fn verify ( & self ) -> Result < ( ) , Error > {
58- let fee = self
59- . borrow_fee_calculator ( )
60- . transaction_fee ( self . borrow_resolved_tx ( ) ) ?;
52+ let fee = DaoCalculator :: new ( & * self . consensus , & * self . data_loader )
53+ . transaction_fee ( & self . resolved_tx ) ?;
6154 let tx_size = self
62- . borrow_resolved_tx ( )
55+ . resolved_tx
6356 . transaction
6457 . data ( )
6558 . serialized_size_in_block ( ) ;
66- let min_fee = self . borrow_min_fee_rate ( ) . fee ( tx_size as u64 ) ;
59+ let min_fee = self . min_fee_rate . fee ( tx_size as u64 ) ;
6760 if fee < min_fee {
6861 return Err ( OtherError :: new ( format ! (
6962 "Transaction rejected by low fee rate: min_fee_rate = {}, min_fee = {}, fee = {}, tx_size = {}" ,
70- self . borrow_min_fee_rate ( ) , min_fee, fee, tx_size
63+ self . min_fee_rate , min_fee, fee, tx_size
7164 ) )
7265 . into ( ) ) ;
7366 }
0 commit comments