By Andre Cronje

Snapshot

Fantom has completed it’s consensus implementation of both lachesis and txflow. Both are currently available and ready for usage via github.

Lachesis and txflow have been integrated into Cosmos SDK

A non Fantom related entity Zar Network has been building on top of Fantom SDK.

Fantom is a technology provider that will gladly support third parties in developing tools and building products that leverage lachesis consensus.

You can launch lachesis today and build your own blockchain solution.

Here are the instructions to build and run;

If you are a web3 dev and simply want to play around with smart contracts and EVM support using lachesis consensus, you can use one of the following nodes

To access the web3.js console, use one of the servers:

lachesis attach http://3.15.138.107:4000

lachesis attach http://18.189.195.64:4001

lachesis attach http://18.191.96.173:4002

lachesis attach http://18.222.120.223:4003

Regarding transaction latency:

The nodes are configured to emit 1 event per minute if there’s no txs to post or confirm, and they’ll try to emit 1 event per second (if gas power is too low to emit this much events, then the behavior is more complex) if there’s at least one transaction to post/confirm. It means that if you don’t send any transactions, then the block rate is ~2–3 minutes, but when you send at least 1 tx — the next block will be after 2–3 seconds.

Personal comments;

Fantom is a consensus provider, much like RAFT is to the traditional distributed world

The goal has been and will be to focus on building the best decentralized consensus available. Not to be the best blockchain available. A blockchain is part of the product, consensus is one of the modules, just like you have modular EVM support, or NFT, or Issuance. You choose the modules for your network and deploy the one you prefer to work with, that is why Fantom has spent additional hours to integrate Lachesis into go-ethereum and cosmos-sdk.

Zar Network

Zar Network has shared the following status update, please note Zar Network is an independent entity not related to Fantom, Fantom has been working closely with Zar to help them understand and advance the technology stack

Blockchain

https://github.com/zar-network/zar-network

Zar-network is the chain implementation. The key value here is from the issue module

Documentation on how to use the issue module available here;

https://github.com/zar-network/zar-network/blob/master/docs/cli/zarcli/issue/README.md

Install instructions available here;

https://github.com/zar-network/zar-network/blob/master/docs/deploy-testnet.md

The zar chain runs ontop of cosmos sdk

https://github.com/cosmos/cosmos-sdk

Which has been modified to use txflow and lachesis

https://github.com/Fantom-foundation/go-txflow

https://github.com/Fantom-foundation/go-lachesis

Core features of this chain;

~50k+ Transactions per second, (Personal comment, this is not part of an official audit and is the current internal environment numbers, do not quote this as literature, since there are not standardized tests for TPS), once completed the following standardized tools will be used and then the results will be released;

https://github.com/raid-7/tun-example

https://github.com/salamantos/bombarding-tool

The above tools were part of the CryptoBazar hackathon and specific tasks requested by Fantom to create standardized blockchain tests.)

Transaction Responsiveness

Transaction Finality

Core features of zar-network

Issue

Mint

Mint to

Burn

Burn from

Freeze transfer in

Freeze transfer out

Freeze transfers

Approve allowance for

Increase allowance for

Decrease allowance for

The testnet is currently running on the following endpoints;

http://34.244.179.123:1317/node_info (zar-chain-panda)

http://34.244.179.123:26657/status (consensus — lachesis)

Available endpoints for consensus are listed here

http://34.244.179.123:26657/

Available endpoints for zar-chain-panda are described here;

http://34.244.179.123:1317/swagger-ui/

Javascript / NodeJS SDK code is available with examples;

https://github.com/zar-network/javascript-sdk

https://github.com/zar-network/javascript-sdk/blob/master/__tests__/client.test.js

It has also been published on NPM

https://www.npmjs.com/package/@zar-network/javascript-sdk

Stack as follows;

Web UI (not disclosed)-> API (not disclosed)-> http://34.244.179.123:1317 -> http://34.244.179.123:26657

Web UI (React / NodeJS) interacts with EB API (NodeJS / PostgreSQL)

EB API uses javascript-sdk (NPM)

javascript-sdk wraps calls to zar-network (Golang RPC)

zar-network uses ABCI to interact with consensus (Golang TxFlow and Lachesis)

Fantom core product features update and roadmap

Go-Lachesis

Scope2 ( Consensus + communication layer + EVM ): Complete

): Scope3( Staking rewards distributions + ecosystem tools): End of December.

+ ecosystem tools): End of December. Implementation differs in a few ways to “StairDag” paper, as discussed with Andre.

