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
Currently, payloads are signed using a KeyRotatingSigner as soon as they are ready to be relayed. However, this results in a race condition wherein keys that have in-transit transactions (which will update the corresponding key's nonce upon resolution) may be used to sign multiple payloads before the one resolves, causing a nonce race condition.
One way to solve this would be to put all of the keys in a key pool. When a signature request arrives, the handler requests a lock on a key from the pool. If all of the keys in the pool are locked, then the handler waits until a lock is released. A key lock is released after a payload has been signed, transmitted to the network, finalized in a block, and the key's nonce has been appropriately updated.
The text was updated successfully, but these errors were encountered:
Currently, payloads are signed using a
KeyRotatingSigner
as soon as they are ready to be relayed. However, this results in a race condition wherein keys that have in-transit transactions (which will update the corresponding key's nonce upon resolution) may be used to sign multiple payloads before the one resolves, causing a nonce race condition.One way to solve this would be to put all of the keys in a key pool. When a signature request arrives, the handler requests a lock on a key from the pool. If all of the keys in the pool are locked, then the handler waits until a lock is released. A key lock is released after a payload has been signed, transmitted to the network, finalized in a block, and the key's nonce has been appropriately updated.
The text was updated successfully, but these errors were encountered: