Skip to content

A permissionless, open-source, modular smart contract framework for efficient creation of digital collectibles by musicians, artists, and creators.

License

Notifications You must be signed in to change notification settings

soundxyz/sound-protocol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sound Protocol

Specification

See spec for current protocol specification. For details on how to build and run a custom minter instance, see section "Adding a custom minter module" section in spec. Documentation coming soon.

Addresses

Deployed on goerli & mainnet:

Contract Address
SoundFeeRegistry 0x8f921211c9771baeb648ac7becb322a540298a4b
GoldenEggMetadata 0x3ca50e8da8c3d359fc934aea0161f5346ccb62a1
FixedPriceSignatureMinter 0xc47306699611fc4c84744dcd7f458938b829506a
MerkleDropMinter 0xeae422887230c0ffb91fd8f708f5fdd354c92f2f
RangeEditionMinter 0x65c25fadd9b88df5c8c101a3b99a5d614b708596
EditionMaxMinter 0xb1e015816c823f556d1eb921042bb09ed41db8a7
SoundEditionV1 0x8cfbfae570d673864cd61e1e4543eb7874ca35c2
SoundCreatorV1 0xaef3e8c8723d9c31863be8de54df2668ef7c4b89

Installation

Prerequisites

Setup

  • Clone the repository

    git clone git@github.com:soundxyz/sound-protocol.git
    cd sound-protocol
  • Setup node version Either install the version specified in nvmrc or use nvm to set it up:

    nvm use
    
  • Install packages

    pnpm install
    
  • Build contracts

    pnpm build
    
  • Run tests

    pnpm test
    
  • Print gas reports from tests

    pnpm test:gas
    

Code conventions

We generally follow OpenZeppelin's conventions:

  • Underscore _before private variables.
  • Underscore after_ function arguments which shadow globals.
  • Natspec format for comments, using @dev for function descriptions.

Run tests

(v == logs verbosity)

forge test -vvv

Code coverage:

We use codecov for analysing the code coverage reports generated by forge coverage. To view code coverage locally, you'll need to install lcov (mac: brew install lcov) and run:

pnpm test:coverage

This will produce the coverage report in /coverage folder. Note that forge coverage is still in active development so it often claims if/else branches are uncovered even when there are tests executed on them.

Deployment

Create a .env in the root with:

GOERLI_RPC_URL=
MAINNET_RPC_URL=
PRIVATE_KEY=
ETHERSCAN_KEY=
OWNER=<address that will own the ownable contracts>

Then run:

pnpm deploy:goerli

About

A permissionless, open-source, modular smart contract framework for efficient creation of digital collectibles by musicians, artists, and creators.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages