{"id":23991818,"url":"https://github.com/starydark/paxosstore-tla","last_synced_at":"2026-02-06T17:02:13.283Z","repository":{"id":146885318,"uuid":"199430053","full_name":"Starydark/PaxosStore-tla","owner":"Starydark","description":"Specifying and Verifying the consensus algorithm in PaxosStore using TLA+","archived":false,"fork":false,"pushed_at":"2021-03-30T06:14:23.000Z","size":20928,"stargazers_count":21,"open_issues_count":1,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-03T14:56:41.782Z","etag":null,"topics":["refinement","tla"],"latest_commit_sha":null,"homepage":"","language":"TLA","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Starydark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-07-29T10:19:52.000Z","updated_at":"2024-12-15T12:26:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"56967839-5fb2-434f-b041-0cfc0ea458be","html_url":"https://github.com/Starydark/PaxosStore-tla","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Starydark/PaxosStore-tla","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Starydark%2FPaxosStore-tla","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Starydark%2FPaxosStore-tla/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Starydark%2FPaxosStore-tla/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Starydark%2FPaxosStore-tla/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Starydark","download_url":"https://codeload.github.com/Starydark/PaxosStore-tla/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Starydark%2FPaxosStore-tla/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29169384,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T16:33:35.550Z","status":"ssl_error","status_checked_at":"2026-02-06T16:33:30.716Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["refinement","tla"],"created_at":"2025-01-07T20:00:03.046Z","updated_at":"2026-02-06T17:02:13.246Z","avatar_url":"https://github.com/Starydark.png","language":"TLA","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Paxosstore-tla\n\nA project of using \u003ca href=\"http://lamport.azurewebsites.net/tla/tla.html\"\u003eTLA\u003csup\u003e+\u003c/sup\u003e\u003c/a\u003e to model check and  prove the correctness of the consensus algorithm in the [PaxosStore@VLDB2017](http://www.vldb.org/pvldb/vol10/p1730-lin.pdf) paper and the open-source [Tencent/paxosstore](https://github.com/Tencent/paxosstore).\n\n### Specification\n\nWhile constructing specification of the consensus algorithm TPaxos in PaxosStore, we uncover a crucial but sutble detail in TPaxos which is not fully clarified, called TPaxosAP. We verify the correctness of both TPaxos and TPaxosAP, and  establish the refinement mappings from TPaxos to Voting and from TPaxosAP to EagerVoting(equivalent to Voting).\n\n#### Module\n\n- TPaxos.tla: the specification of the TPaxos.\n- TPaxosAP.tla: the specification of the variant of TPaxos.\n- TPaxosWithVotes.tla: the refinement mapping of TPaxos refining Voting.\n- TPaxosAPWithVotes.tla: the refinement mapping of TPaxosAP refining EagerVoting.\n- EagerVoting.tla: a specification that is equivalent to Voting.  \n- Voting.tla: a specification introduced by Lamport in paper [Byzantizing Paxos by Refinement](http://lamport.azurewebsites.net/pubs/web-byzpaxos.pdf).\n- Consensus.tla: a specification that implemented by Voting.\n\n#### Refinement relation\n\n![RefinementRelation](./specification/fig/RefinementRelation.png)\n\n### [Theorem Proving](./theorem%20proving/)\n\nWe prove the correctness of TPaxos using \u003ca href=\"http://tla.msr-inria.inria.fr/tlaps/content/Home.html\"\u003eTLAPS\u003c/a\u003e(a internal proof system of TLA+). While writing the proof of TPaxos, we make some small changes on the specification which won't introduce additional rules but only made our proof not too complicated.\n\n### Experiment\n\nWe prove the refinement relation using the method of model checking. The details refers to [experiment](./experiment).\n\n\n### Others\nPS. [here](https://github.com/JYwellin/CRDT-TLA) is a similar work that provides a framework to specify and verify CRDT Protocols using TLA+.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstarydark%2Fpaxosstore-tla","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstarydark%2Fpaxosstore-tla","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstarydark%2Fpaxosstore-tla/lists"}