Collection of smart contracts deployable via the thirdweb SDK, dashboard and CLI
# Forge projects
forge install https://github.com/thirdweb-dev/contracts
# Hardhat / npm based projects
npm i @thirdweb-dev/contractscontracts
||-- extension: "extensions that can be inherited by NON-upgradeable contracts"||-- interface: "interfaces of all extension contracts"||-- upgradeable: "extensions that can be inherited by upgradeable contracts"||-- [$prebuilt-category]: "legacy extensions written specifically for a prebuilt contract"||-- base: "NON-upgradeable base contracts to build on top of"||-- interface: "interfaces for all base contracts"||-- upgradeable: "upgradeable base contracts to build on top of"||-- prebuilt: "audited, ready-to-deploy thirdweb smart contracts"||-- interface: "interfaces for all prebuilt contracts"||--[$prebuilt-category]: "feature-based group of prebuilt contracts"||-- unaudited: "yet-to-audit thirdweb smart contracts"||-- [$prebuilt-category]: "feature-based group of prebuilt contracts"||-- infra: "onchain infrastructure contracts"||-- interface: "interfaces for all infrastructure contracts"||-- eip: "implementations of relevant EIP standards"||-- interface "all interfaces of relevant EIP standards"||-- lib: "Solidity libraries"||-- external-deps: "modified / copied over external dependencies"||-- openzeppelin: "modified / copied over openzeppelin dependencies"||-- chainlink: "modified / copied over chainlink dependencies"||-- legacy-contracts: "maintained legacy thirdweb contracts"yarn: install contracts dependenciesforge install: install tests dependenciesforge test: run the tests
This repository is a forge project.
First install the relevant dependencies of the project:
yarn
forge installTo compile contracts, run:
forge buildTo run tests:
forge testPre-built contracts are written by the thirdweb team, and cover the most common use cases for smart contracts.
- DropERC20
- DropERC721
- DropERC1155
- SignatureDrop
- Marketplace
- Multiwrap
- TokenERC20
- TokenERC721
- TokenERC1155
- VoteERC20
- Split
Learn more about pre-built contracts
Extensions are building blocks that help enrich smart contracts with features.
Some blocks come packaged together as Base Contracts, which come with a full set of features out of the box that you can modify and extend. These contracts are available at contracts/base/.
Other (smaller) blocks are Features, which provide a way for you to pick and choose which individual pieces you want to put into your contract; with full customization of how those features work. These are available at contracts/extension/.
Found a security issue with our smart contracts? Send bug reports to security@thirdweb.com and we'll continue communicating with you from there. We're actively developing a bug bounty program; bug report payouts happen on a case by case basis, for now.
If you have any feedback, please reach out to us at support@thirdweb.com.