Creating a Contract
All 1155 contracts created from Freee are deployed by calling a central factory contract.
When calling this factory it will deploy a minimal proxy contract that is upgradeable. All upgrades are opt-in and must be done manually on a per contract basis by the user.
View the list of deployed contract addresses here.
Calling the Factory Contract
The createContract
function on the factory is responsible for deploying a new 1155 contract.
The setupActions
parameter allows for multiple actions to be called when deploying the contract.
Such as creating a token and sale in the same transaction as deploying the contract.
contractURI
: The URI for the contract metadataname
: The name of the contractdefaultRoyaltyConfiguration
: The default royalty configuration for the contractdefaultAdmin
: The default admin for the contractsetupActions
: The actions to perform on the new contract upon initialization (optional)
function createContract(
string calldata newContractURI,
string calldata name,
ICreatorRoyaltiesControl.RoyaltyConfiguration memory defaultRoyaltyConfiguration,
address payable defaultAdmin,
bytes[] calldata setupActions
) external returns (address)
The contract supports multicall so multiple functions can be called to set up the contract in a single transaction.
Royalty Configuration
The defaultRoyaltyConfiguration
sets contract-wide royalties.
Note, that royalties can also be set at the token level.
The parameter can be passed in with the following details:
royaltyMintSchedule
: 1/N tokens are minted to the royalty recipientroyaltyBPS
: The royalty amount in basis points for secondary sales.royaltyRecipient
: The address that will receive the royalty payments.
struct RoyaltyConfiguration {
uint32 royaltyMintSchedule;
uint32 royaltyBPS;
address royaltyRecipient;
}
Contract URI
The Contract URI contains contract specific details. This metadata is stored in a JSON file on IPFS.
The uri is retrieved via the contractURI()
call on the contract.
type CollectionMetadata = {
name?: string
description?: string
image?: string
imageURI?: string
animation_url?: string
animationURI?: string
seller_fee_basis_points?: string
seller_fee_recipient?: string
storefront?: {
theme?: StorefrontTheme
}
}
Setup Actions
An optional param that is encoded function data that can be passed in and can call a separate function within the contract. This allows creating a token and setting permissions in the same transaction of creating the contract. Actions that can be called:
Creating a token
Setting the salesConfig
Granting permissions/minter role
Admin minting tokens
Last updated