Developer Docs


Smart Contract

All smart contracts are subject to risks. The Increment contracts have undergone testing, code reviews, internal audits and several external audits, but it is possible that they may still contain unknown bugs and produce economic errors that are inherently unforeseeable.
Never trade or invest with funds that you can't afford to lose.



The protocol relies on liquidity providers to bring real collateral in order to mint virtual tokens to the Curve pool. Without enough liquidity remaining, traders may encounter issues when opening/closing positions, liquidations become not feasible, and liquidity providers might be unable to close uneven positions. We assume that some amount of funds will always remain in the protocol.


Liquidations may not be executed on time if oracle price updates too slowly or transactions are not processed.
Unrealized PnL currently does not take slippage into account, so large positions can generate bad debt during liquidation. Thus, the system limits the maximum position size that a single address can open.


We use TWAP oracles for input validation of closing positions and liquidations. Manipulating TWAPs is more difficult than manipulating a spot price, but they can be tampered with if given sufficient financial resources.



Governance has privileged access to some types of operations (see Governance). A risk associated with these privileges would be the pausing and unpausing contracts function, which can be detrimental to user positions in case of price fluctuations. Pausing the protocol should only occur under extremely critical circumstances, such as if a hack were to occur.


Curve factory

The admin (0xbabe61887f1de2713c6f97e567623453d3C79f67) of the curve factory (0xF18056Bbd320E96A48e3Fbf8bC061322531aac99) can change all parameters of the CryptoSwap contract. This changes the operation of the underlying trading engine impacting traders, liquidity providers and liquidators.
Chainlink oracles are used to determine the funding rate of the protocol. When they provide false or delayed price information, the funding rates could be incorrectly estimated.

Reserve Assets

First, we use UA as our unit of account. One has to lock USDC to mint UA, in the same proportion. We assume a fixed price of 1 USD for each unit of UA. USDC is an upgradable contract. Fee on transfer tokens are not supported.
Second, we might allow list other ERC20 tokens to be used as collaterals in the protocol but their values might change over time. To mitigate this risk, we introduced a weight attached to collateral. The less stable the collateral, the lower its weight. This parameter is changed by governance vote.

zkSync Era

Increment is built on zkSync Era and a severe degradation in any part of this critical infrastructure will adversely affect the transactional activity on Increment.
For instance, if the sequencer on zkSync Era, which executes and batches L2 transactions, goes offline then Increment will become unusable and transactions will not go through. This can cause significant problems with oracle price updates and potential liquidations once the sequencer is back online, which is why a sequencer oracle is needed to detect potential sequencer downtimes and allow a grace period for users to react before updating oracle prices, see L2 Sequencer Uptime Feeds. So far, there isn't a onchain sequencer oracle available for zkSync Era.
Last modified 4d ago