mirror of
https://github.com/logos-messaging/waku-rlnv1-contract.git
synced 2026-01-04 07:13:12 +00:00
feat: use mapping to track memberships (a la ring buffer)
This commit is contained in:
parent
c3654409a0
commit
e800707d6c
@ -63,4 +63,34 @@ contract Membership {
|
||||
// Membership expiration term T 180 days
|
||||
// Membership grace period G 30 days
|
||||
}
|
||||
|
||||
mapping (uint256 => TODO) memberships;
|
||||
|
||||
uint256 private oldest = 1;
|
||||
uint256 private newest = 1;
|
||||
|
||||
// TODO - use a struct to store the membership details: commitment, date, status
|
||||
// TODO - keep track of balances, use msg.sender?
|
||||
|
||||
function pushMembership(TODO data) internal {
|
||||
newest += 1;
|
||||
memberships[newest] = data;
|
||||
}
|
||||
|
||||
function oldestMembership() public TODO {
|
||||
return memberships[oldest];
|
||||
}
|
||||
|
||||
function popOldestMembership() public returns (uint256) {
|
||||
TODO data;
|
||||
require(newest > oldest);
|
||||
data = memberships[oldest];
|
||||
delete memberships[oldest];
|
||||
oldest += 1;
|
||||
return data;
|
||||
}
|
||||
|
||||
function length() public view returns (uint256) {
|
||||
return newest - oldest;
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user