diff --git a/README.md b/README.md index 9b62080c..6a8adcb5 100644 --- a/README.md +++ b/README.md @@ -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) @@ -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" @@ -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 @@ -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.