# SeaDrop Integration

This page provides an overview of an integration solution for the Art Blocks Shared Minter Suite with OpenSea's SeaDrop system. This is a special integration that allows Art Blocks projects to be minted and sold on OpenSea via SeaDrop, and is not a standard integration with the Shared Minter Suite.

The integration requires a few non-standard steps to ensure that the SeaDrop contract can interact with the minter suite. The steps below outline the process for integrating SeaDrop with the Art Blocks Shared Minter Suite.


# Integration Process

The integration process follows the custom, one-off minter steps, and supports minting on any project that uses the Shared Minter Suite.

# 1. Artist configures their project

The artist configures their project as they normally would, using the Art Blocks Creator Dashboard.

The only exception is that the artist does not need to configure the minter for their project, as the minter will be configured separately as described in the following steps.

# 2. Deploy SeaDropXArtBlocksShim Contract

The SeaDropXArtBlocksShim contract is a custom contract that allows the SeaDrop contract to interact with the Shared Minter Suite. This contract must be deployed for each project that will be integrated with SeaDrop, in order to satisfy a 1:1 mapping between the shim contract and the project.

Deployment of the SeaDropXArtBlocksShim contract is a one-time process for each project, and may be deployed by anyone. Deployment of the shim contract requires the following parameters:

constructor(
        IMinterFilterV1 minterFilter_,
        ISeaDrop allowedSeaDrop_,
        IGenArt721CoreContractV3_Base genArt721Core_,
        uint256 projectId_
)

Note: The allowedSeaDrop_ parameter should be set to the address of the SeaDrop contract that will be used for the project, defined by OpenSea here: https://github.com/ProjectOpenSea/seadrop/blob/main/README.md#deployments

# 3. Admin approve minter for contract

Following the custom, one-off minter steps, the admin must approve the minter for the project's core contract.

Engine Admin calls approveMinterForContract on the shared minter filter contract (via e.g. etherscan or gnosis safe tx builder), passing in the address of their core contract, and the SeaDropXArtBlocksShim custom minter contract

# 3. Artist configures the custom minter for their project

Following the custom, one-off minter steps, the artist will need to configure the custom minter for their project. The artist will need to configure the custom minter via etherscan, etc. Note that the typical minter filter function for setting a minter for a project, setMinterForProject should be used by the artist or admin to assign the custom minter for the project.

# 4. Artist configures their drop on OpenSea's Studio

The artist will need to configure their drop on OpenSea's Studio.

A general guide for configuring a drop on OpenSea Studio is published by OpenSea here: https://docs.opensea.io/docs/part-2-edit-collection-settings

In OpenSea Studio, the artist should see a new contract available to edit, which will be the SeaDropXArtBlocksShim contract. The artist should configure the drop as they normally would, using the OpenSea Studio interface.

A few options that don't make sense for Art Blocks projects, such as IPFS metadata (Art Blocks projects are on-chain), should be left blank.

If SeaDrop is configured to sell less tokens than the project's max invocations, minting on OpenSea will be limited to whatever is configured in SeaDrop.

# 5. Notify OpenSea of the integration

The artist should notify Art Blocks and OpenSea of the integration, so that the OpenSea team can ensure that the integration is properly displayed on their website. The shim contract must be properly configured to point to the correct project ID for items to intuitively show up in the OpenSea UI.

# 6. Enjoy!

Your Art Blocks tokens are now available for sale on OpenSea via SeaDrop!


# Shim Contract Details

The diagram below illustrates the relationship between different entities and the SeaDropXArtBlocksShim contract, the Shared Minter Suite, and the SeaDrop contract.

---
title: Art Blocks x Sea Drop Integration Solution
---
flowchart LR
    SeaDrop --mint--> SeaDropXArtBlocksShim
    id2((admin)) --approve-minter-for-contract--> SharedMinterFilter
    SeaDropXArtBlocksShim --mint--> SharedMinterFilter
    SharedMinterFilter --mint--> GenArt721
    SeaDropXArtBlocksShim --read--> GenArt721
    id1((artist)) --configures drop (OpenSea-UI)--> SeaDropXArtBlocksShim
    id1 --configures project--> GenArt721
    id1 --set-project-minter--> SharedMinterFilter
    id3((collector)) --purchase--> SeaDrop