From 6bc9a2b4dd9685284a8d0ec5b88cdf6573755daf Mon Sep 17 00:00:00 2001 From: Roy Lee Date: Sun, 25 Sep 2022 18:38:41 -0700 Subject: [PATCH] mining: always returns .coinbasevalue in getblocktemplate Although the BIPs specify that coinbasetxn and coinbasevalue are mutually exclusive, both the latest bitcoind (22.0.0) and lbrycrd (0.17.3) return .coinbasevalue regardeless if 'coinbasetxn' is specified in the capabilities. We'll make lbcd behave the same for compatibility. --- rpcserver.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rpcserver.go b/rpcserver.go index 28b0f670..359f8f2c 100644 --- a/rpcserver.go +++ b/rpcserver.go @@ -2368,7 +2368,6 @@ func (state *gbtWorkState) blockTemplateResult(useCoinbaseValue bool, submitOld if useCoinbaseValue { reply.CoinbaseAux = gbtCoinbaseAux - reply.CoinbaseValue = &msgBlock.Transactions[0].TxOut[0].Value } else { // Ensure the template has a valid payment address associated // with it when a full coinbase is requested. @@ -2401,6 +2400,9 @@ func (state *gbtWorkState) blockTemplateResult(useCoinbaseValue bool, submitOld reply.CoinbaseTxn = &resultTx } + // Return coinbasevalue anyway as lbrycrd and bitcoind do. + reply.CoinbaseValue = &msgBlock.Transactions[0].TxOut[0].Value + return &reply, nil }