Comment on page
ExtraRewardsMultiMerkle
This smart contract's purpose is to hold the rewards coming from votes on gauge incentives for users that delegated their voting power to the Paladin delegation address
(current delegation address is : 0x68378fCB3A27D5613aFCfddB590d35a6e751972C)
The distribution process is :
- Paladin claims all rewards for the users, and swap everything to USDC
- The Merkle Root in this smart contract is frozen, allowing to calculate the round rewards to be added to each user, based on the votes they delegated, and the previous amounts claimed or not by the user (allowing users to accumulate the rewards to claim it all at once).
- A new Merkle Root is generated and updated in this smart contract, allowing users to claim their rewards.
Here are the useful methods on this smart contract :
struct ClaimParams {
address token;
uint256 index;
uint256 amount;
bytes32[] merkleProof;
}
Checks if the rewards were claimed for an index
- token : address of the token to claim
- index : Index of the claim
Returns : bool : true if already claimed
isClaimed(address token, uint256 index) public view returns (bool)
Claims rewards for a given token for the user
- token : Address of the token to claim
- index : Index in the Merkle Tree
- account : Address of the user claiming the rewards
- amount : Amount of rewards to claim
- merkleProof : Proof to claim the rewards
function claim(address token, uint256 index, address account, uint256 amount, bytes32[] calldata merkleProof) public
Claims multiple rewards for a given list of ClaimParams
- account : Address of the user claiming the rewards
- claims : List of ClaimParams struct data to claim
function multiClaim(address account, ClaimParams[] calldata claims) external
Freezes the given token
- token : Address of the token to freeze
function freezeRoot(address token) public
Udpates the Merkle Root for a given token
- token : Address of the token
- root : Merkle Root
function updateRoot(address token, bytes32 root) public
Last modified 2mo ago