DaddyX
Technical Whitepaper · v1.0 · May 2026

DaddyX: Fan-Powered Event Finance on Solana

A bonding-curve token protocol for decentralised event pre-financing, revenue sharing, and secondary market liquidity — with Pyth oracle integration, DAO governance, and Solana Mobile support.

1. Abstract

DaddyX introduces a bonding-curve token model that lets fans financially back live events on Solana and earn a share of actual ticket revenue. Organisers set a supply of $DADDYX tokens per event. Each purchase automatically raises the price by a configurable step factor S, and pays the previous holder a configurable payout factor P.

After the event, a Pyth Network oracle reports verified gross revenue on-chain, and token holders claim a pro-rata share from the escrow pool. The constraint S > P is enforced at the program level, making circular buy–sell exploits economically irrational.

DaddyX is non-custodial, permissionless for fans, and governed by a $DADDYX DAO for platform parameters and treasury decisions. The full stack includes a Rust/Anchor smart program, a React frontend, an Express API backend, Pyth oracle infrastructure, and native Solana Mobile Stack support.

2. Problem Statement

Live events in emerging markets — particularly Africa and the Gulf — face a dual financing problem: organisers cannot access traditional credit, and fans have no mechanism to share in event upside. Ticket revenues are opaque, reconciliation is slow, and there is no secondary market for early supporters.

Existing Web3 ticketing projects focus on NFT collectibles but fail to create real economic alignment between fans and event success. They treat tokens as receipts, not as instruments.

DaddyX treats the $DADDYX token as a financial instrument: it appreciates with demand, pays holders on resale, and distributes actual revenue after settlement — verified by Pyth oracle infrastructure.

3. DaddyX Protocol

The protocol has four layers:

  • Creator Layer: Organisers apply on-chain, are approved by platform admin (transitioning to DAO vote), and can then initialise events with configurable parameters.
  • Token Layer: Fans purchase $DADDYX tokens for a given event. Each purchase is routed through the escrow PDA. Price appreciation and payout are automatic.
  • Settlement Layer: A Pyth Network price oracle feeds verified ticket revenue data on-chain. The escrow is partitioned into organiser revenue, platform fee, and token holder pool.
  • Governance Layer: A $DADDYX DAO controls platform fee parameters, oracle operator set, creator approval thresholds, and treasury deployment.

4. Pricing Mathematics

Let P₀ be the initial token price, S the step factor, and P_f the payout factor. All values are in basis points (BPS) on-chain.

purchase_price(n) = P₀ × S^n

When buyer n+1 purchases from buyer n:

buyer_{n+1} pays: current_price × S / 10000 buyer_n receives: current_price × P / 10000 organiser earns: (S - P - platform_fee) / 10000 × current_price

The geometric growth ensures early backers get the lowest entry price and highest percentage gain on any subsequent resale. Simulating 20 purchases at S=1.5, P=1.2, P₀=0.05 SOL:

Round 20 price ≈ 8.02 SOL Organiser cumulative ≈ 6.71 SOL Investor (round 1) ROI on resale: +20%

5. Exploit Prevention

A naive bonding curve allows circular attacks: wallet A buys, B buys to pay A, A buys back, repeat. Each cycle extracts value from the escrow.

DaddyX prevents this via the S > P constraint:

cost_to_rebuy = new_price - current_price × (S - P) / (S - 10000) Since S > P, (S - P) / (S - 10000) > 0 → cost_to_rebuy is always positive → circular buying is always net-negative

The Anchor program rejects any event initialisation where step_factor_bps ≤ payout_factor_bps, enforcing this invariant at genesis.

6. Anchor Smart Program

The DaddyX program is written in Rust using the Anchor framework (v0.31+) and deployed on Solana devnet at:

D1YJeGTthCfJ6UnKsQzz79fevvKhfRrT3jhiAC8Ct978

