Metadata Disagreement
General Symptoms
A common symptom is a failed operation with a log message such as:
error receiving handshake message from player <PlayerID> for session id <SessionID>: metadata disagreement with player <PlayerID>
Problem Overview
The issue arises from nodes being in disagreement regarding their actions. The most common causes include:
- Different operations: e.g., Key Generation on one node and Presignature Generation on another.
- Different thresholds between nodes.
- Different Curve usage: e.g., Key Generation with secp256k1 on one and P-256 on another.
- Public key mismatch: different keys used for Presignature Generation.
- Varying number of Presignatures being generated.
- Protocol discrepancies: e.g., one node configured with SEPH18S and another with DKLS19.
- Version differences in protocols that nodes cannot reconcile.
Reshare Functionality
An additional scenario involves the reshare functionality. If a reshare operation encounters a partial failure, nodes may agree on a key to use incorrectly. To rectify this, a new reshare operation must be run until all nodes are successful.
Conclusion
Until the underlying issue is resolved, the nodes are likely to experience metadata disagreements. This is due to the servers tracking changes based on an Epoch, which may differ in metadata across nodes.