{"id":21446000,"url":"https://github.com/ftrobbin/ironwood","last_synced_at":"2025-07-07T00:06:30.538Z","repository":{"id":153425476,"uuid":"131740727","full_name":"FTRobbin/Ironwood","owner":"FTRobbin","description":"A Correct-by-Construction Blockchain Protocol Implementation","archived":false,"fork":false,"pushed_at":"2018-08-05T01:47:27.000Z","size":108,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-08T13:45:32.739Z","etag":null,"topics":["blockchain","consensus-protocol","formal-verification"],"latest_commit_sha":null,"homepage":"","language":"Coq","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/FTRobbin.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":"2018-05-01T17:14:18.000Z","updated_at":"2018-08-05T01:47:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"1339b6d1-6397-46a4-b6b7-5a965ed25b73","html_url":"https://github.com/FTRobbin/Ironwood","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/FTRobbin/Ironwood","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FTRobbin%2FIronwood","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FTRobbin%2FIronwood/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FTRobbin%2FIronwood/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FTRobbin%2FIronwood/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FTRobbin","download_url":"https://codeload.github.com/FTRobbin/Ironwood/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FTRobbin%2FIronwood/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263991444,"owners_count":23540665,"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":["blockchain","consensus-protocol","formal-verification"],"created_at":"2024-11-23T02:40:48.924Z","updated_at":"2025-07-07T00:06:30.532Z","avatar_url":"https://github.com/FTRobbin.png","language":"Coq","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Project Ironwood (Work In Progress)\n---\nA correct-by-construction blockchain protocol implmentation.\n\n## How to run\nThe author's version is [Coq 8.8.0](https://github.com/coq/coq/releases/tag/V8.8.0). To complie/check, run `make clean; make`.\n\n## Roadmap\n* Version 2.0 [In progress]\n  * Add Byzantine adversaries\n\n* [Version 1.1](https://github.com/FTRobbin/Ironwood/releases/tag/v1.1) [DONE]\n  * Sensible names for lemmas\n  * Improved proof structure and implementation\n  * Human-readable high-level proof\n\n* [Version 1.0](https://github.com/FTRobbin/Ironwood/releases/tag/v1.0) [DONE]\n  * Synchornous network\n  * No adversaries\n  * Concensus on a boolean value\n  * Implmenting [BOSCO](https://pdfs.semanticscholar.org/3958/98b44d23be8d0227d403ec7928391880e79f.pdf) concensus protocol\n  * Proving agreement property: all decisions made are the equal\n  * Not executable\n\n* Future steps:\n  * Asynchronous network\n  * Liveness prorperty\n  * More complex protocol\n  * Extract to executables\n\n## Proof organization\n| File | Description |\n| --- | --- |\n| Assumption.v | Assumptions |\n| High_def.v | Abstract protocol semantics |\n| High_proof.v | Abstract agreement proof |\n| Low_def.v | Protocol implmentation, basic properties |\n| Low_proof.v | Agreement proof + readable version |\n| Quorum.v | Quorum abstraction |\n| Refinement.v | Refinement theorem (and all the lemmas)|\n| Temporal.v | (A not so successful atempt) to adopt temporal logic |\n\nThe core theorem is `Refinement` in `Refinement.v` or you can try read the pretty proof `Readable_Low_Level_Agreement` in `Low_proof.v` which comes with comments that serves as a pen-and-paper proof.\n\n## Lemma naming\n\nThe lemmas in `Refinement.v` are ordered logically and named based on their forms. Different letters refers to properties about different formal concepts. Here's the reference list:\n\n```\n   V  = Validity\n   S' = Step\n   S  = Steps\n   D  = Decision\n   E  = Estimate\n   R  = Round\n   H  = History\n   M  = Message\n   L  = deLivery\n   T  = sTate\n   C  = Condition\n   Q  = Quorum\n   I  = Initial\n   _  = Arrow\n   c? = exact step ? changed\n   l? = local ?\n   g? = global ?\n   ?p = ?'s properties\n   eq = equality\n```\n\nFor example, `Lem_VR_E` resembles a lemma that assumes validity of the global state and some constrains on the round number and concludes something about estimation.\n\n```coq\nLemma Lem_VR_E : forall params gs r i, isValid params gs -\u003e r \u003c= round_no gs -\u003e i \u003c n gs -\u003e exists b, extract_estimationr i gs r = Some b.\n```\n\n---\n[Haobin Ni](https://github.com/FTRobbin), Cornell University, 2018\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fftrobbin%2Fironwood","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fftrobbin%2Fironwood","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fftrobbin%2Fironwood/lists"}