Documentation

SCALPERS documentation

The liquidity layer for Collector Crypt on Base. This guide covers the custody model, the settlement and capital design, the cross-chain rails, and the contract code that enforces each guarantee.

#Introduction

Collector Crypt (CC) tokenizes professionally-graded trading cards on Solana — each NFT is backed one-to-one by an authentic slab held in an insured vault. SCALPERS is a liquidity aggregator for that inventory on Base: it surfaces the full catalog, routes each trade, and settles in USDC on Base, so a user never bridges assets, manages a Solana wallet, or leaves Base.

The custody guarantee is the invariant the system is built around; the contract code that enforces it follows in Custody in code.

What it provides

  • Aggregation — Collector Crypt's 68,000-card marketplace, surfaced in a single Base-native feed.
  • Mirror — a purchase or rip returns a one-to-one mirror ERC-721 on Base, backed by the vaulted slab.
  • Exit — sell back into the aggregated liquidity for USDC: an instant buyback in the first 72 hours, or a marketplace listing at your price. Physical redemption is rolling out.

SCALPERS charges no platform fee and no markup. A user pays the seller's or CC's exact price; the only addition is the network's own bridge cost (a few cents), shown before confirmation.

#The custody guarantee

No mirror can be moved, sold, or burned without its owner's signature — including by SCALPERS.

Every sale or listing starts with a signature from the owner's wallet, and the mirror contract refuses transfers from anyone the owner hasn't explicitly approved. The physical side is held in Collector Crypt's insured vault; the on-chain card sits in SCALPERS custody during the rip and buyback window and settles into the vault program on Solana — which acts only on a guardian-verified message proving the owner authorized the action on Base — as that rollout completes.

