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
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.
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.
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:
// 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:
// 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.
}#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:
// 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.
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.
0x11614F24Ac29F0a58D286BeC102026d8D31f8194FfXaQgzVNhP92UehpQYSMK5eXjdS7Y4MNXuehnLBeymMCcmRKTuZCGJBWQwMHvDYApBRvSZNHqGJXkznqpDTSQUrCCSwaptcDXtfjyRMYBqavqBwiW162yXFAJrXN53UuENCworm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTthCCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQeEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913Each guarantee described here is enforced by the contract code above; the snippets are condensed from the deployed sources (MirrorCard is source-verified on BaseScan).