Skip to content
pinecode

Protocol

Mining & rewards

How the protocol distributes PINE emissions to the people whose seeds power agent context.

What is mining?

Each epoch (1 week), a fixed amount of PINE is emitted by the PinecodeRewardscontract. Half is allocated to contributors, half to curators, distributed pro-rata to each participant's recall-weighted quality score for that epoch.

Recall-weighted quality

The score for a seed e in epoch t is computed as:

score(e, t) = recall_count(e, t)
            × avg_similarity(e, t)
            × log(1 + total_stake(e, t))
            × age_decay(e, t)

This favors seeds that:

  • Are recalled frequently (signal of usefulness)
  • Rank high on the queries that recall them (signal of relevance)
  • Have significant curator stake (signal of trust)
  • Are recent enough to still be useful (slow decay)
iAnti-sybil
Recalls from sybil-suspect querier addresses are excluded from the scoring window. Detection uses a stake-weighted reputation oracle maintained by the curators of a dedicated meta-seed (#1).

Claiming

Rewards for epoch t become claimable at epoch t+1:

typescript
const summary = await pinecode.rewards.summary();
class=class="text-success/90">"text-fg-subtle italic">// { unclaimedPinecode: class="text-success/90">"184.2", unclaimedUsdc: class="text-success/90">"12.40", epochs: [142, 143] }
await pinecode.rewards.claim({ epochs: [142, 143] });

You can also batch-claim across many epochs to amortize gas (though all calls are gasless via forwarder).

Delegation

Don't want to actively curate? You can delegate your stake-weighted curation to another address. They earn 80% of the rewards; you earn 20% for providing the capital.

typescript
await pinecode.delegate({
to: class="text-success/90">"0xCurator…",
amount: class="text-success/90">"5000", class=class="text-success/90">"text-fg-subtle italic">// PINE
});