1. Daniele Sciascia
  2. libpaxos




This is LibPaxos3! A complete rewrite of LibPaxos2. LibPaxos3 has been improved in the following aspects:

  • Doesn't make use of multicast
  • Has a cleaner design
  • Has a better build system based on CMake
  • Comes with unit tests

LibPaxos3 is divided in two libraries: libpaxos and libevpaxos.

Libpaxos (see libpaxos/paxos) implements the core of the Paxos consensus protocol, and is not cluttered with network specific code. That is, libpaxos does not depend on any particular networking library.

Libevpaxos (see libpaxos/evpaxos) is the actual networked Paxos implementation. This library is built on top of the libpaxos and libevent.


These are the basic steps required to get and compile LibPaxos3

git clone https://bitbucket.org/sciascid/libpaxos.git
mkdir libpaxos/build
cd libpaxos/build
cmake ..

LibPaxos3 depends on libevent and msgpack. By default, LibPaxos3 uses an in-memory storage, with support for a storage backend based on LMDB (see paxos.conf and build options below).

LibPaxos3 should compile on Linux and OS X.

Useful build options

You pass options to cmake as follows: cmake -DOPTION=VALUE

  • LMDB_ROOT=PATH - point it to your installation of LMDB
  • LIBEVENT_ROOT=PATH - point it to your installation of Libevent
  • MSGPACK_ROOT=PATH - point it to your installation of MessagePack

Running the examples

cd libpaxos/build
./sample/acceptor 0 ../paxos.conf > /dev/null &
./sample/acceptor 1 ../paxos.conf > /dev/null &
./sample/proposer 0 ../paxos.conf > /dev/null &
./sample/learner ../paxos.conf > learner.txt &
./sample/client 1


See paxos.conf for a sample configuration file.

Unit tests

Unit tests depend on the Google Test library. Execute the tests using make test in your build directory, or run runtest from build/unit for detailed output.


LibPaxos project page

LibPaxos3 repository

Mailing list


LibPaxos3 is distributed under the terms of the 3-clause BSD license. LibPaxos3 has been developed at the University of Lugano, by Daniele Sciascia.