{"id":31767788,"url":"https://github.com/oxarbitrage/crosslink2","last_synced_at":"2026-02-15T22:02:56.153Z","repository":{"id":309194950,"uuid":"968805984","full_name":"oxarbitrage/crosslink2","owner":"oxarbitrage","description":"A Crosslink2 TLA+ specification","archived":false,"fork":false,"pushed_at":"2025-09-25T12:12:55.000Z","size":2025,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-10T01:22:58.340Z","etag":null,"topics":["blockchain-protocol","specification","state-machine","tlaplus"],"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/oxarbitrage.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-18T19:10:15.000Z","updated_at":"2025-09-25T12:12:59.000Z","dependencies_parsed_at":"2025-08-10T14:18:39.030Z","dependency_job_id":"e2c88311-d9ff-47cf-801b-4556bed53535","html_url":"https://github.com/oxarbitrage/crosslink2","commit_stats":null,"previous_names":["oxarbitrage/crosslink2"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/oxarbitrage/crosslink2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxarbitrage%2Fcrosslink2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxarbitrage%2Fcrosslink2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxarbitrage%2Fcrosslink2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxarbitrage%2Fcrosslink2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oxarbitrage","download_url":"https://codeload.github.com/oxarbitrage/crosslink2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oxarbitrage%2Fcrosslink2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29490360,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T19:29:10.908Z","status":"ssl_error","status_checked_at":"2026-02-15T19:29:10.419Z","response_time":118,"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":["blockchain-protocol","specification","state-machine","tlaplus"],"created_at":"2025-10-10T01:21:08.977Z","updated_at":"2026-02-15T22:02:56.148Z","avatar_url":"https://github.com/oxarbitrage.png","language":"TLA","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Crosslink2 TLA⁺ Specification\n\nA TLA⁺ specification of the Crosslink2 protocol and its subprotocols, modeled as a state machine.\n\n📖 [Read the full TFL book](https://electric-coin-company.github.io/tfl-book/)\n\n## Disclamer\n\nThis specification is currently a proof of concept. It is not a complete or final specification of the Crosslink2 protocol. It is a work in progress and may change over time.\n\nFeedback and improvements are very welcome!\n\n## Motivation\n\nThe goal is to create a simple yet expressive model of the Crosslink2 protocol that allows us to reason about properties such as safety and liveness. The model should be easy to understand, modify, and extend while still capturing some of the protocol’s inherent complexity.\n\n## The protocol\n\nWe model the Crosslink2 protocol and its subprotocols as a state machine with the following components:\n\n- `bc_chains`, `bft_chains`, and `crosslink2_chains` are sequences of chains. At any execution time `t` and for each node `i`, we have a local chain for that node. For example, `bft_chains[i]` represents the BFT chain of node `i` at current time `t`. Chains are updated as the protocol executes.\n\n- Initialization: At `t = 0`, each chain for each node starts with the genesis block of its protocol. For example: `bft_chains[i] = \u003c\u003cbft_genesis_block\u003e\u003e`.\n\n- State transitions (`t \u003e 0`): One or more of the following may occur:\n\n  - An honest BC-node updates its `bc_chain` to the best chain and appends a `bc-block`.\n\n  - An honest BFT-node updates its `bft_chain` to the best chain and appends a `bft-block`.\n\n  - A byzantine BFT-node may update its `bft_chain` to a valid chain and append a faulty `bft-block`.\n\n  - An honest Crosslink-node updates its view to a new finalized `fin` chain.\n\n  - The state remains unchanged.\n\nThe TLA⁺ specification is defined in [crosslink2.tla](crosslink2.tla).\nA generated PDF version is available at [crosslink2.pdf](crosslink2.pdf).\n\n## Model checking\n\nYou can run TLC to check invariants and properties of the specification. This is a non-terminating model, so you might want to stop TLC manually after a while.\n\n## Contributing\n\nFeedback, bug reports, and pull requests are welcome!  \n\n## License\n\nThis project is released under the **MIT License**. See [LICENSE](LICENSE) for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxarbitrage%2Fcrosslink2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foxarbitrage%2Fcrosslink2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foxarbitrage%2Fcrosslink2/lists"}