Santa Logo

Santa — The On-Chain Advent Calendar

Version 0.3 — November 2024


1. Executive Summary

Santa is a Solana-based token designed as a decentralised Advent Calendar.
The token launches on December 1st, and for 24 days (Dec 1 → Dec 24) the project reveals one gift each day.
All gifts are defined in advance and cryptographically committed using a Merkle tree before the start of the event to guarantee fairness.
Each day, a new gift is revealed on the website with its cryptographic proof and executed automatically on-chain according to the pre-defined rules.

The collected fees from token activity are distributed daily as follows:

BeneficiarySharePurpose
🎁 Holders & Investors40 %Daily airdrops or rewards to active wallets
❤️ Charities & NGOs40 %Direct on-chain donations to verified causes
🧑‍🎄 Founders & Operations20 %Sustaining the project, operations, audits

Each gift may use a different logic — e.g. top buyers of the day, randomised winners, or all collected fees directed to a specific charity — but all are executed automatically, verifiably, and without human intervention after launch.


2. Vision & Mission

Vision

Create a community-driven and social on-chain Advent Calendar that brings people together through the joy of giving. Using blockchain transparency, we make generosity fun, trusted, and accessible to everyone, everywhere — transforming the traditional advent calendar into a global celebration of sharing and impact.

Mission

To merge the excitement of DeFi and the festive season by creating a digital Advent Calendar that:

  • Builds community — brings token holders together through daily shared experiences
  • Rewards participation — distributes gifts to active community members daily
  • Creates social impact — funds real-world charitable actions transparently
  • Operates autonomously — executes automatically without human intervention
  • Celebrates together — makes December a month of collective giving and receiving

3. The Advent Calendar Mechanics

3.1 Merkle Tree Commitment & Fairness

Before launch, the team uses a Merkle tree to cryptographically commit to all 24 gifts:

  1. Define the 24 daily gifts (one per day, with specific parameters)
  2. Generate unique salts — each gift gets a cryptographically secure random salt
  3. Create leaf hashes — each gift is hashed with its salt:
    leaf_i = SHA256(gift_i + salt_i)
  4. Build Merkle tree — the 24 leaf hashes form a binary tree
  5. Publish Merkle root — the root hash is published publicly (website + X account) before December 1st
  6. Daily reveals — each day, we publish: the gift, its salt, and a Merkle proof
  7. Public verification — anyone can verify that each revealed gift was part of the original commitment

Why Merkle Trees?

  • ✅ Reveals one gift at a time without exposing future gifts
  • ✅ Each gift can be independently verified
  • ✅ Cryptographically guarantees no tampering after commitment
  • ✅ Smaller proofs than revealing the entire list

3.2 Daily Revelation Process

Each day at 00:00 UTC:

  1. The corresponding gift is revealed on the website
  2. The gift data, salt, and Merkle proof are published
  3. Users can verify: verify(gift, salt, proof, merkle_root) → true/false
  4. The gift logic is executed automatically on-chain

3.3 Verification Example

Published Merkle Root (Nov 27, 2024):
75f2dc0e2be8bbb93a551ec211a1e980a7ef94a0511d49d54edb4039223b3d5e

Day 1 Reveal (Dec 1):
- Gift: { type: "proportional_holders", params: {...} }
- Salt: 7f4076416099bca849f361ad8974d233813856aaa1fab3c0eff308d94d669f65
- Proof: [hash1, hash2, hash3, hash4, hash5]

Verification:
1. Compute leaf = SHA256(gift + salt)
2. Use proof to compute path to root
3. Check if computed root matches published root ✓

4. Token Overview

AttributeDetail
NameSanta
Symbol$SANTA
NetworkSolana (SPL standard)
Total Supply1 000 000 000 SANTA
Decimals9
Launch Date1 December 2024
Season DurationDecember 1-24 (24 days)
Transaction Fee≈ 3 % to treasury
AllocationHolders 40 % / NGOs 40 % / Founders 20 %
Liquidity Lock12 months (recommended)

All token flows and daily distributions are verifiable on-chain.


5. Treasury & Automation

Daily Treasury

All transaction fees accumulate into the Santa Treasury, a multi-sig or program wallet.
At the end of each UTC day, the treasury balance is split and distributed per the gift of that day.

Node / Relayer Service

