Metadata Disagreement

The general symptom is a failed operation and a log message like this:

error receiving handshake message from player <PlayerID> for session id <SessionID>: metadata disagreement with player <PlayerID>

The problem stems from the nodes being in disagreement on what they are trying to do. The most common and simple cause of this is that different players are trying to do different things with the same Session ID. The main candidates for this are:

  • Different operations, e.g. Key Geneneration on one node and Presignature Generation on another.
  • The nodes have different threshold.
  • Different Curve is used, e.g. Key Generation with secp256k1 on one and P-256 on another.
  • The public key does not match, if using different keys for e.g. Presignature Generation.
  • The number of Presignature that are being generated are different.
  • If the protocols are different, e.g. one node is configured with SEPH18S and another with DKLS19.
  • If the protocol versions are different and the nodes are not able to correct for this.

There is one other option that derives from the reshare functionality. If a reshare operation encountered a partial failure, the nodes may end up in a state where the nodes disagree on the key to use. To resolve this, you must run a new reshare operation until all nodes succeed.

Until the issue is resolved, the nodes may experience metadata disagreements. This occurs because the servers track changes using an Epoch, which may differ in the metadata across nodes.