Feature Request
Summary
Right now vote signatures are only checked inside of the consensus mutex, and therefore all block each other (and every other consensus operation, e.g. receiving block parts)
Each Vote should instead get its signature before a mutex is called. To do this, I think the handleMsg code needs to be refactored, to only take out a mutex if the vote passes signature check.
Problem Definition
Vote signature checking is expensive. 30s of consensus blocking CPU time, over 1 hour of an osmosis node being synced. Moreover this blocking behavior is at the most critical time. We want to mitigate the time under this consensus lock. To contextualize, all the Osmosis block execution for this 1 hour period is 159s. (And being brought down!)
