On-Chain Configuration

For perpetual trading, the system configuration must be reflected on-chain in order to preserve soundness.

The importance of this is explained in the following example. There is one configuration that dictates who is allowed to sign on price feeds of the different assets. If a batch is proven with respect to an invalid Oracle, which is different to what is reflected on-chain, then the proof will be rejected. Otherwise, a malicious operator could have changed this configuration off-chain and signed any price feed with an arbitrary price of their choice.

The smart contract contains two configuration types:globalConfiguration and syntheticConfiguration , which is set per each synthetic assetId. In order to reduce the gas cost, we do not store the full configuration on-chain but rather a hash commitment.

If you are worried about the security of the system, we recommend you check that the full configuration is accessible to you, along with the hash calculations that attest that it corresponds to the on-chain configuration commitment. This information can be obtained, for example, on the application site.

Global Configuration

Contains the following fields:

Configuration Per Synthetic assetId

Contains the following fields:

  • The asset’s resolution

  • The asset’s risk factor. The risk factor is a representation of the maintenance margin required for this asset.

  • List of possible names to identify this asset, that will be signed by different Oracle companies (see Becoming an Oracle Provider for StarkEx)

  • List of public keys that are allowed to sign on this asset

  • Quorum needed for approving a new price