Skip to content

Commit f19b792

Browse files
authored
FIP-0100: add clarifications about fee payments and BR cap (#1139)
1 parent 43243b3 commit f19b792

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

FIPS/fip-0100.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,10 @@ We introduce a per-sector fee, whose value is proportional to a fixed fraction o
7777
In more detail, for any sector committed after this FIP is deployed we have:
7878

7979
- At ProveCommit time, we compute the per sector value as `dailyFee = k * CS(t) * sectorQAP`, where `k = 1.61817 E-25` is a system constant (a per-byte approximation of `5.56 E-15` per 32 GiB of QAP), `CS(t)` is the circulating supply value at the sector activation epoch, and `sectorQAP` is the quality adjusted power of the sector in bytes. The `dailyFee` value is stored but no payment is due at ProveCommit time.
80-
- Then, at the end of each deadline, we compute: `dailyPayment = min (deadline_dailyFee, m * expected_day_reward)`, where `deadline_dailyFee` is the sum of `dailyFee` of all sectors in the deadline, `m = 0.5` is another system constant and `expected_day_reward` is the updated value for the daily expected block reward for all sectors in the deadline. The `dailyPayment` value is burnt. Note that only new[^1] sectors and old sectors extended or updated after this FIP is deployed count for the `deadline_dailyFee` (indeed, any other sector has no `dailyFee` defined), while all sectors count for the `expected_day_reward` value.
80+
- Then, at the end of each deadline (except the final deadline of a sector's lifetime), we compute: `dailyPayment = min (deadline_dailyFee, m * expected_day_reward)`, where `deadline_dailyFee` is the sum of `dailyFee` of all sectors in the deadline, `m = 0.5` is another system constant and `expected_day_reward` is the updated value for the daily expected block reward for all sectors in the deadline. The `dailyPayment` value is burnt. Note that only new[^1] sectors and old sectors extended or updated after this FIP is deployed count for the `deadline_dailyFee` (indeed, any other sector has no `dailyFee` defined), while all sectors count for the `expected_day_reward` value.
81+
- _Fee Charging Alignment:_ For each sector, the daily fee is charged at the end of each deadline period starting from the first deadline after the sector is onboarded until the second-to-last deadline of the sector's lifetime. At the sector's final deadline (the 60-epoch period during which a sector's expiration falls), neither the fee nor the sector's power are included in the fee payment or BR cap calculation. This implementation ensures that for a sector with `n` days duration, exactly `n` daily fees are paid, which aligns with the `n` days of estimated block rewards used for calculating the fee cap.
8182
- If a sector is extended (via the method `ExtendSectorExpiration` or `ExtendSectorExpiration2`) or updated (via the method `ProveReplicaUpdates` or `ProveReplicaUpdates3`, "snaps"), the `dailyFee` value is updated using the new `sectorQAP` if the QAP changes (for example, when dropping claims during extension, or adding verified deals during replica updates), but the update is independent of the current CS value. That is: `new_dailyFee = old_dailyFee * new_sectorQAP/old_sectorQAP`.
82-
- When the sector expires or gets terminated, the sector is no longer counted in the `deadline_dailyFee` value for the deadline.
83+
- When the sector reaches its final deadline period (the 60-epoch period before expiration) or gets terminated, the sector is no longer counted in the `deadline_dailyFee` value for the deadline, ensuring alignment between the number of daily fees paid and the number of days of block rewards used for the cap calculation.
8384

8485
[^1]: We use "old sectors" for sectors committed before this FIP is deployed, and we use "new sectors" for sectors committed after this FIP is deployed.
8586

0 commit comments

Comments
 (0)