Selling an ERC-1155 token
Once a token has been created, it can then be put up for sale. Minter strategy contracts are separate contracts that hold minting logic, but the main 1155 is called for minting. Check out the minting section to learn more about minters.
To create a sale you must use the callSale
function on the 1155 contract.
This will set the sale in the appropriate minter.
function callSale(
uint256 tokenId,
IMinter1155 salesConfig, // Minter Strategy Contract
bytes memory data
)
The data that is passed into the minter is used to call the setSale
function.
Each minter has a unique salesConfig.
function setSale(uint256 tokenId, SalesConfig memory salesConfig)
Fixed Price Sale
Calling callSale
on an 1155 contract will create a sale for an NFT, but the FIXED_PRICE_SALE_STRATEGY
address must be specified.
The salesConfig
for a fixed price is structured as follows:
struct SalesConfig {
uint64 saleStart;
uint64 saleEnd;
uint64 maxTokensPerAddress;
uint96 pricePerToken; // Price in Wei
address fundsRecipient; // Where to send the funds
}
Merkle Sale
Create a allow list sale with a Merkle proof.
Note, the price and the max mint amount per address are specified when creating the Merkle tree. The Merkle sales config is as follows:
struct MerkleSaleSettings {
uint64 presaleStart;
uint64 presaleEnd;
address fundsRecipient;
bytes32 merkleRoot;
}
Royalty
Royalties are set on the main 1155 contract.
royaltyBPS
: The royalty amount in basis points for secondary sales.royaltyRecipient
: The address that will receive the royalty payments.
*Note*: The
royaltyMintSchedule argument has been deprecated.
struct RoyaltyConfiguration {
uint32 royaltyMintSchedule;
uint32 royaltyBPS;
address royaltyRecipient;
}
This can be set at both the contract and token level.
function updateRoyaltiesForToken(
uint256 tokenId,
RoyaltyConfiguration memory newConfiguration
)