Paxos Procedure

Hi, developers!

I am reading on Aerospike codes. I have a little trouble about the Paxos implement.

As we know, the classical Paxos algorithm consists of two phases: the first is PREPARE and PREOMISE while the second is ACCEPT. In the second phase, proposer will send the value to the acceptors.

In the Aerospike implementation, I notice it has three phases: PREPARE, COMMIT and CONFIRM. Moreover, I figured out that the phase PREPARE and COMMIT share the same code flow. In my opinion, both phases do the same thing twice. I am confused with it.

So it will appreciate it for your any suggestion on this problem. Thanks!