This contract is used to handle the weekly distribution of EPS to veCRV holders within the Curve DAO.

Each week a new snapshot is generated according to a publicly available script on Github. The proposalAuthority (the Ellipsis team) submits the hash of the proof on-chain, and then the reviewAuthority (the Curve team) accepts or rejects it. Once the proof is accepted, the receivers may begin to claim immediately.

You can view source for MerkleDistributor on Github.

claim(uint merkleIndex, uint index, uint amount, bytes32[] merkleProof)

Submit a proof to claim an airdrop.

  • merkleIndex: Index of the merkle root within merkleRoots to claim against.

  • index: Index of the claim within the merkle hash.

  • amount: Amount of tokens being claimed. Must be the full amount received in the airdrop.

  • merkleProof: Proof to validate the claim.

Proofs are available on Github.

isClaimed(uint256 merkleIndex, uint256 index)

Check the status of a claim.

proposalAuthority() returns (address)

Address that may propose a new merkle hash each week.

reviewAuthority() returns (address)

Address that can approve or reject the proposed merkle hash.

merkleRoots(uint256 i) returns (bytes32)

Array of active merkle hashes that may be claimed against.

pendingMerkleRoot() returns (bytes32)

The current proposed merkle hash, awaiting approval.

lastRoot() returns (uint256)

Timestamp that the last merkle hash was proposed at. A new hash may only be added at minimum once per week.