You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
During chunk production transaction signatures are verified sequentially (called from here) on the critical path. To get that work off the critical path, add a second pool containing only transactions for which the signature has been verified.
High level overview
Assume the pool is called SigVerifiedPool:
A node receives a transaction.
After it's checks excluding signature verification have passed, it sends the transaction to SigVerifiedPool.
SigVerifiedPool continuously runs signature verification on a dedicated thread and rejects transactions with invalid signature.
A CP interacts with SigVerifiedPool and then can skip signature verification during chunk production.
To consider
Make sure all transactions are sent to SigVerifiedPool or add a mechanism for SigVerifiedPool to pull in transactions.
Under high load, more than one thread might be required to verify signatures fast enough.
Are there opportunities to skip signature verification in other places too by interacting with SigVerifiedPool?
The text was updated successfully, but these errors were encountered:
Good ideas. I wonder if we need a separate type at all. Couldn't we have the good ol' regular pool verify signatures in the background? In order to mitigate any potential problems with latency due to queue effects (though pool itself is a queue so maybe it isn't a problem...) the pool could return to the callers something akin to Future<SignedTransaction>1 -- if the signature was successfully verified before returning, the future would be already resolved, if not the computation would transparently happen on the "current" thread.
Footnotes
It doesn't have to be a Future -- just an enum that represents delayed computation would be perfectly adequate. ↩
During chunk production transaction signatures are verified sequentially (called from here) on the critical path. To get that work off the critical path, add a second pool containing only transactions for which the signature has been verified.
High level overview
Assume the pool is called
SigVerifiedPool
:SigVerifiedPool
.SigVerifiedPool
continuously runs signature verification on a dedicated thread and rejects transactions with invalid signature.SigVerifiedPool
and then can skip signature verification during chunk production.To consider
SigVerifiedPool
or add a mechanism forSigVerifiedPool
to pull in transactions.SigVerifiedPool
?The text was updated successfully, but these errors were encountered: