Users of the Stark Exchange are identified within the exchange by their Stark Key which is a public key defined over a Stark-friendly elliptic curve that is different from the standard Ethereum elliptic curve, described fully here Stark Curve. The Stark Key represents the x coordinate of a point on the Stark-friendly elliptic curve.

In order to associate exchange users with Ethereum account addresses, a user must first request the Exchange to sign the linkage of an Ethereum key to a Stark Key and then register the Stark Key on the exchange contract before any other user operation can take place. User registration is performed by calling register with the selected Stark Key and the Exchange signature.

Detailed Register flow description:

  1. The User makes an off-chain call to the Exchange to request a signature on the linkage between an Ethereum key and a Stark Key.

  2. The User makes an on-chain contract call to register its selected Stark Key, accompanies by the above signature.

  3. The User makes an off-chain call to the Exchange to notify it of the event.