Collection canister is configured via initArgs.did
file.
Customize initArgs.did
before you deploy the canister.
(
principal "rrkah-fqaaa-aaaaa-aaaaq-cai", // your canister id
record {
name = "Collection Name";
sale = variant { supply = 10_000 };
salePrices = vec {
record {
ledger = principal "ryjl3-tyaaa-aaaaa-aaaba-cai";
price = 700_000_000; // 7 ICP
};
};
publicSaleStart = 1680696181381000000;
salesDistribution = vec {};
royalties = vec {};
marketplaces = vec {
record { "entrepot"; "ccfe146bb249b6c59e8c5ae71a1b59ddf85d9f9034611427b696f8b25d7b826a"; 500 };
};
revealDelay = variant { hours = 24 };
airdrop = vec {};
whitelists = vec {};
}
)
name = "Collection Name";
- Fixed collection size
sale = variant { supply = 10_000 };
- No definite collection size and can be minted within a given time (starting after
publicSaleStart
)
sale = variant {
duration = variant { days = 30 };
};
salePrices = vec {
record {
ledger = principal "ryjl3-tyaaa-aaaaa-aaaba-cai";
price = 700_000_000; // 7 ICP
};
record {
ledger = principal "fua74-fyaaa-aaaan-qecrq-cai";
price = 1100_000_000; // 11 SEED
limit = opt 100; // max 100 NFTs can be purchased with this ledger
};
// other ledgers...
};
When public sale start time in nanoseconds.
publicSaleStart = 1680696181381000000;
Sales distribution.
Total percent must be 100%
1000 == 1%
salesDistribution = vec {
record { "<address1>"; <percent1> };
record { "<address2>"; <percent2> };
// ...
};
Example:
salesDistribution = vec {
record { "k2t6j-2nvnp-4zjm3-25dtz-6xhaa-c7boj-5gayf-oj3xs-i43lp-teztq-6ae"; 55000 }; // 55%
record { "dwx4w-plydf-jxgs5-uncbu-mfyds-5vjzm-oohax-gmvja-cypv7-tmbt4-dqe"; 45000 }; // 45%
};
Secondary market royalties.
Typically, total <= 10%
Example:
royalties = vec {
record { "k2t6j-2nvnp-4zjm3-25dtz-6xhaa-c7boj-5gayf-oj3xs-i43lp-teztq-6ae"; 500 }; // 0.5%
record { "dwx4w-plydf-jxgs5-uncbu-mfyds-5vjzm-oohax-gmvja-cypv7-tmbt4-dqe"; 300 }; // 0.3%
};
Allowed marketplaces.
At least one marketplace must be specified.
First marketplace is default.
1000 == 1%
Marketplace royalties are paid out twice. One to the seller marketplace(where NFT was listed), and one to the buyer marketplace(where NFT was bought).
If an NFT is listed and bought on the same marketplace, it will receive 2x royalty fee.
marketplaces = vec {
record { "<name1>"; "<address1>"; <fee_percent1> };
record { "<name2>"; "<address2>"; <fee_percent2> };
// ...
};
Example:
marketplaces = vec {
record { "entrepot"; "ccfe146bb249b6c59e8c5ae71a1b59ddf85d9f9034611427b696f8b25d7b826a"; 500 }; // 0.5%
record { "yumi"; "ccfe146bb249b6c59e8c5ae71a1b59ddf85d9f9034611427b696f8b25d7b826a"; 450 }; // 0.45%
record { "jelly"; "ccfe146bb249b6c59e8c5ae71a1b59ddf85d9f9034611427b696f8b25d7b826a"; 300 }; // 0.3%
};
Place the nearest and cheapest whiteslist first.
whitelists = vec {
record {
name = "ethflower";
salePrices = vec {
record {
ledger = principal "ryjl3-tyaaa-aaaaa-aaaba-cai";
price = 350000000; // 3.5 ICP
};
};
oneTimeOnly = true; // whitelist addresses are removed after purchase
startTime = 1681992566953000000;
endTime = opt 1681992566953000000; // can be omitted
addresses = vec {
"da1fae1e25a417ab70953983a0c83ae5d7ee68ea83b1ac7b291246a29c87cc04";
"d29028c05d4b3a4e54b2c9040dd6d5acf8d79308b28344898729a0de0a52b241";
// ...
};
};
record {
name = "modclub";
salePrices = vec {
record {
ledger = principal "ryjl3-tyaaa-aaaaa-aaaba-cai";
price = 500000000; // 5 ICP
};
};
oneTimeOnly = false;
startTime = 1681992566953000000;
endTime = opt 1681992566953000000;
addresses = vec {
"b35858170c410ce65ae3dc9d36298766aa36d287854fe43dcb65998f19bc5881";
"68b9a81e80a707742e8639d92e69e629734c1bd7da330a7bef67247f80ea72dc";
// ...
};
};
};
The last whitelist endTime
is typically equal to publicSaleStart
.
airdrop = vec { "<address1>"; "<address2>"... };
How long to delay assets shuffling and reveal (starting after publicSaleStart
)
variant { none }
- assets will be revealed immediately and assets shuffling will be disabled
revealDelay = variant { hours = 24 };
Default values are used for the following settings if they are not specified in initArgs.did
or equal to null
// true - the entire collection will consists of only one asset, meaning all NFTs look the same
// false - there are at least two different assets in the collection
singleAssetCollection = opt false;
escrowDelay = opt variant { minutes = 2 }; // How much time does the user have to transfer ICP
marketDelay = opt variant { days = 2 }; // How long to delay market opening (2 days after public sale started or when sold out)
timersInterval = opt variant { seconds = 60 }; // Interval for sending deferred payments
Default null
dutchAuction = opt record {
target = { everyone }; // dutch auction for everyone
// target = { whitelist }; // dutch auction for whitelist(tier price is ignored), then salePrice for public sale
// target = { publicSale }; // tier price for whitelist, then dutch auction for public sale
startPrice = 21500000000; // start with 350 icp for dutch auction
intervalPriceDrop = 500000000; // drop 5 icp every interval
reservePrice = 500000000; // reserve price is 5 icp
interval = 60000000000; // 1 minute
};
Default null
// true - the collection has the placeholder stored at the 0 index of the asset array
// false - the placeholder has its on stable variable in the canister
legacyPlaceholder = opt false
Default null
restoreEnabled : ?Bool; // must be null (see backup/README.md for details)