{"id":18842601,"url":"https://github.com/tendermint/tendermint2","last_synced_at":"2025-08-31T04:08:08.713Z","repository":{"id":64301051,"uuid":"572224247","full_name":"tendermint/tendermint2","owner":"tendermint","description":"Tendermint2","archived":false,"fork":false,"pushed_at":"2023-03-30T11:12:00.000Z","size":27212,"stargazers_count":33,"open_issues_count":11,"forks_count":15,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-14T07:47:01.647Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/tendermint.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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":"2022-11-29T20:16:45.000Z","updated_at":"2025-03-07T15:52:45.000Z","dependencies_parsed_at":"2024-06-20T04:42:40.692Z","dependency_job_id":"15921d76-f205-4b3c-99df-9b1bb567e642","html_url":"https://github.com/tendermint/tendermint2","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tendermint/tendermint2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tendermint%2Ftendermint2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tendermint%2Ftendermint2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tendermint%2Ftendermint2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tendermint%2Ftendermint2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tendermint","download_url":"https://codeload.github.com/tendermint/tendermint2/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tendermint%2Ftendermint2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272936448,"owners_count":25018167,"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","status":"online","status_checked_at":"2025-08-31T02:00:09.071Z","response_time":79,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2024-11-08T02:55:14.172Z","updated_at":"2025-08-31T04:08:08.687Z","avatar_url":"https://github.com/tendermint.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tendermint2\n\n## Mission\n\n * make awesome software with modular components.\n * crypto p2p swiss armyknife for human liberation.\n\n## Problems\n\n * Open source is open for subversion.\n * Incentives and mission are misaligned.\n * Need directory \u0026 forum for Tendermint/SDK forks.\n\n## Partial Solution: adopt principles\n\n * Simplicity of design.\n * The code is the spec.\n * Minimal code - keep total footprint small.\n * Minimal dependencies - all dependencies must get audited, and become part of\n   the repo.\n * Modular dependencies - whereever reasonable, make components modular.\n * Completeness - software projects that don't become finished are projects\n   that are forever vulnerable. One of the primary goals of the Gno language\n   and related works is to become finished within a reasonable timeframe.\n\n## What is already proposed for Tendermint2:\n\n* Complete Amino. -\u003e multiplier of productivity for SDK development, to not\n  have to think about protobuf at all. Use \"genproto\" to even auto-generate\n  proto3 for encoding/decoding optimization through protoc. // MISSION: be the\n  basis for improving the encoding standard from proto3, because proto3\n  length-prefixing is slow, and we need \"proto4\" or \"amino2\". // LOOK at the\n  auto-generated proto files!\n  https://github.com/gnolang/gno/blob/master/pkgs/bft/consensus/types/cstypes.proto\n  for example. // There was work to remove this from the CosmosSDK because\n  Amino wasn't ready, but now that it is, it makes sense to incorporate it into\n  Tendermint2.\n\n* Remove EvidenceReactor, Evidence, Violation -\u003e we need to make it easy to\n  create alt mempool reactors. We \"kill two birds with one stone\" by\n  implementing evidence as a first-class mempool lane. The authors of \"ABCI++\"\n  have a different set of problems to solve, so we should do both! Tendermint++\n  and Tendermint2.\n\n* Fix address size to 20 bytes -\u003e 160 is sufficient, and fixing it brings\n  optimizations.\n\n* General versionset system for handshake negotiation. -\u003e So Tendermint2 can be\n  used as basis for other p2p applications.\n\n* EventBus -\u003e EventSwitch. -\u003e For indexing, use an external system. This keeps\n  Tendermint2 minimal, allowing integration with plugin modules, without having\n  any internal implementation at all. EventSwitch is also simpler, and\n  synchronous, and this keeps the Tendermint tests deterministic. There is no\n  performance need to do anything else than keep the Tendermint protocol\n  synchronous. (If there is, because of massive validator numbers for whatever\n  reason, then it should be a fork of Tendermint with a unique \u0026 distinct name,\n  and would be under the same taxonomy of Tendermint).\n\n* Fix nondeterminism in consensus tests -\u003e in relation to the above.\n\n* Add \"MaxDataBytes\" for total tx data size limitation. -\u003e The previous way of\n  limiting the total block size may result in unexpected behavior with changes\n  in validator size. We should err to allocate room for each module seperately,\n  to ensure availability.\n\n* Remove external dependencies like prometheus. -\u003e Any metrics and events\n  should be plugged in through the implementation of interfaces. This may\n  involve picking out the client logic from prometheus, but even if so it would\n  be forked into Tendermint2 and be audited like anything else.\n\n* General consensus/WAL -\u003e a WAL is useful enough to warrant being a re-usable\n  module.\n\n* Remove GRPC -\u003e GRPC support should be plugged in (say in a GRPC fork of\n  Tendermint2), so alternative RPC protocols can likewise be. Tendermint2 aims\n  to be independent of the Protobuf stack so that it can retain freedom for\n  improving its codec.\n\n* Remove dependency on viper/cobra -\u003e I have tried to strip out what we don't\n  use of viper/cobra for minimalism, but could not; and viper/cobra is one\n  prime target for malware to be introduced. Rather than audit viper/cobra,\n  Tendermint2 implements a cli convention for Go-structure-based flags and cli;\n  so if you still want to use viper/cobra you can do so by translating flags to\n  an options struct.\n\n* Question: Which projects use ABCI sockets besides CosmosSDK derived chains?\n\n## Roadmap\n\nFirst, we create a multi-organizational team for Tendermint2 \u0026\nTendermintCore/++ development. We will maintain a fork of the Tendermint++ repo\nand suggest changes upstream based on our work on Tendermint2, while also\nporting necessary fixes from Tendermint++ over to Tendermint2.\n\nWe will also reach out to ecosystem partners and survey and create a\ndirectory/taxonomy for Tendermint and CosmosSDK derivatives and manage a forum\nfor interfork collaboration.\n\nIdeally, Tendermint2 and TendermintCore/++ merge into one. \n\n## Challenge\n\nEither make a PR to Gaia/CosmosSDK/TendermintCore to be like Tendermint2, or\nmake a PR to Tendermint2 to import a feature or fix of TendermintCore.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftendermint%2Ftendermint2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftendermint%2Ftendermint2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftendermint%2Ftendermint2/lists"}