A backend service (Node.js + Solana Web3.js) continuously listens to token transactions.
At each day's closing time it:

  1. Retrieves all relevant transactions from Helius/QuickNode RPC
  2. Applies the pre-defined algorithm for the current gift (top N, time-window, random seed, etc.)
  3. Generates and submits distribution transactions to the network
  4. Publishes execution proofs (transaction hashes, winners list) publicly

Security

  • Executions signed by a multi-sig (e.g. 3-of-5 founders + bot)
  • Optional on-chain program for fully autonomous execution once validated
  • All proofs – inputs, selection results, tx hashes – are published publicly
  • Merkle root commitment prevents any changes to gift rules after launch

6. Deterministic Selection & Randomisation

To guarantee integrity:

  • Each rule is fixed and public before launch (via the Merkle tree commitment)
  • Randomisation, when needed, uses on-chain entropy:
    seed = HMAC_SHA256(blockhash_of_day, salt)
  • The algorithm and results are reproducible by anyone
  • All transaction data comes from verified RPC sources, archived for audit
  • Minimum balance requirements prevent Sybil attacks

7. Technical Architecture (High Level)

ComponentRole
SANTA TokenSPL token contract on Solana
Santa TreasuryCollects daily transaction fees
Relayer ServiceListens to blockchain, computes daily outputs, prepares transfers
Multi-Sig / Execution ProgramSigns & executes transfers securely
Website DashboardShows calendar, revealed gifts, Merkle proofs, verification tool
Social Bot (X)Posts daily gift reveal + link to on-chain proof
Merkle VerificationClient-side tool for users to verify commitments

Infrastructure: redundant RPC providers (QuickNode, Helius, own node), secure key storage (Vault/HSM), monitoring, daily logs.


8. Governance & Transparency

Initial phase: managed by the founding team with open reporting.
Future phase: Santa DAO allowing community votes on:

  • Charity selection for future seasons
  • Gift types and distribution mechanisms
  • Treasury parameters and fee structure

All treasury addresses and distributions remain public and auditable.
The Merkle root and daily proofs provide cryptographic transparency.


9. Charitable Framework

  • 40 % of daily treasury directed to verified NGOs
  • Each NGO wallet = verified address, listed on website with full details
  • Donations occur directly on-chain (no intermediaries)
  • End-of-season impact report summarises total donations and outcomes

Season 2024 NGO Partners

DayNGOFocus AreaWallet
7Rainforest Foundation USEnvironment & Indigenous Rights8r2EpKVHLf1ASuDtj2up8TDwjkTbHbDY94UcT7jcEQ1s
14Electronic Frontier Foundation (EFF)Digital Rights & Privacy7q6i7ohv1hkXTMk4maUSFkyBFTNivyQtvBxCEQnPR821
21Stay Happy FUNdationSupporting Kids with Cancer818JcxjsEn1ZA1mqqEnPVsgqmAniN3mzViwMa9yD5GMB

10. Season 2024 Gift Distribution

All 24 gifts were committed via Merkle root on November 27, 2024.

DaysTypeDescription
1, 2, 4, 8, 11, 13, 16, 17, 19, 22, 23Proportional Holders40% distributed proportionally to all holders (min 100 tokens)
3, 6, 9, 12, 18, 24Random Winners20 random winners share 40% of daily fees (min 1000 tokens)
5, 10, 15, 20Top BuyersTop 10 buyers of the day share 40% of daily fees
7NGO Donation100% of daily fees → Rainforest Foundation US
14NGO Donation100% of daily fees → Electronic Frontier Foundation
21NGO Donation100% of daily fees → Stay Happy FUNdation

Total: 11 proportional days, 6 random days, 4 top buyer days, 3 full NGO donation days.


11. Roadmap

PhasePeriodKey Deliverables
0 — Concept & BrandingOct-Nov 2024Logo, website design, gift list definition, Merkle tree generation
1 — Pre-LaunchNov 27-30, 2024Merkle root publication, security audit, final testing
2 — LaunchDec 1, 2024Token mint, website live, relayer activated, Day 1 reveal
3 — Season 1Dec 1-24, 2024Daily revelations & automatic distributions
4 — Post-SeasonJan 2025Impact report, full audit, community feedback
5 — ExpansionQ1-Q2 2025SantaDAO, NFT integration, Season 2 planning

