# seaport **Repository Path**: ProjectOpenSea/seaport ## Basic Information - **Project Name**: seaport - **Description**: Seaport is a marketplace protocol for safely and efficiently buying and selling NFTs. - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 18 - **Forks**: 0 - **Created**: 2022-07-25 - **Last Updated**: 2025-08-02 ## Categories & Tags **Categories**: nft **Tags**: None ## README ![Seaport](img/Seaport-banner.png) [![Version][version-badge]][version-link] [![Test CI][ci-badge]][ci-link] [![Code Coverage][coverage-badge]][coverage-link] [![License][license-badge]][license-link] [![Docs][docs-badge]][docs-link] [![Discussions][discussions-badge]][discussions-link] [![JS Library][js-library-badge]][js-library-link] [![Discord][discord-badge]][discord-link] # Seaport Seaport is a marketplace protocol for safely and efficiently buying and selling NFTs. ## Table of Contents - [Seaport](#seaport) - [Table of Contents](#table-of-contents) - [Background](#background) - [Deployments](#deployments) - [Diagram](#diagram) - [Docs](#docs) - [Install](#install) - [Usage](#usage) - [Foundry Tests](#foundry-tests) - [Linting](#linting) - [Audits](#audits) - [Contributing](#contributing) - [License](#license) ## Background Seaport is a marketplace protocol for safely and efficiently buying and selling NFTs. Each listing contains an arbitrary number of items that the offerer is willing to give (the "offer") along with an arbitrary number of items that must be received along with their respective receivers (the "consideration"). See the [documentation](docs/SeaportDocumentation.md), the [interface](https://github.com/ProjectOpenSea/seaport-types/blob/main/src/interfaces/ConsiderationInterface.sol), and the full [interface documentation](https://docs.opensea.io/docs/seaport) for more information on Seaport. This repository is also split into smaller repositories for easier use and integration: - [seaport-core][seaport-core] - [seaport-types][seaport-types] - [seaport-sol][seaport-sol] ## Deployments ### Canonical Cross-chain Deployment Addresses
Contract Canonical Cross-chain Deployment Address
Seaport 1.1 0x00000000006c3852cbEf3e08E8dF289169EdE581
Seaport 1.2* 0x00000000000006c7676171937C444f6BDe3D6282
Seaport 1.3* 0x0000000000000aD24e80fd803C6ac37206a45f15
Seaport 1.4* 0x00000000000001ad428e4906aE43D8F9852d0dD6
Seaport 1.5 0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC
Seaport 1.6 0x0000000000000068F116a894984e2DB1123eB395
ConduitController 0x00000000F9490004C11Cef243f5400493c00Ad63
SeaportValidator 0x00e5F120f500006757E984F1DED400fc00370000
SeaportNavigator 0x0000f00000627D293Ab4Dfb40082001724dB006F
> *Note: Seaport 1.2 through 1.4 contain known limitations; proceed with caution if interacting with them, particularly when utilizing restricted or contract orders. ### Deployments By EVM Chain
Network Seaport 1.6 Seaport 1.5 Seaport 1.1 ConduitController SeaportValidator SeaportNavigator
Ethereum [0x0000000000000068F116a894984e2DB1123eB395](https://etherscan.io/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://etherscan.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://etherscan.io/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://etherscan.io/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://etherscan.io/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://etherscan.io/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Sepolia [0x0000000000000068F116a894984e2DB1123eB395](https://sepolia.etherscan.io/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://sepolia.etherscan.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://sepolia.etherscan.io/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://sepolia.etherscan.io/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://sepolia.etherscan.io/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://sepolia.etherscan.io/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Polygon [0x0000000000000068F116a894984e2DB1123eB395](https://polygonscan.com/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://polygonscan.com/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://polygonscan.com/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://polygonscan.com/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://polygonscan.com/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://polygonscan.com/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Amoy [0x0000000000000068F116a894984e2DB1123eB395](https://www.oklink.com/amoy/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://www.oklink.com/amoy/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://www.oklink.com/amoy/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://www.oklink.com/amoy/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://www.oklink.com/amoy/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://www.oklink.com/amoy/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Optimism [0x0000000000000068F116a894984e2DB1123eB395](https://optimistic.etherscan.io/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://optimistic.etherscan.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://optimistic.etherscan.io/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://optimistic.etherscan.io/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://optimistic.etherscan.io/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://optimistic.etherscan.io/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Optimism Sepolia [0x0000000000000068F116a894984e2DB1123eB395](https://sepolia-optimism.etherscan.io/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://sepolia-optimism.etherscan.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) Not deployed [0x00000000F9490004C11Cef243f5400493c00Ad63](https://sepolia-optimism.etherscan.io/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://sepolia-optimism.etherscan.io/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://sepolia-optimism.etherscan.io/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Arbitrum [0x0000000000000068F116a894984e2DB1123eB395](https://arbiscan.io/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://arbiscan.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://arbiscan.io/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://arbiscan.io/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://arbiscan.io/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://arbiscan.io/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Arbitrum Sepolia [0x0000000000000068F116a894984e2DB1123eB395](https://sepolia.arbiscan.io/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://sepolia.arbiscan.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) Not deployed [0x00000000F9490004C11Cef243f5400493c00Ad63](https://sepolia.arbiscan.io/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://sepolia.arbiscan.io/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://sepolia.arbiscan.io/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Arbitrum Nova [0x0000000000000068F116a894984e2DB1123eB395](https://nova.arbiscan.io/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://nova.arbiscan.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://nova.arbiscan.io/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://nova.arbiscan.io/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://nova.arbiscan.io/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://nova.arbiscan.io/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Base [0x0000000000000068F116a894984e2DB1123eB395](https://basescan.org/address/0x0000000000000068F116a894984e2DB1123eB395) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://basescan.org/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) Not deployed [0x00000000F9490004C11Cef243f5400493c00Ad63](https://basescan.org/address/0x00000000f9490004c11cef243f5400493c00ad63) [0x00e5F120f500006757E984F1DED400fc00370000](https://basescan.org/address/0x00e5f120f500006757e984f1ded400fc00370000) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://basescan.org/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Base Sepolia [0x0000000000000068F116a894984e2DB1123eB395](https://sepolia.basescan.org/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://sepolia.basescan.org/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) Not deployed [0x00000000F9490004C11Cef243f5400493c00Ad63](https://sepolia.basescan.org/address/0x00000000f9490004c11cef243f5400493c00ad63) [0x00e5F120f500006757E984F1DED400fc00370000](https://sepolia.basescan.org/address/0x00e5f120f500006757e984f1ded400fc00370000) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://sepolia.basescan.org/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Avalanche C-Chain [0x0000000000000068F116a894984e2DB1123eB395](https://snowtrace.io/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://snowtrace.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://snowtrace.io/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://snowtrace.io/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://snowtrace.io/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://snowtrace.io/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Avalanche Fuji [0x0000000000000068F116a894984e2DB1123eB395](https://testnet.snowtrace.io/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://testnet.snowtrace.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://testnet.snowtrace.io/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://testnet.snowtrace.io/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://testnet.snowtrace.io/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://testnet.snowtrace.io/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Gnosis Chain [0x0000000000000068F116a894984e2DB1123eB395](https://gnosisscan.io/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://gnosisscan.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://gnosisscan.io/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://gnosisscan.io/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://gnosisscan.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) Not deployed
Chiado [0x0000000000000068F116a894984e2DB1123eB395](https://blockscout.com/gnosis/chiado/address/0x0000000000000068F116a894984e2DB1123eB395/contracts#address-tabs) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://blockscout.com/gnosis/chiado/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC/contracsts#address-tabs) Not deployed [0x00000000F9490004C11Cef243f5400493c00Ad63](https://blockscout.com/gnosis/chiado/address/0x00000000F9490004C11Cef243f5400493c00Ad63/contracts#address-tabs) Not deployed Not deployed
BSC [0x0000000000000068F116a894984e2DB1123eB395](https://bscscan.com/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://bscscan.com/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://bscscan.com/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://bscscan.com/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://bscscan.com/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://bscscan.com/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
BSC Testnet [0x0000000000000068F116a894984e2DB1123eB395](https://testnet.bscscan.com/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://testnet.bscscan.com/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://testnet.bscscan.com/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://testnet.bscscan.com/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://testnet.bscscan.com/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://testnet.bscscan.com/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Klaytn [0x0000000000000068F116a894984e2DB1123eB395](https://scope.klaytn.com/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://scope.klaytn.com/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://scope.klaytn.com/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://scope.klaytn.com/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://scope.klaytn.com/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://scope.klaytn.com/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Baobab [0x0000000000000068F116a894984e2DB1123eB395](https://baobab.scope.klaytn.com/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://baobab.scope.klaytn.com/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://baobab.scope.klaytn.com/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://baobab.scope.klaytn.com/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) [0x00e5F120f500006757E984F1DED400fc00370000](https://baobab.scope.klaytn.com/address/0x00e5F120f500006757E984F1DED400fc00370000#code) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://baobab.scope.klaytn.com/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Moonbeam [0x0000000000000068F116a894984e2DB1123eB395](https://moonscan.io/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://moonscan.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) Not deployed [0x00000000F9490004C11Cef243f5400493c00Ad63](https://moonscan.io/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) Not deployed Not deployed
Moonriver [0x0000000000000068F116a894984e2DB1123eB395](https://moonriver.moonscan.io/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://moonriver.moonscan.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://moonriver.moonscan.io/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://moonriver.moonscan.io/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) Not deployed Not deployed
Canto [0x0000000000000068F116a894984e2DB1123eB395](https://evm.explorer.canto.io/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://evm.explorer.canto.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC) [0x00000000006c3852cbEf3e08E8dF289169EdE581](https://evm.explorer.canto.io/address/0x00000000006c3852cbEf3e08E8dF289169EdE581#code) [0x00000000F9490004C11Cef243f5400493c00Ad63](https://evm.explorer.canto.io/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) Not deployed Not deployed
Fantom [0x0000000000000068F116a894984e2DB1123eB395](https://ftmscan.com/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://ftmscan.com/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) Not deployed [0x00000000F9490004C11Cef243f5400493c00Ad63](https://ftmscan.com/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) Not deployed Not deployed
Celo [0x0000000000000068F116a894984e2DB1123eB395](https://celoscan.io/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://celoscan.io/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) Not deployed [0x00000000F9490004C11Cef243f5400493c00Ad63](https://celoscan.io/address/0x00000000F9490004C11Cef243f5400493c00Ad63#code) Not deployed Not deployed
Zora [0x0000000000000068F116a894984e2DB1123eB395](https://explorer.zora.energy/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://explorer.zora.energy/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) Not deployed [0x00000000F9490004C11Cef243f5400493c00Ad63](https://explorer.zora.energy/address/0x00000000f9490004c11cef243f5400493c00ad63) [0x00e5F120f500006757E984F1DED400fc00370000](https://explorer.zora.energy/address/0x00e5f120f500006757e984f1ded400fc00370000) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://explorer.zora.energy/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
Zora Sepolia [0x0000000000000068F116a894984e2DB1123eB395](https://sepolia.explorer.zora.energy/address/0x0000000000000068F116a894984e2DB1123eB395#code) [0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC](https://sepolia.explorer.zora.energy/address/0x00000000000000ADc04C56Bf30aC9d3c0aAF14dC#code) Not deployed [0x00000000F9490004C11Cef243f5400493c00Ad63](https://sepolia.explorer.zora.energy/address/0x00000000f9490004c11cef243f5400493c00ad63) [0x00e5F120f500006757E984F1DED400fc00370000](https://sepolia.explorer.zora.energy/address/0x00e5f120f500006757e984f1ded400fc00370000) [0x0000f00000627D293Ab4Dfb40082001724dB006F](https://sepolia.explorer.zora.energy/address/0x0000f00000627D293Ab4Dfb40082001724dB006F#code)
To deploy to a new EVM chain, follow the [steps outlined here](docs/Deployment.md). ## Diagram ```mermaid graph TD Offer & Consideration --> Order zone & conduitKey --> Order subgraph Seaport[ ] Order --> Fulfill & Match Order --> Validate & Cancel end Validate --> Verify Cancel --> OrderStatus Fulfill & Match --> OrderCombiner --> OrderFulfiller OrderCombiner --> BasicOrderFulfiller --> OrderValidator OrderCombiner --> FulfillmentApplier OrderFulfiller --> CriteriaResolution OrderFulfiller --> AmountDeriver OrderFulfiller --> OrderValidator OrderValidator --> ZoneInteraction OrderValidator --> Executor --> TokenTransferrer Executor --> Conduit --> TokenTransferrer Executor --> Verify subgraph Verifiers[ ] Verify --> Time & Signature & OrderStatus end ``` For a more thorough flowchart see [Seaport diagram](./diagrams/Seaport.drawio.svg). ## Docs - [Seaport Deployment](./docs/Deployment.md) - [Seaport Documentation](./docs/SeaportDocumentation.md) - [Zone Documentation](./docs/ZoneDocumentation.md) - [Function Signatures](./docs/FunctionSignatures.md) - [Order Validator](./docs/OrderValidator.md) ## Install To install dependencies and compile contracts: ```bash git clone --recurse-submodules https://github.com/ProjectOpenSea/seaport && cd seaport yarn install yarn build ``` ## Usage To run hardhat tests written in javascript: ```bash yarn test yarn coverage ``` > Note: artifacts and cache folders may occasionally need to be removed between standard and coverage test runs. To run hardhat tests against reference contracts: ```bash yarn test:ref yarn coverage:ref ``` To open the generated Hardhat coverage report locally after running `yarn coverage` or `yarn coverage:ref`: ```bash open coverage/index.html ``` To profile gas usage: ```bash yarn profile ``` ### Foundry Tests Seaport also includes a suite of fuzzing tests written in Solidity with Foundry. Before running these tests, you will need to compile an optimized build by running: ```bash FOUNDRY_PROFILE=optimized forge build ``` This should create an `optimized-out/` directory in your project root. To run tests with full traces and debugging with source, create an `.env` file with the following line: ```bash FOUNDRY_PROFILE=debug ``` You may then run tests with `forge test`, optionally specifying a level of verbosity (anywhere from one to five `v`'s, eg, `-vvv`) This will compile tests and contracts without `via-ir` enabled, which is much faster, but will not exactly match the deployed bytecode. To run tests against the actual bytecode intended to be deployed on networks, you will need to pre-compile the contracts, and remove the `FOUNDRY_PROFILE` variable from your `.env` file. **Note** that informative error traces may not be available, and the Forge debugger will not show the accompanying source code. ```bash FOUNDRY_PROFILE=optimized forge build FOUNDRY_PROFILE=reference forge build ``` To run Forge coverage tests and open the generated coverage report locally: ```bash brew install lcov SEAPORT_COVERAGE=true forge coverage --report summary --report lcov && lcov -o lcov.info --remove lcov.info --rc lcov_branch_coverage=1 --rc lcov_function_coverage=1 "test/*" "script/*" && genhtml lcov.info -o html --branch open html/index.html ``` When working on the test suite based around `FuzzEngine.sol`, using `FOUNDRY_PROFILE=moat_debug` will cut compile times roughly in half. **Note** that Forge does not yet ignore specific filepaths when running coverage tests. For information on Foundry, including installation and testing, see the [Foundry Book](https://book.getfoundry.sh/). ### Linting To run lint checks: ```bash yarn lint:check ``` Lint checks utilize prettier, prettier-plugin-solidity, and solhint. ```javascript "prettier": "^2.5.1", "prettier-plugin-solidity": "^1.0.0-beta.19", ``` ## Audits OpenSea engaged Trail of Bits to audit the security of Seaport. From April 18th to May 12th 2022, a team of Trail of Bits consultants conducted a security review of Seaport. The audit did not uncover significant flaws that could result in the compromise of a smart contract, loss of funds, or unexpected behavior in the target system. Their [full report is available here](https://github.com/trailofbits/publications/blob/master/reviews/SeaportProtocol.pdf). ## Contributing Contributions to Seaport are welcome by anyone interested in writing more tests, improving readability, optimizing for gas efficiency, or extending the protocol via new zone contracts or other features. When making a pull request, ensure that: - All tests pass. - Code coverage remains at 100% (coverage tests must currently be written in hardhat). - All new code adheres to the style guide: - All lint checks pass. - Code is thoroughly commented with natspec where relevant. - If making a change to the contracts: - Gas snapshots are provided and demonstrate an improvement (or an acceptable deficit given other improvements). - Reference contracts are modified correspondingly if relevant. - New tests (ideally via foundry) are included for all new features or code paths. - If making a modification to third-party dependencies, `yarn audit` passes. - A descriptive summary of the PR has been provided. ## License [MIT](LICENSE) Copyright 2023 Ozone Networks, Inc. [version-badge]: https://img.shields.io/github/package-json/v/ProjectOpenSea/seaport [version-link]: https://github.com/ProjectOpenSea/seaport/releases [ci-badge]: https://github.com/ProjectOpenSea/seaport/actions/workflows/test.yml/badge.svg [ci-link]: https://github.com/ProjectOpenSea/seaport/actions/workflows/test.yml [coverage-badge]: https://codecov.io/gh/ProjectOpenSea/seaport/branch/main/graph/badge.svg [coverage-link]: https://codecov.io/gh/ProjectOpenSea/seaport [license-badge]: https://img.shields.io/github/license/ProjectOpenSea/seaport [license-link]: https://github.com/ProjectOpenSea/seaport/blob/main/LICENSE [docs-badge]: https://img.shields.io/badge/Seaport-documentation-informational [docs-link]: https://github.com/ProjectOpenSea/seaport/tree/main/docs [discussions-badge]: https://img.shields.io/badge/Seaport-discussions-blueviolet [discussions-link]: https://github.com/ProjectOpenSea/seaport/discussions [js-library-badge]: https://img.shields.io/badge/Seaport.js-library-red [js-library-link]: https://github.com/ProjectOpenSea/seaport-js [discord-badge]: https://img.shields.io/static/v1?logo=discord&label=discord&message=Join&color=blue [discord-link]: https://discord.gg/ADXcTXpqry [seaport-core]: https://github.com/ProjectOpenSea/seaport-core [seaport-types]: https://github.com/ProjectOpenSea/seaport-types [seaport-sol]: https://github.com/ProjectOpenSea/seaport-sol