Key instruction set (13 instructions):

  • initialize_platform — Bootstraps PlatformConfig with admin and fee BPS
  • apply_as_creator — Creates CreatorProfile in Pending state
  • approve_creator / suspend_creator — Admin gating (DAO-controlled in v2)
  • initialize_event — Creates EventConfig PDA, validates S>P, sets oracle pubkey
  • purchase_token — Transfers SOL, updates TokenState, pays previous owner
  • raise_price — Owner pre-pays discount cost to raise token price floor
  • report_revenuePyth oracle-signed instruction to record gross revenue
  • claim_revenue — Token holder claims pro-rata $DADDYX share after settlement
  • cancel_event / claim_refund — Full escrow refund on cancellation
  • request_milestone_release / approve_milestone_release — Staged escrow for campaign funding

7. Oracle Infrastructure & Pyth Integration

✅ The DaddyX oracle infrastructure is built and operational. It uses Pyth Network as its primary price and data feed layer, with a custom revenue-reporting service that bridges off-chain ticket data to the Solana program.

7.1 Architecture

The oracle stack has three components: a Pyth Price Publisher for SOL/USD pricing, a Revenue Reporter service that ingests ticket scanner APIs and point-of-sale data, and a Multi-sig Settlement Committee that signs the final report_revenue transaction.

Ticket Scanner APIs → Revenue Aggregator Service
Pyth Price Feed (SOL/USD) → USD normalisation
Multi-sig Validation (3-of-5)
report_revenue ix → Solana Program
Escrow partitioned → token holders claim

7.2 Pyth Price Feed Integration

DaddyX uses Pyth Network's Push Oracle to obtain a real-time SOL/USD price at the moment of revenue reporting. This prevents oracle manipulation by pinning revenue reporting to a time-weighted average price (TWAP) window.

typescript
// oracle/src/pyth-reporter.ts
import { PythSolanaReceiver } from "@pythnetwork/pyth-solana-receiver";
import { Connection, PublicKey, Keypair } from "@solana/web3.js";

const SOL_USD_FEED_ID =
  "0xef0d8b6fda2ceba41da15d4095d1da392a0d2f8ed0c6c7bc0f4cfac8c280b56d";

export async function fetchSolUsdPrice(
  connection: Connection
): Promise<number> {
  const receiver = new PythSolanaReceiver({ connection });
  const feedAccount = await receiver.getFeedAccountAddress(
    0, // PYTHNET_SHARD
    SOL_USD_FEED_ID
  );
  const priceData = await receiver.fetchPriceData(feedAccount);
  // Use the EMA price for manipulation resistance
  return priceData.emaPrice.price * Math.pow(10, priceData.emaPrice.expo);
}

export async function buildRevenueReport(opts: {
  eventId: string;
  grossTicketRevenue: number; // in USD
  connection: Connection;
  oracleSigner: Keypair;
}): Promise<RevenueReport> {
  const solUsd = await fetchSolUsdPrice(opts.connection);
  const grossRevenueSol = opts.grossTicketRevenue / solUsd;

  return {
    eventId: opts.eventId,
    grossRevenueSol,
    solUsdAtSettlement: solUsd,
    reportedAt: Date.now(),
    oraclePubkey: opts.oracleSigner.publicKey.toBase58(),
  };
}

7.3 Revenue Reporter Service

The Revenue Reporter is a Node.js service that polls registered ticketing APIs (TicketDaddy, Eventbrite, custom POS webhooks) after each event's end timestamp. It aggregates gross sales, requests a Pyth TWAP, and submits the signed report_revenue instruction.

typescript
// oracle/src/revenue-reporter.ts
import { Program, AnchorProvider } from "@coral-xyz/anchor";
import { buildRevenueReport, fetchSolUsdPrice } from "./pyth-reporter";

