Edition Drop
When using the Edition Drop smart contract, additional top-level functionality is available to use.
To access the top-level functionality, use the get_edition_drop
method when creating the contract instance:
contract = sdk.get_edition_drop(
"{{contract_address}}",
)
The extensions that the edition drop contract supports are listed below.
- ERC1155
- ERC1155Enumerable
- ERC1155LazyMintable
- ERC1155ClaimPhases
- Royalty
- PlatformFee
- PrimarySale
- Permissions
- ContractMetadata
- Ownable
- Gasless
claim
Claim a specified number of tokens to the connected wallet.
token_id = 0
quantity = 1
tx = contract.claim(token_id, quantity)
receipt = tx.receipt
claimed_token_id = tx.id
claimed_nft = tx.data()
Configuration
claim_to
The same as claim
, but allows specifying the recipient
address rather than using the connected wallet.
address = "0x7fDae677aA6f94Edff9872C4b91D26407709c790"
token_id = 0
quantity = 1
tx = contract.claim_to(address, token_id, quantity)
receipt = tx.receipt
claimed_token_id = tx.id
claimed_nft = tx.data()
Configuration
recipient (required)
The wallet address to receive the claimed tokens.
Must be a string
.
token_id (required)
The token ID of the NFT you want to claim.
Must be an int
.
quantity (required)
The number of tokens to claim.
Must be an int
.
get_active
Retrieve the currently active claim phase for a specific token ID, if any.
active_phase = contract.claim_conditions.get_active(
"{{token_id}}",
)
Configuration
token_id (required)
The token ID of the NFT you want to get the claim conditions for.
Must be an int
.
Return Value
If there is no active claim phase, returns undefined
.
If a claim condition is active, returns a ClaimCondition
object containing the following properties:
{
maxClaimableSupply: string
startTime: Date
price: BigNumber
currencyAddress: string
maxClaimablePerWallet: string
waitInSeconds: BigNumber
merkleRootHash: string | number[]
availableSupply: string
currentMintSupply: string
currencyMetadata: {
symbol: string
value: BigNumber
name: string
decimals: number
displayValue: string
}
metadata?: {
[x: string]: unknown
name?: string | undefined
} | undefined
snapshot?: {
price?: string | undefined
currencyAddress?: string | undefined
address: string
maxClaimable: string
}[] | null | undefined
}
create_batch
Lazy mint a new batch of NFTs into the smart contract.
By default, the NFT metadata is uploaded and pinned to IPFS before minting.
You can override this default behavior by providing a string
that points to valid metadata instead of objects.
The metadata must conform to the metadata standards.
from thirdweb.types.nft import NFTMetadataInput, EditionMetadataInput
# Note that you can customize this metadata however you like
metadatas = [
EditionMetadataInput(
NFTMetadataInput.from_json({
"name": "Cool NFT",
"description": "This is a cool NFT",
"image": open("path/to/file.jpg", "rb"),
})
),
EditionMetadataInput(
NFTMetadataInput.from_json({
"name": "Cooler NFT",
"description": "This is a cooler NFT",
"image": open("path/to/file.jpg", "rb"),
})
)
]
txs = contract.create_batch(metadata)
first_token_id = txs[0].id
first_nft = txs[0].data()
Alternatively, you can provide a string
that points to valid metadata instead of objects.
metadata_one = EditionMetadataInput("ipfs://Qm...") # IPFS URI
metadata_two = EditionMetadataInput("https://my-nft-metadata.json") # Some other URL
txs = contract.create_batch([metadata_one, metadata_two])
Configuration
metadatas
Provide a list of either strings
that point to valid metadata properties, or EditionMetadataInput
objects
that contain
NFTMetadataInput
objects.
class NFTMetadataInput:
name: str
description: Optional[str] = None
image: Optional[str] = None
external_url: Optional[str] = None
animation_url: Optional[str] = None
background_color: Optional[str] = None
properties: Optional[Dict[str, Any]] = None
attributes: Optional[Dict[str, Any]] = None