{"id":27021211,"url":"https://github.com/jonas089/diseq","last_synced_at":"2025-04-04T19:43:07.693Z","repository":{"id":253026997,"uuid":"841456866","full_name":"jonas089/DISEQ","owner":"jonas089","description":"distributed sequencer with zk consensus","archived":false,"fork":false,"pushed_at":"2025-02-19T22:37:33.000Z","size":2283,"stargazers_count":28,"open_issues_count":6,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-19T23:28:04.549Z","etag":null,"topics":["blockchain","blockchain-l2","blockchain-scaling","distributed-systems","l2-research","layer-2","portfolio","rust","sequencing","transactions"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/jonas089.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":"2024-08-12T12:52:50.000Z","updated_at":"2025-02-19T22:37:36.000Z","dependencies_parsed_at":"2024-08-14T02:40:37.516Z","dependency_job_id":"b17490cc-6281-444e-b915-f2b1535dc2ad","html_url":"https://github.com/jonas089/DISEQ","commit_stats":null,"previous_names":["jonas089/pord-sequencer","jonas089/l2-sequencer","jonas089/distributed-sequencer","jonas089/diseq"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonas089%2FDISEQ","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonas089%2FDISEQ/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonas089%2FDISEQ/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonas089%2FDISEQ/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonas089","download_url":"https://codeload.github.com/jonas089/DISEQ/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247239042,"owners_count":20906555,"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","blockchain-l2","blockchain-scaling","distributed-systems","l2-research","layer-2","portfolio","rust","sequencing","transactions"],"created_at":"2025-04-04T19:43:07.185Z","updated_at":"2025-04-04T19:43:07.685Z","avatar_url":"https://github.com/jonas089.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"This repo was moved to [Ciphercurve](https://ciphercurve.com) LLC [here](https://github.com/ciphercurve/diseq)\n\n\n\n![Diseq](https://github.com/jonas089/DISEQ/blob/master/resources/DISEQ/DISEQ1.jpg)\n\nThe logos were created by [Imran Piash](https://www.fiverr.com/imranpiash?source=inbox). Rights have been granted to Jonas Pauli (the developer of this project).\n\n# DISEQ Proof of Concept: Distributed Message Sequencing\nDiseq is a distributed sequencer built by [Jonas Pauli](https://www.linkedin.com/in/jonas-pauli/), a blockchain research engineer from Switzerland.\n\n\u003e [!NOTE]\n\u003e Feel free to reach out and ask me any questions you may have regarding this project,\n\u003e I am always eager to exchange ideas and knowledge on consensus and distributed systems with fellow\n\u003e cryptographers \u0026 engineers.\n\nDiseq acts as a distributed alternative to centralized (or decentralized) sequencing. Based on a novel zero knowledge consensus with deterministic validator selection, Diseq can operate with 51% percent of a fixed validator set being active and honest. Messages are added to a mempool and stored in the block once consensus has concluded and sufficiently many signatures from active nodes were collected. Nodes synchronize blocks to keep an immutable record of the message sequence.\n\nRead the full [Litepaper](https://github.com/jonas089/zk-vrf-consensus/tree/master/whitepaper).\n\nIf you are an expert then consider also reading [some context about BFT](https://github.com/jonas089/zk-vrf-consensus/blob/master/whitepaper/byzantine-fault.md).\n\n# Recommended: Run a local network of 4 Nodes with Docker\nI began taking this passion project quite seriously, so I added an SQLite DB to store Blocks and Messages.\nMessages are still read as a single chunk so the txpool for each Block must fit in memory, I do intend to change this.\n\nTo run the docker image with 2 nodes that will each have a db e.g. node-1.sqlite, node-2.sqlite where the temporary txpool and all\nfinalized Blocks are stored, run:\n\n```bash\ndocker compose up\n```\n\nThe docker image has been tested on amd64 ubuntu 22.04 and an M3 Macbook (arm64) with QEMU.\n\nPort forwarding should make the nodes available a `8080` and `8081`. I plan to simulate larger networks in the future but for now it is designed\nto spawn 2 instances that synchronize blocks and commit to proposals / contribute to consensus. The default consensus threshold is `1` - see `config` directory.\n\n# API Routes\n\n## Internal\n```rust\n        .route(\"/schedule\", post(schedule))\n        .route(\"/commit\", post(commit))\n        .route(\"/propose\", post(propose))\n        .route(\"/merkle_proof\", post(merkle_proof))\n```\n## External\n```rust\n        .route(\"/get/pool\", get(get_pool))\n        .route(\"/get/commitments\", get(get_commitments))\n        .route(\"/get/block/height\", get(get_block))\n        .route(\"/get/state_root_hash\", get(state_root_hash))\n```\n\nTo view a Block when running the example setup, request `127.0.0.1:8080/get/block/\u003cid\u003e`, or `127.0.0.1:8081/get/block/\u003cid\u003e`.\n\n# Merkle Proofs\nWhenever a Block is stored, all messages in that block are inserted into the custom [Merkle Patricia Trie](https://github.com/jonas089/jonas089-trie).\nFor every individual message in the trie a merkle proof can be obtained. See an example for this [here](https://github.com/jonas089/distributed-sequencer/blob/master/tests/api.rs).\n\n©️ Ciphercurve GmbH, 2025\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonas089%2Fdiseq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonas089%2Fdiseq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonas089%2Fdiseq/lists"}