Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Auction Modules and Base Implementation #18

Merged
merged 19 commits into from
Aug 1, 2022

Conversation

Vectorized
Copy link
Collaborator

Closed #4, and replace with this PR instead.

Terminology:

  • Minter (A contract that calls the mint function on the NFT contract)
  • Edition (The NFT contract called by the minter)

Minter contracts are current non-upgradeable (will change later if needed).

Actually, we don't need to make these Minting contracts upgradeable.

Flow:

  • Artist call createEdition on a Minter contract.
  • Buyers will call the mint function on the Minter contract, which will then call the mint function on the edition, passing along the msg.value.

Details:

  • Each type of auction is in a different Solidity file. This is for modularity and code reuse.
    So, instead of having the public auction and the permissioned auction combined, we split them into two different files.
    If we want, we can add a combined public and permissioned auction like ArtistV6.
  • For now, we only have the createEdition and deleteEdition functions on the Minter contract. Do we need functions to edit each of the fields individually? This will add quite a bit of work.

@changeset-bot
Copy link

changeset-bot bot commented Jul 27, 2022

🦋 Changeset detected

Latest commit: bf75d88

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
sound-protocol Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vigneshka vigneshka requested a review from elenadimitrova July 29, 2022 08:38
@linear
Copy link

linear bot commented Jul 29, 2022

PRO-220 Auction module interface and base implementation

First goal: should be compatible with our existing formats (see buy edition)

  • signature gated minting, range editions / open editions
  • should be able to support out of the box formats with ability to plug in custom ones + rules
    • airdrop to a passed in list
    • reserve x amount of tokens for manual transfers by the artist
    • set price discounts for a given list of users for a given song
    • set minting rules e.g. address can only buy a maximum of 3 of this song
    • auction: fixed mint, dutch auction, free mint for x period, bonding curves
  • Nice to haves: compatibility or easy porting of existing Manifold extensions
  • Freeze function

Compare delegate call vs pure extension options and write out a doc. We will discuss + get some input on the path forwards. Tradeoffs in terms of security, flexibility, provenenance/tx history, etc.

@vigneshka vigneshka requested a review from apoorvlathey July 29, 2022 08:38
contracts/SoundEdition/SoundEditionV1.sol Outdated Show resolved Hide resolved
contracts/modules/Minters/EditionMinter.sol Outdated Show resolved Hide resolved
contracts/modules/Minters/EditionMinter.sol Outdated Show resolved Hide resolved
contracts/modules/Minters/EditionMinter.sol Outdated Show resolved Hide resolved
@gigamesh gigamesh merged commit ba42911 into master Aug 1, 2022
@gigamesh gigamesh deleted the vectorized/pro-220-auction-base branch August 1, 2022 05:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants