Index Coop Resource Center
  • Welcome to The Index Coop.
  • Products
    • Trade
      • Index Coop Leverage Suite
      • Leverage Token Parameters
      • Leverage Token Keepers
      • Trading Interface Guide
      • Ripcord Guide
    • Earn
      • High Yield ETH Index (hyETH)
      • Interest Compounding ETH Index (icETH)
    • Asset Management
      • Product Development Process
      • Product Revenue Tokens (PRTs)
    • Legacy Products
      • How to Redeem Legacy Products
      • DeFi Pulse Index (DPI)
      • Bankless BED Index (BED)
      • Metaverse Index (MVI)
      • Diversified Staked ETH Index (dsETH)
      • Index Coop CoinDesk ETH Trend Index (cdETI)
      • Index Coop Large Cap Index (ic21)
      • ETH 2x Flexible Leverage Index (ETH2x-FLI)
      • BTC 2x Flexible Leverage Index (BTC2x-FLI)
      • Flexible Leverage Index- Polygon (FLI-Ps)
        • ETH 2x Flexible Leverage Index (ETH2x-FLI-P)
        • Inverse ETH Flexible Leverage Index (iETH-FLI-P)
        • BTC 2x Flexible Leverage Index (BTC2x-FLI-P)
        • Inverse BTC Flexible Leverage Index (iBTC-FLI-P)
        • MATIC 2x Flexible Leverage Index (MATIC2x-FLI-P)
        • Inverse MATIC Flexible Leverage Index (iMATIC-FLI-P)
      • Market Neutral Yield ETH (MNYe)
      • Bankless DeFi Innovation Index (GMI)
      • Data Economy Index (DATA)
      • Legacy Contract Addresses
      • Gitcoin Staked ETH Index (gtcETH)
  • Protocol
    • Index Protocol
      • Core Contracts
        • Set Token
        • Set Token Creator
        • Controller
        • Integration Registry
        • Price Oracle
        • Set Valuer
      • Modules
        • Basic Issuance Module
        • Debt Issuance Module v2
        • NAV Issuance Module
        • Trade Module
        • Streaming Fee Module
        • Wrap Module
        • Airdrop Module
        • Claim Module
        • Governance Module
        • Compound Leverage Module
        • Aave v2 Leverage Module
        • Aave v3 Leverage Module
        • Auction Rebalance Module
    • Set Protocol v2
    • Security and Audits
    • Contract Verification
    • Programmatic Redemptions
  • Resources
    • Governance
      • $INDEX - Governance Token
      • Index Improvement Proposals (IIP) Overview
        • IIP Step-by-Step
        • Governance Representatives
        • IIP Template
        • Product (DG) Template
      • Meta-Governance
      • Delegation
    • Data & Analytics
    • Multisigs
    • Press Kit
Powered by GitBook
On this page
  • Select Methods
  • absorb()
  • addAirdrop()
  • updateFeeRecipient()
  • updateAirdropFee()
  • initialize()
  1. Protocol
  2. Index Protocol
  3. Modules

Airdrop Module

PreviousWrap ModuleNextClaim Module

Last updated 1 year ago

The AirdropModule ()is a smart contract that enables managers to absorb tokens sent to the into the token's positions. With each SetToken, managers are able to specify 1) the airdrops they want to include, 2) an airdrop fee recipient, 3) airdrop fee, and 4) whether all users are allowed to trigger an airdrop.

Select Methods

absorb()

function absorb(ISetToken _setToken, IERC20 _token)

Valid Caller only. Absorb specified token into position. If airdropFee is defined, send portion to feeRecipient and portion to protocol feeRecipient address. Callable only by the manager unless the manager has set anyoneAbsorb to true.

Parameter Name

Type

Description

_setToken

ISetToken

Instance of the SetToken

_token

IERC20

Address of token to absorb

addAirdrop()

addAirdrop(ISetToken _setToken, IERC20 _airdrop)

Manager only. Adds new tokens to be added to positions when absorb is called.

Parameter Name

Type

Description

_setToken

ISetToken

Instance of the SetToken

_airdrop

IERC20

Component to add to airdrop list

updateFeeRecipient()

updateFeeRecipient(ISetToken _setToken, address _newFeeRecipient)

Manager only. Update address manager fees are sent to.

Parameter Name

Type

Description

_setToken

ISetToken

Instance of the SetToken

_newFeeRecipient

address

Address of new fee recipient

updateAirdropFee()

function updateAirdropFee( ISetToken _setToken, uint256 _newFee )

Manager only. Update airdrop fee percentage.

Parameter Name

Type

Description

_setToken

ISetToken

Instance of the SetToken

_newFee

uint256

Percentage, in preciseUnits, of new airdrop fee (1e16 = 1%)

initialize()

function initialize( ISetToken _setToken, AirdropSettings memory _airdropSettings )

Manager only. Initialize the module with SetToken and set initial airdrop tokens as well as specify whether anyone can call absorb.

Parameter Name

Type

Description

_setToken

ISetToken

Address of the SetToken

_airdropSettings

AirdropSettings

Struct of airdrop setting for Set including accepted airdrops, feeRecipient, airdropFee, and indicating if anyone can call an absorb

The AirdropSettings struct is constructed as follows:

struct AirdropSettings {
    address[] airdrops;                     // Array of tokens manager is allowing to be absorbed
    address feeRecipient;                   // Address airdrop fees are sent to
    uint256 airdropFee;                     // Percentage in preciseUnits of airdrop sent to feeRecipient (1e16 = 1%)
    bool anyoneAbsorb;                      // Boolean indicating if any address can call absorb or just the manager
}
Etherscan
SetToken