Merkle-Airdrop
Introduction
The Merkle-Airdrop ADO is a smart contract that allows projects to launch airdrops using the Merkle-tree (hashing). Uses the same logic of the base cw20-merkel-airdrop contract. If you do not know what is a Merkle-airdrop and how it is different from a normal airdrop, please refer to the following article.
The merkle airdorp can be used to either airdrop CW20 tokens or native tokens.
In case of CW20 tokens, the airdrop ADO should be the owner of the CW20 tokens to distribute.
Ado_type: merkle-airdrop
Version: 2.1.0
InstantiateMsg
pub struct InstantiateMsg {
pub asset_info: Asset,
pub kernel_address: String,
pub owner: Option<String>
}
asset_info
The assets to airdrop. Can be either a native token or a CW20.
kernel_address
String
owner
Option<String>
Optional address to specify as the owner of the ADO being created. Defaults to the sender if not specified.
ExecuteMsg
RegisterMerkleRoot
Sets the provided Merkle-root that contains the whitelisted addresses that can claim tokens from the airdrop.
Only the owner can execute RegisterMerkleRoot
.
pub enum ExecuteMsg {
RegisterMerkleRoot {
merkle_root: String,
expiration: Option<Expiry>,
total_amount: Option<Uint128>,
}
}
merkle_root
String
A hex-encoded Merkle root.
expiration
An optional expiration for the root. Defaults to never if not specified.
total_amount
Option<Uint128>
An optional amount to specify the maximum number of tokens that can be claimed from the airdrop.
Claim
Claims the funds assigned to the address executing the claim.
Only addresses found in the Merkle-Root can claim tokens.
pub enum ExecuteMsg{
Claim {
stage: u8,
amount: Uint128,
proof: Vec<String>,
}
}
stage
u8
Stage is used to index which airdrop to claim from. There can be more than one airdrop and each is referenced by it's designated stage.
amount
Uint128
The amount of tokens to claim.
proof
Vec<String>
Burn
Burn the remaining tokens (unclaimed) after expire time for the specified stage
.
Only the owner can execute Burn
.
pub enum ExecuteMsg{
Burn {
stage: u8,
}
}
stage
u8
The stage of the airdrop used to specify which airdrop to execute burn on.
Base Executes
The rest of the execute messages can be found in the ADO Base section.
Query
Config
pub enum QueryMsg {
#[returns(ConfigResponse)]
Config {}
}
ConfigResponse
pub struct ConfigResponse {
pub asset_info: Asset,
}
asset_info
The type of Asset.
MerkleRoot
Queries the Merkle-Root for the specified stage
.
pub enum QueryMsg {
#[returns(MerkleRootResponse)]
MerkleRoot {
stage: u8
}
}
stage
u8
The stage which we want to get the Merkle root for.
MerkleRootResponse
pub struct MerkleRootResponse {
pub stage: u8,
pub merkle_root: String,
pub expiration: Expiration,
pub total_amount: Uint128,
}
stage
u8
The stage that belongs to this root.
merkle_root
String
The Merkle-Root of this stage.
expiration
The expiration for the airdrop of this stage.
total_amount
Uint128
The total amount of funds to be airdropped belonging to this stage.
LatestStage
Queries the last stage.
pub enum QueryMsg {
#[returns(LatestStageResponse)]
LatestStage {}
}
LastStageResponse
pub struct LatestStageResponse {
pub latest_stage: u8,
}
IsClaimed
Checks if the specified address
has claimed the airdrop tokens.
pub enum QueryMsg {
#[returns(IsClaimedResponse)]
IsClaimed {
stage: u8,
address: String
}
}
stage
u8
The stage to check.
address
String
The address to check.
IsClaimedResponse
pub struct IsClaimedResponse {
pub is_claimed: bool,
}
is_claimed
bool
Returns true if the funds have claimed and false otherwise.
TotalClaimed
pub enum QueryMsg {
#[returns(TotalClaimedResponse)]
TotalClaimed {
stage: u8
}
}
stage
u8
The stage to check the amount claimed.
TotalClaimedResponse
pub struct TotalClaimedResponse {
pub total_claimed: Uint128,
}
total_claimed
Uint128
The stage to check the amount claimed.
Base Queries
The rest of the query messages can be found in the ADO Base section.
Last updated
Was this helpful?