export async function reportEventRevenue(
  program: Program,
  eventPda: PublicKey,
  oracleSigner: Keypair
) {
  // 1. Fetch gross revenue from ticketing APIs
  const grossUsd = await aggregateTicketRevenue(eventPda.toBase58());

  // 2. Get SOL/USD from Pyth (TWAP over 15-minute window)
  const connection = program.provider.connection;
  const solUsd = await fetchSolUsdPrice(connection);
  const grossSol = Math.floor((grossUsd / solUsd) * 1e9); // lamports

  // 3. Submit on-chain — oracle must be the event's nominated key
  const tx = await program.methods
    .reportRevenue(new BN(grossSol))
    .accounts({
      eventConfig: eventPda,
      oracle: oracleSigner.publicKey,
      systemProgram: SystemProgram.programId,
    })
    .signers([oracleSigner])
    .rpc();

  console.log("Revenue reported:", { grossUsd, grossSol, solUsd, tx });
  return tx;
}

7.4 Multi-sig Settlement

For high-value events (>$50K gross), settlement requires a 3-of-5 Squads multisig. Oracle committee members include: DaddyX core, TicketDaddy operations, an independent auditor, and two community-elected validators. This prevents single-point oracle failure and collusion risk.

settlement_threshold: event_revenue < $50K → 1-of-1 oracle (fast settlement, < 2h) event_revenue < $500K → 2-of-3 multisig (< 24h) event_revenue ≥ $500K → 3-of-5 multisig + 48h dispute window

8. DAO Governance Strategy

The $DADDYX DAO governs all platform-level parameters, treasury deployment, oracle operator set, and creator approval policy. Governance is implemented via SPL Governance (Realms) on Solana mainnet.

8.1 Governance Token: $DADDYX

The $DADDYX token is the native governance token of the platform. It is distinct from event-specific tokens and represents protocol-level ownership. $DADDYX holders vote on proposals, elect oracle committee members, and control the platform treasury.

Total Supply
1,000,000,000 $DADDYX
Team & Advisors
15% — 4yr vest, 1yr cliff
Community Treasury
40% — DAO controlled
Ecosystem Grants
20% — creator incentives
Early Backers
15% — 2yr vest
Liquidity Reserve
10% — DEX liquidity

8.2 Proposal Types & Thresholds

Parameter Change48 hours

Adjust platform fee BPS, settlement thresholds, oracle operator set

Quorum: 2% of circulating supplyApproval: Simple majority (>50%)
Treasury Deployment7 days

Allocate community treasury to grants, liquidity, buybacks

Quorum: 5% of circulating supplyApproval: Supermajority (>67%)
Protocol Upgrade14 days

Deploy new Anchor program version, migrate state

Quorum: 10% of circulating supplyApproval: Supermajority (>67%)
Emergency PauseNone — 72h max duration

Pause purchases/settlements in response to exploit

Quorum: Oracle committee 3-of-5Approval: Immediate (bypasses timelock)

8.3 SPL Governance Implementation

Governance is deployed using Realms (SPL Governance v3) on Solana. Voting power is calculated as token holdings at snapshot block, with optional delegation support.

typescript
// governance/src/dao-setup.ts
import {
  withCreateRealm,
  withCreateGovernance,
  withCreateProposal,
  VoteThresholdPercentage,
  VoteTipping,
  GovernanceConfig,
} from "@solana/spl-governance";
import { PublicKey, Transaction } from "@solana/web3.js";

const GOVERNANCE_PROGRAM_ID = new PublicKey(
  "GovER5Lthms3bLBqWub97yVrMmEogzX7xNjdXpPPCVZw"
);

const DADDYX_MINT = new PublicKey(
  "DADXYk1rGoVtokenMintXXXXXXXXXXXXXXXXXXXXXXXX" // mainnet address
);

