Skip to main content

MembershipCollector

MembershipCollector​

Deployment on Ethereum mainnet:

https://etherscan.io/address/0x5ccFa5fec4Db2543D3995DC5419a13b6e99eA7A1

Responsible for receiving USDC from ERC20Splitter, using it to acquire fidu, and allocating it to epochs, where it can be claimed by membership participants.

InvalidReceiveCaller​

error InvalidReceiveCaller()

EpochFinalized​

event EpochFinalized(uint256 epoch, uint256 totalRewards)

Emitted once epoch has been finalized and will no longer change

Parameters​

NameTypeDescription
epochuint256epoch that is now finalized
totalRewardsuint256all of the rewards in that epoch

lastCheckpointAt​

uint256 lastCheckpointAt

The last block.timestamp when epochs were finalized. The last finalized epoch is the most recent epoch that ends before lastCheckpointAt.

rewardsForEpoch​

mapping(uint256 => uint256) rewardsForEpoch

A mapping of epochs to fidu reward amounts

firstRewardEpoch​

uint256 firstRewardEpoch

The first epoch rewards should be provided in

constructor​

constructor(contract Context _context, uint256 _firstRewardEpoch) public

onReceive​

function onReceive(uint256 amount) external returns (bytes4)

Receive handler for the reserve ERC20Splitter. This handler uses the USDC amount it has received to acquire fidu from the senior pool and distribute it across epochs that have elapsed since the last distribution. The fidu rewards are distributed proportionaly across epochs based on their portion of total elapsed time. Once an epoch has passed, it is consider "finalized" and no longer considered for future runs of this function.

Parameters​

NameTypeDescription
amountuint256USDC reward amount

Return Values​

NameTypeDescription
[0]bytes4The 4 byte selector required by IERC20SplitterReceiver

finalizeEpochs​

function finalizeEpochs() external

Finalize all unfinalized epochs. Causes the reserve splitter to distribute if there are unfinalized epochs so all possible rewards are distributed.

estimateRewardsFor​

function estimateRewardsFor(uint256 epoch) external view returns (uint256)

Estimate rewards for a given epoch. For epochs at or before lastFinalizedEpoch this will be the fixed, accurate reward for the epoch. For the current and other non-finalized epochs, this will be the value as if the epoch were finalized in that moment.

Parameters​

NameTypeDescription
epochuint256epoch to estimate the rewards of

Return Values​

NameTypeDescription
[0]uint256rewards associated with epoch

distributeFiduTo​

function distributeFiduTo(address addr, uint256 amount) external

Have the collector distribute amount of Fidu to addr

Parameters​

NameTypeDescription
addraddressaddress to distribute to
amountuint256amount to distribute

allocateToElapsedEpochs​

function allocateToElapsedEpochs(uint256 fiduAmount) internal

lastFinalizedEpoch​

function lastFinalizedEpoch() public view returns (uint256)

The last epoch whose rewards should be considered finalized and ready to be claimed