  We study population protocols, a model of distributed computing appropriate
for modeling well-mixed chemical reaction networks and other physical systems
where agents exchange information in pairwise interactions, but have no control
over their schedule of interaction partners. The well-studied *majority*
problem is that of determining in an initial population of $n$ agents, each
with one of two opinions $A$ or $B$, whether there are more $A$, more $B$, or a
tie. A *stable* protocol solves this problem with probability 1 by eventually
entering a configuration in which all agents agree on a correct consensus
decision of $A$, $B$, or $T$, from which the consensus cannot change. We
describe a protocol that solves this problem using $O(\log n)$ states ($\log
\log n + O(1)$ bits of memory) and optimal expected time $O(\log n)$. The
number of states $O(\log n)$ is known to be optimal for the class of stable
protocols that are "output dominant" and "monotone". These are two natural
constraints satisfied by our protocol, making it state-optimal for that class.
We use, and develop novel analysis of, a key technique called a "fixed
resolution clock" due to Gasieniec, Stachowiak, and Uznanski, who showed a
majority protocol using $O(\log n)$ time and states that has a positive
probability of error. Our protocol is *nonuniform*: the transition function has
the value $\left \lceil {\log n} \right \rceil$ encoded in it. We show that the
protocol can be modified to be uniform, while increasing the state complexity
to $\Theta(\log n \log \log n)$.