Modifications by Quan to be consistent with “StairDag” paper: November / December.

Rust Implementation

EVM Rust implementation by Augustin completed as of writing.

All other modules / parts of the stack are completed (pending some error handling by Ayreh and Alex Jones). This includes TCP, and full-cli. Last piece of work in Consensus.

Consensus preliminary formal specification by Vlad on Maxim’s consensus work to be completed.

https://github.com/Fantom-foundation/libconsensus-dag

Discussed with Sam FIP-2 staking proposal

Internal View

Lachesis — Scope 1

Fast Gossip Protocol

Fork Rules

Summary of Algorithms

Lachesis-rs:

Added useful traits in libvm-rs : https://github.com/Fantom-foundation/librevm-rs/commit/6b957a4735d1011ff9a603ea817a36a3159d9171

: https://github.com/Fantom-foundation/librevm-rs/commit/6b957a4735d1011ff9a603ea817a36a3159d9171 Fixed a blocking issue with libvm-rs : https://github.com/Fantom-foundation/librevm-rs/commit/61b6c580c378ddc20de29a45eb52139dff9b8313

: https://github.com/Fantom-foundation/librevm-rs/commit/61b6c580c378ddc20de29a45eb52139dff9b8313 Refactored full-cli-rs with futures, split the main module into several modules to expose self-contained components: https://github.com/Fantom-foundation/full-cli-rs/commit/f5915719c2071bd1c345711540e61db0c2b6c1bd

with futures, split the main module into several modules to expose self-contained components: https://github.com/Fantom-foundation/full-cli-rs/commit/f5915719c2071bd1c345711540e61db0c2b6c1bd Continuing to work on libnode-membership , on the gossip graph builder module.

, on the gossip graph builder module. [WIP] Definition and implementation of libcommon-rs :

https://github.com/Fantom-foundation/libcommon-rs/commit/c32839e

https://github.com/Fantom-foundation/libcommon-rs/commit/f590c3d

https://github.com/Fantom-foundation/libcommon-rs/commit/d951c48

https://github.com/Fantom-foundation/libcommon-rs/commit/9e5ce6e

https://github.com/Fantom-foundation/libcommon-rs/commit/114b2fb

https://github.com/Fantom-foundation/libcommon-rs/commit/9a8c322d

https://github.com/Fantom-foundation/libcommon-rs/commit/ba9878e

https://github.com/Fantom-foundation/libcommon-rs/commit/74b78d2

https://github.com/Fantom-foundation/libcommon-rs/commit/2253536

https://github.com/Fantom-foundation/libcommon-rs/commit/4650cf7

: https://github.com/Fantom-foundation/libcommon-rs/commit/c32839e https://github.com/Fantom-foundation/libcommon-rs/commit/f590c3d https://github.com/Fantom-foundation/libcommon-rs/commit/d951c48 https://github.com/Fantom-foundation/libcommon-rs/commit/9e5ce6e https://github.com/Fantom-foundation/libcommon-rs/commit/114b2fb https://github.com/Fantom-foundation/libcommon-rs/commit/9a8c322d https://github.com/Fantom-foundation/libcommon-rs/commit/ba9878e https://github.com/Fantom-foundation/libcommon-rs/commit/74b78d2 https://github.com/Fantom-foundation/libcommon-rs/commit/2253536 https://github.com/Fantom-foundation/libcommon-rs/commit/4650cf7 [WIP] Definition of libtransport an common test:

https://github.com/Fantom-foundation/libtransport/commit/e705444

https://github.com/Fantom-foundation/libtransport/commit/436b2db

https://github.com/Fantom-foundation/libtransport/commit/aa91c39

https://github.com/Fantom-foundation/libtransport/commit/3778c0b

https://github.com/Fantom-foundation/libtransport/commit/0138a77

https://github.com/Fantom-foundation/libtransport/commit/9a65241

https://github.com/Fantom-foundation/libtransport/commit/e1dc8f1

https://github.com/Fantom-foundation/libtransport/commit/731bde6

https://github.com/Fantom-foundation/libtransport/commit/d6f7989

https://github.com/Fantom-foundation/libtransport/commit/c69c4ab

https://github.com/Fantom-foundation/libtransport/commit/9570788

https://github.com/Fantom-foundation/libtransport/commit/1c1a034

https://github.com/Fantom-foundation/libtransport/commit/b399fe8

https://github.com/Fantom-foundation/libtransport/commit/51d3ef4

https://github.com/Fantom-foundation/libtransport/commit/621c4af

