FAIRNESS PRESERVING BYZANTINE AGREEMENTS
A technique is disclosed for building agreement among a plurality of servers who receive a transaction from clients. The technique includes each server broadcasting its received transaction to all other servers. Each server uses the set of transactions that it received from all servers (including its own transaction) to produce an echo that represents the set of transactions, and broadcasts the echo. Each will commit its transaction to a log if its echo matches each echo received from the other servers. The present disclosure can detect byzantine failures and punishes deviating participating servers by reconfiguring the plurality of servers that participate in the protocol.
1 . A method for building agreement among a plurality of servers, the method comprising:
receiving by a first server among the plurality of servers a client transaction that is broadcast to all the servers by a client;
broadcasting by the first server its received client transaction to all other servers;
receiving by the first server copies of the client transaction from all other servers;
producing by the first server an echo that is representative of both its received client transaction and copies of the client transaction from all other servers;
broadcasting by the first server its echo to all other servers;
receiving by the first server echoes from all other servers; and
committing by the first server its received client transaction only if its echo matches each echo received from each sever among the plurality of servers.
2 . The method of claim 1 , wherein committing the received client transaction of the first server includes the first server appending its received client transaction as an entry in a ledger that is shared among the plurality of servers, wherein each server among the plurality of servers has an equal share of entries in the ledger.
3 . The method of claim 2 , wherein each of the plurality of servers maintains its respective copy of the shared ledger.
4 . The method of claim 2 , wherein the ledger is a globally accessed ledger.
5 . The method of claim 1 , wherein producing the echo by the first server includes the first server generating a hash value using both its received client transaction and copies of the client transaction received from all other servers.
6 . The method of claim 5 , wherein producing the echo by the first server further includes the first server digitally signing its hash value.
7 . The method of claim 1 , further comprising using relays designated from among the plurality of servers to broadcast information from one server to all other servers.
8 . The method of claim 1 , wherein the plurality of servers comprises a most 2f+1 servers.
9 . The method of claim 1 , being performed by each server among the plurality of servers.
10 . A non-transitory computer-readable storage medium having stored thereon computer executable instructions, which when executed by a processing unit in a first server among a plurality of servers, cause the first server to:
receive a client transaction that is broadcast to all the servers by a client;
broadcast the received client transaction of the first server to all other servers;
receive copies of the client transaction from all other servers;
produce an echo that is representative of both the received client transaction of the first server and copies of the client transaction from all other servers;
broadcast the echo of the first server to all other servers;
receive echoes from all other servers; and
commit the received client transaction of the first server only if the echo of the first server matches each echo received from each sever among the plurality of servers.
11 . The non-transitory computer-readable storage medium of claim 10 , wherein committing the received client transaction of the first server includes the first server appending its received client transaction as an entry in a ledger that is shared among the plurality of servers, wherein each server among the plurality of servers has an equal share of entries in the ledger.
12 . The non-transitory computer-readable storage medium of claim 10 , wherein producing the echo includes the first server generating a hash value using both its received client transaction and copies of the client transaction received from all other servers.
13 . The non-transitory computer-readable storage medium of claim 12 , wherein producing the echo further includes the first server digitally signing its hash value.
14 . The non-transitory computer-readable storage medium of claim 10 , further comprising using relays designated from among the plurality of servers to broadcast information from one server to all other servers.
15 . A system comprising a plurality of servers, each server comprising:
one or more computer processors, and
a computer-readable storage medium comprising instructions for controlling the one or more computer processors to be operable to:
receive by said each server a client transaction that is broadcast to all the servers by a client;
broadcast by said each server its received client transaction to all other servers;
receive by said each server copies of the client transaction from all other servers;
produce by said each server an echo that is representative of both its received client transaction and copies of the client transaction from all other servers;
broadcast by said each server its echo to all other servers;
receive by said each server echoes from all other servers; and
commit by said each server its received client transaction only if its echo matches each echo received from each sever among the plurality of servers.
16 . The system of claim 15 , wherein committing the received client transaction of said each server includes said each server appending its received client transaction as an entry in a ledger that is shared among the plurality of servers, wherein the plurality of servers, each, has an equal share of entries in the ledger.
17 . The system of claim 15 , wherein producing the echo by said each server includes said each server:
generating a hash value using both its received client transaction and copies of the client transaction received from all other servers; and
digitally signing the hash value.
18 . The system of claim 15 , further comprising using relays designated from among the plurality of servers to broadcast information from one server to all other servers.
19 . The system of claim 15 , wherein the plurality of servers comprises a most 2f+1 servers.
20 . The system of claim 15 , being performed by each server among the plurality of servers.