Engagement Rewards
Engagement rewards pay POKE back to the accounts that keep the feed alive. The engagement share of every action fee accumulates in the EngagementVault, and the vault distributes it to users in periods.
Pipoke runs on Octra Devnet today. Any fee, price, or limit referred to here is a contract setting chosen for testing. Every one is owner-settable, and mainnet values will be different. These docs describe how the mechanics work, not what the numbers are.
#Where the rewards come from
Every fee-charging action is split three ways between burn, engagement, and treasury. The engagement slice is sent to the EngagementVault as POKE. Over a period, the vault fills up with that recycled fee revenue. See The POKE token for the fee model.
The vault is the destination, not the scorekeeper. It holds the POKE and runs the claim process. The decision of how much each wallet gets is computed off-chain and uploaded into the vault.
#The period lifecycle
Rewards are distributed in numbered periods on a roughly bi-weekly cadence: a period opens, fills, finalizes, and becomes claimable about every two weeks. That cadence is a contract setting and is subject to change. A period moves through four stages.
| Stage | Method | Who | What happens |
|---|---|---|---|
| Open | open_period() |
Admin | Starts a new numbered period. |
| Upload | upload_one / upload_batch_5 |
Admin | Writes per-wallet reward amounts into the period. |
| Finalize | finalize_period(period_id) |
Admin | Closes the period. No more uploads, claims open. |
| Claim | claim(period_id) |
User | A user pulls their POKE for that period. |
open_period() -> upload amounts -> finalize_period() -> users claim()
Open. The admin opens a fresh period. It gets the next sequential period ID.
Upload. While the period is open, the admin uploads per-wallet reward amounts. Amounts can be uploaded one wallet at a time or in batches. Uploads accumulate, so a wallet can receive several uploads in the same period and they sum.
Finalize. The admin finalizes the period. Once finalized, no more amounts can be uploaded, and the period's totals are fixed.
Claim. A user calls claim(period_id) for a finalized period. The vault transfers their full amount in POKE and zeroes their claimable balance for that period, so a period can only be claimed once per wallet.
Unclaimed rewards in a finalized period can be swept by the admin with sweep_unclaimed.
#How engagement feeds the weighting
The vault pays out whatever amounts the admin uploads. Those amounts are computed from on-chain engagement: the feed shards record likes, replies, reposts, and follows, and each carries an engagement weight.
An indexer reads the feed and follow events over a period, applies these weights, and produces a per-wallet engagement score. That score decides each wallet's share of the period's POKE. Heavier signals such as a repost or a follow count for more than a like, so the reward reflects meaningful engagement rather than raw click count.
The per-signal weights are owner-settable on the feed shards, and the exact scoring formula sits in the indexer, so both can be tuned without a contract change.
#Claiming
PipokeOS shows your claimable amount per finalized period and lets you claim with one call. Claiming for a period you have already claimed, or for a period that is not finalized, is rejected by the vault.