12. Risk Management

RiskMitigation
RPC data tamperingUse multiple RPC sources (Helius + QuickNode) & publish proofs
Smart contract bugsIndependent audits before launch
Regulatory uncertaintyLegal advice on donation jurisdictions, KYC for NGOs
Sybil / spam attacksMinimum balance requirements (100-1000 tokens)
Relayer downtimeRedundant nodes & manual fallback procedures
Merkle proof disputesPublic verification tool on website, open-source code
Market volatilityClear communication about risk, no guaranteed returns

13. Technical Appendix

A. Merkle Tree Construction

// 1. Hash each gift with its salt
function hashGiftLeaf(gift, salt) {
  const { hash, ...giftWithoutHash } = gift; // Exclude hash field
  const canonicalGift = JSON.stringify(giftWithoutHash, Object.keys(giftWithoutHash).sort());
  return SHA256(canonicalGift + salt);
}

// 2. Build Merkle tree from leaves
function buildMerkleTree(leaves) {
  let tree = [leaves];
  let currentLevel = leaves;
  
  while (currentLevel.length > 1) {
    let nextLevel = [];
    for (let i = 0; i < currentLevel.length; i += 2) {
      if (i + 1 < currentLevel.length) {
        nextLevel.push(SHA256(currentLevel[i] + currentLevel[i + 1]));
      } else {
        nextLevel.push(SHA256(currentLevel[i] + currentLevel[i]));
      }
    }
    tree.push(nextLevel);
    currentLevel = nextLevel;
  }
  
  return tree;
}

// 3. Get Merkle root
const root = tree[tree.length - 1][0];

B. Merkle Proof Verification

function verifyMerkleProof(leaf, proof, root, leafIndex) {
  let hash = leaf;
  let index = leafIndex;
  
  for (const sibling of proof) {
    const isRightNode = index % 2 === 1;
    hash = isRightNode 
      ? SHA256(sibling + hash)
      : SHA256(hash + sibling);
    index = Math.floor(index / 2);
  }
  
  return hash === root;
}

C. Top Buyers Algorithm

  1. Collect all buy transactions (00:00 → 23:59 UTC)
  2. Filter by minimum criteria (e.g., min 100 tokens purchased)
  3. Sort by volume (descending)
  4. Select top N buyers
  5. Compute proportional share: share_i = volume_i / Σ(volume_topN)
  6. Execute transfers via multi-sig

D. Deterministic Random Selection

// Use on-chain blockhash for deterministic randomness
const seed = HMAC_SHA256(blockhash_of_day, salt);

// Shuffle eligible wallets deterministically
function shuffle(wallets, seed) {
  let rng = seedRandom(seed);
  for (let i = wallets.length - 1; i > 0; i--) {
    const j = Math.floor(rng() * (i + 1));
    [wallets[i], wallets[j]] = [wallets[j], wallets[i]];
  }
  return wallets;
}

const shuffled = shuffle(eligibleWallets, seed);
const winners = shuffled.slice(0, N);

E. Proportional Distribution

// Distribute proportionally to all holders
const totalHoldings = holders.reduce((sum, h) => sum + h.balance, 0);
const dailyPool = treasuryBalance * 0.40;

for (const holder of holders) {
  if (holder.balance >= minBalance) {
    const share = (holder.balance / totalHoldings) * dailyPool;
    executeTransfer(treasury, holder.wallet, share);
  }
}

14. Conclusion

Santa combines the festive spirit of an Advent Calendar with the transparency and automation of blockchain technology. By using Merkle tree commitments, we guarantee that all 24 gifts are predetermined and verifiable, eliminating any possibility of manipulation.

The project aims to:

  • ✅ Reward active community members daily
  • ✅ Support meaningful charitable causes
  • ✅ Demonstrate the power of transparent, automated giving
  • ✅ Build a sustainable model for future seasonal events

Join us in making December 2024 a month of giving, transparency, and blockchain innovation! 🎄


Merkle Root Commitment (Season 2024):
75f2dc0e2be8bbb93a551ec211a1e980a7ef94a0511d49d54edb4039223b3d5e

Published: November 27, 2024
Verification: https://santa.example.com/verify


For technical questions, audit requests, or partnership inquiries, contact: team@santa.example.com