{"id":22082937,"url":"https://github.com/soundxyz/sound-protocol","last_synced_at":"2025-04-05T10:07:18.562Z","repository":{"id":60448629,"uuid":"513968638","full_name":"soundxyz/sound-protocol","owner":"soundxyz","description":"A permissionless, open-source, modular smart contract framework for efficient creation of digital collectibles by musicians, artists, and creators.","archived":false,"fork":false,"pushed_at":"2024-06-03T20:47:04.000Z","size":1325,"stargazers_count":184,"open_issues_count":4,"forks_count":37,"subscribers_count":16,"default_branch":"main","last_synced_at":"2025-03-28T18:56:00.325Z","etag":null,"topics":["solady","solidity"],"latest_commit_sha":null,"homepage":"https://docs.sound.xyz/protocol/overview","language":"Solidity","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/soundxyz.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-14T16:15:51.000Z","updated_at":"2025-03-17T19:03:56.000Z","dependencies_parsed_at":"2023-02-11T23:01:40.922Z","dependency_job_id":"dbb6bae6-290d-44bc-902f-00214d7123f8","html_url":"https://github.com/soundxyz/sound-protocol","commit_stats":{"total_commits":233,"total_committers":12,"mean_commits":"19.416666666666668","dds":0.5536480686695279,"last_synced_commit":"428577c78f22467307dd2d3f170c95bc0cf68acf"},"previous_names":[],"tags_count":52,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soundxyz%2Fsound-protocol","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soundxyz%2Fsound-protocol/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soundxyz%2Fsound-protocol/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/soundxyz%2Fsound-protocol/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/soundxyz","download_url":"https://codeload.github.com/soundxyz/sound-protocol/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247318744,"owners_count":20919484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["solady","solidity"],"created_at":"2024-12-01T00:08:20.770Z","updated_at":"2025-04-05T10:07:18.540Z","avatar_url":"https://github.com/soundxyz.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sound Protocol\n\nSound Protocol is a generalized platform for flexible and efficient creation of NFT drops.\n\n## Table of Contents\n\n- [Sound Protocol](#sound-protocol)\n  - [Table of Contents](#table-of-contents)\n  - [Deployments](#deployments)\n  - [Contracts](#contracts)\n  - [Documentation](#documentation)\n  - [Development](#development)\n  - [Deploying](#deploying)\n  - [Bug Bounty](#bug-bounty)\n  - [License](#license)\n\n## Deployments\n\nThe following contracts have been deployed on Mainnet, Optimism, Goerli, Optimism-Goerli, and Sepolia.\n\n### Latest deployments\n\n| Contract  |  Address |\n|---|---|\n| `SoundEditionV2_1` | `0x000000000053C8B49473BDa4b8d1DC47CAb411CC`\n| `SoundCreatorV2` | `0x0000000000aec84F5BFc2af15EAfb943bf4e3522`\n| `SuperMinterV2` | `0x000000000001A36777f9930aAEFf623771b13e70`\n| `SoundOnChainMetadata` | `0x0000000000724868d80283B098Ffa809B2181692`\n| `SoundMetadata` | `0x0000000000f5A96Dc85959cAeb0Cfe680f108FB5`\n\n### Older deployments\n\n| Contract  |  Address |\n|---|---|\n| `SoundEditionV2` | `0x0000000000c78FEE168002D89D141517b8E6E0FE`\n| `SuperMinter` | `0x0000000000CF4558c36229ac0026ee16D3aE35Cd`\n\n## Architecture\n\nThe latest Sound Protocol comprises of several components: \n\n- **`SoundEditionV2_1`**  \n\n  The NFT contract.\n\n  An [ERC721A](https://github.com/chiru-labs/ERC721A) contract deployed via the [minimal proxy clone](https://eips.ethereum.org/EIPS/eip-1167) pattern.\n\n  The `mint` function allows authorized minter contracts or administrators to batch mint NFTs  \n  (authorization is granted via the `MINTER_ROLE` or `ADMIN_ROLE`).\n\n- **`SoundCreatorV2`** \n\n  A factory that allows for a single transaction setup that:\n  1. Clones and initializes a `SoundEdition`.\n  2. Forwards calldata to an array of target contracts. These calldata can be used to set up the required authorizations and mint schedules.\n\n- **`SuperMinterV2`**\n\n  A generalized singleton minter contract that can mint on `SoundEdition`s.\n\n  Technically, any contract can be authorized to mint on a `SoundEdition` as long as they are granted the `MINTER_ROLE`.\n\n- **`SoundMetadata`**\n\n  A contract which is called by the `SoundEdition` in the `tokenURI` function for customizable metadata logic. The on-chain JSON variant is called `SoundOnChainMetadata`.\n\n\n## Contracts\n\nThe smart contracts are stored under the `contracts` directory.\n\nThese are the contracts currently used.\n\nThe actual directories may contain some older contracts not on the list ─ they are left there for backwards compatibility.\n\n```ml\ncontracts\n├── core\n│   ├── SoundCreatorV2.sol ─ \"Factory\"\n│   ├── SoundEditionV2_1.sol ─ \"NFT implementation\"\n│   ├── interfaces\n│   │   ├── ISoundCreatorV2.sol\n│   │   └── ISoundEditionV2_1.sol\n│   └── utils\n│       ├── MintRandomnessLib.sol ─ \"Library for on-chain 1-of-1 raffle\"\n│       ├── LibOps.sol ─ \"Library for common operations\"\n│       └── ArweaveURILib.sol ─ \"For efficient storage of Arweave URIs\"\n└── modules\n    ├── SuperMinterV2.sol ─ \"Generalized minter\"\n    ├── SoundMetadata.sol ─ \"Metadata module for SoundEdition\"\n    ├── SoundOnChainMetadata.sol ─ \"On-chain variant of SoundMetadata\"\n    ├── interfaces\n    │   ├── ISuperMinterV2.sol\n    │   ├── ISoundMetadata.sol\n    │   └── ISoundOnChainMetadata.sol\n    └── utils\n        ├── DelegateCashLib.sol ─ \"Library for querying DelegateCash\"\n        └── SoundOnChainMetadataLib.sol ─ \"Library for SoundOnChainMetadata\"\n```\n\n## Documentation\n\nThe documentation for the latest contracts is under construction.\n\nFor now, you can refer to the Natspec.\n\n## Development\n\nThis is a [foundry](https://getfoundry.sh) based project. \n\nHowever, some of the directories differ from the defaults. \n\n- The contracts are under `contracts`.\n- The tests are under `tests`.\n\n## Deploying\n\nThe contracts have already been deployed to their canonical addresses.\n\nIf you need them on any other EVM based chain, please look into `build_create2_deployments.sh`.\n\n## Bug Bounty\n\nUp to 10 ETH for any critical bugs that could result in loss of funds. Rewards will be given for smaller bugs or ideas.\n\n## License\n\n[MIT](LICENSE) Copyright 2023 Sound.xyz\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoundxyz%2Fsound-protocol","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoundxyz%2Fsound-protocol","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoundxyz%2Fsound-protocol/lists"}