From be9d80a13feb8c59d30f004a5295d8d6c78ce5f2 Mon Sep 17 00:00:00 2001 From: kevkevinpal Date: Tue, 12 Aug 2025 09:05:21 -0400 Subject: [PATCH] fix: We should check if the mempool is loaded instead of taking an empty array Signed-off-by: kevkevinpal --- .../augurref/bitcoin/BitcoinRpcClient.kt | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/app/src/main/kotlin/xyz/block/augurref/bitcoin/BitcoinRpcClient.kt b/app/src/main/kotlin/xyz/block/augurref/bitcoin/BitcoinRpcClient.kt index ab14ba3..9d35e70 100644 --- a/app/src/main/kotlin/xyz/block/augurref/bitcoin/BitcoinRpcClient.kt +++ b/app/src/main/kotlin/xyz/block/augurref/bitcoin/BitcoinRpcClient.kt @@ -59,6 +59,12 @@ class BitcoinRpcClient(private val config: BitcoinRpcConfig) { "method" to "getrawmempool", "params" to listOf(true), ), + mapOf( + "jsonrpc" to "1.0", + "id" to "mempool-info", + "method" to "getmempoolinfo", + "params" to emptyList(), + ), ), ) @@ -92,6 +98,13 @@ class BitcoinRpcClient(private val config: BitcoinRpcConfig) { if (mempoolResponse.error != null) { throw Exception("RPC error (mempool): ${mempoolResponse.error}") } + val mempoolInfoResponse: MempoolInfoResponse = mapper.convertValue(results[2], MempoolInfoResponse::class.java) + if (mempoolInfoResponse.error != null) { + throw Exception("RPC error (mempool-info): ${mempoolInfoResponse.error}") + } + if (mempoolInfoResponse.result?.loaded == false) { + throw Exception("RPC error (mempool-info): mempool is not loaded") + } // Convert directly from Bitcoin Core MempoolEntry to Augur MempoolTransaction val transactions = mempoolResponse.result?.map { (_, entry) -> @@ -138,3 +151,22 @@ data class BlockchainInfoResponse( val result: BlockchainInfo?, val error: Any?, ) + +data class MempoolInfo( + val loaded: Boolean, + val size: Int, + val bytes: Int, + val usage: Int, + val totalFee: Double, + val maxmempool: Int, + val mempoolminfee: Double, + val minrelaytxfee: Double, + val incrementalrelayfee: Double, + val unbroadcastcount: Int, + val fullrbf: Boolean, +) + +data class MempoolInfoResponse( + val result: MempoolInfo?, + val error: Any?, +)