Features
- Price Discovery: Creators can set a min and a max ETH goal to raise. The starting price of the token goes up as more people buy into the presale.
- Optional Allowlists: Creators can opt to manage a merkle-root based allowlist with per-address overrides. See ClankerPresaleAllowlist for more details.
- Presale Tokens Lockup and Vesting: Presale tokens must be locked up for a minimum of 7 days post token creation, with optional vesting on top. This is to help ensure smooth post-launch market dynamics.
Fees
The Clanker team takes a 0% cut on raised funds for successful presales. All ETH raised goes directly to the creator. There is no fee for buyers on entering/exiting positions.This presale is not permissionless. If your team is interested in using this presale, please reach out to the Clanker team.
Creating a Presale
Presale creators need to provide the following to start a presale:presaleDuration: Maximum amount of time to run the presale for.maxEthGoal: Maximum amount of ETH to raise. If this number is hit, the presale stops accepting new bids and the token can be launched immediately.minEthGoal: Minimum ETH goal to hit for a presale to be considered successful. The token can be launched if this minimum is hit after the presale duration has passed or if the presale owner requests it.deploymentConfig: The token to deploy once a presale hits a success condition. This is a normal Clanker v4 deployment config with all features except the DevBuy fully accessible. The presale contract needs to be the last specified extension.presaleOwner: Address used to claim raised ETH and to manage the optional allowlist.lockupDuration: How long to lock up presale tokens for. Minimum 7-day lockup is required.vestingDuration(optional): How long to vest the presale tokens for. The vesting is linear and starts after the lockup period has ended. For example, if this is set to 10 days and the lockup duration is set to 10 days, on day 15 half of the supply would be claimable and on day 20 the token becomes fully claimable.allowlist(optional): Address of the allowlist module to use to manage the presale.allowlistInitializationData(optional): ABI-encoded data to pass to the allowlist module if it exists.
presaleId.
Participating in the Presale
Buying into a Presale
Buying into a presale is tax-free and is done with thebuyIntoPresale() function. The msg.value sent is used to buy into the presale. If the amount of ETH sent exceeds a presale’s maximum, the sender is refunded the excess.
buyIntoPresaleWithProof() function which forwards the proof data to the allowlist module.
Withdrawing from a Presale
Users are able to withdraw their funds from a presale if the presale has failed or if the presale has not yet reached the maximum ETH goal.Ending a Presale
Presales can end in either token deployment (success) or with all buyers being able to withdraw their funds tax-free (failed). Presales can be ended by calling theendPresale() function:
- The
maxEthGoalis hit at any point. - The
minEthGoalwas hit and thepresaleDurationhas passed. - The
minEthGoalis hit and the presale owner requests it to end early.
withdrawFromPresale() function.
Claiming Tokens
Claiming Tokens
Buyers of successful presales can claim their tokens through theclaimTokens() function. The tokens will be available as the lockup and vesting durations pass.
Claiming ETH
ThepresaleOwner is able to claim the raised ETH funds immediately after a presale has successfully deployed a token.