FLETCHER documentation
The liquidity layer for Collector Crypt on Robinhood Chain. 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. FLETCHER is a liquidity aggregator for that inventory on Robinhood Chain: it surfaces the full catalog, routes each trade, and settles in USDG on Robinhood Chain, so a user never bridges assets, manages a Solana wallet, or leaves Robinhood Chain.
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 Robinhood-native feed.
- Mirror — a purchase or rip returns a one-to-one mirror ERC-721 on Robinhood Chain, backed by the vaulted slab.
- Exit — sell back into the aggregated liquidity for USDG: an instant buyback in the first 72 hours, or a marketplace listing at your price. Physical redemption is rolling out.
FLETCHER 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 FLETCHER.
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 is held in FLETCHER custody on Solana throughout the rip and buyback window, and moves only when the owner authorizes the action from their Robinhood Chain wallet.
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 Robinhood Chain. FLETCHER sources the card from Collector Crypt, locks it in the vault, and mints the mirror on Robinhood Chain — 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 USDG on Robinhood Chain. 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
}
}A mirror is retired only as the tail of a sale or redemption the owner started. The same single-exit lock shown above holds the token until the real card has left Collector Crypt and the proceeds have settled — so the mirror and the vaulted slab stay one-to-one, and no key can move a mirror the owner hasn't approved.
#Settlement & capital
FLETCHER routes funds; it does not hold deposits or extend credit. No payout is funded from FLETCHER' 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 USDG reaches the vault and is settled to the seller on Robinhood Chain.
The only capital FLETCHER provisions is transaction gas (SOL and ETH-on-Robinhood-Chain) 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
One intent-based bridge, Across, carries value between Robinhood Chain and Solana. FLETCHER adds no additional trust assumption on top of it.
Across — value
USDG on Robinhood Chain and USDC on Solana move by intent-fill: a relayer fronts the destination funds in about two seconds and is repaid from the source. A rip's payment reaches Solana to buy the card, and a sale's proceeds return to Robinhood Chain, near-instantly — no wrapped representation.
Refund-safe by design
Because Across fills by intent, an unfilled transfer is never stuck: if a rip's funds aren't filled by the deadline they refund on the origin chain, and the rip auto-refunds the buyer. Every paid rip ends in a card or a refund — never a loss.
#Tweet-to-rip
The FLETCHER bot (@Fletcher_cards) turns a tweet into a real pack rip. A linked user tags the bot in plain language — "open a $25 gacha", "rip a starter pack", "open a one piece pack turbo" — and the bot sources the pack from Collector Crypt with the user's own USDG, then replies with the exact card pulled: image, grade, market value, and the 85% instant buyback.
Setting it up — once, at /link
- Link — sign in with X, then sign one gasless message with your wallet. Both proofs are required: nobody can claim a handle they didn't log into, or a wallet they don't hold.
- Set a cap — approve USDG to the XBotIntake contract. The allowance is the spending limit; raise, lower, or revoke it any time with a plain approval.
- Optional: instant-sell — one ERC-721 approval (to the same verified escrow the site uses) lets you cash out a pull by replying SELL. Skip it and KEEP still works.
What a rip looks like
- Ask — tag the bot with a pack, by price, name, or franchise. Stock is probed before any money moves; a machine low on commons suggests adding turbo (a common auto-sells for USDG), and a dead machine answers "try again in a few minutes".
- Rip — the live pack price is pulled from your wallet and rides the exact saga rail a browser rip uses: swept, bridged, bought from CC, mirrored to your wallet on Robinhood Chain. Points included.
- Decide — the result reply shows the card; answer SELL for the instant buyback (paid to your wallet, transaction link in the reply) or KEEP to vault it.
#Spending safety
The bot holds no deposits and adds no custody. Its single money path is an on-chain pull bounded by the allowance the owner set, feeding the same Intake contract every browser rip uses — same sweep and refund invariants, same zero-float design:
// XBotIntake.sol — the bot's only money path: pull within the owner's
// allowance and deposit into the SAME Intake rail a browser rip uses
function depositFor(address user, bytes32 sagaId, uint256 amount) external onlyOperator {
require(ripUser[sagaId] == address(0), "saga used"); // one saga, one pull
ripUser[sagaId] = user; // refunds return HERE -> user
usdc.safeTransferFrom(user, address(this), amount); // bounded by user's allowance
usdc.forceApprove(address(intake), amount);
intake.deposit(sagaId, amount); // funds never park in this contract
}- Your cap, on-chain — the contract physically cannot spend past your USDG allowance. Approve 0 and tweet-rips stop instantly.
- One rip at a time — an impatient re-tweet while a rip is mid-flight gets a status reply, never a second charge; a per-hour valve bounds spam.
- Exactly-once money — every tweet is processed at most once (across restarts), and a failed rip refunds through the contract back to the owner's wallet, once.
- Hijack-proof payouts — a compromised X account can at most buy packs the owner keeps: SELL proceeds always pay the linked wallet, and relinking requires that wallet's signature.
#Liquidity source
Every card FLETCHER 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 FLETCHER 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. FLETCHER 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 Robinhood Chain 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. FLETCHER 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
FLETCHER is built on public, independent infrastructure that can be inspected directly — including FLETCHER' own contracts, below.
0x95f075bEcc129c1f410D8221fe4855d13Bf20dBB0x1b7d24c34f30246CE4Dc3F427A98f226aB90de34CcmRKTuZCGJBWQwMHvDYApBRvSZNHqGJXkznqpDTSQUrCCSwaptcDXtfjyRMYBqavqBwiW162yXFAJrXN53UuENCapp.across.toEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168Each guarantee described here is enforced by the contract code above; the snippets are condensed from the deployed sources. FLETCHER's MirrorCard and XBotIntake are being redeployed to Robinhood Chain (chainId 4663) and will be source-verified on Blockscout at launch.