{"id":21519175,"url":"https://github.com/dcspark/geth-firehose","last_synced_at":"2025-06-11T08:38:20.115Z","repository":{"id":110084740,"uuid":"580208345","full_name":"dcSpark/geth-firehose","owner":"dcSpark","description":null,"archived":false,"fork":false,"pushed_at":"2023-01-21T07:11:14.000Z","size":237038,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"nico/milkomeda-proxying","last_synced_at":"2025-03-17T16:52:41.098Z","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":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dcSpark.png","metadata":{"files":{"readme":"README.fh.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-20T01:31:42.000Z","updated_at":"2023-01-20T16:21:32.000Z","dependencies_parsed_at":"2023-04-08T06:37:05.300Z","dependency_job_id":null,"html_url":"https://github.com/dcSpark/geth-firehose","commit_stats":null,"previous_names":[],"tags_count":446,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcSpark%2Fgeth-firehose","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcSpark%2Fgeth-firehose/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcSpark%2Fgeth-firehose/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcSpark%2Fgeth-firehose/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dcSpark","download_url":"https://codeload.github.com/dcSpark/geth-firehose/tar.gz/refs/heads/nico/milkomeda-proxying","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dcSpark%2Fgeth-firehose/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259231135,"owners_count":22825518,"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":[],"created_at":"2024-11-24T00:56:03.632Z","updated_at":"2025-06-11T08:38:20.105Z","avatar_url":"https://github.com/dcSpark.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"## StreamingFast Firehose Fork of `Ethereum` (`geth` client)\n\nThis is our Firehose instrumented fork of [ethereum/go-ethereum](https://github.com/ethereum/go-ethereum) repository. In this README, you will find instructions about how to work with this repository.\n\n### Versions\n\nThe Firehose instrumentation have a major version for the messages exchanges with Firehose on Ethereum binary (`fheth`). The\nversions we currently supported:\n\n- Version 1 using the `firehose-v1` branch and `fh1` tag(s) suffix\n- Version 2 using the `firehose-v2` branch and `fh2` tag(s) suffix\n\nRead [Branches \u0026 Workflow](#branches-\u0026-workflow) section for more details about how we handle branching model and versions.\n\n### Initialization\n\nThe tooling and other instructions expect the following project\nstructure, it's easier to work with the Firehose fork when you use\nthe same names and settings.\n\n```\ncd ~/work\ngit clone --branch=\"firehose-v1\" git@github.com:streamingfast/go-ethereum.git\ncd go-ethereum\n\ngit remote rename origin sf\n\ngit checkout firehose-v2\ngit checkout firehose-v1-v1.10.1\ngit checkout firehose-v2-v1.10.1\n\ngit remote add origin https://github.com/ethereum/go-ethereum.git\ngit remote add polygon https://github.com/maticnetwork/bor.git\ngit remote add bsc https://github.com/binance-chain/bsc.git\n\ngit fetch origin\ngit fetch polygon\ngit fetch bsc\n\ngit checkout release/geth-1.10.x-fh1\ngit checkout release/bsc-1.1.x-fh1\ngit checkout release/polygon-0.2.x-fh1\n```\n\nIf you want to work on one of the unmaintained branches:\n\n```\ngit remote add heco https://github.com/HuobiGroup/huobi-eco-chain.git\ngit remote add optimism https://github.com/ethereum-optimism/go-ethereum.git\ngit remote add fantom-geth https://github.com/Fantom-foundation/go-ethereum.git\ngit fetch heco\ngit fetch optimism\ngit fetch fantom-geth\ngit checkout release/heco-1.0.x-fh1\ngit checkout release/optimism-0.1.x-fh1\ngit checkout release/fantom-geth-1.9.x-fh1\n```\n\n##### Assumptions\n\nFor the best result when working with this repository and the scripts it contains:\n\n- The remote `sf` exists on main module and points to `git@github.com:streamingfast/go-ethereum.git`\n- The remote `origin` exists on main module and points to https://github.com/ethereum/go-ethereum.git\n\n### Branches \u0026 Workflow\n\nDealing with a big repository like Ethereum that have multiple versions for which we need\nto track multiple forks (`Matic`, `BSC`) pose a branch management challenges.\n\nEven more that we have our own set of patches to enable deep data extraction\nfor Firehose consumption.\n\nWe use merging of the branches into one another to make that work manageable.\nThe first and foremost important rule is that we always put new development\nin the `firehose-v1` branch.\n\nThis branch must always be tracking the lowest supported version of all. Indeed,\nthis is our \"work\" branch for our patches, **new development must go there**. If you\nperform our work with newer code, the problem that will arise is that this new\nfirehose work will not be mergeable into forks or older release that we still\nsupport!\n\n`firehose-v1` should always be merged right away on `firehose-v2` that produces Ethereum\nblock version 2.\n\nWe also support and intermediate branch for version v1.10.1 of Geth. The reason for this\nis that this version added refactoring to support multiple transactions types which needs to be\nproperly handled (1.10.0 more specifically did the refactoring, but 1.10.1 was added almost at\nthe same moment as 1.10.0).\n\n`firehose-v1` should be merged always in `firehose-v1-v1.10.1` and `firehose-v2` in `firehose-v2-v1.10.1`.\nThen those branch should be the\n\nWe then create `release/\u003cidentifier\u003e` branch that tracks the version of interest\nfor us, versions that we will manages and deploy.\n\nCurrently supported forks \u0026 version and the release branch\n\n- `firehose-v1` - Default branch with all Firehose commits in it, based on Geth `1.9.10`.\n- `firehose-v2` - Default branch with all Firehose commits in it, based on Geth `1.9.10` (Ethereum Block Version 2).\n- [release/geth-1.10.x-fh1](https://github.com/streamingfast/go-ethereum/tree/release/geth-1.10.x-fh1) - Ethereum Geth, latest update for this branch is `1.10.7` ([https://github.com/ethereum/go-ethereum](https://github.com/ethereum/go-ethereum)).\n- [release/polygon-0.2.x-fh1](https://github.com/streamingfast/go-ethereum/tree/release/polygon-0.2.x-fh1) - Polygon fork (a.k.a Matic), based on Geth `1.10.3`, latest update for this branch is `v0.2.6` ([https://github.com/maticnetwork/bor](https://github.com/maticnetwork/bor)).\n- [release/bsc-1.1.x-fh1](https://github.com/streamingfast/go-ethereum/tree/release/bsc-1.1.x-fh1) - BSC fork (Binance), based on Geth `1.10.3`, latest update for this branch is `v1.1.1` ([https://github.com/binance-chain/bsc](https://github.com/binance-chain/bsc)).\n- [release/heco-1.0.x-fh1](https://github.com/streamingfast/go-ethereum/tree/release/heco-1.0.x-fh1) - HECO fork (a.k.a Huobi Eco Chain), based on Geth `1.10.1`, latest update for this branch is `v1.1.1` ([https://github.com/HuobiGroup/huobi-eco-chain](https://github.com/HuobiGroup/huobi-eco-chain)).\n- [release/optimism-0.1.x-fh1](https://github.com/streamingfast/go-ethereum/tree/release/optimism-0.1.x-fh1) - Optimism fork, based on Geth `1.9.10`, latest update for this branch is `v0.1.4` ([https://github.com/ethereum-optimism/go-ethereum](https://github.com/ethereum-optimism/go-ethereum)).\n- [release/fantom-geth-1.9.x-fh1](https://github.com/streamingfast/go-ethereum/tree/release/fantom-geth-1.9.x-fh1) - Fantom Geth fork, based on Geth `1.9.22`, latest update for this branch is `v1.9.22-ftm-0.5` (a branch) ([https://github.com/Fantom-foundation/go-ethereum](https://github.com/Fantom-foundation/go-ethereum)).\n\n*Note* To find on which Geth version a particular fork is, you can do `git merge-base sf/release/heco-v1.0.x-fh1 origin/master` where `origin/master` is the `master` branch of the original Geth repository (https://github.com/ethereum/go-ethereum).\n\n#### Making New Firehose Changes\n\nMaking new changes should be performed on the `firehose-v1-v1.10.1` branch. When happy\nwith the changes, simply merge the `firehose-v1-v1.10.1` branch in all the release branches we track\nand support.\n\n    git checkout firehose-v1-v1.10.1\n    git pull -p\n\n    # Perform necessary changes, tests and commit(s)\n\n    git checkout release/geth-1.10.x-fh1\n    git pull -p\n    git merge firehose-v1-v1.10.1\n\n    git checkout release/polygon-0.2.x-fh1\n    git pull -p\n    git merge firehose-v1-v1.10.1\n\n    git push sf firehose-v1-v1.10.1 release/geth-1.10.x-fh1 release/polygon-0.2.x-fh1\n\n**Note** On newer fork, you must merge the right version, for example if the fork never merged 1.10.1 from the upstream Geth, you must **not** use\n`firehose-v1-v1.10.1` but instead use `firehose-v1` which is based on 1.9.10.\n\n### Update to New Upstream Version\n\nWe assume you are in the top directory of the repository when performing the following\noperations. Here, we outline the rough idea. Extra details and command lines to use\nwill be completed later if missing.\n\nWe are using `v1.10.18` as the example release tag that we want to update to, assuming\n`v1.10.17` was the previous latest merged tag. Change\nthose with your own values.\n\nFirst step is to checkout the release branch of the series you are currently\nupdating to:\n\n    git checkout release/geth-1.10.x-fh1\n    git pull -p\n\nYou first fetch the origin repository new data from Git:\n\n    git fetch origin -p\n\nThen apply the update\n\n    git merge v1.10.18\n\nSolve conflicts if any. Once all conflicts have been resolved, commit then\ncreate a tag with release\n\n    git tag geth-v1.10.18-fh1\n\nThen push all that to the repository:\n\n    git push sf release/geth-1.10.x-fh1 geth-v1.10.18-fh1\n\n### Development\n\nAll the development should happen in the `firehose-v1` branch, this is our own branch\ncontaining our commits.\n\n##### Build Locally\n\n    go install ./cmd/geth\n\n#### Release\n\n   Github actions are automatically created when creating a tag\n\n### View only our commits\n\n**Important** To correctly work, you need to use the right base branch, otherwise, it will be screwed up. The `firehose-v1`\nbranch was based on `v1.9.23` at time of writing.\n\n* From `gitk`: `gitk --no-merges --first-parent v1.9.23..firehose-v1`\n* From terminal: `git log --decorate --pretty=oneline --abbrev-commit --no-merges --first-parent v1.9.23..firehose-v1`\n* From `GitHub`: [https://github.com/streamingfast/go-ethereum/compare/v1.9.23...firehose-v1](https://github.com/streamingfast/go-ethereum/compare/v1.9.23...firehose-v1)\n\n* Modified files in our fork: `git diff --name-status v1.9.23..firehose-v1 | grep -E \"^M\" | cut -d $'\\t' -f 2`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcspark%2Fgeth-firehose","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdcspark%2Fgeth-firehose","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdcspark%2Fgeth-firehose/lists"}