If you got a NFT collection and want to create a sale of NFTs that only mint your NFT in case someone buys it? This is one of the tools you may use. You can incorporate the sale on your website or sell it directly through atomichub, which most teams do. This guide require you to already have an Atomicasset collection set-up, if you don't have that, start there. Below you will find a video that walk through these steps.
Atomicdropsx is a great contract to use, but if you want more user interface, you can utilize the neftyblocks tools as well. You can find more on that in the NeftyBlocks parts
In here we will go through how you set up a drop, as well how you create a captcha drop, or a whitelist protected drop.
For atomicdropsx to work with your collection you will have to add atomicdropsx as an authorized account in your NFT collection, this can most easily be done through atomichub inside your collection settings. Just open up the Advanced details.
Here you find two links that are useful
Create drop on bloks: https://wax.bloks.io/account/atomicdropsx?loadContract=true&tab=Actions&account=atomicdropsx&scope=atomicdropsx&limit=100&action=createdrop
Epoch time: https://www.epochconverter.com/
Sometimes when you copy and paste the info below into bloks, you might get an error. It's because of the quotations, and you migth manually have to write the characters. The drop description accepts markdown for links, images etc, for a guide on how that works, check out this link: https://www.markdownguide.org/basic-syntax/
authorized_account: YOUR_COLLECTION_CREATOR
collection_name: NAME_OF_YOUR_COLLETION (max 12 char)
assets_to_mint: [{"template_id": TEMPLATE_ID, "tokens_to_back":[]}]
listing_price:
WAX: 1.00000000 WAX
settlement_symbol: 8,WAX
price_recipent: RECIEVER_OF_PAYMENTS
auth_required: IF_WHITELIST_OR_CAPTCHA
max_claimable: MAX_SALE_OF_NFTS_IN_THIS_DROP
account_limit: HOW_MANY_ONE_ACCOUNT_CAN_BUY
account_limit_cooldown: HOW_LONG_UNTIL_LIMIT_RESETS
start_time: TIME_IN_SECONDS_SINCE_EPOCH
end_time: TIME_IN_SECONDS_SINCE_EPOCH
display_data: {"name":"NAME OF YOUR DROP", "description": "INFORMATION ON YOUR DROP"}
If you want a free drop, with 0 cost, use these:
listing_price: 0 NULL
settlement_symbol: 0,NULL
If you want to lock the price of the drop according to USD price. Meaning if WAXP value drops, the sale price will increase in WAXP to balance out the USD. And the oposit if WAXP value increases. This is often appreciated by the community, and helps you automagically balance out the price fluctuations of the crypto market.
listing_price: 1.00 USD
settlement_symbol: 8,WAX
If you want to add captcha, key or whitelist to the sale.
Make sure you set auth_required to 1, then you need to create a key for the drop.
auth_required: 1
For captcha or key protected drops:
You will have to find the createkey action: https://wax.bloks.io/account/atomicdropsx?loadContract=true&tab=Actions&account=atomicdropsx&scope=atomicdropsx&limit=100&action=createkey
For this you will need to have the drop_id for the drop you just created. This can most easily be located in your transaction history for when creating the drop. The same ID will also be used to link to your sale through atomicdrops.
You may also use the createkey function to set any eosio key and only those with your exact link will be able to access that drop. How this works will be shared further down.
For captcha to work, you will enter a specific publickey that the atomichub backend will register as a captcha drop.
Captcha:
Authorized_account = your collection owner
drop_id = The ID of your drop, can be found in the transaction data when you create the drop.
For Captcha:
key = EOS86k3AuAyDR7szWR9QEu9m5MLXgcBZAag92U2N6iBiyC14j1PWa
Key protected drop:
You may also create drops protected by one or more privatekeys, this is great if you want to choose cho can access the drop. Although, remember that anyone that gets the link will be treated as the person you gave it to. But this is great, can be put on a QR code for an event and so forth. All you do is add a new publickey you created as the key in the "createkey" action on atomicdropsx, and then you use the privatekey associated with that publickey in the link. You can then limit that key to only work for X-amount of claims, or also add a cooldown for when that key resets and can be used again.
key_limit = how many NFTs can be claimed/bought with that key, set to 0 for no limit.
key_limit_cooldown = How long time in seconds until the key_limit resets, set to 0 if it should never reset
You can create a eosio key-pair in all eosio based wallets, like anchor, cleos etc. Key format:
Public: EOS6Qf7Z8bH38E31rgXk2Dv9N3xbobySqBaSzVsWZWj2znbcYaNyo
Private: 5Jm5fkBEyCBnVjSJHVxhhfW2yt6aES5gNLQzAPtbsaK7SQjXiRY
For the link, just add "?key=private_key" at the end:
Link format: https://wax.atomichub.io/drops/52951?key=5JpUoBFN54yoYcUrAK3vkZpDuSAZRNbGG2ggwRto6fJQDjrk3Sg
Protect your drop through Whitelisted accounts
This require you to set the auth_required to 1, just as the two options above. The accounts_to_add accepts an array of accounts.
Here's a link for the whitelist action on bloks: https://wax.bloks.io/account/atomicdropsx?loadContract=true&tab=Actions&account=atomicdropsx&scope=atomicdropsx&limit=100&action=addtowl
Authorized_account = Your authorized account
drop_id = The ID of your drop, can be found in the transaction data when you create the drop.
accounts_to_add = List of accounts you want to whitelist.
E.g:
["q4k5u.wam","hot.anyo","anyo"]
After a whitelisted sale, remember to clear the whitelist
Adding accounts to a whitelist consumes RAM on the WAX Blockchain. For you to free this ram, you will have to clear the whitelist after it has been used.
There are two options on atomicdropsx to do this:
1) Remove specific accounts (atomicdropsx::erasefromwl) - https://wax.bloks.io/account/atomicdropsx?loadContract=true&tab=Actions&account=atomicdropsx&scope=atomicdropsx&limit=100&action=erasefromwl
2) Remove all accounts from a deleted drop (atomicdropsx::clearwl) - https://wax.bloks.io/account/atomicdropsx?loadContract=true&tab=Actions&account=atomicdropsx&scope=atomicdropsx&limit=100&action=clearwl
The first action is mainly used to remove accounts from an active drop, and the second is to clean out the table after a sale is done. You will have to add a specific number of rows to remove, but this can be a larger number than how many is in your whitelist, e.g. if you got 459 accounts, you can add 666 as max_accounts_to_clear.
Summary
Atomicdropsx is a very powerful smart contract on WAX, publicly available for anyone to use to help sell your NFTs. You can interact with this smart contract directly with code if you want from any of the public API endpoints. Or through one of the block explorers, like above.