Yield
How Native Core Pool distributes yield — the daily snapshot, the pro-rata share, and the fields that report both.
Yield is distributed, not accrued. Balances do not grow continuously; they change when a distribution is applied.
Each distribution runs in four steps:
At
snapshot_time_utceach day, the Pool records every account'searn_balancefor each asset. The snapshot is the balance at that instant, not a daily average.Operations decides the amount to distribute for that asset.
Each account receives
distribution × its snapshot balance ÷ the sum of all snapshot balances, using integer division. The undivided remainder stays with the Pool.The share is added to
earn_balanceand recorded inyieldHistory.
Because the share lands in earn_balance, it is included in the next snapshot and compounds.
Distributions are triggered rather than scheduled, so the history is a sparse series with gaps, not one entry per day.
What earns
Only earn_balance is snapshotted. The other two buckets are not:
earn_balance
Available, earning funds
Yes
in_queue_balance
The gross amount of a pending scheduled withdrawal
No
withdraw_locked_balance
The gross amount of an instant withdrawal in flight
No
The three are disjoint. Submitting a withdrawal moves the gross amount out of earn_balance in the same transaction, so anything withdrawn before a snapshot earns nothing from it. Cancelling a scheduled withdrawal returns the amount to earn_balance, where it is eligible again.
Holding time within a day does not matter. Only the balance at snapshot_time_utc counts.
Reported rates
config reports two figures per asset.
projected_apy
The most recent distribution, annualized over the interval since the previous one, divided by current TVL
realtime_tvl_amount
The asset's total earning balance, in that asset's atoms
projected_apy is a ratio, not a percentage: "0.12" is 12%.
The Pool has no interest-rate setting. Each distribution's size is decided when it is made, and projected_apy is derived from what has already been distributed.
Cumulative yield
lifetime_yield in account is the total credited to an address for one asset.
lifetime_yield is per asset. Assets use different precisions, so a sum across assets has no meaning. Report per asset, or convert to a common currency first.
Distribution history
Each entry carries everything needed to render one payout, with no follow-up request:
snapshot_balance
The balance the share was computed from
yield_amount
The amount credited
applied_at_unix_ms
When it was credited
distribution_id is an opaque grouping key. It contains no date; use applied_at_unix_ms for time.
The list contains applied distributions only, so it sums to lifetime_yield — but only within one asset. Pass asset_id. Without it the response mixes every asset the address holds, and comparing that sum against a single lifetime_yield will never reconcile.
An account whose pro-rata share rounds down to zero gets no entry for that distribution.
asset_id, before_id and limit behave as they do on the other lists; see Pagination.
Next steps
WithdrawReferenceLast updated