@@ -223,30 +223,34 @@ exports.createTransaction = function(params) {
223223 txSize : estTxSize ,
224224 cpfpAware : true
225225 } )
226- . then ( function ( result ) {
227- var estimatedFeeRate = result . cpfpFeePerKb ;
228- if ( estimatedFeeRate < constants . minFeeRate ) {
229- console . log ( new Date ( ) + ': Error when estimating fee for send from ' + params . wallet . id ( ) + ', it was too low - ' + estimatedFeeRate ) ;
230- feeRate = constants . minFeeRate ;
231- } else if ( estimatedFeeRate > params . maxFeeRate ) {
232- feeRate = params . maxFeeRate ;
233- } else {
234- feeRate = estimatedFeeRate ;
235- }
236- return feeRate ;
237- } )
238- . catch ( function ( e ) {
239- // sanity check failed on tx size
240- if ( _ . includes ( e . message , 'invalid txSize' ) ) {
241- return Q . reject ( e ) ;
242- }
243- else {
244- // couldn't estimate the fee, proceed using the default
245- feeRate = constants . fallbackFeeRate ;
246- console . log ( "Error estimating fee for send from " + params . wallet . id ( ) + ": " + e . message ) ;
247- return Q ( ) ;
248- }
249- } ) ;
226+ . then ( function ( result ) {
227+ var estimatedFeeRate = result . cpfpFeePerKb ;
228+ var minimum = params . instant ? Math . max ( constants . minFeeRate , constants . minInstantFeeRate ) : constants . minFeeRate ;
229+ // 5 satoshis per byte
230+ // it is worth noting that the padding only applies when the threshold is crossed, but not when the delta is less than the padding
231+ var padding = 5000 ;
232+ if ( estimatedFeeRate < minimum ) {
233+ console . log ( new Date ( ) + ': Error when estimating fee for send from ' + params . wallet . id ( ) + ', it was too low - ' + estimatedFeeRate ) ;
234+ feeRate = minimum + padding ;
235+ } else if ( estimatedFeeRate > params . maxFeeRate ) {
236+ feeRate = params . maxFeeRate - padding ;
237+ } else {
238+ feeRate = estimatedFeeRate ;
239+ }
240+ return feeRate ;
241+ } )
242+ . catch ( function ( e ) {
243+ // sanity check failed on tx size
244+ if ( _ . includes ( e . message , 'invalid txSize' ) ) {
245+ return Q . reject ( e ) ;
246+ }
247+ else {
248+ // couldn't estimate the fee, proceed using the default
249+ feeRate = constants . fallbackFeeRate ;
250+ console . log ( "Error estimating fee for send from " + params . wallet . id ( ) + ": " + e . message ) ;
251+ return Q ( ) ;
252+ }
253+ } ) ;
250254 }
251255 } ;
252256
0 commit comments