SkillAgentSearch skills...

Caviar

nft AMM with desirability-ranked subpools using the xyk invariant

Install / Use

/learn @outdoteth/Caviar
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Caviar

Caviar is a fully on-chain NFT AMM that allows you to trade every NFT in a collection (from floors to superrares). You can also trade fractional amounts of each NFT too. It's designed with a heavy emphasis on composability, flexibility and usability. Docs are available here.

Getting started

yarn
forge install
forge test --gas-report

Example

forge install outdoteth/caviar transmissions11/solmate
pragma solidity ^0.8.17;

import "caviar/Caviar.sol";
import "caviar/Pair.sol";
import "solmate/tokens/ERC721.sol";

contract ExampleSwapper {
    Pair pair;
    ERC721 nft;

    constructor(address _nft, address _caviar) {
        nft = ERC721(_nft);
        pair = Pair(Caviar(_caviar).pairs(_nft, address(0), bytes32(0)));
    }

    function buyAndSell(uint256[] memory tokenIds, uint256 maxInput, uint256 minOutput) public payable {
        // buy nfts
        pair.nftBuy{value: maxInput}(tokenIds, maxInput);

        // sell nfts
        bytes32[][] memory proofs  = new bytes32[][](0);
        nft.setApprovalForAll(address(pair), true);
        pair.nftSell(tokenIds, minOutput, proofs);
    }
}

Contracts overview

| Contract | LOC | Description | | -------------------------- | --- | --------------------------------------------------------------------- | | Caviar.sol | 36 | Factory contract that creates pairs and maintains a registry | | Pair.sol | 294 | Pair contract that contains ERC20 AMM, NFT wrapping and NFT AMM logic | | LpToken.sol | 15 | ERC20 token which represents liquidity ownership in pair contracts | | SafeERC20Namer.sol | 65 | Helper contract that fetches the name and symbol of an ERC20/ERC721 | | CaviarEthRoyaltyRouter.sol | 89 | Router contract that swaps NFTs and pays royalties |

Goerli: (demo app)

View on GitHub
GitHub Stars41
CategoryDevelopment
Updated2mo ago
Forks7

Languages

Solidity

Security Score

75/100

Audited on Jan 20, 2026

No findings