TL;DR: you don’t need to multiply anything. 20037 ≤ 80000 is the correct comparison, so the returned values represent a valid block.
The confusion arises because there used to be “old sigops” (pre segwit), where the limit was 20000. With the introduction of segwit in 2017, the meaning of sigops changed:
- Operations in pre-segwit inputs count for 4 sigops each.
- Operations in post-segwit inputs count for 1 sigop each.
- The total limit is 80000.
The number reported by the getblocktemplate RPC is these new sigops, with the proper 4x multiplication already applied for relevant transaction inputs.
I would like to know if mining a block in such a situation where SigOps exceed the limit will still be considered valid.
That would invalidate the block entirely, but that is not what is going on here.











