Sound Protocol is a generalized platform for flexible and efficient creation of NFT drops.
The following contracts have been deployed on Mainnet, Optimism, Goerli, Optimism-Goerli, and Sepolia.
| Contract | Address |
|---|---|
SoundEditionV2_1 |
0x000000000053C8B49473BDa4b8d1DC47CAb411CC |
SoundCreatorV2 |
0x0000000000aec84F5BFc2af15EAfb943bf4e3522 |
SuperMinterV2 |
0x000000000001A36777f9930aAEFf623771b13e70 |
SoundOnChainMetadata |
0x0000000000724868d80283B098Ffa809B2181692 |
SoundMetadata |
0x0000000000f5A96Dc85959cAeb0Cfe680f108FB5 |
| Contract | Address |
|---|---|
SoundEditionV2 |
0x0000000000c78FEE168002D89D141517b8E6E0FE |
SuperMinter |
0x0000000000CF4558c36229ac0026ee16D3aE35Cd |
The latest Sound Protocol comprises of several components:
-
SoundEditionV2_1The NFT contract.
An ERC721A contract deployed via the minimal proxy clone pattern.
The
mintfunction allows authorized minter contracts or administrators to batch mint NFTs
(authorization is granted via theMINTER_ROLEorADMIN_ROLE). -
SoundCreatorV2A factory that allows for a single transaction setup that:
- Clones and initializes a
SoundEdition. - Forwards calldata to an array of target contracts. These calldata can be used to set up the required authorizations and mint schedules.
- Clones and initializes a
-
SuperMinterV2A generalized singleton minter contract that can mint on
SoundEditions.Technically, any contract can be authorized to mint on a
SoundEditionas long as they are granted theMINTER_ROLE. -
SoundMetadataA contract which is called by the
SoundEditionin thetokenURIfunction for customizable metadata logic. The on-chain JSON variant is calledSoundOnChainMetadata.
The smart contracts are stored under the contracts directory.
These are the contracts currently used.
The actual directories may contain some older contracts not on the list ─ they are left there for backwards compatibility.
contracts
├── core
│ ├── SoundCreatorV2.sol ─ "Factory"
│ ├── SoundEditionV2_1.sol ─ "NFT implementation"
│ ├── interfaces
│ │ ├── ISoundCreatorV2.sol
│ │ └── ISoundEditionV2_1.sol
│ └── utils
│ ├── MintRandomnessLib.sol ─ "Library for on-chain 1-of-1 raffle"
│ ├── LibOps.sol ─ "Library for common operations"
│ └── ArweaveURILib.sol ─ "For efficient storage of Arweave URIs"
└── modules
├── SuperMinterV2.sol ─ "Generalized minter"
├── SoundMetadata.sol ─ "Metadata module for SoundEdition"
├── SoundOnChainMetadata.sol ─ "On-chain variant of SoundMetadata"
├── interfaces
│ ├── ISuperMinterV2.sol
│ ├── ISoundMetadata.sol
│ └── ISoundOnChainMetadata.sol
└── utils
├── DelegateCashLib.sol ─ "Library for querying DelegateCash"
└── SoundOnChainMetadataLib.sol ─ "Library for SoundOnChainMetadata"The documentation for the latest contracts is under construction.
For now, you can refer to the Natspec.
This is a foundry based project.
However, some of the directories differ from the defaults.
- The contracts are under
contracts. - The tests are under
tests.
The contracts have already been deployed to their canonical addresses.
If you need them on any other EVM based chain, please look into build_create2_deployments.sh.
Up to 10 ETH for any critical bugs that could result in loss of funds. Rewards will be given for smaller bugs or ideas.
MIT Copyright 2023 Sound.xyz