{"id":29578449,"url":"https://github.com/insolar/block-explorer","last_synced_at":"2025-07-19T15:08:41.559Z","repository":{"id":56395839,"uuid":"259645732","full_name":"insolar/block-explorer","owner":"insolar","description":null,"archived":false,"fork":false,"pushed_at":"2023-09-20T18:24:20.000Z","size":6359,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":20,"default_branch":"master","last_synced_at":"2024-11-14T14:00:00.735Z","etag":null,"topics":["blockexplorer","etl","go","golang","openapi-generator","openapi-specification"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/insolar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2020-04-28T13:31:57.000Z","updated_at":"2023-09-29T21:18:25.000Z","dependencies_parsed_at":"2024-06-20T12:58:09.896Z","dependency_job_id":"7f485f28-1dc4-48d0-91fe-a99eebdfbfab","html_url":"https://github.com/insolar/block-explorer","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/insolar/block-explorer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insolar%2Fblock-explorer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insolar%2Fblock-explorer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insolar%2Fblock-explorer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insolar%2Fblock-explorer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/insolar","download_url":"https://codeload.github.com/insolar/block-explorer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insolar%2Fblock-explorer/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265951429,"owners_count":23853954,"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":["blockexplorer","etl","go","golang","openapi-generator","openapi-specification"],"created_at":"2025-07-19T15:08:40.789Z","updated_at":"2025-07-19T15:08:41.554Z","avatar_url":"https://github.com/insolar.png","language":"Go","readme":"# Generic Block Explorer\n\nThis repository contains a backend and API implementation for the Generic Block Explorer (GBE) application.\n\nThe GBE's backend pulls records from [Insolar](https://github.com/insolar/insolar)'s API and stores them in a relational format. Records are Insolar's smallest data unit that underpins all data produced by smart contracts. So, GBE does not recognize any entities at business level (users, transactions), only the ones at logic level (requests, execution results, object states).\n\nGBE provides an API of its own, optimized for data visualization. The [GBE's frontend](https://github.com/insolar/frontend-block-explorer) (developed separately) then puts up a web face that allows the user to inspect the data in a friendly way.\n\n## Install\n\nTo manually deploy the GBE's backend, first install:\n \n- [Go 1.14](https://golang.org/dl/)\n- [PostgeSQL 12+](https://www.postgresql.org/download/)\n\nOr you can use Docker of the latest version if you prefer a containerized deployment.\n\n## Deploy\n\nDeploy with docker-compose:\n\n```\nmake config \u0026\u0026 docker-compose up -d\n```\n\nAlternatively, deploy manually by completing the following steps:\n\n1. Resolve dependencies and build binaries:\n\n   ```\n   make all\n   ```\n\n2. Migrate the data from Insolar and configure the deployment:\n\n   ```\n   make config migrate\n   ```\n\n   **Note**: You can change the default configuration in `.artifacts/*.yaml` files. For example, connection parameters between Insolar and the backend's database.\n\n3. Start the backend and API:\n\n   ```\n   ./bin/block-explorer --config=.artifacts/block-explorer.yaml\n   ./bin/api --config=.artifacts/api.yaml\n   ```\n\n## Monitor metrics\n\nStart the metrics server:\n\n```\ncd ./scripts/monitor \u0026\u0026 docker-compose up -d\n```\n\nOpen Grafana at http://localhost:3000/ with `admin:pass` default credentials.\n\nOpen Prometheus at http://localhost:9090/.\n\n## Learn what's under the hood\n\nGBE consists of the following components:\n\n**Extractor**. Fetches data from Insolar and sends the data to the transformer.\n\n**Transformer**. Receives data from the extractor, transforms the data into GBE entities (records, lifelines, pulses, jets, and jet drops), and sends them to the processor.\n\n**Processor**. Processes the entities pulse-by-pulse and stores them in the storage (an internal component).\n\n**Controller**. Searches for data missing in GBE's database—pulses and their records. If found, the controller asks the extractor to re-request the missing data.\n\n## Run tests\n\nYou can run several kinds of tests against the backend: unit, integration, load tests, and benchmarks.\n\n### Unit and integration tests\n\nTo run unit tests, say:\n\n```\nmake unit\n```\n\nIntegration tests require Docker. Make sure you run Docker and say the following to run the tests:\n\n```\nmake integration\nmake test-heavy-mock-integration\n```\n\n### Load tests\n\nTo run load tests, see their [README](load/README.md).\n\n### Benchmarks\n\nTo run benchmarks, say:\n\n```\nmake bench\nmake bench-integration\n```\n\nTo compare benchmarks between the latest commit and your newest one, follow these steps:\n\n1. Install [cob](https://github.com/knqyf263/cob):\n\n   ```\n   curl -sfL https://raw.githubusercontent.com/knqyf263/cob/master/install.sh | sudo sh -s -- -b /usr/local/bin\n   ```\n\n2. (**Required**) Commit your changes.\n\n3. Compare benchmarks between the latest two commits by running:\n\n   ```\n   make bench-compare\n   make bench-compare-integration\n   ```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finsolar%2Fblock-explorer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finsolar%2Fblock-explorer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finsolar%2Fblock-explorer/lists"}