Skip to main content

IDropERC20

Thirdweb's 'Drop' contracts are distribution mechanisms for tokens. The DropERC20 contract is a distribution mechanism for ERC20 tokens. A contract admin (i.e. holder of DEFAULT_ADMIN_ROLE) can create claim conditions with non-overlapping time windows, and accounts can claim the tokens according to restrictions defined in the claim condition that is active at the time of the transaction.

Methods

allowance

function allowance(address owner, address spender) external view returns (uint256)

Returns the remaining number of tokens that spender will be allowed to spend on behalf of owner through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.

Parameters

NameTypeDescription
owneraddressundefined
spenderaddressundefined

Returns

NameTypeDescription
_0uint256undefined

approve

function approve(address spender, uint256 amount) external nonpayable returns (bool)

Sets amount as the allowance of spender over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.

Parameters

NameTypeDescription
spenderaddressundefined
amountuint256undefined

Returns

NameTypeDescription
_0boolundefined

balanceOf

function balanceOf(address account) external view returns (uint256)

Returns the amount of tokens owned by account.

Parameters

NameTypeDescription
accountaddressundefined

Returns

NameTypeDescription
_0uint256undefined

claim

function claim(address receiver, uint256 quantity, address currency, uint256 pricePerToken, bytes32[] proofs, uint256 proofMaxQuantityPerTransaction) external payable

Lets an account claim a given quantity of tokens.

Parameters

NameTypeDescription
receiveraddressThe receiver of the tokens to claim.
quantityuint256The quantity of tokens to claim.
currencyaddressThe currency in which to pay for the claim.
pricePerTokenuint256The price per token (i.e. price per 1 ether unit of the token) to pay for the claim.
proofsbytes32[]The proof of the claimer's inclusion in the merkle root allowlist of the claim conditions that apply.
proofMaxQuantityPerTransactionuint256(Optional) The maximum number of tokens an address included in an allowlist can claim.

setClaimConditions

function setClaimConditions(IDropClaimCondition.ClaimCondition[] phases, bool resetClaimEligibility) external nonpayable

Lets a contract admin (account with DEFAULT_ADMIN_ROLE) set claim conditions.

Parameters

NameTypeDescription
phasesIDropClaimCondition.ClaimCondition[]Claim conditions in ascending order by startTimestamp.
resetClaimEligibilityboolWhether to reset limitLastClaimTimestamp and limitMerkleProofClaim values when setting new claim conditions.

totalSupply

function totalSupply() external view returns (uint256)

Returns the amount of tokens in existence.

Returns

NameTypeDescription
_0uint256undefined

transfer

function transfer(address to, uint256 amount) external nonpayable returns (bool)

Moves amount tokens from the caller's account to to. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.

Parameters

NameTypeDescription
toaddressundefined
amountuint256undefined

Returns

NameTypeDescription
_0boolundefined

transferFrom

function transferFrom(address from, address to, uint256 amount) external nonpayable returns (bool)

Moves amount tokens from from to to using the allowance mechanism. amount is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.

Parameters

NameTypeDescription
fromaddressundefined
toaddressundefined
amountuint256undefined

Returns

NameTypeDescription
_0boolundefined

Events

Approval

event Approval(address indexed owner, address indexed spender, uint256 value)

Parameters

NameTypeDescription
owner indexedaddressundefined
spender indexedaddressundefined
valueuint256undefined

ClaimConditionsUpdated

event ClaimConditionsUpdated(IDropClaimCondition.ClaimCondition[] claimConditions)

Emitted when new claim conditions are set.

Parameters

NameTypeDescription
claimConditionsIDropClaimCondition.ClaimCondition[]undefined

MaxTotalSupplyUpdated

event MaxTotalSupplyUpdated(uint256 maxTotalSupply)

Emitted when the global max supply of tokens is updated.

Parameters

NameTypeDescription
maxTotalSupplyuint256undefined

MaxWalletClaimCountUpdated

event MaxWalletClaimCountUpdated(uint256 count)

Emitted when the global max wallet claim count is updated.

Parameters

NameTypeDescription
countuint256undefined

TokensClaimed

event TokensClaimed(uint256 indexed claimConditionIndex, address indexed claimer, address indexed receiver, uint256 quantityClaimed)

Emitted when tokens are claimed.

Parameters

NameTypeDescription
claimConditionIndex indexeduint256undefined
claimer indexedaddressundefined
receiver indexedaddressundefined
quantityClaimeduint256undefined

Transfer

event Transfer(address indexed from, address indexed to, uint256 value)

Parameters

NameTypeDescription
from indexedaddressundefined
to indexedaddressundefined
valueuint256undefined

WalletClaimCountUpdated

event WalletClaimCountUpdated(address indexed wallet, uint256 count)

Emitted when the wallet claim count for an address is updated.

Parameters

NameTypeDescription
wallet indexedaddressundefined
countuint256undefined