POH logo
PROOF OF HOLD
HOLD tokensWhitepaper
← Back to Dashboard
Whitepaper v1.0

Proof of Hold

A fair, transparent, and automated reward protocol for long-term $POH holders on Solana.

Abstract

Proof of Hold ($POH) introduces a trustless reward mechanism that continuously distributes tokens to holders based on their commitment to the protocol. There is no staking interface, no lock-up period, and no manual claiming β€” the system scores every wallet automatically and runs a weighted lottery every 15 minutes using on-chain data. This document describes the scoring algorithm, draw mechanics, prize distribution, cooldown system, and fairness guarantees in full detail.

01🏦 Treasury & Supply

At launch, 10% of the total $POH supply was allocated directly to the treasury wallet β€” no dev buy, no hidden bags.

The treasury is fully transparent and its balance can be verified on-chain at any time via the dashboard.

The POH Bot uses creator rewards to buy back $POH on the open market every 10 minutes, continuously growing the treasury.

02πŸ“Š Hold Score β€” How Points Work

Every holder is assigned a Hold Score that determines their chance of winning rewards. The formula is:

holdHours Γ— √(% of supply) Γ— 10 Γ— (1 βˆ’ √sellRatio)Β²
holdHoursTotal hours you've held $POH. The longer you hold, the higher your score grows β€” linearly, no cap.
% of supplyYour wallet balance as a percentage of total supply. Larger bags = higher score, but the square root keeps it fair β€” a 4Γ— bigger bag only gives 2Γ— more score.
sellRatioRatio of tokens sold or transferred out vs. total bought. Selling tanks your score hard: sell 25% β†’ lose ~50% score. Sell 100% β†’ score drops to zero.

03🎲 Weighted Lottery Draw

Every 15 minutes, the system runs a weighted random draw from all eligible holders.

Your win chance = your Hold Score Γ· sum of all eligible Hold Scores. This means the draw is proportional β€” not winner-take-all.

Example: if your Hold Score is 500 and the total eligible score pool is 10,000, you have a 5% chance per draw.

draw-engine.ts
// ── Weighted random selection (actual production code) ──

function weightedRandom(
  items: { walletAddress: string; holdScore: number }[],
): string | null {
  if (items.length === 0) return null;

  const totalWeight = items.reduce((sum, h) => sum + h.holdScore, 0);
  if (totalWeight <= 0) {
    return items[Math.floor(Math.random() * items.length)].walletAddress;
  }

  let rand = Math.random() * totalWeight;
  for (const item of items) {
    rand -= item.holdScore;
    if (rand <= 0) return item.walletAddress;
  }
  return items[items.length - 1].walletAddress;
}

// ── Eligibility filter ──

const eligible = holders.filter(
  (h) =>
    (h.holdScore ?? 0) >= MIN_HOLD_SCORE &&  // score β‰₯ 1
    !EXCLUDED_WALLETS.has(h.walletAddress),    // not treasury/system/bonding-curve
);

// Remove wallets still in cooldown
const drawPool = eligible.filter((h) => !coolingDown.has(h.walletAddress));

// Pick winner β€” probability ∝ holdScore
const winnerWallet = weightedRandom(
  drawPool.map((h) => ({
    walletAddress: h.walletAddress,
    holdScore: h.holdScore ?? 0,
  })),
);

// Prize = random 0.1%–5% of treasury token balance
const prizePct = MIN_PRIZE_PCT + Math.random() * (MAX_PRIZE_PCT - MIN_PRIZE_PCT);
const prizeTokens = Math.floor(treasureTokenBalance * prizePct);

04πŸ’° Prizes

Each draw distributes between 0.1% and 5% of the current treasury balance to the winner.

The prize percentage scales with the winner's Hold Score β€” stronger holders earn a larger slice.

Prizes are sent as $POH tokens directly to the winner's wallet on-chain.

05⏳ Cooldown System

After winning, a holder enters a 2-hour cooldown period (equivalent to 8 draw cycles).

During cooldown, the holder is temporarily ineligible for the lottery β€” giving others a fair shot.

Once the cooldown expires, the holder is automatically re-entered into the draw pool.

06πŸ›‘οΈ Fairness & Exclusions

The treasury wallet itself is excluded from all draws β€” it can never win its own rewards.

Liquidity pool wallets (LP) are automatically detected and excluded β€” only real holders participate.

Known system wallets (e.g. bonding curve) are excluded via a public exclusion list.

The sell penalty ensures that flippers and dumpers are naturally deprioritized β€” diamond hands are rewarded.

The square root on % supply prevents whales from dominating. A wallet holding 1% of supply doesn't get 10Γ— the score of someone holding 0.1% β€” they get ~3.16Γ—.

07πŸ” Transparency

All holder scores, win chances, and draw history are displayed publicly on the dashboard β€” nothing is hidden.

Treasury wallet balance (SOL + $POH) is fetched from on-chain data and shown in real time.

Every draw result, winner address, prize amount, and cooldown status is fully visible.

The scoring formula is open and deterministic β€” you can verify your own score at any time.

08πŸ“ Score Examples

ScenarioHours% SupplySoldHold Score
Diamond hands, small bag1680.05%0%37.5
Whale, never sold1681.00%0%168.0
Sold 25%1680.50%25%57.2
Flipper, sold 80%240.10%80%0.5

Scores calculated using: holdHours Γ— √(pct) Γ— 10 Γ— (1 βˆ’ √sellRatio)Β²

Conclusion

Proof of Hold establishes a fully automated, on-chain reward loop: buy $POH, hold it in your wallet, and your Hold Score grows every hour. Every 15 minutes, a weighted draw selects one winner from the eligible pool and distributes tokens from the treasury. The longer and larger you hold β€” without selling β€” the higher your probability of winning.

The treasury is self-sustaining: creator rewards continuously buy back $POH, ensuring the reward pool never depletes. All data β€” scores, win chances, draw history, treasury balance β€” is publicly visible on the dashboard. No hidden mechanics, no insider advantages.

Diamond hands win. It's that simple.

← Back to Dashboard$POH Whitepaper v1.0