Contains contracts for the Sequence Marketplace.
The Sequence Market contract enables marketplace participants to create and fill listings and offers exchanging ERC-1155 and ERC-721 tokens for ERC-20 tokens.
The Sequence Market accept partial fills of any order using ERC-1155 tokens.
The Sequence Market contract has an owner who can set the royalty parameters for any contract that doesn't natively support ERC-2981. There are no other administrative functions.
Any platform is free to integrate with the Sequence Market contract to provide a marketplace for their users.
Note: The Sequence Market is designed to support standard ERC-1155, ERC-721 and ERC-20 implementations. Tokens with non-standard implementations (e.g. tokens that take fees on transfer) may not be compatible with the Sequence Market contract. Use of a token in the Sequence Market does not imply endorsement of the token by the Sequence Market.
- The order creator approves the Sequence Market contract to transfer of ERC-1155 or ERC-721 tokens for a listing, or ERC-20 tokens for an offer.
- The order creator calls the Sequence Market to create an order.
- The order acceptor approves the Sequence Market contract to transfer the corresponding ERC-20 tokens for a listing, or ERC-1155 or ERC-721 tokens for an offer.
- The order acceptor calls the Sequence Market to accept the order.
- The Sequence Market contract transfers the tokens between the order creator and acceptor, deducting fees as applicable.
Note: The order creator can cancel their order at any time, even after a partial fill.
The Sequence Market automatically deducts ERC-2981 royalty payments from the order creator when an order is filled.
Additional fees (e.g. platform fees) can be taken from the acceptor of an order by specifying a fee recipient address when accepting an order.
All fees are taken from the ERC-20 token used in the transfer.
Clone the repo with submodules:
git clone https://github.com/0xsequence/marketplace-contracts
git submodule update --init --recursive
Install Forge via Foundry.
Run the tests with:
forge test -vvv
Run coverage report with:
forge coverage --report lcov && lcov --remove lcov.info -o lcov.info 'test/*' 'script/*' && genhtml -o report lcov.info
cd report && py -m http.server
Compare and save gas report with:
forge snapshot --diff .gas-snapshot
forge snapshot
Please ensure code is formatted before committing. If you use VSCode, you will be prompted to install the Prettier extension.
Generate docs with:
./generateDocs.sh
The contracts in this repository have been audited by Quantstamp. Audit reports are available in the audits folder.
Copyright (c) 2023-present Horizon Blockchain Games Inc.
Licensed under Apache-2.0