{"id":24196547,"url":"https://github.com/dedis/tlc","last_synced_at":"2025-09-21T21:31:54.035Z","repository":{"id":57554921,"uuid":"191633212","full_name":"dedis/tlc","owner":"dedis","description":"Threshold Logical Clocks and Que Sera Consensus","archived":false,"fork":false,"pushed_at":"2023-07-27T12:20:40.000Z","size":286,"stargazers_count":26,"open_issues_count":1,"forks_count":7,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-06-20T06:38:10.231Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dedis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-06-12T19:35:47.000Z","updated_at":"2024-03-23T19:01:31.000Z","dependencies_parsed_at":"2024-06-20T06:08:34.352Z","dependency_job_id":null,"html_url":"https://github.com/dedis/tlc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dedis%2Ftlc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dedis%2Ftlc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dedis%2Ftlc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dedis%2Ftlc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dedis","download_url":"https://codeload.github.com/dedis/tlc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233798309,"owners_count":18731959,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-13T19:35:48.622Z","updated_at":"2025-09-21T21:31:53.655Z","avatar_url":"https://github.com/dedis.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\nThis repository contains multiple prototype implementations of\nThreshold Logical Clocks (TLC) and Que Sera Consensus (QSC),\nas described in the following papers:\n\n* [Threshold Logical Clocks for Asynchronous Distributed Coordination and Consensus](https://arxiv.org/abs/1907.07010)\n* [Que Sera Consensus: Simple Asynchronous Agreement with Private Coins and Threshold Logical Clocks](https://arxiv.org/abs/2003.02291)\n\nThe following prototype implementations of TLC and QSC are available\nin multiple languages:\n\n* [erlang/model](erlang/model/) contains a minimalistic model implementation\n  of the QSC, TLCB, and TLCR algorithms detailed in the\n  [new QSC preprint](https://arxiv.org/abs/2003.02291).\n  This model implements QSC using Erlang processes and communication \n  on a single machine for illustrative simplicity, although\n  [distributed Erlang](https://erlang.org/doc/reference_manual/distributed.html)\n  should make it straightforward to extend this model\n  to true distributed consensus.\n  Erlang's [selective receive](https://ndpar.blogspot.com/2010/11/erlang-explained-selective-receive.html)\n  is particularly well-suited to implementing TLCR concisely.\n  The model consists of only 73 lines of code\n  as measured by [cloc](https://github.com/AlDanial/cloc),\n  including test code,\n  or only 37 lines comprising the consensus algorithm alone.\n\n* [go/model](go/model/) contains a minimalistic model implementation in Go\n  of TLC and QSC as described in the\n  [original TLC preprint](https://arxiv.org/abs/1907.07010).\n  This model illustrates the key concepts\n  using goroutines and shared memory communication for simplicity.\n  It is not useful in an actual distributed context,\n  but being less than 200 code lines long\n  as measured by [cloc](https://github.com/AlDanial/cloc),\n  it is ideal for studying and understanding TLC and QSC.\n\n* [go/model/qscod](go/model/qscod/)\n  contains a model implementation in Go of QSCOD,\n  the client-driven \"on-demand\" consensus algorithm outlined in the \n  [new QSC preprint](https://arxiv.org/abs/2003.02291).\n  This formulation of QSC consumes no bandwidth or computation\n  when there is no work to be done (hence on-demand),\n  and incurs only \u003ci\u003eO(n\u003csup\u003e2\u003c/sup\u003e)\u003c/i\u003e communication complexity\n  per client-driven agreement.\n\n* [go/dist](go/dist/) contains a simple but working\n  \"real\" distributed implementation of TLC and QSC in Go\n  for a fail-stop (Paxos-like) threat model.\n  It uses TCP, TLS encryption and authentication,\n  and Go's native Gob encoding for inter-node communication.\n  At less than 1000 code lines long\n  as measured by [cloc](https://github.com/AlDanial/cloc),\n  it is still probably one of the simplest implementations\n  of asynchronous consensus around.\n\n* [spin](spin/) contains a simple Promela model of the core of TLC and QSC\n  for the [Spin model checker](https://spinroot.com/spin/whatispin.html).\n  Although this implementation models TLC and QSC only at a\n  very high, abstract level, it captures the basic logic enough\n  to lend confidence to the correctness of the algorithm.\n\nAll of this code is still extremely early and experimental;\nuse at your own risk.\n\n[![Build Status](https://travis-ci.com/dedis/tlc.svg?branch=master)](https://travis-ci.com/dedis/tlc)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdedis%2Ftlc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdedis%2Ftlc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdedis%2Ftlc/lists"}