https://github.com/Fantom-foundation/libtransport/commit/792849a

https://github.com/Fantom-foundation/libtransport/commit/0ea211a

https://github.com/Fantom-foundation/libtransport/commit/82edc81

https://github.com/Fantom-foundation/libtransport/commit/8e03673

https://github.com/Fantom-foundation/libtransport/commit/5bba6da

https://github.com/Fantom-foundation/libtransport/commit/f9df604

https://github.com/Fantom-foundation/libtransport/commit/0b84f1c

an common test: https://github.com/Fantom-foundation/libtransport/commit/e705444 https://github.com/Fantom-foundation/libtransport/commit/436b2db https://github.com/Fantom-foundation/libtransport/commit/aa91c39 https://github.com/Fantom-foundation/libtransport/commit/3778c0b https://github.com/Fantom-foundation/libtransport/commit/0138a77 https://github.com/Fantom-foundation/libtransport/commit/9a65241 https://github.com/Fantom-foundation/libtransport/commit/e1dc8f1 https://github.com/Fantom-foundation/libtransport/commit/731bde6 https://github.com/Fantom-foundation/libtransport/commit/d6f7989 https://github.com/Fantom-foundation/libtransport/commit/c69c4ab https://github.com/Fantom-foundation/libtransport/commit/9570788 https://github.com/Fantom-foundation/libtransport/commit/1c1a034 https://github.com/Fantom-foundation/libtransport/commit/b399fe8 https://github.com/Fantom-foundation/libtransport/commit/51d3ef4 https://github.com/Fantom-foundation/libtransport/commit/621c4af https://github.com/Fantom-foundation/libtransport/commit/792849a https://github.com/Fantom-foundation/libtransport/commit/0ea211a https://github.com/Fantom-foundation/libtransport/commit/82edc81 https://github.com/Fantom-foundation/libtransport/commit/8e03673 https://github.com/Fantom-foundation/libtransport/commit/5bba6da https://github.com/Fantom-foundation/libtransport/commit/f9df604 https://github.com/Fantom-foundation/libtransport/commit/0b84f1c Implementing libtransport-tcp :

https://github.com/Fantom-foundation/libtransport-tcp/commit/caa65e4

https://github.com/Fantom-foundation/libtransport-tcp/commit/4b1f1af

https://github.com/Fantom-foundation/libtransport-tcp/commit/c359f98

https://github.com/Fantom-foundation/libtransport-tcp/commit/6d5042b

https://github.com/Fantom-foundation/libtransport-tcp/commit/c81d8fd

https://github.com/Fantom-foundation/libtransport-tcp/commit/65efaba

https://github.com/Fantom-foundation/libtransport-tcp/commit/bd43640

https://github.com/Fantom-foundation/libtransport-tcp/commit/57b6f67

: https://github.com/Fantom-foundation/libtransport-tcp/commit/caa65e4 https://github.com/Fantom-foundation/libtransport-tcp/commit/4b1f1af https://github.com/Fantom-foundation/libtransport-tcp/commit/c359f98 https://github.com/Fantom-foundation/libtransport-tcp/commit/6d5042b https://github.com/Fantom-foundation/libtransport-tcp/commit/c81d8fd https://github.com/Fantom-foundation/libtransport-tcp/commit/65efaba https://github.com/Fantom-foundation/libtransport-tcp/commit/bd43640 https://github.com/Fantom-foundation/libtransport-tcp/commit/57b6f67 [WIP] Definition of libhash :

https://github.com/Fantom-foundation/libhash/commit/4a761d7

https://github.com/Fantom-foundation/libhash/commit/e33729e

https://github.com/Fantom-foundation/libhash/commit/7f600bd

: https://github.com/Fantom-foundation/libhash/commit/4a761d7 https://github.com/Fantom-foundation/libhash/commit/e33729e https://github.com/Fantom-foundation/libhash/commit/7f600bd Implementation of libhash-sha3 :

https://github.com/Fantom-foundation/libhash-sha3/commit/29313cbv

: https://github.com/Fantom-foundation/libhash-sha3/commit/29313cbv [WIP] Implemented serde for prost prost, to enable switching between protocol buffers, bincode, and other formats, transparently:

https://github.com/Fantom-foundation/prost/commit/dd39d9e9fc13f0bbde397ce0bc22bec6eed7fbb6

Closing remarks

Fantom will continue to focus on Lachesis consensus, while we are happy with the current results, there is much room for improvement and we are constantly advancing the consensus. For that reason we encourage people to run and host their own blockchains which Fantom will support in any capacity they can.