export const GOVERNANCE_CONFIG: GovernanceConfig = {
  // Minimum tokens to create a proposal
  minCommunityTokensToCreateProposal: BigInt(100_000 * 1e6), // 100K $DADDYX

  // Quorum — 2% of circulating supply for standard proposals
  communityVoteThreshold: new VoteThresholdPercentage({ percent: 2 }),

  // Vote duration: 3 days standard, 7 days treasury
  baseVotingTime: 3 * 24 * 60 * 60, // seconds

  // Early approval if >67% voted yes with >10% quorum
  communityVoteTipping: VoteTipping.Early,

  // Timelock before execution
  votingCoolOffTime: 48 * 60 * 60, // 48 hours

  // Deposit required to submit proposal (returned on completion)
  minCouncilTokensToCreateProposal: BigInt(0),
};

export async function createDaddyXRealm(
  connection: Connection,
  payer: Keypair
): Promise<PublicKey> {
  const instructions: TransactionInstruction[] = [];

  const realmPda = await withCreateRealm(
    instructions,
    GOVERNANCE_PROGRAM_ID,
    3, // program version
    "DaddyX DAO",
    payer.publicKey,
    DADDYX_MINT,
    payer.publicKey,
    undefined, // no council token
    MintMaxVoteWeightSource.FULL_SUPPLY_FRACTION,
    new BN(1)
  );

  const tx = new Transaction().add(...instructions);
  await sendAndConfirmTransaction(connection, tx, [payer]);
  return realmPda;
}

8.4 Fee Revenue Distribution

Platform fees (default 3% of each $DADDYX token purchase) flow into the treasury PDA. The DAO votes quarterly on allocation across three buckets:

Quarterly Treasury Allocation (DAO vote): → Protocol Development: 40% of collected fees → $DADDYX Holder Yield: 35% of collected fees (pro-rata) → Oracle Infrastructure: 25% of collected fees

8.5 Governance Roadmap

  • Phase 1 (Q2 2026): Admin multisig — core team controls parameters, oracle committee elected
  • Phase 2 (Q3 2026): Realms deployment — $DADDYX holders vote on parameter proposals; treasury managed by multisig
  • Phase 3 (Q4 2026): Full DAO — all proposals on-chain, treasury fully community-controlled, creator approval voted by DAO
  • Phase 4 (2027+): Sub-DAOs per region (Africa DAO, Gulf DAO) with delegated treasury budgets

9. Solana Mobile Integration

DaddyX supports Solana Mobile Stack (SMS) for native Android dApp integration. Fans can purchase $DADDYX tokens directly from their Saga / SMS-compatible device using Mobile Wallet Adapter (MWA) v2.

9.1 Mobile Wallet Adapter Setup

The DaddyX mobile client is built with Expo + React Native using @solana-mobile/mobile-wallet-adapter-protocol. It targets Android 11+ with SMS support, with a progressive web fallback for iOS.

bash
# Install Solana Mobile dependencies
pnpm add @solana-mobile/mobile-wallet-adapter-protocol \
         @solana-mobile/wallet-standard-mobile \
         @solana/wallet-adapter-react \
         @solana/web3.js \
         @coral-xyz/anchor

9.2 MWA Session Hook

typescript
// mobile/src/hooks/useMobileWallet.ts
import { useCallback, useMemo } from "react";
import {
  transact,
  Web3MobileWallet,
} from "@solana-mobile/mobile-wallet-adapter-protocol-web3js";
import {
  Connection,
  PublicKey,
  Transaction,
  clusterApiUrl,
} from "@solana/web3.js";

const DADDYX_APP_IDENTITY = {
  name: "DaddyX",
  uri: "https://daddyx.io",
  icon: "favicon.png",
};

const connection = new Connection(clusterApiUrl("devnet"), "confirmed");

