mirror of
https://github.com/logos-messaging/waku-rlnv1-contract.git
synced 2026-01-08 01:03:08 +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 expiration term T 180 days
|
||||||
// Membership grace period G 30 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