{"id":45600753,"url":"https://github.com/truechain/truechain-consensus-core","last_synced_at":"2026-02-23T14:38:43.655Z","repository":{"id":97082499,"uuid":"126658558","full_name":"truechain/truechain-consensus-core","owner":"truechain","description":"TrueChain Consensus Protocol: Minerva","archived":false,"fork":false,"pushed_at":"2018-08-01T01:56:45.000Z","size":566,"stargazers_count":162,"open_issues_count":24,"forks_count":70,"subscribers_count":24,"default_branch":"master","last_synced_at":"2024-06-20T11:06:54.366Z","etag":null,"topics":["blockchain","consensus","hybrid-consensus","pbft","truechain-consensus"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/truechain.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-03-25T02:42:25.000Z","updated_at":"2023-12-24T18:35:14.000Z","dependencies_parsed_at":"2023-06-18T04:31:37.782Z","dependency_job_id":null,"html_url":"https://github.com/truechain/truechain-consensus-core","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/truechain/truechain-consensus-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/truechain%2Ftruechain-consensus-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/truechain%2Ftruechain-consensus-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/truechain%2Ftruechain-consensus-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/truechain%2Ftruechain-consensus-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/truechain","download_url":"https://codeload.github.com/truechain/truechain-consensus-core/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/truechain%2Ftruechain-consensus-core/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29745813,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T07:44:07.782Z","status":"ssl_error","status_checked_at":"2026-02-23T07:44:07.432Z","response_time":90,"last_error":"SSL_read: 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","consensus","hybrid-consensus","pbft","truechain-consensus"],"created_at":"2026-02-23T14:38:42.340Z","updated_at":"2026-02-23T14:38:43.648Z","avatar_url":"https://github.com/truechain.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# truechain-consensus-core\nTrueChain Consensus Protocol\n\n[![Waffle.io - Columns and their card count](https://badge.waffle.io/truechain/truechain-consensus-core.svg?columns=all)](https://waffle.io/truechain/truechain-consensus-core)\n\n[![Travis](https://travis-ci.com/truechain/truechain-consensus-core.svg?branch=master)](https://travis-ci.com/truechain/truechain-consensus-core)\n\n# Building the source\n\n## Build\n\n### Step 1\n\nInstall [Docker](https://docs.docker.com/install/) and [HyperMake](http://evo-cloud.github.io/hmake/quickguide/install/).\n\nMake sure you have hmake in your `$GOBIN` path.\n\n#### Building it all with hmake and docker\n\nThis project uses:\n\n- [HyperMake](https://github.com/evo-cloud/hmake) to interact with toolchain (containerized environment) and build cross-platform binaries.\n- `gvt` to manage dependencies.\n\n\n```\n$ hmake --targets\n$ hmake check\n$ hmake build\n```\n\nThe first time, it would download:\n\n- TrueChain's docker image `go-toolchain` from https://hub.docker.com/r/truechain/go-toolchain/\n- Dependencies as per `src/vendor/manifest`, which again, could be generated using [gvt](https://github.com/FiloSottile/gvt).\n\nThe binaries would be available in `bin/`'s platform-specific folders.\n\n\n### Step 2\n\n```\ngit clone https://github.com/truechain/truechain-consensus-core.git\ncd truechain-consensus-core\ngit checkout devel\n```\n\nOR\n\n```\ngo get -u github.com/truechain/truechain-consensus-core\n```\n\n\n### Step 3\n\nMake sure you have `$GOBIN` in `$PATH`:\n\n```\nexport GOBIN=$GOPATH/bin\nexport PATH=$PATH:$GOBIN\n```\n\nAnd before running, make sure you have the following taken care of, for orchestration:\n\n1. `TRUE_TUNABLES_CONF` corresponds to `/etc/truechain/tunables_bft.yaml`, default's under project's `config/` folder.\n\n2. `TRUE_GENERAL_CONF` corresponds to `/etc/truechain/logistics_bft.cfg`, default's under this project's `config/`\n\n3. `TRUE_NETWORK_CONF` corresponds to `/etc/truechain/hosts`, Default's under this project's `config/`\n  This file is populated with repetitive 5-6 lines containing loopback IP address `127.0.0.1`.\n  \n4. `TRUE_SIMULATION` is as follows:\n  - if set to 0 (default) - should tell the project to pickup testbed configurations. \n  - if set to 1 - staging, meaning all CI/CD tests are run before draft run. (dummy functionality at the moment)\n  - if set to 1 - production. Will try to connect to boot nodes. (dummy functionality at the moment)\n\n### Run\n\nServer:\n```\n./bin/{linux/darwin}/truechain-engine\n```\n\nClient:\n```\n$ ./bin/{linux/darwin}/pbft-client -h\n\nUsage of pbft-client:\n  -numquest int\n    \tnumber of requests (default 10)\n```\n\n\nOptional - To install:\n\n```\n./support/scripts/install.sh linux\n# then from 1 shell, run\n$ truechain-engine\n# and a different shell, run\n$ pbft-client -numquest 40\n```\n\nThis triggers both server and client subroutines. Also displays progress of key signing, data exchange and ledger log.\n\n```\n2018/07/31 18:19:23 Loaded logistics configuration.\n[.]Loading IP configs...\n\n2018/07/31 18:19:23 ---\u003e using following configurations for project:\ntunables:\n  testbed:\n    total: 5\n    client_id: 5\n    server_id_init: 4\n\n127.0.0.1 49500 0\n[!]Going to tolerate 1 adversaries\n\n[!]Initial Node Config \u0026{cfg:0xc4200a6600 mu:{state:0 sema:0} clientMu:{state:0 sema:0} peers:[] port:49500 killFlag:false ListenReady:\u003cnil\u003e SetupReady:\u003cnil\u003e EcdsaKey:\u003cnil\u003e helloSignature:\u003cnil\u003e connections:0 ID:0 N:4 view:0 viewInUse:true f:1 lowBound:0 highBound:0 Primary:0 seq:0 lastExecuted:0 lastStableCheckpoint:0 checkpointProof:[] checkpointInterval:100 vmin:0 vmax:0 waiting:map[] timeout:600 clientBuffer: active:map[] prepared:map[] prepDict:map[] commDict:map[] viewDict:map[] KeyDict:map[] outputLog:\u003cnil\u003e commitLog:\u003cnil\u003e nodeMessageLog:{mu:{state:0 sema:0} content:map[]} clientMessageLog:map[] committedBlock:\u003cnil\u003e txPool:\u003cnil\u003e genesis:\u003cnil\u003e tc:\u003cnil\u003e}\n\n[ ]Genesis block generated: 56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421\n...\n\u003csnip\u003e\n...\n[!][3] ProxyProcessCommit 4\n[!][1] Committed 4\n[!][2] Committed 4\n[!][3] Committed 4\n```\n\n### CI\n\n```\nhmake build test check\n```\n\nTODO: add travis yaml\n\n#### managing a missing dependency \n\nIn case you have a new dependency that's not listed in `trueconsensus/vendor/manifest` folder, just run this from `trueconsensus/`:\n\n```\ngvt fetch github.com/fatih/color\n```\n\nThis would add a folder `trueconsensus/vendor` if not already present, and would also generate/append to `trueconsensus/vendor/manifest`.\n\nNote that `gvt fetch \u003cpackage_name\u003e` updates the file `src/vendor/manifest`.\n\n#### Building it all with a shell script\n\nAdditionally, you could choose to build without using containers. For a very basic sanity test, run the following:\n\n```\n./support/scripts/build.sh {linux/darwin}\n```\n\nNote: you could also use `darwin` as an argument to build.sh instead of `linux` to get an OSX binary. Support for more will be extended soon.\n\n\n### Deployment\n\nTo be added.\n\n### Benchmark\n\nTo be added.\n\n## Feedback\n\nFeedback is greatly appreciated. We're a blend of `py-go-c++` devs looking to merge ideas and we may err at times in the realm of language paradigms and correct design approach. We're hoping to find you (yes you!) and incentivize you for auditing our codebase, polish the erm out of it and teach us how to fish in this process. Feel free to open issues / contact us on our channels. \n\n## Contributing\n\nWe need contributions from you. You are welcome to create github issues and contribute to the codebase.\nWe have a list of important tasks from Truechain Foundation. We welcome people who have related background to join\nour consensus design and implementation.\n\nThe maintainers actively manage the issues list, and try to highlight issues suitable for newcomers.\nThe project follows the typical GitHub pull request model.\nSee [CONTRIBUTIONS.md](CONTRIBUTIONS.md) for more details.\nBefore starting any work, please either comment on an existing issue, or file a new one.\n\nTrack our [Milestones here](https://github.com/truechain/truechain-consensus-core/milestones/)\nAnd for different codebases of truechain engineering, [here's an explanation](https://github.com/truechain/truechain-consensus-core/milestone/2)\n\n## Community / Mailing lists\n\nJoin our gitter channel for live discussions and clarifications.\n\n1. For contributions/general engineering discussions and all things PR/codebases [truechain-net/engg-foss-global](https://gitter.im/truechain-net/engg-foss-global)\n2. For events, announcements and so on [truechain-net/community](https://gitter.im/truechain-net/community)\n3. For research, [truechain-net/research](https://gitter.im/truechain-net/research)\n4. Architecture at [truechain-net/architecture](https://gitter.im/truechain-net/architecture)\n\nSubscribe to the [google groups mailing list](https://groups.google.com/forum/#!forum/truechain) to receive regular updates and post discussions \n\n### On Social Media\n\n- Main site: https://www.truechain.pro/en/\n  - News from Truechain https://www.truechain.pro/en/news\n- Twitter: https://twitter.com/truechaingroup\n- Facebook: https://www.facebook.com/TrueChaingroup/\n- Telegram: http://www.t.me/truechainglobal/\n\n## LICENSE\n\nThe Apache License (2.0).\n\nA copy of the header is included within all files in the codebase along with the full [LICENSE](LICENSE) txt file in project's root folder.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftruechain%2Ftruechain-consensus-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftruechain%2Ftruechain-consensus-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftruechain%2Ftruechain-consensus-core/lists"}