In this section, we explore the theoretical foundations which we use to build our distributed voting protocols.