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.
Deployed on goerli & mainnet:
Contract | Address |
---|---|
SoundFeeRegistry |
0x8f921211c9771baeb648ac7becb322a540298a4b |
GoldenEggMetadata |
0x3ca50e8da8c3d359fc934aea0161f5346ccb62a1 |
FixedPriceSignatureMinter |
0xc47306699611fc4c84744dcd7f458938b829506a |
MerkleDropMinter |
0xeae422887230c0ffb91fd8f708f5fdd354c92f2f |
RangeEditionMinter |
0x65c25fadd9b88df5c8c101a3b99a5d614b708596 |
EditionMaxMinter |
0xb1e015816c823f556d1eb921042bb09ed41db8a7 |
SoundEditionV1 |
0x8cfbfae570d673864cd61e1e4543eb7874ca35c2 |
SoundCreatorV1 |
0xaef3e8c8723d9c31863be8de54df2668ef7c4b89 |
- git
- nodeJS
- node version manager
- pnpm - You need to have
pnpm
installed globally, you can runnpm i -g pnpm
to install it. - brew
- foundry - You can run
sh ./setup.sh
to install Foundry and its dependencies.
-
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 usenvm
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
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.
(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.
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