Connect to check your yield

Link your wallet to see claim eligibility across past epochs and track unclaimed yield.

How Merkle yield works

Pull-payment distribution. One Merkle root. O(log N) gas per claim. No centralized payout, no batch transactions.

01

Epoch opens

Chainlink Automation calls performUpkeep() on schedule, opening a new yield distribution cycle. The current epoch's ID increments and the active window begins.

02

Yield deposited

The treasury (distributor role) transfers real-world yield โ€” USDC, USDT, or the configured token โ€” into the contract via depositYield(). Funds accumulate in the active epoch.

03

Epoch finalized

The distributor uploads a Merkle root committing to every investor's exact allocation. Status moves to FINALIZED. Claims open. totalYield is locked.

04

Investors claim

Each eligible investor calls claimYield() with their allocation amount and a Merkle proof generated off-chain. The contract verifies the proof and transfers yield directly to the wallet.

05

Epoch closed

The distributor calls closeEpoch() after the claim window. Any unclaimed yield is swept back to the treasury. Status moves to CLOSED. The cycle resets.