Skip to content
artsunami
HelpMechanic

Whitelist (Merkle allowlist)

An allowlist is a snapshot of addresses authorised to mint during a private phase. artsunami stores it as a Merkle root in the contract - gas-efficient, no on-chain CSV.

Why Merkle

Storing a list of 5,000 addresses on chain would cost an absurd amount of gas (~22 k gas per slot × 5,000). Instead the contract stores one bytes32 - the Merkle root - which compresses any list into 32 bytes. At mint time, the buyer's wallet submits a 'proof' (a tiny array of hashes) and the contract verifies the proof matches the root.

How you supply the list

In the /create/edition or /create/generative wizard, paste your CSV (one address per line, optionally followed by a max-mint count). The wizard runs keccak256 over each entry, builds the tree, and you sign the deploy with the resulting root. The wizard writes the Merkle root on-chain with setAllowlist() AND publishes the address list inside the contract metadata, so the Collect page rebuilds each visitor's proof by itself and calls mintAllowlist(). You host nothing at mint time.

Discount price

The allowlist phase can have its own price (typically a discount). The contract stores both prices and routes the user to the right one based on whether they submit a valid proof and which phase is active.

Snapshots

If you're allowlisting holders of another collection, take a snapshot of holders at a chosen block via Etherscan or a tool like Snapshot.org, dump the addresses, and feed them in. The proof system doesn't care where the list came from.

Need a personalised answer?

Nami lives at the top of the Help center. It knows every topic in this center and can walk you through your specific collection, wallet or transaction.