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 Pre Signature Generation on another.
  • The nodes have different threshold.
  • Different Curve is used, so Key Generation with secp256k1 on one and P-256 on another.
  • The public key does not match, if using different keys for e.g. Pre Signature Generation.
  • The number of Pre Signatures that are being generated are different.
  • If the protocols are different, so one node is configured with SEPH18S and another with DKLS19.
  • If the protocol version 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 have made a partial failure where some have succeeded, but others have failed, the nodes may end up in a state where the nodes disagree on the key to use. This state will be fixed by running a new reshare until all succeed.

Until this is done, the nodes may fail with a meta data disagreements because the servers keep track of this with a Epoch which may be different in the metadata and thus cause the above error.