Ether – How to Create an ERC-721 Creator Contract

erc-721etheropensea

I am trying to create a smart contract (for ERC721) that artists can use to mint on their own contract instead of the shared contracts of OS, Rarible etc.

The contract is ready, but we have one bug we can't seem to resolve..

So i deploy the contract from my wallet, then I do an transferOwnerShip to the creator.
When the creator the mints, the contract shows me as creator because i deployed the contract.

Does anybody have a solution for this?

i'll paste my mint method here, so you can see what we have:
(i am extending the ERC721.sol from openzeppelin)

'''

/**
 * @dev Mints a NEW Token.
 * Only allowed for addresses that have the minter role.
 */
function mint(string memory _tokenURI) external onlyMinter
{
    require(bytes(_tokenURI).length != 0, "ERC721Creator: Missing tokenURI");
    _lastTokenId += 1;
    _safeMint(msg.sender, _lastTokenId);
    _setTokenURI(_lastTokenId, _tokenURI);
    tokenCreators[_lastTokenId] = msg.sender;
}

'''

Best Answer

The "clones" proxy was set up exactly for this purpose.

Please see the specification in EIP-1167 and their use cases.

But in general:

  1. You deploy your template code once
  2. For each customer deployment, you deploy a proxy to the underlying contract
  3. During customer deployment, you initialize any permissions necessary to vendor it for them
Related Topic