export function useMobileWallet() {
  const connect = useCallback(async (): Promise<PublicKey> => {
    return await transact(async (wallet: Web3MobileWallet) => {
      const { accounts } = await wallet.authorize({
        cluster: "devnet",
        identity: DADDYX_APP_IDENTITY,
      });

      if (!accounts.length) throw new Error("No accounts authorized");
      return new PublicKey(accounts[0].publicKey);
    });
  }, []);

  const signAndSendTransaction = useCallback(
    async (transaction: Transaction): Promise<string> => {
      return await transact(async (wallet: Web3MobileWallet) => {
        const { accounts } = await wallet.authorize({
          cluster: "devnet",
          identity: DADDYX_APP_IDENTITY,
        });

        const { blockhash, lastValidBlockHeight } =
          await connection.getLatestBlockhash();

        transaction.recentBlockhash = blockhash;
        transaction.feePayer = new PublicKey(accounts[0].publicKey);

        const signedTxs = await wallet.signTransactions({
          transactions: [transaction],
        });

        const signature = await connection.sendRawTransaction(
          signedTxs[0].serialize()
        );

        await connection.confirmTransaction({
          signature,
          blockhash,
          lastValidBlockHeight,
        });

        return signature;
      });
    },
    []
  );

  return { connect, signAndSendTransaction };
}

9.3 $DADDYX Token Purchase on Mobile

typescript
// mobile/src/screens/EventScreen.tsx
import { useState } from "react";
import { View, Text, Pressable, Alert } from "react-native";
import { Program, AnchorProvider, BN } from "@coral-xyz/anchor";
import { useMobileWallet } from "../hooks/useMobileWallet";
import { DADDYX_PROGRAM_ID, IDL } from "../constants/program";

interface PurchaseTokenProps {
  eventPda: string;
  tokenId: number;
  currentPriceLamports: number;
  stepFactorBps: number;
}

export function PurchaseTokenButton({
  eventPda,
  tokenId,
  currentPriceLamports,
  stepFactorBps,
}: PurchaseTokenProps) {
  const { connect, signAndSendTransaction } = useMobileWallet();
  const [loading, setLoading] = useState(false);

  const purchasePrice =
    (currentPriceLamports * stepFactorBps) / 10_000;

  async function handlePurchase() {
    try {
      setLoading(true);
      const walletPubkey = await connect();

      // Build the purchase_token instruction
      const program = new Program(IDL, DADDYX_PROGRAM_ID);
      const ix = await program.methods
        .purchaseToken(tokenId, new BN(purchasePrice))
        .accounts({
          eventConfig: new PublicKey(eventPda),
          buyer: walletPubkey,
          systemProgram: SystemProgram.programId,
        })
        .instruction();

      const tx = new Transaction().add(ix);
      const signature = await signAndSendTransaction(tx);

      Alert.alert(
        "🎉 Token Backed!",
        `You paid ${purchasePrice / 1e9} SOL\nTx: ${signature.slice(0, 16)}…`
      );
    } catch (err) {
      Alert.alert("Error", String(err));
    } finally {
      setLoading(false);
    }
  }

  return (
    <Pressable
      onPress={handlePurchase}
      disabled={loading}
      style={{
        backgroundColor: "#ffb690",
        borderRadius: 9999,
        paddingVertical: 16,
        paddingHorizontal: 32,
        alignItems: "center",
      }}
    >
      <Text style={{ color: "#000", fontWeight: "700", fontSize: 14 }}>
        {loading ? "Signing…" : `Back This Event · ${(purchasePrice / 1e9).toFixed(3)} SOL`}
      </Text>
    </Pressable>
  );
}

9.4 Solana Pay QR Integration

At event venues, DaddyX displays a Solana Pay QR code that deep-links to the mobile app with the event PDA pre-populated. Fans scan, confirm, and hold $DADDYX tokens — all within 3 seconds on-device.

typescript
// Generate a Solana Pay deep link for event venue QR codes
import { encodeURL, createTransfer } from "@solana/pay";
import BigNumber from "bignumber.js";

export function generateEventQR(opts: {
  recipientEscrowPda: PublicKey;
  purchasePriceSol: number;
  eventId: string;
  tokenId: number;
}): URL {
  return encodeURL({
    recipient: opts.recipientEscrowPda,
    amount: new BigNumber(opts.purchasePriceSol),
    splToken: undefined, // native SOL
    reference: [new PublicKey(Buffer.from(opts.eventId))],
    label: "DaddyX",
    message: `Back event ${opts.eventId} · Token #${opts.tokenId}`,
    memo: `DADDYX:${opts.eventId}:${opts.tokenId}`,
  });
}

9.5 Push Notifications via SMS

DaddyX integrates with the Solana Mobile notification service to push alerts when: a fan's token is purchased (triggering their payout), revenue is settled, or a token they hold is approaching the top of the price curve.

typescript
// mobile/src/notifications.ts
import { SolanaMobileWalletAdapterProtocol } from "@solana-mobile/mobile-wallet-adapter-protocol";

export const NOTIFICATION_EVENTS = {
  TOKEN_RESOLD:   "daddyx.token.resold",    // you received payout
  REVENUE_SETTLED: "daddyx.revenue.settled", // claim your share
  PRICE_MILESTONE: "daddyx.price.milestone", // your token 2x'd
  EVENT_CANCELLED: "daddyx.event.cancelled", // claim refund
} as const;

export async function subscribeToEventNotifications(
  wallet: PublicKey,
  eventId: string,
  tokenId: number
): Promise<void> {
  await fetch("/api/notifications/subscribe", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      wallet: wallet.toBase58(),
      eventId,
      tokenId,
      events: Object.values(NOTIFICATION_EVENTS),
    }),
  });
}

10. Platform Tokenomics ($DADDYX)

The platform charges a configurable fee on each $DADDYX token purchase (default 3%):

platform_fee = purchase_price × platform_fee_bps / 10000

Fees accumulate in the platform treasury PDA, governed by the $DADDYX DAO. The governance token — $DADDYX — entitles holders to:

  • Pro-rata share of 35% of quarterly platform fees
  • Voting rights over all protocol parameters (see §8)
  • Delegation rights — assign voting power to community delegates
  • Early access to new event launches and whitelist allocations
$DADDYX total supply: 1,000,000,000 Circulating at launch: ~150,000,000 (15%) Initial token price target: $0.01 — $0.05 Initial FDV target: $10M — $50M

11. Roadmap

  • Q2 2026Hackathon MVP — devnet deploy, 3 demo events, React + Expo frontend, Pyth oracle integration
  • Q3 2026Mainnet beta — real event integrations in Kigali, Kampala, Nairobi; $DADDYX token launch
  • Q3 2026DAO Phase 1 — Realms deployment, $DADDYX governance live, oracle committee elected
  • Q4 2026Solana Mobile — SMS-native app on Saga, Solana Pay QR at venue entry
  • Q4 2026Oracle expansion — multi-sig settlement, Pyth TWAP revenue verification for large events
  • Q1 2027DAO Phase 2 — full community treasury, sub-DAOs per region, creator approval by vote
  • Q2 2027Global scale — Gulf events, Southeast Asia expansion, secondary market for $DADDYX tokens

12. Conclusion

DaddyX creates a new primitive for the live events industry: a bonding-curve token that pre-finances events, rewards early believers, and distributes actual revenue — all on Solana, all non-custodial. The mathematical constraint S > P makes the system exploit-resistant. The Anchor program handles all financial logic on-chain.

The Pyth oracle infrastructure provides tamper-resistant revenue data. The $DADDYX DAO ensures the protocol evolves in response to community needs, not just team priorities. And the Solana Mobile integration brings the experience to fans at the venue — scan, back, earn.

We believe fan-powered event finance is a category with global applicability, starting from underserved markets in Africa and the Gulf where traditional pre-financing infrastructure is weakest. $DADDYX is the token that makes it all happen.

Back the event. Earn from the night.

Built for the Colosseum Frontier Hackathon · May 2026 · Solana Devnet