@@ -128,9 +128,9 @@ func VerifyLiquidationCet(dlcMeta *DLCMeta, depositTxs []*psbt.Packet, vaultPkSc
128128 return err
129129 }
130130
131- witnessSize := getCetWitnessSize (CetType_LIQUIDATION , script , controlBlock )
131+ witnessSize := GetCetWitnessSize (CetType_LIQUIDATION , script , controlBlock )
132132
133- if err := checkCetFeeRate (p , witnessSize , currentFeeRate , maxFeeRateMultiplier ); err != nil {
133+ if err := CheckCetFeeRate (p , witnessSize , currentFeeRate , maxFeeRateMultiplier ); err != nil {
134134 return err
135135 }
136136
@@ -221,9 +221,9 @@ func VerifyRepaymentCet(dlcMeta *DLCMeta, depositTxs []*psbt.Packet, vaultPkScri
221221 return err
222222 }
223223
224- witnessSize := getCetWitnessSize (CetType_REPAYMENT , script , controlBlock )
224+ witnessSize := GetCetWitnessSize (CetType_REPAYMENT , script , controlBlock )
225225
226- if err := checkCetFeeRate (p , witnessSize , 0 , 0 ); err != nil {
226+ if err := CheckCetFeeRate (p , witnessSize , 0 , 0 ); err != nil {
227227 return err
228228 }
229229
@@ -524,6 +524,36 @@ func UnwrapLeafScript(leafScript LeafScript) ([]byte, []byte, error) {
524524 return script , controlBlock , nil
525525}
526526
527+ // CheckCetFeeRate checks the fee rate of the given cet
528+ func CheckCetFeeRate (p * psbt.Packet , witnessSize int , currentFeeRate int64 , maxFeeRateMultiplier int64 ) error {
529+ virtualSize := GetTxVirtualSize (p .UnsignedTx , witnessSize )
530+
531+ fee , err := p .GetTxFee ()
532+ if err != nil {
533+ return errorsmod .Wrapf (ErrInvalidCET , "failed to get tx fee: %v" , err )
534+ }
535+
536+ if int64 (fee ) < virtualSize {
537+ return errorsmod .Wrap (ErrInvalidCET , "too low fee rate" )
538+ }
539+
540+ if maxFeeRateMultiplier > 0 && int64 (fee ) > virtualSize * currentFeeRate * maxFeeRateMultiplier {
541+ return errorsmod .Wrap (ErrInvalidCET , "too high fee rate" )
542+ }
543+
544+ return nil
545+ }
546+
547+ // GetCetWitnessSize gets the cet witness size according to the given params
548+ // NOTE: The final signature is 64 bytes due to that the sig hash type is SigHashDefault currently.
549+ func GetCetWitnessSize (cetType CetType , script []byte , controlBlock []byte ) int {
550+ switch cetType {
551+ default :
552+ // dcm signature(64) + borrower signature(64) + len(script) + len(control block)
553+ return 64 + 64 + len (script ) + len (controlBlock )
554+ }
555+ }
556+
527557// ParseDepositTxs parses the given deposit txs
528558// Assume that the given deposit txs are valid psbts
529559func ParseDepositTxs (depositTxs []string , vaultPkScript []byte ) ([]* psbt.Packet , []string , sdkmath.Int , error ) {
@@ -597,33 +627,3 @@ func getVaultUtxosFromDepositTx(depositTx *psbt.Packet, vaultPkScript []byte) ([
597627
598628 return utxos , nil
599629}
600-
601- // checkCetFeeRate checks the fee rate of the given cet
602- func checkCetFeeRate (p * psbt.Packet , witnessSize int , currentFeeRate int64 , maxFeeRateMultiplier int64 ) error {
603- virtualSize := GetTxVirtualSize (p .UnsignedTx , witnessSize )
604-
605- fee , err := p .GetTxFee ()
606- if err != nil {
607- return errorsmod .Wrapf (ErrInvalidCET , "failed to get tx fee: %v" , err )
608- }
609-
610- if int64 (fee ) < virtualSize {
611- return errorsmod .Wrap (ErrInvalidCET , "too low fee rate" )
612- }
613-
614- if maxFeeRateMultiplier > 0 && int64 (fee ) > virtualSize * currentFeeRate * maxFeeRateMultiplier {
615- return errorsmod .Wrap (ErrInvalidCET , "too high fee rate" )
616- }
617-
618- return nil
619- }
620-
621- // getCetWitnessSize gets the cet witness size according to the given params
622- // NOTE: The final signature is 64 bytes due to that the sig hash type is SigHashDefault currently.
623- func getCetWitnessSize (cetType CetType , script []byte , controlBlock []byte ) int {
624- switch cetType {
625- default :
626- // dcm signature(64) + borrower signature(64) + len(script) + len(control block)
627- return 64 + 64 + len (script ) + len (controlBlock )
628- }
629- }
0 commit comments