Summary
The Segment struct has a member_count: u64 field, but it is initialized to 0 in create_segment and never modified by add_member or remove_member. The actual membership count is tracked separately in DataKey::MemberCount(segment_id) persistent storage. Anyone calling get_segment sees a segment with member_count = 0 regardless of how many members have been added.
Location
contracts/audience-segments/src/lib.rs
// In create_segment:
let segment = Segment {
member_count: 0, // ❌ never updated after creation
...
};
// In add_member: only MemberCount(segment_id) is updated, not segment.member_count
Fix
Either remove member_count from the Segment struct (use get_member_count for the authoritative value), or update segment.member_count in add_member and remove_member when the segment record is modified.
Summary
The
Segmentstruct has amember_count: u64field, but it is initialized to 0 increate_segmentand never modified byadd_memberorremove_member. The actual membership count is tracked separately inDataKey::MemberCount(segment_id)persistent storage. Anyone callingget_segmentsees a segment withmember_count = 0regardless of how many members have been added.Location
contracts/audience-segments/src/lib.rsFix
Either remove
member_countfrom theSegmentstruct (useget_member_countfor the authoritative value), or updatesegment.member_countinadd_memberandremove_memberwhen the segment record is modified.