# Parcl v3

Parcl v3 is a perpetuals exchange designed for real estate synthetics. It supports cross margined perps trading on various real estate markets. LPs add liquidity to a single LP pool per exchange where they take on trader PnL as well as earn trading fees.

Market index prices are price feeds created by [Parcl Labs](https://www.parcllabs.com/). The Parcl dev team operates Pyth oracles to stream the Parcl Labs price feeds on-chain. &#x20;


# Protocol Overview

Parcl v3 is a perpetuals dex that offers real estate index markets for speculating or hedging. Core features and improvements on previous iterations include more scalable liquidity provision, flexible governance, and risk management features that protect LPs and traders from excessive market imbalance. The design is heavily influenced by Synthetix perps.&#x20;

## **LP**

The protocol can support many exchanges where each exchange has a single collateral and a single LP pool.&#x20;

Markets belong to a single exchange. Each market's counterparty for trading is its associated exchange's LP pool. LPs underwrite and clear all trades, collect the majority of trading fees that they split with the protocol, and act as that particular exchange's insurance fund. It is as if the LP pool has a monopoly market making privilege on its exchange's markets.&#x20;

The protocol's risk management features promote a delta neutral LP experience by creating incentives to decrease market skew and levying penalties on trader who increase market skew.&#x20;

If risk management settings are insufficient for maintaining balanced markets, then governance adjusts the exchange and/or market settings. Additionally, governance and the community is responsible for fine tuning protocol settings over time.

## **Flexible Governance**&#x20;

Exchange settings and market settings are configurable by the protocol admin, which can be migrated to a DAO. This allows the protocol admin to adjust and respond to changing market conditions and user behaviors.

Risk management settings on the exchange and markets are a crucial subset of the total settings that the protocol admin can configure to better align LP and trader incentives.&#x20;

## **Risk Management**

The exchange's risk management features promote balance in each market by incentivizing traders to decrease skew and disincentivizing traders to increase skew. The core risk management features are funding, the margin system, and price impact.

Funding is the cost of carry for a position based on the market's skew with respect to time. The margin system dynamically sets higher initial margin requirements for trades that put more imbalance risk on the market. Each trade's fill price is the adjusted index price where the adjustment is the trade's marginal impact on skew averaged with the previous skew impact adjusted index price.

##


# Risk Management & Trading

## Key Risk Management Settings

#### Skew Scale

Skew scale is used to normalize market skew for use in risk management calculations. Each market has its own skew scale. &#x20;

$$
premium/discount = \frac {skew}{skewScale}
$$

Skew scale determines how sensitive premiums/discounts are to marginal changes in skew, which is used in risk management calculations.

#### Max Funding Velocity

Max funding velocity is a market's maximum rate the funding rate increases by per day. Each market has its own max funding velocity.

#### Max Side Size

Max side size is a market's maximum open interest measured in base asset units that can be opened per side of the market. Each market has its own max side size.

For example, if max side size is 100 sqft, then the max long open interest available is 100 sqft and the max short open interest available is 100 sqft.&#x20;

## **Funding**

Funding keeps markets balanced by taxing the majority side of a market and paying that tax to the minority side of the market. Funding flows through the LP pool, so it can be a short term risk to LPs.

#### Funding Rate

The funding rate uses a velocity model where the premium/discount clamped to 1 is multiplied by the market's max funding velocity and time elapsed in days. This means the effective rate increase for markets that are not maximally skewed is a fraction of max velocity multiplied by time elapsed.&#x20;

$$
\small \Delta rate = max(-1, min(1, \frac{skew}{skewScale})) \cdot maxFundingVelocity \cdot  daysElapsed
$$

#### Funding Per Unit

Funding per unit is the collateral denominated accumulation of the funding rate over time. It is the average funding rate over the elapsed time period multiplied by the index price and the time elapsed in days.&#x20;

$$
\Delta fundingPerUnit = averageFundingRate \* indexPrice \* daysElapsed
$$

#### Funding PnL

Funding per unit is used to determine a position's accrued funding. Accrued funding is the position's size in base asset units multiplied by the position's net funding per unit. Net funding per unit is the exit funding per unit less the position's last funding per unit.&#x20;

Since funding per unit is an accumulation with respect to time, it is precise to subtract the accumulation at position interval start from the accumulation at position interval end. Each trade on a position is effectively a close and resets the position's last funding per unit and last fill price.

## **Margin System**

The protocol uses a cross margin system. Margin accounts can have a maximum of 12 positions.&#x20;

#### Position Margins

The protocol uses a dynamic initial margin ratio, a constant minimum initial margin ratio, and a maintenance margin proportion of the computed initial ratio for a new position.&#x20;

The dynamic initial margin ratio scales linearly with position size normalized by skew scale. The total computed initial margin ratio sums the dynamic ratio and the minimum initial ratio. The minimum initial ratio is used to set the lowest possible requirement.&#x20;

The maintenance ratio is the product of the total initial ratio and the market's maintenance proportion.

$$
initialRatio = initialRatio \ \cdot \  \frac{positionSize}{skewScale}  + minimumInitial
\\
maintenanceRatio = initialRatio \ \cdot \ maintenanceProportion
$$

The initial margin requirement and the maintenance margin requirement are the position notional using the index price multiplied by the respective ratio. A fixed minimum position margin requirement is added to both margin requirements. Minimum position margin is configurable by market. The liquidation margin acts as a buffer to ensure accounts can cover the liquidation keeper fee.

$$
initialMargin = positionNotional \ \cdot \ initialRatio \ + minPositionMargin \\
maintenanceMargin = positionNotional \ \cdot \ maintenanceRatio \ + minPositionMargin    \ liquidationFeeMargin = positionNotional \ \cdot \  liquidationFeeRate
$$

{% hint style="warning" %}
Notional position values use the current index price. This means accounts can be liquidated due to changes in the index price.
{% endhint %}

#### Account Margins

An account's margins are the sum of the account's positions' margins using each position's market's index price as the exit fill price in PnL calculations. Available margin is the account's total net PnL plus its deposited margin collateral.&#x20;

Total required margin is the account's maintenance requirement plus a liquidation fee margin. &#x20;

$$
totalRequiredMargin = accountMaintenance + liquidationFeeMargin
$$

The liquidation fee margin is the maximum of the exchange's minimum liquidation fee and the account's total liquidation fee margin.

Since accounts are cross margined, an account with positive PnL positions may negate the account's positions that are below their maintenance requirement. In such a case, the account's requirements can be met even though the account has one or more underwater positions.&#x20;

## **Liquidations**

If an account falls below its total required margin, then it is fully liquidated and all collateral posted as margin to the account is sent to the LP pool.&#x20;

Parcl v3 margin is dissimilar from other margin products in that Parcl v3 traders do not borrow an asset on margin, pay interest, and then freely risk the asset in the market. Parcl v3 traders explicitly borrow potential PnL at the expense of the exchange's LPs.&#x20;

In the worst case scenario where there is significant skew in markets, LPs pay positive trader PnL with no offset from other traders in the respective markets. However, even in perfectly balanced markets there are short term liquidity risks since PnL flows through the LP pool. For example, winning traders may realize PnL while the losing traders stay in the market hoping for the market to change. Nonetheless, the LPs paid out the positive PnL and are waiting to receive the negative PnL offset.&#x20;

Short term solvency and the nature of trading against the LPs are the main reasons why liquidations fully close out accounts that are unable to meet requirements.

Liquidation fees are earned based on the notional open interest closed per position per account in a liquidate instruction invocation. The liquidation fee rate is set by governance. &#x20;

#### MEV Protection

Although a liquidation begins by transferring all margin collateral from the liquidated account to the exchange, the accounts positions may be partially closed out over multiple transactions based on criteria with respect to time. This design is meant to protect markets from actors taking advantage of short term or even atomic large swings in a market's premium/discount that could be profitable to order transactions against.

Mechanically, each market has a liquidation epoch length measured in seconds in which there is a maximum capacity of open interest in base asset units that can be liquidated. A position liquidation may still occur after capacity per epoch has been reached if the market's current premium/discount is below the max liquidation premium/discount set by governance.  &#x20;

#### Authorized Liquidator

Each market has an authorized liquidator that is set by governance. This role can optionally bypass epoch capacity and perform full liquidations. Additionally, the authorized liquidator does not collect liquidation fees from the exchange.&#x20;

## **Price Impact**

Each trade’s fill price is adjusted linearly by the trade’s impact on the market’s premium/discount. It produces a symmetrical high frequency rebalancing opportunity since any trade that reduces skew will receive a discounted price and any trade that widens skew will receive a price premium.

The purpose of the dynamic fill price is to disincentivize volume that increases skew and promote volume that contracts skew by directly adjusting entry prices similar to how a perps market maker might widen or tighten spreads on a perps clob in response to price drift or net exposure to funding.

$$
\small {fillPrice} = \frac{{indexPrice}(1 + \frac{{skew}}{{skewScale}})  + {indexPrice}  (1 + \frac{{skew}+{tradeSize}}{{skewScale}})}{2}
$$

#### Price PnL

Price PnL is the change in price multiplied by the position's size in base asset units. Price change is the current (exit) fill price less the last fill price.

$$
\Delta Price = currentFillPrice - lastFillPrice \\
\newline pricePnL = positionSize \* \Delta Price
$$

Each trade on a position is effectively a close and resets the position's last fill price and last funding per unit.

## **Trading Fees**

The trade fee is determined by the trade's notional size multiplied by the calculated trade fee rate.

It is a risk management feature in the sense that the trade fee rate is a blend of the market's maker fee rate and the market's taker fee rate. "Maker" is the v3 parlance for traders who widen skew and "takers" is the v3 parlance for traders who decrease skew.&#x20;

$$
\small tradeFee = (makerPercent \cdot notional \cdot makerRate) + (takerPercent \cdot notional \cdot takerRate)
$$

Trades that only increase skew use the taker fee rate. Trades that only decrease skew use the lower maker fee rate. Trades that flip skew are the only trades that receive a blended fee rate between the maker and taker rates weighted by the proportion of their trade that increased and decreased skew.


# Account Model

{% embed url="<https://whimsical.com/exchange-usdc-FkTYk5zrcvtgEGLSPbykbS>" %}

## Exchange Account

#### PDA Seeds

```
["exchange", exchange_id: u64]
```

#### Account

<table><thead><tr><th width="210">Value</th><th width="413">Definition</th><th></th></tr></thead><tbody><tr><td>accounting</td><td>Struct holding exchange accounting values (see below)</td><td></td></tr><tr><td>settings</td><td>Struct holding exchange settings  (see below)</td><td></td></tr><tr><td>id</td><td>unique id for exchange account used in PDA</td><td></td></tr><tr><td>market_ids</td><td>Set of ids corresponding to the exchange's active markets </td><td></td></tr><tr><td>oracle_configs</td><td>Set of authorized oracle programs</td><td></td></tr><tr><td>status</td><td>Bitmask where bits are paused actions for the exchange. Actions include DepositMargin, WithdrawMargin, AddLiquidity, RemoveLiquidity, IncreasePosition, DecreasePosition, Liquidate, ProcessSettlementRequests</td><td></td></tr><tr><td>collateral_expo</td><td>Collateral token's decimals stored as i16</td><td></td></tr><tr><td>collateral_mint</td><td>Collateral token mint address</td><td></td></tr><tr><td>collateral_vault</td><td>Exchange's collateral token account </td><td></td></tr><tr><td>admin</td><td>Exchange's admin address</td><td></td></tr><tr><td>nominated_admin</td><td>Staged new admin address</td><td></td></tr><tr><td>authorized_settler</td><td>Address of authorized account that does not accept settlement tips</td><td></td></tr><tr><td>authorized_protocol_fees_collector</td><td>Address of account authorized to collect protocol fees on admin's behalf</td><td></td></tr><tr><td></td><td></td><td></td></tr></tbody></table>

### Exchange Accounting

<table><thead><tr><th width="287">Value</th><th>Definition</th><th></th></tr></thead><tbody><tr><td>notional_open_interest</td><td>Notional collateral value of open interest across all markets</td><td></td></tr><tr><td>unrealized_pnl</td><td>Last cached unrealized pnl estimate</td><td></td></tr><tr><td>last_time_locked_open_interest_accounting_refreshed</td><td>Last unix timestamp when unrealized pnl and notional oi were refreshed</td><td></td></tr><tr><td>balance</td><td>The exchange's collateral balance. This value increases and decreases with trader pnl and trading fees</td><td></td></tr><tr><td>margin_balance</td><td>Total deposited margin collateral</td><td></td></tr><tr><td>lp_balance</td><td>Total deposited LP collateral</td><td></td></tr><tr><td>lp_shares</td><td>Total shares outstanding</td><td></td></tr><tr><td>protocol_fees</td><td>Uncollected protocol fees</td><td></td></tr><tr><td>unsettled_collateral_amount</td><td>Total withdrawn collateral amount that is pending settlement</td><td></td></tr></tbody></table>

### Exchange Settings

<table><thead><tr><th width="293">Value</th><th width="444">Definition</th><th></th></tr></thead><tbody><tr><td>min_lp_duration</td><td>The minimum amount of time in seconds an LP must hold their LP deposit </td><td></td></tr><tr><td>settlement_delay</td><td>The amount of time used to set a settlement request's maturity field during withdraw_margin or remove_liquidity instructions. Used for settlement request validation in process_settlement_requests</td><td></td></tr><tr><td>min_liquidation_fee</td><td>If liquidation fee is smaller than this collateral value, then use this value. </td><td></td></tr><tr><td>max_liquidation_fee</td><td>If liquidation fee is larger than this collateral value, then use this value. </td><td></td></tr><tr><td>locked_open_interest_staleness_threshold</td><td>Max staleness tolerance in seconds for refreshing unrealized pnl and notional oi cache </td><td></td></tr><tr><td>protocol_fee_rate</td><td>Protocol's percentage share of each trading fee </td><td></td></tr><tr><td>locked_open_interest_ratio</td><td>Percentage of notional oi that LPs must maintain. </td><td></td></tr><tr><td>max_keeper_tip_rate</td><td>The maximum keeper tip percentage of collateral to settle.</td><td></td></tr></tbody></table>

## Market Account

#### PDA Seeds

```
["market", exchange_address: Pubkey, market_id: u32]
```

<table><thead><tr><th>Value</th><th width="357">Definition</th><th></th></tr></thead><tbody><tr><td>settings</td><td>Struct holding exchange settings (see below)</td><td></td></tr><tr><td>accounting</td><td>Struct holding exchange accounting values (see below)</td><td></td></tr><tr><td>id</td><td>Unique market id used in PDA</td><td></td></tr><tr><td>exchange</td><td>Exchange address</td><td></td></tr><tr><td>price_feed</td><td>Price feed address</td><td></td></tr><tr><td>status</td><td>Bitmask where bits are paused actions for this market. Actions include IncreasePosition and DecreasePosition</td><td></td></tr></tbody></table>

### Market Accounting

<table><thead><tr><th width="359">Value</th><th width="375">Definition</th><th></th></tr></thead><tbody><tr><td>weighted_position_price</td><td>Weighted average price for all open positions using position base asset units for weighting. Used in unrealized pnl estimates</td><td></td></tr><tr><td>last_utilized_liquidation_capacity</td><td>Amount of notional oi that has been utilized in the current epoch</td><td></td></tr><tr><td>size</td><td>Market's total open interest measured in base asset units. </td><td></td></tr><tr><td>skew</td><td>Market's skew measured in base asset units. Signed where positive means long skew and negative means short skew.</td><td></td></tr><tr><td>weighted_position_funding_per_unit</td><td>Weighted average funding per unit for all open positions using position base asset units for weighting. Used in unrealized pnl estimates</td><td></td></tr><tr><td>last_funding_rate</td><td>Latest funding rate accumulation. Stored as a PreciseInt.</td><td></td></tr><tr><td>last_funding_per_unit</td><td>Latest funding per unit accumulation. Stored as a PreciseInt.</td><td></td></tr><tr><td>last_time_funding_updated</td><td>Unix timestamp updated with the current timestamp each time an instruction cranks funding  </td><td></td></tr><tr><td>first_liquidation_epoch_start_time</td><td>Tracks the start of the liquidation epochs for discrete epoch index calculations</td><td></td></tr><tr><td>last_liquidation_epoch_index</td><td>Last seen liquidation epoch index which reflects which discrete period the market is in  </td><td></td></tr><tr><td>last_time_liquidation_capacity_updated</td><td>Unix timestamp marking last time a liquidate instruction updated the epoch's capacity</td><td></td></tr><tr><td></td><td></td><td></td></tr></tbody></table>

### Market Settings

<table><thead><tr><th width="329">Value</th><th width="401">Definition</th><th></th></tr></thead><tbody><tr><td>min_position_margin</td><td>Smallest margin amount a position must maintain</td><td></td></tr><tr><td>skew_scale</td><td>Normalization scaler for skew </td><td></td></tr><tr><td>max_side_size</td><td>Open interest cap per side of the market</td><td></td></tr><tr><td>max_liquidation_limit_accumulation_multiplier</td><td>Multiplier used in determining liquidation epoch capacity</td><td></td></tr><tr><td>max_seconds_in_liquidation_epoch</td><td>Max length of a liquidation epoch. Each liquidation epoch has a maximum amount of capacity that can be liquidated. </td><td></td></tr><tr><td>initial_margin_ratio</td><td>The percentage applied to the position's size normalized by skew_scale</td><td></td></tr><tr><td>maker_fee_rate</td><td>Percentage fee rate applied to the notional maker portion of a trade  </td><td></td></tr><tr><td>taker_fee_rate</td><td>Percentage fee rate applied to the notional taker portion of a trade</td><td></td></tr><tr><td>max_funding_velocity</td><td>Max possible rate of change per day for the funding rate if skew is 100% of skew_scale</td><td></td></tr><tr><td>liquidation_fee_rate</td><td>Percentage fee rate applied to notional liquidation amounts paid to liquidator's margin account</td><td></td></tr><tr><td>min_initial_margin_ratio</td><td>The constant initial margin percentage added to the dynamic portion. Sets the maximum leverage multiple.</td><td></td></tr><tr><td>maintenance_margin_proportion</td><td>Percentage applied to computed initial margin ratio</td><td></td></tr><tr><td>max_liquidation_pd</td><td>Premium/discount (skew/skew_scale) percentage that the market tolerates for liquidation capacity being used even if epoch capacity is depleted.</td><td></td></tr><tr><td>authorized_liquidator</td><td>Address of the market's authorized account that can optionally skip liquidation epoch capacity and fully liquidate eligible accounts. This account does not accept liquidation fees. </td><td></td></tr></tbody></table>

## LP Position

#### PDA Seeds

```
["lp_position", exchange_address: Pubkey, owner_address: Pubkey, lp_position_id: u64]
```

<table><thead><tr><th width="276">Value</th><th width="391">Definition</th><th></th></tr></thead><tbody><tr><td>id</td><td>Unique id for lp position account used in PDA</td><td></td></tr><tr><td>liquidity</td><td>Total collateral amount deposited as exchange liquidity</td><td></td></tr><tr><td>shares</td><td>Total LP shares owned by this account </td><td></td></tr><tr><td>maturity</td><td>Unix timestamp after which this position's liquidity can be can be partially or fully removed. </td><td></td></tr><tr><td>exchange</td><td>Exchange address</td><td></td></tr><tr><td>owner</td><td>Position owner's address</td><td></td></tr></tbody></table>

## Margin Account

#### PDA Seeds

```
["margin_account", exchange_address: Pubkey, owner_address: Pubkey, margin_account_id: u32]
```

<table><thead><tr><th width="199">Value</th><th width="476">Definition</th><th></th></tr></thead><tbody><tr><td>positions</td><td>Set of active positions (see below)</td><td></td></tr><tr><td>margin</td><td>Total margin collateral deposited. This value increases and decreases with settled pnl</td><td></td></tr><tr><td>max_liquidation_fee</td><td>Set during the first liquidation ix for this account and updatd in subsequent liquidaitons, if there are any. Used to cap liquidation fees over potentially multiple ixs. </td><td></td></tr><tr><td>id</td><td>Unique id for the account used in PDA</td><td></td></tr><tr><td>exchange</td><td>Exchange address</td><td></td></tr><tr><td>owner</td><td>Account owner's address</td><td></td></tr><tr><td>delegate</td><td>Delegate's address. Delegate is set and unset by owner. Delegate can sign for deposit_margin ix and modify_position ix but cannot sign for any other margin account ixs.</td><td></td></tr><tr><td>in_liquidation</td><td>Flag marking the account is currently in liquidation. This means the account is being liquidated across multiple liquidation ixs.</td><td></td></tr></tbody></table>

### Position

<table><thead><tr><th width="303">Value</th><th width="334">Definition</th><th></th></tr></thead><tbody><tr><td>size</td><td>Size of the position in base asset units. Signed where positive means long position and negative means short position</td><td></td></tr><tr><td>last_interaction_price</td><td>Fill price of last trade. Subtracted from current fill price in next pnl calculation</td><td></td></tr><tr><td>last_interaction_funding_per_unit</td><td>Associated market's funding per unit during last trade. Subtracted from current funding per unit in next pnl calculation   </td><td></td></tr><tr><td>market_id</td><td>Id of the market this position belongs to</td><td></td></tr></tbody></table>

## Settlement Request

#### PDA Seeds

```
["settlement_request", owner_address: Pubkey, settlement_request_id: u64]
```

<table><thead><tr><th>Value</th><th width="314">Definition</th><th></th></tr></thead><tbody><tr><td>id</td><td>Unique id for request used in PDA</td><td></td></tr><tr><td>maturity</td><td>Unix timestamp when the request can be processed and settled. </td><td></td></tr><tr><td>amount</td><td>The collateral amount that will be transferred to request.owner_token_account during settlement.</td><td></td></tr><tr><td>keeper_tip</td><td>Collateral tip that the owner has allocated to the keeper who processes the settlement request once it has reached maturity calling the process_settlement_requests ix. Tip is a percentage of request.amount. This percentage cannot exceed the exchange's max tip percentage setting.</td><td></td></tr><tr><td>exchange</td><td>Address of the associated exchange</td><td></td></tr><tr><td>owner</td><td>Address of the request's owner who is the authority of the request.owner_token_account</td><td></td></tr><tr><td>owner_token_account</td><td>Destination token account address for settled collateral transfer. Protocol enforces must be ata.</td><td></td></tr><tr><td></td><td></td><td></td></tr></tbody></table>

## LP Account (deprecated)

<table><thead><tr><th width="276">Value</th><th width="391">Definition</th><th></th></tr></thead><tbody><tr><td>liquidity</td><td>Total collateral amount deposited as exchange liquidity</td><td></td></tr><tr><td>shares</td><td>Total LP shares controlled by this account </td><td></td></tr><tr><td>last_add_liquidity_timestamp</td><td>Weighted average unix timestamp using liquidity deposits for weighting. Validated against exchange.min_lp_duration in remove_liquidity ix</td><td></td></tr><tr><td>exchange</td><td>Exchange address</td><td></td></tr><tr><td>owner</td><td>Account owner's address</td><td></td></tr><tr><td>delegate</td><td>Delegate's address. Delegate is set and unset by owner. Delegate can sign for add_liquidity ix but cannot sign for any other LP account ixs.</td><td></td></tr></tbody></table>


# Addresses

## Programs

| Program                | Address                                      |
| ---------------------- | -------------------------------------------- |
| **Parcl v3**           | 3parcLrT7WnXAcyPfkCz49oofuuf2guUKkjuFkAhZW8Y |
| **Parcl Pyth**         | PaRCLKPpkfHQfXTruT8yhEUx5oRNH8z8erBnzEerc8a  |
| **SPL Governance**     | Di9ZVJeJrRZdQEWzAFYmfjukjR5dUQb7KMaDmv34rNJg |
| **Staking**            | 2gWf5xLAzZaKX9tQj9vuXsaxTWtzTZDFRn21J3zjNVgu |
| **Merkle Distributor** | 5tu3xkmLfud5BAwSuQke4WSjoHcQ52SbrPwX9es8j6Ve |

## Exchanges

<table><thead><tr><th width="195">Exchange</th><th width="289">Address</th><th>Exchange Id</th></tr></thead><tbody><tr><td><strong>Exchange 1 (usdc)</strong></td><td>82dGS7Jt4Km8ZgwZVRsJ2V6vPXEhVdgDaMP7cqPGG1TW</td><td>0</td></tr></tbody></table>

## Address Lookup Tables

<table><thead><tr><th width="195">Exchange</th><th width="488">Address</th></tr></thead><tbody><tr><td><strong>Exchange 1 LUT</strong></td><td>D36r7C1FeBUARN7f6mkzdX67UJ1b1nUJKC7SWBpDNWsa</td></tr></tbody></table>

## Markets

<table><thead><tr><th width="198">Market</th><th width="247">Address</th><th width="106">Market Id</th><th width="148">Exchange Id</th></tr></thead><tbody><tr><td><strong>New York</strong></td><td>8QLQf9mA9CC823KXyLRpLCpGbkDSkS4AdSv8LBoMfXjN</td><td>1</td><td>0</td></tr><tr><td><strong>Miami Beach</strong></td><td>2qJt3MWwGQQ9AcbdrWQ9mhth6TVfgQ9vUAbtrMWFZ78T</td><td>2</td><td>0</td></tr><tr><td><strong>San Francisco</strong></td><td>GqpMnTPsVX3t8fxDSdQE6mgc8FTJBiL1z4s4o5mMJDhU</td><td>3</td><td>0</td></tr><tr><td><strong>Austin</strong></td><td>F3oMGAuWNRCTXEtUQehn87ziYVhSPwAySjMrQrFJapMj</td><td>4</td><td>0</td></tr><tr><td><strong>Las Vegas</strong></td><td>FkvSvtDcWTKNYSbk1m74CCpKbKKnPVUFsy7U5cWYxmU3</td><td>5</td><td>0</td></tr><tr><td><strong>Brooklyn</strong></td><td>7UHPEqFRVgyYtjXuXdL3hxwP8NMBQoeSxBSy23xoKrnG</td><td>6</td><td>0</td></tr><tr><td><strong>Los Angeles</strong></td><td>4LftAkvFnjdfy9UJNDx5z25rTmpXZDBW5nx9v5EFc8WE</td><td>7</td><td>0</td></tr><tr><td><strong>Chicago</strong></td><td>31KAUhwMQiLB4pLgsJtvLy5CHM1XwpvRsUABPrgvwqpH</td><td>8</td><td>0</td></tr><tr><td><strong>Atlanta</strong></td><td>FR1zcupDLTBKYKkHJQs2bVnkPpikV2zWTnzSWzPzwb98</td><td>9</td><td>0</td></tr><tr><td><strong>Denver</strong></td><td>C4JraXNCKxqSeCHGUXnxy8MYkVcCW2Zvy5nHVCnUmXH1</td><td>10</td><td>0</td></tr><tr><td><strong>Washington DC</strong></td><td>FiaFc8iAPNLgj4WjKqArgTeuryViWKfZzmw7prXwjfsn</td><td>11</td><td>0</td></tr><tr><td><strong>Boston</strong></td><td>39KT83FcfQfSsuLk4DuQy8Zc7gTnvV2zy4iLXTHX2cmN</td><td>12</td><td>0</td></tr><tr><td><strong>United States of America</strong></td><td>9uEFb5P4cqajWciHfQES3mVrp3Ni8m6J1wM3wdXDfw4w</td><td>13</td><td>0</td></tr><tr><td><strong>San Diego</strong></td><td>Hu416KTgGBzHWwf7EU6UyqRtp1qwYydPQQpcbVW6i8YV</td><td>14</td><td>0</td></tr><tr><td><strong>Miami</strong></td><td>AN6JFU7WCPSPnvuBC2Sznt3prBJPGHrsgirsMe3Z3rPu</td><td>15</td><td>0</td></tr><tr><td><strong>United States of America (rental)</strong></td><td>7qnPHxhMjdRSQoDsRGK6ADQNJVn7dcwuK5Rs18Gxa24A</td><td>16</td><td>0</td></tr><tr><td><strong>Chicago (rental)</strong></td><td>ENPfai6wtFo1xAoGZB9m72r2Fc2EnRU2ZHYcxhDKvC2R</td><td>17</td><td>0</td></tr><tr><td><strong>Denver (rental)</strong></td><td>HsPyzSQXfPpMmN8zhXWFwZcHG5B5C9wQkAs6xkt4c79J</td><td>18</td><td>0</td></tr><tr><td><strong>Pittsburgh</strong></td><td>9BHzPCpgiE71DWVT37xFB4HAeYp1J911NFKFEB4iKbGR</td><td>19</td><td>0</td></tr><tr><td><strong>Boston (rental)</strong></td><td>FW5BqmBCYFo8yf1vesw7wWJ6T5fK3cmJ6m7ajGyaDdme</td><td>20</td><td>0</td></tr><tr><td><strong>Brooklyn (rental)</strong></td><td>8DEZqoMViz66Pe2mePQ6weGueMhPhL3yXSb81voLrixn</td><td>21</td><td>0</td></tr><tr><td><strong>Dubai</strong></td><td>F2EauYpJr95pyZQ7hFm3rdsmZkjm9Pz2y4r1ZXePFtvL</td><td>22</td><td>0</td></tr><tr><td><strong>SOL</strong></td><td>2k7gSWPSEq6ifj7xcFcQstTU6pK4tkiFa3n57m7wf4yA</td><td>23</td><td>0</td></tr><tr><td><strong>BTC</strong></td><td>7GDUjoEPu8d3EkpV8NdLqjsucc5PgHTKWVtDtgt4SKFW</td><td>24</td><td>0</td></tr><tr><td><strong>Charlotte</strong></td><td>7ogRnVpXeGyQArZePJ3wXAyAKngyiUAhM3VusW5gwv8y</td><td>25</td><td>0</td></tr><tr><td><strong>Tampa</strong></td><td>FqQL3YEGcTki9bUZhD12wxuTh95YZCuc1vKA2Ad2ZkMQ</td><td>26</td><td>0</td></tr><tr><td><strong>Nashville</strong></td><td>28drwJYNGjQCmSsGZzU3e5fihEutYf6b3StTjBcFoKw7</td><td>27</td><td>0</td></tr></tbody></table>

## Price Feeds

| Price Feed                            | Address                                      | Location Type |
| ------------------------------------- | -------------------------------------------- | ------------- |
| **New York**                          | 34AwhUntg33954iaEc3u8E9SxykhZouex8c6VPxRwsGh | CITY          |
| **Miami Beach**                       | 7dg34r5cFqerbVkgTLdfN8FKvMVT4LpwJiENTbURhCod | CITY          |
| **San Francisco**                     | 4H4kk4zfjNiiX7445D2XG5mJep8frahmKToXUvk6Wa8E | CITY          |
| **Austin**                            | Dnf3yHGTkpdiiaU6JPqj8ypy1gF21avLF5qpVFWsS57W | CITY          |
| **Las Vegas**                         | AtZv726tkdRvYeAfwyGd4LdtWLBN4Q3jxt9DXMXs18Rc | CITY          |
| **Brooklyn**                          | CtsLNGLEFMJ53cuYfFLD5QhPukj4who1sbgkQ83m8xKp | COUNTY        |
| **Los Angeles**                       | 6B1QCgWKGS14em5fAPwQE92Rxxr9Z2iK6BTW1diQhpvg | CITY          |
| **Chicago**                           | Bh1DaSLuRE84hwFn6ALTvW4NMUbpddTLmpYnqsSiECFp | CITY          |
| **Atlanta**                           | 9reuWhC95vSrLp7g1qCYFe7iRK7nWNW9rYM7yN4CpUBn | CITY          |
| **Denver**                            | 2V8FbpNHF8Yo9nYS6q16chxB8YrNNY3gZraNNcm3qUjQ | CITY          |
| **Washington DC**                     | B3Z5x3NJDoJ3kGxPyqMLcbiD4rFWTFSBZwABdRh8mtra | CITY          |
| **Boston**                            | 5wgjjQ4SuviFxh8DDQ5gcR7mLFUjAHwdq2mBktEheR36 | CITY          |
| **United States of America**          | 8ReSPaa5N1kuQ5YABmKhbWYdAAP9mMy9mpPdMPG23sg  | COUNTRY       |
| **San Diego**                         | 5TjHE3f8wT6dxXXXwPXLrnuHpSuEgWyWPUb1VPGAKUeb | CITY          |
| **Miami**                             | AYUxU9kYCuvPG6P4yWoSocxxrTkfHDmu6SKvzzRrP8Gt | CITY          |
| **United States of America (rental)** | 2TXnXMZTGeQsugCUV8coUQuytzgUJVNfu4zoiZtvn3Xf | COUNTRY       |
| **Chicago (rental)**                  | HGbt9RmGn1b261jrKnn5KqJcNheko8XJcDnuiMhopY14 | CITY          |
| **Denver (rental)**                   | 76jwh9Vz39NGtcre1bsDTnfqLPzN8zCsqjXkFsfptmhM | CITY          |
| **Pittsburgh**                        | 8rCJDUceNQmmawVRUknnwsBuS9hzYseqTGtx82vM4n6B | CITY          |
| **Boston (rental)**                   | AEDTBCpJ9sVeyRhG3yraMEYg7caCAEXM38W36sQwVv1g | CITY          |
| **Brooklyn (rental)**                 | 8BiPJxXZABAppYJzrHUhnzJBpETicMEkbqNiKeXPfPa5 | COUNTY        |
| **Dubai**                             | DEULwgEGTxLwHDHihh35GPzuenuqGe1mPukuHrwVkpyG | CITY          |
| **SOL**                               | 7UVimffxr9ow1uXYxsr4LHAcV58mLzhmwaeKvJ1pjLiE | N/A           |
| **BTC**                               | 4cSM2e6rvbGQUFiJbqytoVMi5GgghSMr8LwVrT9VPSPo | N/A           |
| **Charlotte**                         | BukndsFBuBcHo5VeBUfXJLc2hc8u2usjFbFgJjQvU8Q7 | CITY          |
| **Tampa**                             | GUr6ZFGHEB3sUe33xY9nqTeX4enNRD6ec785uwuhE6QK | CITY          |
| **Nashville**                         | 5kFjTmr76JbY5tCCyPWscvZFvmPD9a82J8d358oYANM  | CITY          |

## Authorized Keepers

<table><thead><tr><th width="195">Exchange</th><th width="289">Address</th><th>Function</th></tr></thead><tbody><tr><td><strong>Liquidator</strong></td><td>6dDCUve96a1Cqw3Zv34wfbCGwU77UEPe13953UdanTnT</td><td>Address of the market's authorized account that can optionally skip liquidation epoch capacity and fully liquidate eligible accounts. This account does not accept liquidation fees.</td></tr><tr><td><strong>Settler</strong></td><td>2USsSXPfLcvyFNB2HcsFkkuJ2s2GkHmKZjnZXx6usp93</td><td>Address of authorized account that does not accept settlement tips.</td></tr></tbody></table>


# Security

OtterSec (<https://osec.io/>) audited parcl-v3  before launch in 2023.

OtterSec did a follow-up audit of parcl-v3 in 2024.


# Links

App: <https://app.parcl.co/>

Site: <https://www.parcl.co/>

Discord: [https://discord.gg/parcl](https://discord.gg/parcl?utm_source=twitter\&utm_medium=post\&utm_campaign=discord_launch)

Twitter: <https://twitter.com/parcl>

Parcl Labs: <https://www.parcllabs.com/>


# v2 (archive)


# Lite Paper

Read the Parcl v2 lite paper below:

[ ](https://parcl.notion.site/Parcl-v2-6f27eaed8a5e46e29762a9de128ba0f9)<https://parcl.notion.site/Parcl-v2-6f27eaed8a5e46e29762a9de128ba0f9>


# Trade

## Connect Wallet

{% hint style="info" %}
If you do not have a wallet, you can use Phantom: <https://phantom.app/download>
{% endhint %}

Click the `Connect Wallet` button at <https://app.parcl.co/>

![](/files/I0ByjHMPh48P58rpiY9w)

## Get Tokens

* **SOL** is the native currency on the Solana blockchain. SOL is used to pay for the compute that the network uses to process your transactions. You need SOL in order to use any applications on Solana such as Parcl.&#x20;
* **USDC** is the token used for trading on the Parcl Protocol.&#x20;

You can buy SOL and USDC in your Phantom wallet using MoonPay or Coinbase Pay.&#x20;

* First, open up your Phantom wallet and click the `Buy` button on your assets tab.&#x20;
* Select `Solana` or `USDC`, then either input a custom amount or choose a quick-buy option.&#x20;
* Lastly, you can then choose the Coinbase Pay or MoonPay option.

<figure><img src="/files/SJxRbJ6LuKTW7s5xr45N" alt=""><figcaption></figcaption></figure>

## Select Market

Parcl offers many US geographic markets like New York City and San Francisco. In the future Parcl will also support international markets.

Click `Trade` to open the trading page for that Parcl market.

<figure><img src="/files/tOwuxtZJFrqQIuJXmjEv" alt=""><figcaption></figcaption></figure>

## Trade Page

We selected to open a trading position in [Manhattan, NY](https://en.wikipedia.org/wiki/Manhattan) (New York City).

You can see the left side has data about Manhattan. Most important is the price per square foot of residential real estate in Manhattan.

<figure><img src="/files/MbbnP83VKnQBjvvhtSog" alt=""><figcaption></figcaption></figure>

## Open Position

Enter the amount of USDC to trade. Select to `Buy` or `Short` the price of real estate in Manhattan.

If you `Buy`:&#x20;

* You think the price of Manhattan will increase.
* Your position will lose money if the price decreases.&#x20;

If you `Short`:&#x20;

* You think the price of Manhattan will decrease.
* Your position will lose money if the price increases.

If you are trading in advanced mode, then you select your leverage for this trading position. Leverage options are between 1 and 10, inclusive. Leverage is applied to price movements.&#x20;

![](/files/xgKtdoCwb5vs3cpIvn9t)

### Submit Trade

Click `Submit` button to open the position. Information about the trade is displayed underneath the `Submit` button.

<img src="/files/ERRT8CpRJrmjHcPtxHIj" alt="" data-size="original">

After you approve the transaction in the Phantom wallet popup you will see the success screen.

`Entry Price` is the price you opened your position at.

The `Exchange Rate` is the market's current ratio of deposited USDC to Liquidity Tokens.&#x20;

* The `Exchange Rate` is used by the protocol to determine how many liquidity tokens to mint for your position.&#x20;

$$
Exchange Rate  = \frac{Collateral\_{pool}}{Liquidity\_{supply}}
$$

`Entry Funding Rate` is market's current funding rate.&#x20;

* If the funding rate is positive, then the pool's long traders are paying the short traders.&#x20;
* If the funding rate is negative, then the pool's short traders are paying the long traders.

The `Trading Fee` is the fee charged for every trade. The pool gets 60% and the protocol gets 40% of trading fees.

The Pool Impact Fee is the fee charged for your trade making the pool more imbalanced and skewed. Trades that make the pool more balanced pay 0 pool impact fees.

![](/files/2eugYqhHDs2mdhbA1J0r)

## Manage Positions

You can manage your Manhattan positions from the Manhattan trade page.

<figure><img src="/files/rAXqMAVg92gqhrGYuJ7k" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/cMRJLhc6JlLNZbhkJ3eN" alt=""><figcaption><p><mark style="color:purple;"><strong>Position Value is .99</strong></mark></p></figcaption></figure>

Your position's card shows the following information on the left side:&#x20;

* `Entry Price` is the price you opened the position at.
* `Trade Direction` is whether the position is long or short.
* `Leverage` is the position's price movement multiplier.
* The `Date` is the date and time when you opened the positon.

Your position's card shows the following information on the left side:&#x20;

* `Position Value` is measured in liquidity tokens and then converted to USDC at the current exchange rate.&#x20;
  * Value is show in the image next to the USDC logo. It is $.99.&#x20;
  * Value is calculated as the sum of price movement since you opened the position and the accrued funding since you opened the position.
* Your `Gain` on the position is shown in green or red color. `Gain` is measured in USDC and also as a percentage.

{% hint style="warning" %}
**Liquidations**

* Positions can be liquidated if their losses are greater than or equal to 75% of the initial USDC from opening the position.&#x20;
* Price movement and funding fees affect liquidation.
* If you are liquidated, you will receive any remaining liquidity tokens from your position after the liquidator is paid their bonus and the protocol burns your losses.

&#x20;
{% endhint %}

## Close Position

Click the `Close` button to input the amount of your position's `Value` you want to receive from your position's current value.&#x20;

![Close button](/files/W34Yr2dNjO0swSKYjDHJ)

The amount of `Value` is used to calculate the percentage of the position to close.

![](/files/LnDuBiyGuLq4BzOWokUf)

### Submit Trade

After you submit the close position trade, the success page will show up.

![](/files/YJNuanXPJ9ls8EvEyBBQ)

{% hint style="warning" %}
**All remove liquidity transactions take 8 hours to settle.** So you will receive your USDC from the remove liquidity transactions after 8 hours has passed. This protects users and the protocol from fast atomic exploits and other issues that take time to solve. Anyone can send transactions to process pending withdrawals but Parcl operates bots to ensure all pending withdrawals are paid out immediately once they have settled after the 8 hour period has ended. &#x20;
{% endhint %}

`Price at Close` is the price you received when you closed the position. Your gain from price movement is your price at close minus your entry price multiplied by your leverage multiplier.

The Exit Funding Rate is the pool's funding rate at exit.&#x20;

You either pay a `Funding Fee` or earn a Funding Rebate depending on if the pool's open interest moved in your favor during your position's lifetime.&#x20;

Your `Funding Fee/Rebate` is calculated as the pool's `Exit Funding Rate` minus your position's `Entry Funding Rate` multiplied by your position's USDC from open multiplied by the position's leverage multiplier.&#x20;

You pay the `Funding Fee` if funding moves in the same direction as your position's `Trade Direction`. You earn the `Funding Rebate` if funding moves in the opposite direction of your position's `Trade Direction`. This because funding moves with the open interest majority and the open interest majority pays the minority side.&#x20;

You receive liquidity tokens when you close positions. The website uses an auto-withdraw liquidity feature to convert liquidity tokens from closing the position into USDC. In the future, the website will offer the ability to hold onto liquidity tokens instead of auto-withdrawing and receiving USDC.


# Provide Liquidity

Liquidity Providers add liquidity in collateral (currently USDC) to get exposure to net trader profit and loss, trading fees, and skew impact fees. LPs remove liquidity by redeeming and burning their liquidity tokens.&#x20;

Trading fees are reinvested in the pool and auto compound. Since LPs’ liquidity token holdings represent pro rata ownership of a pool, they realize gains and losses by redeeming part or all of their liquidity tokens.&#x20;

LPs take on impermanent loss risk that their funds might be used to pay out positive trader PnL. However, LPs also take on the reward that traders might have neutral or negative PnL.


# Smart Contracts + Accounts

## Smart Contracts

<table><thead><tr><th width="159.33333333333331">Name</th><th width="321">Address</th><th>Description</th></tr></thead><tbody><tr><td>Parcl v2 Core</td><td><a href="https://solscan.io/account/pAMMTYk2C9tAxenepGk8a1bi9JQtUdnzu3UAh7NxYcW"><code>pAMMTYk2C9tAxenepGk8a1bi9JQtUdnzu3UAh7NxYcW</code></a></td><td>The core smart contract for the AMM.</td></tr><tr><td>Close Position And Remove Liquidity Periphery </td><td><a href="https://solscan.io/account/29FMfoCscLuXHuzjKxkGrokXFc9cTdbqAHDdSEYHnJat"><code>29FMfoCscLuXHuzjKxkGrokXFc9cTdbqAHDdSEYHnJat</code></a></td><td>A periphery smart contract that exposes 2 instructions for closing positions and immediately burning the liquidity proceeds from the close instruction for USDC at the new exchange rate.</td></tr><tr><td>Pyth Fork</td><td><a href="https://solscan.io/account/PaRCLKPpkfHQfXTruT8yhEUx5oRNH8z8erBnzEerc8a"><code>PaRCLKPpkfHQfXTruT8yhEUx5oRNH8z8erBnzEerc8a</code></a></td><td>Parcl's fork of the official Pyth smart contract (<a href="https://github.com/pyth-network/pyth-client/releases/tag/mainnet-v2.20.1">Release</a>).</td></tr></tbody></table>

## Pools

<table><thead><tr><th width="190">Location</th><th>Address</th></tr></thead><tbody><tr><td>Chicago, IL</td><td><a href="https://solscan.io/account/5f2eQJwLhCvpKVc9BRfu6sQfqVhvYnsgEjxbTUuoWGar"><code>5f2eQJwLhCvpKVc9BRfu6sQfqVhvYnsgEjxbTUuoWGar</code></a></td></tr><tr><td>Denver, CO</td><td><a href="https://solscan.io/account/HFkRy7pjHjvkH7CpX42qcXwx2kJtAxjQWziJ4TTc3GiC"><code>HFkRy7pjHjvkH7CpX42qcXwx2kJtAxjQWziJ4TTc3GiC</code></a></td></tr><tr><td>Phoenix, AZ</td><td><a href="https://solscan.io/account/CAYRqwXJnfY6rvdEr5764Mzpx3PwNvh8kjidKYPkFwmq"><code>CAYRqwXJnfY6rvdEr5764Mzpx3PwNvh8kjidKYPkFwmq</code> </a></td></tr><tr><td>Philadelphia, PA</td><td><a href="https://solscan.io/account/4KPrE7c5wnDgDdRTFiP1kk7Y2hYD9M53gsAvRv9SFAdT"><code>4KPrE7c5wnDgDdRTFiP1kk7Y2hYD9M53gsAvRv9SFAdT</code></a></td></tr><tr><td>Las Vegas, NV</td><td><a href="https://solscan.io/account/3mE1oiFdLs8zntSk8bPLLY6Cq1vf5tbHpnyywunFysGZ"><code>3mE1oiFdLs8zntSk8bPLLY6Cq1vf5tbHpnyywunFysGZ</code></a></td></tr><tr><td>Boston, MA</td><td><a href="https://solscan.io/account/DX5q4ntVPFZTCezDZ399aa319Ex135scvKoPLLYHpyvH"><code>DX5q4ntVPFZTCezDZ399aa319Ex135scvKoPLLYHpyvH</code></a></td></tr><tr><td>Miami Beach, FL</td><td><a href="https://solscan.io/account/5hHfPfyvgqLUy7YKNifmkRLGR3TsEtkPePcD4fK3Cf3U"><code>5hHfPfyvgqLUy7YKNifmkRLGR3TsEtkPePcD4fK3Cf3U</code></a></td></tr><tr><td>Brooklyn, NY</td><td><a href="https://solscan.io/account/6vPhHq5dmxQ1TReVbP6KZLuZSWBTCZYD5xewgodiQtpr"><code>6vPhHq5dmxQ1TReVbP6KZLuZSWBTCZYD5xewgodiQtpr</code></a></td></tr><tr><td>New York, NY</td><td><a href="https://solscan.io/account/AWoQgYmaNDUERUePyo6f5LkxA9ozmjKg8MmKtfJn33Hb"><code>AWoQgYmaNDUERUePyo6f5LkxA9ozmjKg8MmKtfJn33Hb</code></a></td></tr><tr><td>Portland, OR</td><td><a href="https://solscan.io/account/9wddE1JLdpPkfZQ2rTCziCX5RTSuuK8UYXTqfv6XwpuS"><code>9wddE1JLdpPkfZQ2rTCziCX5RTSuuK8UYXTqfv6XwpuS</code></a></td></tr><tr><td>Atlanta, GA</td><td><a href="https://solscan.io/account/AvtaKmiMxsSBFa24sR42hovykPyXyFDWqGzM8eHfqD9i"><code>AvtaKmiMxsSBFa24sR42hovykPyXyFDWqGzM8eHfqD9i</code></a></td></tr><tr><td>Seattle, WA</td><td><a href="https://solscan.io/account/HRhMJ1Gf9UKFNPhfM9N3itS7NNwo42jVA4b4EH8oBjsK"><code>HRhMJ1Gf9UKFNPhfM9N3itS7NNwo42jVA4b4EH8oBjsK</code></a></td></tr><tr><td>Washington, DC</td><td><a href="https://solscan.io/account/AmH5fNSGyzbSqMFobKaw3cLdmwcMqn1xU8ZQ8vhimwu4"><code>AmH5fNSGyzbSqMFobKaw3cLdmwcMqn1xU8ZQ8vhimwu4</code></a></td></tr><tr><td>Los Angeles, CA</td><td><a href="https://solscan.io/account/FAkAaRUwGBXWcVXgKPm7tLrtKRumDKL85o2sc6GiJB2q"><code>FAkAaRUwGBXWcVXgKPm7tLrtKRumDKL85o2sc6GiJB2q</code></a></td></tr><tr><td>San Francisco, CA</td><td><a href="https://solscan.io/account/7Si7o3jSvTkd5XKfLAG1j5jJsVyf9xGF41VAfZ5J2WMH"><code>7Si7o3jSvTkd5XKfLAG1j5jJsVyf9xGF41VAfZ5J2WMH</code></a></td></tr><tr><td>Austin, TX</td><td><a href="https://solscan.io/account/J7q1TjtQrRt6CjY7AxAoVXmtoqciwP68Eg2rndCrhgKs"><code>J7q1TjtQrRt6CjY7AxAoVXmtoqciwP68Eg2rndCrhgKs</code></a></td></tr><tr><td>USA</td><td><a href="https://solscan.io/account/HHociD1dX72uHCJduArg7GwYLjwnJAhktB519TiWtEEA"><code>HHociD1dX72uHCJduArg7GwYLjwnJAhktB519TiWtEEA</code></a></td></tr><tr><td>Paris, France</td><td><a href="https://solscan.io/account/AJdeDriASqCTdGyyHzmjjhTHhQNbYerjWgHvf69C1Cu3"><code>AJdeDriASqCTdGyyHzmjjhTHhQNbYerjWgHvf69C1Cu3</code></a></td></tr><tr><td>Ile-de-France, France</td><td><a href="https://solscan.io/account/48s3N7YyRA4cDFCCfnWdouBqH1u8oWmkn5FGN9q4yV6z"><code>48s3N7YyRA4cDFCCfnWdouBqH1u8oWmkn5FGN9q4yV6z</code></a></td></tr></tbody></table>

## Legacy Pools

<table><thead><tr><th width="208.33333333333331">Location</th><th>Address</th></tr></thead><tbody><tr><td>San Francisco, CA</td><td><a href="https://solscan.io/account/BGcueHkycD33uWqXmoo6HtCHoTRgBi3dhZFtbtu8wZsX"><code>BGcueHkycD33uWqXmoo6HtCHoTRgBi3dhZFtbtu8wZsX</code></a></td></tr><tr><td>Brooklyn, NY</td><td><a href="https://solscan.io/account/Cdg736xbENeAiixbY2AzRCvefe1aKEWoi6sSyb3qKxAk"><code>Cdg736xbENeAiixbY2AzRCvefe1aKEWoi6sSyb3qKxAk</code></a></td></tr><tr><td>Manhattan, NY</td><td><a href="https://solscan.io/account/EzUHwP4QkWtVXy31czKj2KAdCW5ZayBjX91ZN36cEkDf"><code>EzUHwP4QkWtVXy31czKj2KAdCW5ZayBjX91ZN36cEkDf</code></a></td></tr><tr><td>Los Angeles, CA</td><td><a href="https://solscan.io/account/12qXTAjwfXCfK4pPVxG9YP1UYJ1fuhucUoCRSyhtu3GS"><code>12qXTAjwfXCfK4pPVxG9YP1UYJ1fuhucUoCRSyhtu3GS</code></a></td></tr><tr><td>Phoenix, AZ</td><td><a href="https://solscan.io/account/DEFfvK3R54NW6sqKAxk1uY7qjgQ9pWvQeCx4PNfeZpAg"><code>DEFfvK3R54NW6sqKAxk1uY7qjgQ9pWvQeCx4PNfeZpAg</code></a></td></tr><tr><td>Miami, FL</td><td><a href="https://solscan.io/account/5uK3SvUy93dneakP5PavYEr3SsCem7FKoTCtaemXuFHy"><code>5uK3SvUy93dneakP5PavYEr3SsCem7FKoTCtaemXuFHy</code></a></td></tr></tbody></table>


# Security

The core smart contract was audited by Otter and Sec3.

Otter: <https://osec.io/>

Otter's Public Reports DB: <https://ottersec.notion.site/Sampled-Public-Audit-Reports-a296e98838aa4fdb8f3b192663400772>

Sec3: <https://www.sec3.dev/>

![](/files/HWLT9l8dLEGC2kgYuvhi)


