# What are GLIF Points?

GLIF Points represent the protocol’s first steps towards decentralizing protocol decision making, and in the interim serve as a new community engagement mechanism.

If you’re a Storage Provider (SP) that rented FIL from GLIF, or a Liquidity Provider (LP) that has held iFIL, you have points! Points are rewarded to both historical and future SPs and LPs. You can easily see how many points any wallet has accrued here. More details below.

To read this blog post in Chinese, click here.

# Historical Points

**Start date**: March 30, 2023 (Protocol launch date)

**End date**: March 28, 2024 (Points launch date)

**Total historical points allocated**: 50,000,000

**SP points allocated**: 25,000,000 (50% of total)

**LP points allocated**: 25,000,000 (50% of total)

Note that out of the total points allocated to a historical distribution, 50% are reserved for SPs and the other 50% are reserved for LPs.

# SP historical Point Distribution

SP points will be allocated based on the amount of rental fees paid as a portion of the total rental fees paid over the historical point time period. Each SP earns a portion of the 25,000,000 points based on its pro-rata share of the total fees paid to the pool. The precise formula for calculating SP points can be found at the bottom of this post.

# LP Historical Point Distribution

LP points will be allocated with respect to the following criteria:

- The amount of iFIL held by the LP
- The duration of the iFIL held by the LP
- The start date of when the LP first started holding iFIL

All else equal, an LP who acquired iFIL earlier and held for a longer duration will receive more points. The precise formulas for determining an LP’s points are sophisticated. You can find more information at the bottom of this post.

# Future Points

If you recently learned about GLIF, you’re not too late. We have reserved a portion of the points program to help grow the GLIF community from here on out moving forward. The forward-looking portion of the Points will be alloted as follows:

**Start date**: March 28, 2024

**End date**: September 26, 2024

**Point distribution frequency**: 1 time every 2 weeks

**Total distribution periods**: 13

**Total points allocated**: 25,000,000

**SP total points allocated**: 12,500,000 (50% of total)

**LP total points allocated**: 12,500,000 (50% of total)

**Total points per distribution period**: Roughly ~1,923,077

Future points will be distributed using the same logic as the historical point distribution, re-calculated every two weeks (also referred to as two-week “phases”). At the end of each two-week phase, LP and SP points are then snapshotted, and a new two-week phase begins. In total, there will be thirteen two-week phases where points are distributed.

# Point Formulas (Advanced)

**LP Points** are accumulated based on the LP’s **time-weighted average iFIL holdings **across different “phases.” The LP’s total points are computed by summing all points across every phase.

A total of 25,000,000 points are allocated pro-rata to each phase based on the epoch duration of each phase:

The time-weighted average of a particular phase is computed given:

- A set of deposit and withdraw transactions for a specific LP. Each deposit has a start epoch (when the deposit occurred), stop epoch (when the withdrawal occurred), and balance (number of iFIL held).
- The “phase bounds” — a specified epoch range with a start and stop epoch for which to calculate the average.

For each deposit/withdrawal transaction, a couple adjustments need to be made based on the phase bounds:

`AdjustedStart = max(deposit epoch, phase start epoch)`

AdjustedStop = min(withdraw epoch, phase stop epoch)

Adjust start = max(deposit epoch, phase start epoch)

Adjust stop = min(withdraw epoch, phase stop stop)

A time-weighted average for a phase is computed by summing the LP’s “weighted iFIL balance” for each deposit/withdrawal transaction that falls within the given phase. The weighted iFIL balance is computed as:

`WeightedIFILBalance = iFILBalance * (transaction stopEpoch - transaction startEpoch)`

For example, if an LP held 100 iFIL from epoch 0 to 100 epoch, their weighted iFIL balance would be 10000 (100 * (100–0)). Every deposit/withdraw transaction within a given phase results in an additional weighted iFIL balance. Before arriving at a time-weighted average, we sum all the separate weighted iFIL balances accrued by the LP in a given phase:

`WeightedIFILBalance = WeightedIFILBalance1 + WeightedIFILBalance2 + … + WeightedIFILBalanceN`

Lastly, we divide the aggregated weighted iFIL Balance by the number of epochs within the phase bounds to get the time-weighted average for the phase.

`TimeWeightedAverage = AggregateWeightedIFILBal / (PhaseStopEpoch - PhaseStartEpoch)`

To illustrate a simple time-weighted average example, let’s use an example of a hypothetical phase from epoch 1000 to epoch 2000:

This is an extremely simplified example, but the key takeaway is that since Alice held 100 iFIL the entire phase of 1000 epochs, her time weighted average is simply her iFIL holdings in that phase. Since Bob only held his iFIL for half the phase, his time-weighted average is 50 (half his holdings in the phase).

Lastly, an LP’s points are computed as:

`LPPoints = LPTimeWeightedAverage/TotalTimeWeightedAverage * TotalLPPoints`

Moving forward, each LP’s time-weighted average will be recomputed every two weeks, and points will be distributed in two week phase intervals.

# SP Points formula

The SP Points are distributed to every Agent in the system that has paid fees to the protocol via a simpler mechanism. In case you are unfamiliar with the concept of an Agent, we recommend you check out our docs for more information. An Agent’s Points are based on the amount of fees the Agent has paid to the Protocol since launch as a portion of the total fees paid to the Protocol over the same time period. The Agent’s precise number of points is then computed as:

`AgentPoints = AgentFees/TotalFees * TotalSPPoints`

Since the historical distribution of points to Agents is 25 million, the historical points for any Agent can be given by:

`AgentPoints = AgentFees/TotalFees * 25000000`

Moving forward, the Agent fees, total fees, and total SP points will be recomputed every 2 weeks, identical to how LP points are distributed.