TOP COLLECTIONS
⬢
Connect your wallet to view your profile
LIST YOUR COLLECTION
Submit your OP721 collection to the marketplace. Only the contract deployer can register.
HOW OPTRADE WORKS
Everything you need to know about buying, selling, and trading NFTs on Bitcoin L1.
Contents
What is OPTrade?
OPTrade is the first NFT marketplace on OPNet — Bitcoin L1 smart contracts. It lets you buy, sell, and trade OP721 NFTs directly on Bitcoin without leaving Layer 1.
Every trade is settled through an on-chain custody escrow contract. When you list an NFT, it's locked inside the escrow contract on-chain. When a buyer pays, the escrow verifies the BTC payment and transfers the NFT directly to the buyer. This guarantees both sides of every trade — your NFT can't be moved while listed, and buyers always receive what they paid for.
Connecting Your Wallet
OPTrade works with the OP_WALLET browser extension. This is the standard wallet for OPNet smart contracts on Bitcoin.
- Install OP_WALLET from the Chrome Web Store
- Create or import a wallet (your BTC address starts with
bc1p...) - Click "Connect Wallet" on OPTrade
- Approve the connection in OP_WALLET
Once connected, your address appears in the navbar. You can view your NFTs and activity on your Profile page.
How to Sell an NFT
Selling an NFT on OPTrade is a simple process. Your NFT is locked in the escrow contract when you list — this protects buyers and guarantees the NFT can't be moved while listed.
Approve the escrow (one-time)
The first time you list from a collection, the marketplace asks you to approve the escrow contract to transfer NFTs on your behalf. This is a single on-chain transaction (~1,500 sats). You only need to do this once per collection — after that, all future listings from the same collection skip this step.
Set your price and lock NFT
Navigate to your NFT and click "List for Sale". Enter the price in BTC or sats (minimum 1,000 sats). Confirm the transaction in your wallet — this transfers your NFT into the escrow contract on-chain (~1,500 sats gas). The listing appears once broadcast and becomes buyable after the TX confirms (~10 min).
Wait for a buyer
When someone buys your NFT, the escrow contract handles everything atomically: the buyer's BTC goes to your wallet, and the NFT transfers to them. You receive 98% of the listed price (2% platform fee) directly to your connected wallet. You can cancel a listing at any time — a cancel TX retrieves your NFT from escrow (~1,500 sats gas).
How to Buy an NFT
Buying is a single-click action:
- Browse a collection and find an NFT with a listed price
- Click "Buy Now"
- Review the price breakdown (NFT price + 2% platform fee + gas + network fee)
- Confirm the transaction in your OP_WALLET
- Done! The NFT transfers to your wallet when the transaction confirms (~10 minutes, next Bitcoin block)
What happens under the hood
Your wallet creates a single transaction that: (1) calls the escrow contract's executeBuy function with the NFT contract and token ID, (2) sends BTC to the seller, and (3) sends the 2% fee to the treasury. The escrow contract reads the listing price and seller address from its on-chain storage, verifies your BTC payments match, then transfers the NFT from escrow to you. Since the NFT is already locked in the escrow contract, there's no risk of the seller moving it while your transaction is pending.
Offers
You can make an offer on any NFT, even if it's not listed for sale. Offers are a way to signal interest at a price you're willing to pay.
Making an offer (Buyer)
Click "Make Offer" on any NFT page, enter your price, and submit. The offer is recorded off-chain — no BTC is locked or sent when you make an offer. Offers expire after 7 days. You can cancel anytime.
Accepting an offer (Seller / Owner)
If you own the NFT, you'll see an "Accept" button on incoming offers. Accepting marks the offer as accepted and cancels any active listings or other offers on that NFT. No BTC moves at this point — you're just agreeing to the price.
Executing the trade (Buyer)
After the seller accepts, the buyer sees an "Execute" button on the offer. Clicking it triggers the exact same on-chain escrow flow as a direct buy — the buyer sends BTC to the seller, the escrow transfers the NFT. The buyer pays the offer amount + gas + network fees.
Why does the buyer execute?
On OPNet, smart contract interactions require the caller to send BTC outputs in the same transaction. Since the buyer is the one paying, they must be the one to sign and broadcast the transaction. This is why the offer flow is: Buyer offers → Seller accepts → Buyer executes. It's not possible for the seller to "pull" BTC from the buyer's wallet — the buyer must initiate.
Sweep / Cart
You can add multiple listed NFTs to your cart and buy them all at once. Click the cart icon on listed NFTs in a collection view to add them, then click "Buy All" in the cart modal.
All items in your cart are purchased in a single batch transaction using the escrow's batchExecuteBuy function. One confirmation, one gas fee — much cheaper than buying individually.
The Escrow Contract
All trades on OPTrade are settled through a trustless on-chain escrow contract deployed on OPNet (Bitcoin L1). The marketplace backend never holds or controls your assets.
How the custody escrow works
listNft — the NFT is transferred from the seller into the escrow contract. Price, seller address, and seller wallet are stored on-chain.executeBuy(nftContract, tokenId) — the escrow reads the listing price from storage and verifies the buyer's BTC payment outputs match.cancelListing at any time to retrieve the NFT from escrow back to their wallet.Why custody escrow?
Because your NFT is locked inside the escrow contract while listed, it cannot be moved or transferred by anyone. This eliminates the risk of a seller moving their NFT after a buyer has already broadcast a purchase transaction. On Bitcoin L1, BTC outputs in a transaction are irreversible — custody escrow ensures the NFT side of the trade is equally guaranteed.
The escrow contract is immutable — once deployed, nobody can change its logic. The contract address is publicly verifiable on the OPNet explorer.
Approval (setApprovalForAll)
Before listing, the escrow contract needs permission to transfer your NFTs. This is done via the standard OP721 setApprovalForAll function — the same pattern used in ERC-721 on Ethereum.
What the approval does
You're telling the NFT contract: "Allow the OPTrade escrow contract to transfer my NFTs from this collection."
This is scoped to one collection — approving for one collection doesn't affect your NFTs in other collections.
The escrow uses this permission to lock your NFT when you list it (transfers it into the escrow contract). It can also transfer NFTs to buyers during a sale. It cannot move your NFTs arbitrarily outside of these flows.
You can revoke approval at any time by calling setApprovalForAll(escrow, false) directly on the NFT contract. Note: you must cancel any active listings first, or they will become stuck.
Cost: ~1,000 sats (one-time per collection). The marketplace checks if you're already approved and skips this step if so.
Registering a Collection
If you've deployed an OP721 NFT contract on OPNet, you can register it on OPTrade:
- Go to the Create page
- Enter your contract address and the deployer wallet address
- Add collection details: name, description, icon, banner, and website
- Submit — the marketplace verifies on-chain that you are the deployer
Once registered, the indexer automatically syncs all NFTs, their metadata, images, and ownership. Only the collection deployer (or an OPTrade admin) can edit collection details.
Safety & Trust
Custody escrow
Listed NFTs are held in the on-chain escrow contract — not by OPTrade's servers. The escrow is immutable code that can only transfer NFTs to buyers (with valid payment) or back to sellers (on cancel). Your BTC never touches OPTrade.
Guaranteed delivery
Since the NFT is already locked in escrow, when the buyer's payment confirms, the NFT transfer is guaranteed. There's no window where the seller can pull the NFT out from under a buyer.
On-chain verification
The escrow contract checks BTC outputs on-chain. It's impossible to fake a payment — the contract reads the actual transaction outputs from the Bitcoin blockchain.
Verified collections
Look for the verified badge on collections. Verified means the OPTrade team has confirmed the collection's legitimacy. Unverified collections may still be legitimate — always DYOR.
FAQ
How long does a trade take to confirm?
About 10 minutes — one Bitcoin block confirmation. The NFT will show as "pending" until the block confirms.
What if my transaction reverts?
If the contract execution reverts, only the gas fee (~3,000 sats) is lost. With custody escrow, reverts are rare — common causes: the NFT was already sold or the listing was cancelled. The marketplace runs safety checks before every purchase to prevent this.
Can I list on multiple marketplaces?
No — when you list on OPTrade, your NFT is transferred into the escrow contract. It's held there until someone buys it or you cancel the listing. Since the escrow owns the NFT while listed, you can't list the same NFT elsewhere simultaneously. Cancel first to get it back, then list wherever you like.
What wallet do I need?
OP_WALLET browser extension. It's the standard wallet for OPNet. Available on Chrome-based browsers.
Is there a minimum price?
Yes — 1,000 sats (0.00001 BTC). This ensures the platform fee and seller payment are above Bitcoin's dust limit (330 sats).
Why is the offer flow 3 steps?
OPNet contract interactions require the caller to include BTC payments in the same transaction. Since the buyer pays, only the buyer can sign the final trade TX. The seller accepts to signal agreement, then the buyer executes to finalize. This is a fundamental constraint of Bitcoin L1 smart contracts — not a design choice.
Can the marketplace steal my NFTs?
No. The escrow contract can only do three things with your NFT: (1) hold it while listed, (2) transfer it to a buyer who provides valid BTC payment, or (3) return it to you when the listing is cancelled. The contract deployer can cancel listings (returning NFTs to sellers) for emergency recovery, but cannot redirect NFTs to any other address.
Still have questions? Use the live chat or reach out on X (Twitter).
ADMIN PANEL
Connect an admin wallet to access.