One trust assumption remains, and it is the same one every graded-card holder already accepts: the grader and custodian (PSA / CGC and CC's vault) physically hold the slab. They can freeze an asset but cannot reassign ownership — and this is disclosed on-chain for every card.

#Card lifecycle

1

Enter

A user rips or buys on Base. SCALPERS sources the card from Collector Crypt, locks it in the vault, and mints the mirror on Base — the payment, the vaulting, and the mint are part of one flow.

2

Hold

The mirror is a standard ERC-721 the user owns. It can be held, listed, or sold; wallet-to-wallet transfers unlock once the card's cross-chain sync completes. Every card-affecting action starts with the owner's signature.

3

Exit

The owner sells back into the aggregated liquidity — an instant buyback within 72 hours of the rip, or a marketplace listing at their price — and is paid in USDC on Base. Physical redemption (burn the mirror, release the slab) is rolling out.

A single-exit lock keeps the two representations in sync: the mirror and the physical card are one asset, so at most one move is ever in flight. An owner can never end up holding both or neither.

#Custody, in code

The enforcement is in the contracts. A mirror can be moved only by its owner — and only while idle — or by an allowlisted agent (the marketplace, and the escrow desk for sells) that additionally holds the owner's explicit approval. No other transfer path exists:

wrapper/contracts/MirrorCard.sol — gated transfers
// MirrorCard.sol — a mirror moves only via its owner or an allowlisted agent
function _update(address to, uint256 tokenId, address auth) internal override {
    if (isMover[auth]) {
        // allowlisted agent (marketplace escrow / buyback desk) — and even a mover
        // still needs the owner's explicit ERC-721 approval to move their token
    } else if (auth == from) {
        require(state[tokenId] == State.Free, "card locked"); // owner transfer, only when idle
    } else {
        revert("external transfers disabled");               // no other path exists
    }
}

The physical card moves only on a Wormhole VAA — a message signed by the guardian set — that originates from the owner's action and from the vault's registered emitter. No SCALPERS key satisfies these checks:

wrapper/contracts/MirrorCard.sol — VAA-gated settlement
// MirrorCard.sol — the only function that burns or unlocks a mirror
function settle(bytes calldata vaa) external {
    (VM memory vm, bool valid, string memory reason) = wormhole.parseAndVerifyVM(vaa);
    require(valid, reason);                                   // signed by the guardian set
    require(vm.emitterChainId == SOLANA_CHAIN_ID, "bad chain");
    require(vm.emitterAddress == solanaEmitter, "bad emitter"); // from the vault, only
    require(!consumedVAA[vm.hash], "vaa replayed");          // single use
    // No operator, owner, or relayer key satisfies these checks. Settlement occurs
    // only as a consequence of a verified action on the Solana vault.
}
11 vault unit tests30 Base contract tests0 administrative transfer functions

#Settlement & capital

SCALPERS routes funds; it does not hold deposits or extend credit. No payout is funded from SCALPERS' own balance — each is funded by a counterparty and released only once that counterparty's funds have settled on-chain.

Rip / Buy

Funded by the user's payment, which covers the purchase from Collector Crypt.

Instant sell (≤72 h)

Funded by CC's buyback, available for 72 hours after a rip: the card is sold back to CC and the owner is paid from those proceeds. After 72 hours, the exit is a marketplace listing.

Marketplace sale

Funded by the buyer: their USDC reaches the vault and is settled to the seller on Base.

The only capital SCALPERS provisions is transaction gas (SOL and ETH-on-Base) plus a one-time, recoverable deploy deposit. There is no float, no buffer, and no fractional reserve: every purchase and payout is funded by the user or the counterparty and settles directly across the bridge.

#Cross-chain rails

Two established protocols carry messages and value between Base and Solana. SCALPERS adds no additional trust assumption on top of them.

Wormhole — messaging

A 19-member guardian set signs cross-chain messages. Base to Solana carries owner intents (list, redeem, accept); Solana to Base carries settlement acknowledgements (burn, unlock). Both directions are verified on-chain, pinned to the registered emitter, and guarded against replay.

Circle CCTP — settlement

Native USDC moves by burn-and-mint rather than a wrapped representation. On a sale, the vault burns the proceeds to the recipient recorded on-chain, and Circle mints native USDC to exactly that address on Base.

The seller's payout address is committed at list time, so settlement is deterministic — proceeds can only reach the seller's own address:

solana-vault — CCTP settlement
// scalpers_vault (Solana) — proceeds are routed by the contract, not by an operator
pub fn settle_cc_sale(ctx, proceeds_amount: u64) -> Result<()> {
    require!(vault_token.amount == 0, CardStillHeld);  // the card has left the vault

    // Burn proceeds directly to the Base address the seller committed to at list time.
    // The recipient is fixed in the card's on-chain record and cannot be reassigned.
    let recipient = cctp::evm_to_recipient(&card.cc_payout);
    cctp::deposit_for_burn(&a, proceeds_amount, DOMAIN_BASE, recipient, signer)?;

    card.state = CardState::Released;
    card.pending_ack = ACK_CC_SOLD;  // instructs Base to burn the mirror
}

#Liquidity source

Every card SCALPERS aggregates is a Collector Crypt asset — an authentic slab graded by PSA, CGC, or BGS, held in an insured vault and tokenized one-to-one on Solana. CC's catalog is public, so SCALPERS surfaces it directly, with the grade, insured value, and on-chain mint shown on each card.

68,000+graded cards aggregated
51,000+Pokémon
5,000+One Piece

The displayed data matches what CC exposes: grader, grade and certificate ID, insured value, year, set, and the Solana mint address — each linked to a block explorer.

#Secondary liquidity

When an owner lists a card, it is posted on Collector Crypt's marketplace program (CcmRKTuZ…SQUr) — an on-chain Solana order book, settled in USDC. SCALPERS adds no fee on top; the owner's asking price is what the listing shows. Listing places the card directly into Collector Crypt's own buyer liquidity. On a fill, proceeds settle to the owner's Base wallet and the mirror is retired.

Collector Crypt's marketplace is escrowless by design — a listed card stays in the holder's wallet via a delegate, and the on-chain escrow holds only USDC, never the card. SCALPERS keeps the card in its vault throughout, so the custody guarantee above always holds. Magic Eden indexes Collector Crypt listings, so a card listed here can also surface to Magic Eden's audience — but every trade settles through Collector Crypt's program, not a third-party auction house.

Standing offers (bid below the ask, owner accepts or declines from their inventory) are next on the roadmap and follow the same settlement path once live.

#On-chain references

SCALPERS is built on public, independent infrastructure that can be inspected directly — including SCALPERS' own contracts, below.

SCALPERS MirrorCard (Base, source-verified)0x11614F24Ac29F0a58D286BeC102026d8D31f8194
SCALPERS vault program (Solana)FfXaQgzVNhP92UehpQYSMK5eXjdS7Y4MNXuehnLBeymM
Collector Crypt marketplaceCcmRKTuZCGJBWQwMHvDYApBRvSZNHqGJXkznqpDTSQUr
Collector Crypt Swap program (P2P)CCSwaptcDXtfjyRMYBqavqBwiW162yXFAJrXN53UuENC
Wormhole core bridge (Solana)worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth
Circle CCTP V2 — TokenMessengerMinterCCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe
USDC (Solana)EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
USDC (Base)0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Each guarantee described here is enforced by the contract code above; the snippets are condensed from the deployed sources (MirrorCard is source-verified on BaseScan).