start T1, expires in rand(0,τ) timer, expires in round 1
start T2, expires in rand(τ,2τ) timer, expires in round 2
announFirst = (rand(0,1) ≤ γ)
CAID = −1 ID of the cluster aggregator of the node
while T1 NOT expired do
if receive ENC(announcement) AND (CAID = −1) then
   CAID = ID of sender of announcement
end if
end while
T1 expired
if announFirst AND (CAID = −1) then
 broadcast ENC(announcement);
 CAID = ID of node itself;
else
 broadcast ENC(dummy);
end if
while T2 NOT expired do
if receive ENC(announcement) AND (CAID = −1) then
  CAID = ID of sender of announcement
end if
end while
T2 expired
if (NOT announFirst) AND (CAID = −1) then
 broadcast ENC(announcement);
 CAID = ID of node itself;
else
 broadcast ENC(dummy);
end if
Algorithm 1: Basic private cluster aggregator election algorithm.