SablierMerkleBase
Inherits: ISablierMerkleBase, Adminable
Title: SablierMerkleBase
See the documentation in ISablierMerkleBase.
State Variables
CAMPAIGN_START_TIME
The timestamp at which campaign starts and claim begins.
This is an immutable state variable.
uint40 public immutable override CAMPAIGN_START_TIME
CLAIM_TYPE
Retrieves the claim type supported by the campaign.
This is an immutable state variable.
ClaimType public immutable override CLAIM_TYPE
COMPTROLLER
Retrieves the address of the comptroller contract.
address public immutable override COMPTROLLER
EXPIRATION
The cut-off point for the campaign, as a Unix timestamp. A value of zero means there is no expiration.
This is an immutable state variable.
uint40 public immutable override EXPIRATION
IS_SABLIER_MERKLE
Returns true indicating that this campaign contract is deployed using the Sablier Factory.
This is a constant state variable.
bool public constant override IS_SABLIER_MERKLE = true
MERKLE_ROOT
The root of the Merkle tree used to validate the proofs of inclusion.
This is an immutable state variable.
bytes32 public immutable override MERKLE_ROOT
TOKEN
The ERC-20 token to distribute.
This is an immutable state variable.
IERC20 public immutable override TOKEN
campaignName
Retrieves the name of the campaign.
string public override campaignName
firstClaimTime
Retrieves the timestamp when the first claim is made, and zero if no claim was made yet.
uint40 public override firstClaimTime
ipfsCID
The content identifier for indexing the campaign on IPFS.
An empty value may break certain UI features that depend upon the IPFS CID.
string public override ipfsCID
minFeeUSD
Retrieves the min USD fee required to claim the airdrop, denominated in 8 decimals.
The denomination is based on Chainlink's 8-decimal format for USD prices, where 1e8 is $1.
uint256 public override minFeeUSD
_claimedBitMap
Packed booleans that record the history of claims.
BitMaps.BitMap internal _claimedBitMap
Functions
notZeroAddress
Modifier to check that to is not zero address.
modifier notZeroAddress(address to) ;
revertIfNot
Modifier to revert if claimType value does not match the campaign's claim type.
modifier revertIfNot(ClaimType claimType) ;
constructor
Constructs the contract by initializing the immutable state variables.
constructor(MerkleBase.ConstructorParams memory baseParams) [Adminable](/docs/reference/airdrops/contracts/abstracts/abstract.Adminable.md)(baseParams.initialAdmin);
calculateMinFeeWei
Calculates the minimum fee in wei required to claim the airdrop.
function calculateMinFeeWei() external view override returns (uint256);
hasClaimed
Returns a flag indicating whether a claim has been made for a given index.
Uses a bitmap to save gas.
function hasClaimed(uint256 index) public view override returns (bool);
Parameters
| Name | Type | Description |
|---|---|---|
index | uint256 | The index of the recipient to check. |
hasExpired
Returns a flag indicating whether the campaign has expired.
function hasExpired() public view override returns (bool);
clawback
Claws back the unclaimed tokens.
Emits a {Clawback} event. Requirements:
msg.sendermust be the admin.- No claim must be made, OR The current timestamp must not exceed 7 days after the first claim, OR The campaign must be expired.
function clawback(address to, uint128 amount) external override onlyAdmin;
Parameters
| Name | Type | Description |
|---|---|---|
to | address | The address to receive the tokens. |
amount | uint128 | The amount of tokens to claw back. |
lowerMinFeeUSD
Lowers the min USD fee.
Emits a {LowerMinFeeUSD} event. Requirements:
msg.sendermust be the comptroller.- The new fee must be less than the current {minFeeUSD}.
function lowerMinFeeUSD(uint256 newMinFeeUSD) external override;
Parameters
| Name | Type | Description |
|---|---|---|
newMinFeeUSD | uint256 | The new min USD fee to set, denominated in 8 decimals. |
sponsor
Sponsors the claim fees for eligible recipients.
Emits a {Sponsor} event. Notes:
- This function only makes the payment. The claim fees are updated only after the payment has been verified off-chain.
- Refer to the Sablier website in order to sponsor with the correct token, otherwise the sponsorship may be ignored. Requirements:
billermust not be the zero address.amountmust be greater than zero.tokenmust not be the zero address and must be a valid ERC20 token.msg.sendermust have approved the contract to spend the tokens.
function sponsor(IERC20 token, uint128 amount, address biller) external override notZeroAddress(biller);
Parameters
| Name | Type | Description |
|---|---|---|
token | IERC20 | The ERC-20 token to transfer. |
amount | uint128 | The amount of tokens to transfer. |
biller | address | The address to receive the tokens. |
_hasGracePeriodPassed
Returns a flag indicating whether the grace period has passed.
The grace period is 7 days after the first claim.
function _hasGracePeriodPassed() private view returns (bool);
_preProcessClaim
See the documentation for the user-facing functions that call this internal function.
function _preProcessClaim(
uint256 index,
address recipient,
uint128 amount,
bytes32[] calldata merkleProof
)
internal;