Skip to content

Commit 9a4e881

Browse files
feat: add fee estimate mode option (#943)
1 parent 94e15e9 commit 9a4e881

File tree

5 files changed

+17
-2
lines changed

5 files changed

+17
-2
lines changed

src/BlockchainWriter/Controller.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export interface ControllerConfiguration {
1515
readonly poetNetwork: string
1616
readonly poetVersion: number
1717
readonly maximumTransactionAgeInBlocks: number
18+
readonly bitcoinFeeEstimateMode: 'CONSERVATIVE' | 'ECONOMICAL'
1819
}
1920

2021
export const convertLightBlockToEntry = (lightBlock: LightBlock): Entry => ({
@@ -159,7 +160,10 @@ export class Controller {
159160
'Got rawTransaction from Bitcoin Core',
160161
)
161162

162-
const fundedTransaction = await bitcoinCore.fundRawTransaction(rawTransaction).catch(translateFundTransactionError)
163+
const fundedTransaction = await bitcoinCore.fundRawTransaction(
164+
rawTransaction,
165+
{ estimate_mode: this.configuration.bitcoinFeeEstimateMode },
166+
).catch(translateFundTransactionError)
163167

164168
logger.trace(
165169
{

src/BlockchainWriter/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ const blockchainWriter = new BlockchainWriter({
3333
bitcoinNetwork: configuration.bitcoinNetwork,
3434
bitcoinUsername: configuration.bitcoinUsername,
3535
bitcoinPassword: configuration.bitcoinPassword,
36+
bitcoinFeeEstimateMode: configuration.bitcoinFeeEstimateMode,
3637
exchanges: {
3738
anchorNextHashRequest: configuration.exchangeAnchorNextHashRequest,
3839
ipfsHashTxId: configuration.exchangeIpfsHashTxId,

src/Configuration.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ export interface Configuration extends LoggingConfiguration, BitcoinRPCConfigura
4040

4141
readonly uploadClaimIntervalInSeconds: number
4242
readonly uploadClaimMaxAttempts: number
43+
44+
readonly bitcoinFeeEstimateMode: 'CONSERVATIVE' | 'ECONOMICAL'
4345
}
4446

4547
export interface LoggingConfiguration {
@@ -100,6 +102,7 @@ export const DefaultConfiguration: Configuration = {
100102
anchorIntervalInSeconds: 30,
101103
purgeStaleTransactionsIntervalInSeconds: 600,
102104
maximumTransactionAgeInBlocks: 25,
105+
bitcoinFeeEstimateMode: 'CONSERVATIVE',
103106

104107
healthIntervalInSeconds: 30,
105108
lowWalletBalanceInBitcoin: 1,

src/app.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,7 @@ export async function app(localVars: any = {}) {
184184
bitcoinNetwork: configuration.bitcoinNetwork,
185185
bitcoinUsername: configuration.bitcoinUsername,
186186
bitcoinPassword: configuration.bitcoinPassword,
187+
bitcoinFeeEstimateMode: configuration.bitcoinFeeEstimateMode,
187188
exchanges: {
188189
anchorNextHashRequest: configuration.exchangeAnchorNextHashRequest,
189190
ipfsHashTxId: configuration.exchangeIpfsHashTxId,

typings/bitcoin-core.d.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,13 +57,17 @@ declare module 'bitcoin-core' {
5757
getNetworkInfo(): any
5858
getWalletInfo(): any
5959
createRawTransaction(inputs: any, outputs: any): Promise<string>
60-
fundRawTransaction(hexstring: string): Promise<FundRawTransactionResponse>
60+
fundRawTransaction(hexstring: string, options?: FundRawTransactionOptions): Promise<FundRawTransactionResponse>
6161
setNetworkActive(flag: boolean): Promise<void>
6262
signRawTransaction(hexstring: string): Promise<SignRawTransactionResponse>
6363
sendRawTransaction(hexstring: string): Promise<string>
6464
estimateSmartFee(blocks: number): Promise<EstimateSmartFeeResponse>
6565
}
6666

67+
interface FundRawTransactionOptions {
68+
readonly estimate_mode: EstimateMode
69+
}
70+
6771
interface FundRawTransactionResponse {
6872
readonly hex: string
6973
readonly changepos: number
@@ -80,5 +84,7 @@ declare module 'bitcoin-core' {
8084
readonly blocks: number
8185
}
8286

87+
type EstimateMode = 'CONSERVATIVE' | 'ECONOMICAL'
88+
8389
export = BitcoinCore
8490
}

0 commit comments

Comments
 (0)