FOAM’s dynamic proof of location protocol will enable a permissionless and privacy-preserving network of radio beacons that is independent from external centralized sources such as GPS and capable of providing secure location verification services. See “The World Economy Runs on GPS. It Needs a Backup Plan” for a great primer on this topic:

As dynamic proof of location is built out, FOAM will deploy three flavors of consensus protocols with different states of synchronicity:

a) Asynchronous Root Chain (Ethereum)

b) Semi Synchronous Shared State Machine (Tendermint)

c) Synchronous BFT Time Synchronization Protocol over Radio

In this post we will specifically go through the semi synchronous shared state machine consensus protocol for local zones within the larger context of creating dynamic proof of location.

Semi Synchronous: Tendermint shared state machine for local zone consensus

Relationship between Child Chains containing Zone Data and Unverified Presence Claims, Verifiers checking for Fraud Proof and the Parent Chain where Tokens are Staked

For dynamic proof of location Tendermint Core is used as the consensus mechanism for child chains, i.e. the shared state machine of Authorities in a Zone.

Tendermint Core is a Byzantine Fault Tolerant consensus algorithm developed in 2014 based on a Proof of Stake design. The main purpose and beneﬁts to Tendermint are speed, consistency, safety and instant ﬁnality. These features empower the scale of public Proof of Stake blockchains:

At the core, Tendermint works as a round-based voting mechanism which makes the consensus protocol. A round is broken up into a three-step process through which validators propose blocks, signal commitment intent and then sign to commit new blocks. This mechanism yields a secure state replication machine for atomic broadcast with an added layer of accountability. Safety faults are perfectly attributable in Tendermint.

When addressing the question of how distributed consensus on synchronicity is maintained by the Authorities of a Zone, the incentives of sharing and updating a state machine, as well as the structure of voting rounds are addressed by Tendermint. The ultimate purpose of Authorities being in sync is to provide location services, the accuracy of which is a function of the number of synced entities involved.

While the clock synchronization over radio and localization for nodes is determined with Synchronous consensus, the consensus algorithm for the replication of the shared state machine for a single zone is partially synchronous. The synchronous radio time consensus interacts with Tendermint consensus through the Application Blockchain Interface(ABCI). In Tendermint:

Simulations of the FOAM Time Synchronization Protocol ABCI Tendermint application written in GO

Ultimately, to become a validator in replicating the shared state machine of a Zone, and by extension to become a node running the time synchronization protocol over radio, collateral in the form of FOAM tokens is needed as a safety deposit on a root or parent blockchain. This deposit is needed for the validator to attest they will follow the rules of the protocol without being malicious or faulty. This deposit is subject to being slashed– as in destroyed–if the participant is found to be acting Byzantine. The time log data produced by a Zone is not considered final until it has been verified for fraud by a computation engine running trilateration and other triangulation location algorithms on the Zone’s time data.

In this system, the security and consensus of the root chain is an asynchronous network. This can be the Nakamoto consensus of a Proof of Work chain like Ethereum or an established Proof of Stake blockchain like Casper or for example DFINITY. As such, FOAM employs Synchronous, Partially Synchronous, and Asynchronous consensus for Proof of Location.

Tendermint guarantees that safety will never be violated because a validator will never commit conflicting blocks at the same height. Therefore, a Tendermint-based blockchain never forks. This reflects the FOAM priorities in secure data over the time blocks are committed.

The consensus in a FOAM Zone will be achieved through the Tendermint as well as the incentives of sharing, the structure of voting round and updating a state machine. The ultimate goal of Zones is to provide location services, the accuracy of which depends on of the number of synced entities involved.