This repository is the Bitcoin Universe fork of the Mempool Open Source Project.
| Field | Value |
|---|---|
| Upstream repository | https://github.com/mempool/mempool |
| Upstream release | v3.3.1 |
| Upstream tag object | ce1f34a221fa0e1fc914947d5c0e0fe5b942ff11 |
| Upstream base commit | 9332d9db97bcc7beed079acc8f79aa21c9b12a3b |
| Upstream master at fork time | 63b89613b912063332cb0461dabeb209166c283e (2026-08-25) |
| Fork date | 2026-08-26 |
| Fork repository | https://github.com/bitcoinuniverseio/mempool |
| Integration branch | develop |
| Protected branch | main |
v3.3.1 is the latest stable upstream release (published 2026-04-21). v3.4.0 exists
only as an alpha prerelease. GitHub lists no published security advisories for the
upstream repository at fork time. The master branch carries ~4 months of
unreleased work; it was not selected because the release gate requires a base that
passes the complete upstream test suite as a known-stable reference point.
origin= https://github.com/bitcoinuniverseio/mempool.git (Bitcoin Universe fork)upstream= https://github.com/mempool/mempool.git (push disabled locally)
The complete upstream Git history and all upstream tags are preserved in this fork.
upstream/master was at 1a23cdfe78c2ee4ccc1b5d39b9a7e74f7f4df3ef, which is
40 commits ahead of the master recorded at fork time. Every one of those 40
was read and classified:
| class | count | what they are |
|---|---|---|
| Dependency bumps | 36 | Dependabot pull requests and their merges: axios, body-parser, qs and express, nanoid, tar, engine.io, socket.io-parser, shell-quote, websocket-driver, ip-address, mysql2, sigstore, systeminformation, hono |
| Toolchain | 2 | Angular bumped to 20.3.29 |
| Infrastructure | 2 | A less aggressive CI provenance check |
| Product features | 0 | none |
| Correctness or security fixes to product code | 0 | none |
No upstream commit in that range changes product behaviour, and none fixes a defect this fork carries. The work is dependency maintenance.
The bumps upstream applied do not describe this fork's exposure, because this fork has its own lockfiles. So the exposure was measured directly rather than inferred from upstream's commit list:
backend: zero advisories.npm auditreports no vulnerability at any severity against the installed tree.frontend: eleven advisories, ten of them in build tooling that never reaches a browser.@angular-devkit/build-angular,browser-sync,browser-sync-ui,immutable,less,image-size,webpack-dev-server,sockjs,uuidand@angular-devkit/build-webpackare all compile-time or dev-server packages. They are worth clearing and they are not shipped code.
echarts 5.4.3 carried
GHSA-fgmj-fm8m-jvvx, a
moderate cross-site scripting advisory, CVSS 6.1. echarts is a runtime
dependency: it draws every chart in the explorer, upstream's and Universe's.
Resolved on 2026-08-31 by moving to echarts 6.1.0 with zrender 6.1.0.
ngx-echarts stays at 20.0.2, whose peer range (echarts >=5.0.0,
@angular/core >=20.0.0) covers the new major on the Angular 20 line this
fork runs. The chart registration in frontend/src/app/graphs/echarts.ts
uses the tree-shakeable echarts/core entry points, which are unchanged
across the major. The full unit suite and the production build pass on the
new version, and npm audit no longer reports any advisory against a
package that reaches a browser. Upstream remains on 5.x; on future syncs
its ~5.4.0 pin loses to this one on conflict.
master in this fork is the read-only upstream mirror and nothing else.
develop is the integration branch and main is the release branch. The
scheduled upstream-sync workflow runs weekly and opens a synchronization pull
request when it finds drift; that is the mechanism that keeps this section from
going stale, and this reconciliation is what it was measured against.
Universe modifications are tracked here as they land. See docs/architecture/ for
the overlay architecture and docs/operations/UPSTREAM-SYNC.md for the
synchronization procedure.
| Subsystem | Nature of modification |
|---|---|
frontend/src/app/universe/ |
Added. Universe protocol UI: protocol directory, asset flow section, protocol badge, source and licenses page. No upstream file is involved. |
frontend/src/app/master-page.module.ts |
Two lazy routes added (/protocols, /source); upstream routes untouched. |
frontend/src/app/components/transaction/ |
The asset flow section is embedded on the transaction page. |
| Branding | Mempool Holdings trademarks replaced across templates, SEO, and the web manifest. See docs/legal/TRADEMARK-AUDIT.md. |
frontend/package.json, frontend/vitest.config.ts |
Unit test runner added. Upstream ships no working test target: angular.json has no test architect entry, so the upstream ng test script could never run. |
.github/workflows/universe-ci.yml, upstream-sync.yml |
Added. Upstream workflows are unchanged. |
scripts/universe/ |
Added. Protocol coverage documentation generator and its CI check. |
.nvmrc |
Pinned to the Universe toolchain version (24.19.0). |
backend/src/index.ts, backend/src/config.ts |
MEMPOOL.HTTP_HOST added, defaulting to loopback. Upstream binds every interface. |
backend/src/api/backend-info.ts |
Publishes the node's own sync state so the explorer can say when its data is behind the chain. |
frontend/src/app/services/enterprise.service.ts |
Hosted analytics reduced to a no-op; the upstream redirect on an unknown subdomain removed; no hostname treated as an enterprise subdomain. |
frontend/src/app/services/state.service.ts, seo.service.ts |
Cross-network links, the services API, and the canonical domain point at this deployment or are unset. |
frontend/sync-assets.js, frontend/package.json |
build:universe omits localization and asset synchronization; the hosted CDN rewrite is removed. |
| Deleted upstream surfaces | components/about/, components/trademark-policy/, components/accelerate-checkout/, lightning/group/, the sponsor index variants, and the upstream node fleet scripts. |
| Rewritten upstream surfaces | components/privacy-policy/, components/terms-of-service/, docs/api-docs/. |
| Renamed identifiers | activeGoggles$, goggleCycle, goggleIndex are now activeLens$, lensCycle, lensIndex, so the trademark does not survive minification. |
| Accessibility | Accessible names added to the icon-only navigation, the search submit button, and the blockchain toggles. |
scripts/universe/ |
Gateway, protocol coverage generator, and the branding, origin, and text gates. |
| Area | Risk |
|---|---|
frontend/src/app/master-page.module.ts |
Upstream edits its route table regularly. The two Universe routes sit at the end of the child route array to keep the conflict small and mechanical. |
| Branding templates | Any upstream change to a rebranded template conflicts by construction. docs/legal/TRADEMARK-AUDIT.md lists every touched file so a merge can be resolved deliberately. |
frontend/package.json |
The test script diverges from upstream. Upstream's value is inert, so upstream's version can be discarded on conflict. |
| Punctuation | Every em dash was removed repository wide, including from inherited READMEs, and scripts/universe/check-text.mjs keeps them out. Expect one-character conflicts in those files on sync. |
| Branding edits across upstream components | The trademark work touches many upstream templates. docs/legal/TRADEMARK-AUDIT.md lists every one, and the branding gate fails the build if a sync reintroduces a mark. |
The two upstream spec files under frontend/src/app/lightning/ import from a
path that does not exist in this tree and reference a missing src/test.ts.
They are left untouched so they keep merging cleanly; the Universe unit suite
does not include them.