🎒 Developer FAQ

Where can I review the source code / smart contracts?

Please check out our Github! Feel free to open an issue or PR if you have any questions or suggestions.

How to contribute? Are there bounties?

We welcome contributions via our Github. You can also check out our open bounties here: https://bounties.perp.fi/​

We also have a #coding-chat channel in our Discord if you want to learn more about contributing!

What are the smart contracts addresses?

Get the current addresses here:

Where can I view the contract ABIs?

First get the smart contract addresses from the link above.

For Ethereum (layer1), get the ABIs on Etherscan.

For xDai (layer2), get the ABIs on Blockscout.

Example: (ClearingHouse on layer2) https://blockscout.com/poa/xdai/address/0x5d9593586b4B5edBd23E7Eba8d88FD8F09D83EBd/contracts​

Is there a subgraph for Perpetual Protocol?

A subgraph has been created on The Graph by our team and we expect more will be created with further data soon.

Is there an xDAI faucet?

There are three working faucets - - xDai faucet, Blockscount's faucet, and Bao Finance's xDai faucet.

Welcome to ask us for some xDAI in Discord #coding-chat

You can also convert DAI to xDAI at https://bridge.xdaichain.com/.

What is the k for each AMM?

K values are stet for each AMM (ie. each perpetual market) at launch. These values shift gradually over time so the best resource for obtaining them is the perp-cli tool.

For example, call perp amm ETH to get the QuoteAssetReserve and BaseAssetReserve (x and y values) for this AMM.

What does "price is over fluctuation limit" mean?

We have a per-block price fluctuation limit of ±1.2%. If you are outside this range, a "price is over fluctuation limit" error is thrown.

For example, if the price in the last block is 1,000, then the price range in the next block will be 988 ~ 1012.

How is the slippage tolerance applied when closing a position?

The value of the slippage tolerance is position notional x (1 ± 0.5%) ( +/- depends on long or short)

How is the funding rate obtained?

ClearingHouse.getLatestCumulativePremiumFraction() returns premiumFraction

  • fundingRate = premiumFraction / twapIndexPrice

  • fundingPayment = premiumFraction * positionSize