Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 45 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,26 @@

Sound Protocol is a generalized platform for flexible and efficient creation of NFT drops.

## Overview

Sound Protocol empowers creators to launch NFT collections with customizable minting experiences on Ethereum and other EVM-compatible networks. Built with a modular architecture, it allows for flexible drop mechanics while maintaining high gas efficiency and security standards.

Key features:
- **Optimized Gas Usage**: Built on ERC721A for efficient batch minting
- **Modular Design**: Separation of concerns between core NFT functionality and minting logic
- **Cross-chain Compatibility**: Deployed on multiple networks with consistent addresses
- **Customizable Metadata**: Support for both off-chain and on-chain metadata solutions

## Table of Contents

- [Sound Protocol](#sound-protocol)
- [Overview](#overview)
- [Table of Contents](#table-of-contents)
- [Deployments](#deployments)
- [Architecture](#architecture)
- [Contracts](#contracts)
- [Documentation](#documentation)
- [Getting Started](#getting-started)
- [Development](#development)
- [Deploying](#deploying)
- [Bug Bounty](#bug-bounty)
Expand Down Expand Up @@ -76,15 +89,15 @@ The actual directories may contain some older contracts not on the list ─ they
```ml
contracts
├── core
  ├── SoundCreatorV2.sol ─ "Factory"
  ├── SoundEditionV2_1.sol ─ "NFT implementation"
  ├── interfaces
  │ ├── ISoundCreatorV2.sol
  │ └── ISoundEditionV2_1.sol
  └── utils
├── 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"
└── ArweaveURILib.sol ─ "For efficient storage of Arweave URIs"
└── modules
├── SuperMinterV2.sol ─ "Generalized minter"
├── SoundMetadata.sol ─ "Metadata module for SoundEdition"
Expand All @@ -93,9 +106,9 @@ contracts
│ ├── ISuperMinterV2.sol
│ ├── ISoundMetadata.sol
│ └── ISoundOnChainMetadata.sol
  └── utils
└── utils
├── DelegateCashLib.sol ─ "Library for querying DelegateCash"
  └── SoundOnChainMetadataLib.sol ─ "Library for SoundOnChainMetadata"
└── SoundOnChainMetadataLib.sol ─ "Library for SoundOnChainMetadata"
```

## Documentation
Expand All @@ -104,6 +117,29 @@ The documentation for the latest contracts is under construction.

For now, you can refer to the Natspec.

## Getting Started

To set up the project for local development:

```bash
# Clone the repository
git clone https://github.com/soundxyz/sound-protocol.git
cd sound-protocol

# Install Foundry (if not already installed)
curl -L https://foundry.paradigm.xyz | bash
foundryup

# Install dependencies
forge install

# Compile contracts
forge build

# Run tests
forge test
```

## Development

This is a [foundry](https://getfoundry.sh) based project.
Expand Down