Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
304 commits
Select commit Hold shift + click to select a range
3ae71ef
fix(eth): recover GetTransaction on archive backends with pruned tx i…
pragmaxim Jul 8, 2026
15126e8
perf(eth): recover pruned tx via getTransactionByBlockHashAndIndex
pragmaxim Jul 9, 2026
b72e072
feat(eth): allow rpcCall by whitelisted EVM method selectors
pragmaxim Jul 2, 2026
a28a85e
feat(server): make rpcCall allowlists runtime-configurable via admin API
pragmaxim Jul 2, 2026
5223548
perf(eth): decode only first 4 bytes in evmCallSelector
pragmaxim Jul 2, 2026
fb44b13
refactor(server): unify admin contract-info and runtime-settings APIs
pragmaxim Jul 2, 2026
06a411d
fix(server,db): address review nits and harden the admin endpoints
pragmaxim Jul 2, 2026
f7ba6a4
feat(server): list all runtime settings, warn on env/override drift
pragmaxim Jul 3, 2026
a9b3f5d
feat(server,db): paginated list endpoint for admin contract-info
pragmaxim Jul 3, 2026
7f0c066
ci: idempotent admin API e2e tests against the deployed dev instance
pragmaxim Jul 7, 2026
6d7c112
fix(ci): resolve the admin e2e URL variable by test coin name
pragmaxim Jul 7, 2026
f9a8677
fix(db): fail loudly on undecodable key in ListContractInfos
pragmaxim Jul 8, 2026
3665ff7
Tron testnet backend update 4 8 2 (#1611)
cranycrane Jul 9, 2026
302d08a
1581 add upper cap limits to chosen websocket endpoints to increase r…
cranycrane Jul 10, 2026
57bb05d
fix(eth): prevent slice-bounds panic from ENS log name-length overflow
pragmaxim Jul 9, 2026
6da7c56
fix(eth): guard offset-shift overflow in processParam, constify nameS…
pragmaxim Jul 10, 2026
1236a84
test(fiat): raise concurrency-test drain timeout to avoid CI flake
pragmaxim Jul 9, 2026
084b1cc
perf(api): resolve tx inputs without unpacking whole prev-tx records
Aharonee Jun 30, 2026
42a69d1
fix(ci): remove setup-node npm cache to avoid tar extraction failure …
pragmaxim Jul 10, 2026
d7cbc34
fix(ci): bump actions to Node.js 24-compatible versions
pragmaxim Jul 10, 2026
d45d56e
fix(ci): use workspace-local npm cache to avoid tar extraction failure
pragmaxim Jul 10, 2026
08d720c
fix(ci): ensure .npm-cache dir exists so cache save never warns
pragmaxim Jul 10, 2026
521c56e
fix(ci): widen block-index search window to 20 blocks for slow-indexi…
pragmaxim Jul 10, 2026
5b82400
fix(ws): cap subscribeFiatRates tokens array length (#1623)
cranycrane Jul 13, 2026
8b8d97d
fix(eth): prevent duplicate ERC-721 holdings (#1624)
cranycrane Jul 13, 2026
b370282
feat(websocket): make per-connection pending request limit env-config…
knaperek Jul 13, 2026
b3db9f8
fix(eth): gate alternative-provider nonce lookups to recent private s…
cranycrane Jul 14, 2026
301865b
fix(eth): route nonce reads to the provider that accepted the send
cranycrane Jul 14, 2026
cb51017
fix(eth): release nonce routing when a sender's private txs settle
cranycrane Jul 14, 2026
cfbe232
fix(eth): raise fallback pending nonce to the alternative mempool floor
cranycrane Jul 14, 2026
218fd90
fix(eth): raise successful provider nonce answers to the cache floor too
cranycrane Jul 14, 2026
3c62518
test(eth): cover the batched nonce path against the accepting provider
cranycrane Jul 14, 2026
9832e46
docs(eth): document per-instance nonce routing and release edge window
cranycrane Jul 14, 2026
b644e70
fix(eth): order sender releases by send generation instead of wall clock
cranycrane Jul 14, 2026
bd1c8bc
feat(eth): add opt-out routing all nonce queries to the alternative p…
cranycrane Jul 14, 2026
50cf580
revert(eth): drop the *_ALTERNATIVE_NONCE_FOR_ALL_ADDRESSES escape hatch
cranycrane Jul 14, 2026
e282fe6
fix(eth): stamp cached txs with their own submission's send generation
cranycrane Jul 14, 2026
a2f48f2
fix(eth): apply the pending-nonce floor whenever a provider is config…
cranycrane Jul 14, 2026
fffa07e
refactor(eth): key sender registration on the accepting URL
cranycrane Jul 14, 2026
fcb5ce1
feat(eth): meter alternative-provider nonce requests + Grafana panel
pragmaxim Jul 14, 2026
ab28c60
feat(xpub): make xpub expansion and cache caps configurable per coin
pragmaxim Jul 15, 2026
6e1299a
0.6.0 release changelog
pragmaxim Jul 16, 2026
9dd1f68
feat(explorer): collapse long input/output lists in tx detail
ranjbar-dev Jul 18, 2026
6e38953
fix(explorer): address tx-io collapse review feedback
ranjbar-dev Jul 20, 2026
33c156f
fix(explorer): move bottom tx-io toggle inside collapse div
ranjbar-dev Jul 21, 2026
bddc5c9
ci(deploy): tolerate BB_STAGING work-in-progress coins in runner map
pragmaxim Jul 21, 2026
b0094fd
build: tolerate BB_STAGING coins in RPC env-var validation
pragmaxim Jul 21, 2026
7357453
docs: document the BB_STAGING work-in-progress coin variable
pragmaxim Jul 21, 2026
468353e
ci: address BB_STAGING review findings
pragmaxim Jul 21, 2026
569000f
chore(deps-dev): bump undici from 6.25.0 to 6.27.0 in /tests/openapi
dependabot[bot] Jun 23, 2026
85b3367
chore(deps): bump github.com/ethereum/go-ethereum from 1.16.7 to 1.17…
dependabot[bot] Jul 21, 2026
9686570
chore(deps): bump golang.org/x/crypto from 0.43.0 to 0.52.0
dependabot[bot] Jul 9, 2026
7c6634e
ci: bump actions/setup-node from 6.4.0 to 7.0.0
dependabot[bot] Jul 20, 2026
96bc651
chore(deps): bump esbuild and tsx in /tests/openapi
dependabot[bot] Jun 17, 2026
d838eac
chore(deps): bump js-yaml and @redocly/openapi-core in /tests/openapi
dependabot[bot] Jul 7, 2026
036147f
chore(deps-dev): bump dompurify from 3.4.5 to 3.4.12 in /tests/openapi
dependabot[bot] Jul 21, 2026
ca41cd5
chore(deps): bump go.opentelemetry.io/otel from 1.39.0 to 1.41.0
dependabot[bot] Jul 21, 2026
aa46dc6
chore(deps-dev): bump ws from 8.18.3 to 8.21.0 in /tests/openapi
dependabot[bot] Jul 21, 2026
191ae66
chore(deps-dev): bump form-data from 4.0.5 to 4.0.6 in /tests/openapi
dependabot[bot] Jun 17, 2026
c4625d1
Update Firo daemon 0.14.16.1
justanwar Jun 3, 2026
981d3d6
fix: resolve 5 Dependabot security alerts (CVE-2024-45339, CVE-2026-1…
pragmaxim Jul 21, 2026
97b4f7a
fix(db): make --repair honest about what it can and cannot fix (#1413)
pragmaxim Jul 22, 2026
ec0751e
fix(db): address review feedback on --repair (#1413)
pragmaxim Jul 23, 2026
7b7f828
fix(eth): use effectiveGasPrice for L2 transaction fees
pragmaxim Jul 22, 2026
60e4ea1
test(e2e): verify L2 transaction fee uses effectiveGasPrice
pragmaxim Jul 22, 2026
f8f21f9
test(e2e): extend fee-consistency check to L1 EVM coins
pragmaxim Jul 22, 2026
5ee187e
test(e2e): make fee-consistency check deterministic
pragmaxim Jul 22, 2026
180c2cd
chore: remove remaining Holesky testnet references
pragmaxim Jul 22, 2026
7642ad4
Add Robinhood Chain support (archive mainnet + testnet) (#1618)
cranycrane Jul 23, 2026
a83486e
feat(server): add request timeouts and resource bounds for REST, WebS…
cranycrane Jul 23, 2026
b95013b
fix(internal-server): protect against CSRF (#1653)
cranycrane Jul 27, 2026
f05c03b
Fix/increase get block default page size (#1654)
cranycrane Jul 27, 2026
d18e2a6
feat(eth): poll alternative fee providers eagerly (10s) with a config…
pragmaxim Jul 24, 2026
79925ca
feat(ethereum): Erigon 3.3.10 -> 3.5.2 (#1647)
cranycrane Jul 28, 2026
2c373c6
fix(eth): correct ENS nameExpires function selector
pragmaxim Jul 26, 2026
ca2e28e
test(eth): add unit+integration tests for ENS function selectors and …
pragmaxim Jul 26, 2026
4adb955
test(eth): add e2e ENS resolution test via OpenAPI
pragmaxim Jul 26, 2026
2ede49f
fix(eth): parse nameExpires as raw ABI word; address PR review
pragmaxim Jul 27, 2026
bb1b910
feat(eth): tune per-coin alternative fee poll cadence
pragmaxim Jul 29, 2026
2a961e3
fix(fourbyte): prevent panic on malformed 4byte signature text (#1651)
cranycrane Jul 29, 2026
3daa3f8
fix(eth): treat balanceOf reverts as benign in single-call path (#1677)
cranycrane Jul 29, 2026
286be0c
fix(robinhood): turn off memory protection for backend to avoid backe…
cranycrane Jul 29, 2026
2054566
chore(zcash): update Zebra 5.0.0->6.2.2 (#1659)
cranycrane Jul 29, 2026
03122db
ci: bump actions/checkout from 7.0.0 to 7.0.1
dependabot[bot] Jul 27, 2026
9be6c1f
feat: add whitelist IP support to bypass rate limiting
pragmaxim Jul 30, 2026
5bb3729
fix: guard onDisconnect release and fix parseAddr ordering
pragmaxim Jul 30, 2026
6a6624b
feat(server): make per-IP websocket connection limits configurable (#…
cranycrane Jul 30, 2026
616f986
feat(robinhood): add alternative estimate fee from infura (#1680)
cranycrane Jul 30, 2026
f1d243b
feat(ethereum): cap Erigon eth_getLogs results via --rpc.logs.maxresults
pragmaxim Jul 31, 2026
3ad4ebc
feat(grafana): chart websocket IP blocklist metrics (#1687)
cranycrane Aug 4, 2026
2461db5
fix(websocket): log bounded payload preview in onRequest error paths …
cranycrane Aug 4, 2026
89963a3
feat(hyperevm): add Hyperliquid (HyperEVM) mainnet support (#1637)
cranycrane Aug 4, 2026
d4ad523
feat(metrics): add initial_sync gauge
pragmaxim Jul 31, 2026
9de39fe
fix(metrics): stop zeroing backend height when the backend errors
pragmaxim Jul 31, 2026
e60fdb8
fix(metrics): make tip age survive a restart and a rollback
pragmaxim Jul 31, 2026
7b356a2
fix(metrics): refresh sync gauges without waiting for the app-info loop
pragmaxim Jul 31, 2026
79ee1e6
feat(metrics): add mempool_last_sync_timestamp_seconds
pragmaxim Jul 31, 2026
aea9e63
fix(metrics): report the observed block period in fractional seconds
pragmaxim Jul 31, 2026
c32bcc8
fix(metrics): label index resync errors by where they came from
pragmaxim Jul 31, 2026
20467e5
fix(configs): set averageBlockTimeMs for the Bitcoin test networks
pragmaxim Jul 31, 2026
6c863fb
fix(metrics): report not-in-sync while the backend cannot be queried
pragmaxim Jul 31, 2026
e871b9d
fix: floor the EVM freshness window, then correct three stale block t…
pragmaxim Jul 31, 2026
dcfd2da
style: cap the comments added by this branch at five lines
pragmaxim Jul 31, 2026
ee02a16
fix(configs): correct BSC/Polygon block times and signet indentation
pragmaxim Aug 4, 2026
2336a3c
fix(metrics): harden InternalState averages and sync-state snapshot
pragmaxim Aug 4, 2026
382d36d
fix(metrics): make mempool_last_sync absent until the first reload
pragmaxim Aug 4, 2026
4877c3f
fix(metrics): single-writer sync gauges and generalize freshness check
pragmaxim Aug 4, 2026
8dd42cb
fix(configs): keep BSC averageBlockTimeMs at 450ms
pragmaxim Aug 4, 2026
1955eea
fix(metrics): keep the stale-index demotion EVM-only, correct Polygon…
pragmaxim Aug 7, 2026
be90e5a
fix(grafana): renumber mempool reload age panel to a free id
pragmaxim Aug 7, 2026
09347e0
chore(eth): change alternative mempool tx timeout to 3 hours to alig…
cranycrane Aug 6, 2026
40518b9
chore(eth): keep public mempool retention at 48h, only alternative ca…
cranycrane Aug 7, 2026
cf0cffc
ci: bump undici from 6.27.0 to 6.28.0 in /tests/openapi
dependabot[bot] Aug 5, 2026
6ce54d0
chore(evm): set explicit mempool tx timeouts for arbitrum, base and b…
cranycrane Aug 7, 2026
b458df8
feat(eth): make ENS reverse aliases opt-in per chain (#1695)
cranycrane Aug 12, 2026
281da2c
fix(db): keep contract registry consistent for same-block lifecycles …
cranycrane Aug 12, 2026
b2f91f4
feat(eth)!: heal the internal data error queue automatically (#1705)
cranycrane Aug 12, 2026
5f3fea3
chore(litecoin): bump backend to 0.21.5.6 (#1701)
cranycrane Aug 18, 2026
787a43a
chore(tron): update java-tron 4.7.7->4.8.2.1 (#1725)
cranycrane Aug 18, 2026
8ccf2f2
chore(eth-archive); switch to infura for fee estimation (#1723)
cranycrane Aug 18, 2026
c41a05f
feat: fetch ERC-20 balances via Multicall3 (per-chain address for Tro…
cranycrane Aug 18, 2026
580b7ed
fix(evm): pool JSON-RPC connections to prevent port exhaustion (#1732)
cranycrane Aug 20, 2026
9f9754d
feat(sendtx): observability for sends, provider urls redacted from cl…
cranycrane Aug 20, 2026
8268bb8
chore(hoodi): bump prysm 7.1.0 -> 7.1.8 (#1740)
cranycrane Aug 25, 2026
feff59d
fix(api): scale the in-sync tip tolerance to the chain's cadence
pragmaxim Aug 10, 2026
7163424
fix(api): bound the in-sync gap in both directions and floor the cadence
pragmaxim Aug 25, 2026
17f5240
chore(eth,sepolia): bump prysm 7.1.3 -> 7.1.8 (#1741)
cranycrane Aug 25, 2026
46c2af7
fix(eth): gate alternative-provider gas estimates to recent private s…
pragmaxim Jul 21, 2026
3a974a7
fix(eth): retire same-nonce predecessors on relay acceptance, not fet…
pragmaxim Jul 21, 2026
db7ca7c
chore(eth): estimate-gas fallback on malformed result + Grafana panel
pragmaxim Jul 21, 2026
9c1ddf1
fix(eth): fresh estimate-gas fallback deadline + skip cache path on r…
pragmaxim Jul 21, 2026
9aefee3
fix(eth): gate alt-mempool lifecycle metrics on the actual cache removal
pragmaxim Jul 21, 2026
2037d3c
fix(eth): order RBF cache eviction by send generation, not fetch-back…
pragmaxim Jul 21, 2026
310d257
fix(eth): clear the wrapped mempool on alt-cache read-path eviction
pragmaxim Jul 21, 2026
cdc24be
docs(eth): document the EVM private-relay broadcast + pending-tx cache
pragmaxim Jul 21, 2026
b8873cc
fix(eth): don't let an unknown-generation keeper evict a newer replac…
pragmaxim Jul 23, 2026
27028a5
fix(eth): drop the wrapped-mempool re-add orphaned by a concurrent RB…
pragmaxim Jul 23, 2026
bb01f9a
refactor(eth): recover the accepted-send sender once, not twice
pragmaxim Jul 23, 2026
547eca8
fix(eth): close four gaps in the private send-tx cache found by review
pragmaxim Jul 28, 2026
8e7d390
docs(eth): map the two EVM pending-transaction stores
pragmaxim Jul 28, 2026
f077b4d
feat(eth): observability for stuck / hanging private transactions
pragmaxim Jul 28, 2026
82bd617
fix(eth): never lose a relay-accepted send - cache it from its signed…
pragmaxim Aug 5, 2026
db61a02
perf(eth): keep the private send path inside the wallet's deadline
pragmaxim Aug 5, 2026
2ed3a27
fix(eth): the post-send fetch-back updates its cache entry, never re-…
pragmaxim Aug 5, 2026
71233e5
docs(eth): rename the not-surfaced metric and correct what the send d…
pragmaxim Aug 5, 2026
3ef0fab
fix(grafana): move this branch's new panel ids above the ones master …
pragmaxim Aug 5, 2026
04633bb
fix(eth): hand out a copy of the cached tx body, not the cached body
pragmaxim Aug 5, 2026
5d003f9
fix(eth): don't let refresh traffic starve the fetch-back that expose…
pragmaxim Aug 5, 2026
c9f2c11
fix(eth): retire every same-nonce predecessor, not just the first
pragmaxim Aug 5, 2026
9de7f18
fix(eth): don't probe the zero hash after a failed primary send
pragmaxim Aug 5, 2026
6be027b
fix(eth): the post-send fetch-back only probes the relay, it writes n…
pragmaxim Aug 5, 2026
3509232
docs(eth): correct what the send docs and the metric help now describe
pragmaxim Aug 5, 2026
02667c5
style(eth): cut the comment volume this series added
pragmaxim Aug 5, 2026
eca5b1c
fix(eth): never advertise a pending nonce past a slot nothing fills
pragmaxim Aug 6, 2026
26a4bd0
fix(eth): scope relay nonce and estimate routing to its own horizon
pragmaxim Aug 6, 2026
9318d0e
perf(eth): back off relay reconcile probes as a cached send ages
pragmaxim Aug 6, 2026
229eb9b
fix(eth): size the private-relay pending window to when a tx can stil…
pragmaxim Aug 6, 2026
8b48dc1
test(eth): cover the probe stamp and the reconcile sweep
pragmaxim Aug 6, 2026
1534b40
style(eth): cut the prose volume of the pending-window series
pragmaxim Aug 6, 2026
36a171a
fix(eth): order an accepted send that does not decode
pragmaxim Aug 6, 2026
2bb630a
fix(eth): drain the background fetch-backs on shutdown
pragmaxim Aug 6, 2026
eb6cc01
perf(eth): decode a cached tx's nonce slot once, not on every scan
pragmaxim Aug 6, 2026
73e15bb
fix(eth): bound the estimate-gas fallback to the request's own budget
pragmaxim Aug 6, 2026
cc12bbe
fix(server): fail startup fast on a configuration error
pragmaxim Aug 6, 2026
12c8ded
docs(eth): correct four claims the send docs got wrong
pragmaxim Aug 6, 2026
1858283
fix(eth): evict a private tx the relay stops answering for
pragmaxim Aug 6, 2026
2fd80e0
docs(eth): the suite push deadline is 110s, sized to the fall-through…
pragmaxim Aug 6, 2026
7f4d008
fix(grafana): move the estimate-gas panel off the id master reused
pragmaxim Aug 10, 2026
a258163
feat(eth): count a panicking relay submission in eth_alternative_send…
pragmaxim Aug 24, 2026
8a8b254
docs(eth): note the 96s revert-protection retention exception
pragmaxim Aug 10, 2026
6dfa6a4
fix(eth): close the review gaps between the send path and the relay's…
pragmaxim Aug 10, 2026
a0b10b5
fix(eth): scope the retention guard and default to deployments with t…
pragmaxim Aug 10, 2026
60384c7
fix(eth): clamp the estimate fallback floor to the request budget
pragmaxim Aug 10, 2026
17e0b69
fix(eth): normalize txid spelling at the pending-cache boundaries
pragmaxim Aug 10, 2026
255d4a9
fix(grafana): renumber this branch's panels off the ids #1716 took
pragmaxim Aug 24, 2026
01fb97f
feat(ws): accept privatePending hint on getAccountInfo (wire plumbing)
pragmaxim Jul 21, 2026
062dcaf
feat(eth): short-circuit nonce routing on the privatePending hint
pragmaxim Jul 21, 2026
206c568
fix(ws): keep the lowest nonces when capping privatePending
pragmaxim Jul 21, 2026
3f994d4
feat(ws): document privatePending on the estimateFee request (contract)
pragmaxim Jul 21, 2026
4ab6960
feat(eth): short-circuit gas-estimate routing on the privatePending hint
pragmaxim Jul 21, 2026
eecbb8e
docs(eth): document privatePending hint, tighten its contract and tests
pragmaxim Jul 21, 2026
c92853e
docs(eth): clarify best-effort estimate routing and the hint-less tra…
pragmaxim Jul 23, 2026
8805a97
docs(eth): state the hint's contract as the walk, not as max+1
pragmaxim Aug 6, 2026
f5552d5
docs(eth): rest the hint's contract on the aligned relay, not on wall…
pragmaxim Aug 10, 2026
36f648d
fix(openapi): declare privatePending in the WebSocket spec
pragmaxim Aug 10, 2026
bf60a07
docs(eth): the hint widened the routing gate, so say so where operato…
pragmaxim Aug 10, 2026
2f6727a
test(eth): pin the declared-nonce plumbing and unmask a vacuous floor…
pragmaxim Aug 10, 2026
3cee098
docs(eth): state the relay property the hint's nonce routing rests on
pragmaxim Aug 11, 2026
c11579b
docs(eth): ground the hint's trust boundary in the pre-existing quota…
pragmaxim Aug 11, 2026
b1c6d53
fix(e2e): raise openapi fetch timeout to 25s
pragmaxim Aug 11, 2026
c78990b
ci: bump github.com/gorilla/websocket from 1.5.0 to 1.5.3
dependabot[bot] Aug 24, 2026
f959067
test(ws): fix race in shutdown in-flight-work assertion
pragmaxim Aug 25, 2026
1675449
docs: add ERC protocol enrichments guide (#1745)
pragmaxim Aug 26, 2026
390c874
fix(signet): decode base58 addresses on signet (#1739)
cranycrane Aug 27, 2026
c58deca
Update Firo daemon 0.14.18.0
justanwar Aug 28, 2026
892377d
chore(eth): update Erigon 3.5.2->3.5.5 (#1724)
cranycrane Aug 31, 2026
e52457e
fix(tron): stop fabricating confirmed nonce (#1751)
cranycrane Sep 1, 2026
6c47f4c
feat(eth): batch contract metadata reads via Multicall3 (#1753)
cranycrane Sep 1, 2026
edaacfa
perf(evm): serve GetChainInfo backend identity from a 60s cache (#1748)
cranycrane Sep 1, 2026
81fc490
chore(eth): keep private transactions pending for the whole mempool r…
cranycrane Sep 2, 2026
60ef2a1
feat(btc): serve mempool.space precise recommended fees (#1755)
cranycrane Sep 2, 2026
8438e66
feat(tron): log the outcome and txid of every direct send (#1765)
cranycrane Sep 4, 2026
bb22114
fix(evm): flush the address-contracts cache from the block-connect go…
cranycrane Sep 4, 2026
cdf745a
fix(eth): bound decoded contract name/symbol/tokenURI length (#1761)
cranycrane Sep 4, 2026
d5022af
fix(btc): derive xpub utxo path from the configured change index (#1763)
cranycrane Sep 4, 2026
b0bbb69
fix(sync): un-wedge steady-state EVM sync that falls behind the backe…
cranycrane Sep 4, 2026
2db5566
fix(sync): don't treat a fetchable block as a reorg without an expect…
cranycrane Sep 4, 2026
d7a1c10
fix(eth): stop indexing CALLCODE frames as internal transfers (#1738)
cranycrane Sep 4, 2026
da04bb1
fix(evm): keep confirmations sane when the reference height lags (#1762)
cranycrane Sep 4, 2026
7d34a0b
fix(api): serialize xpub cache updates to prevent data race (#1735)
cranycrane Sep 4, 2026
9091528
fix(api): match the outpoint when resolving a spending transaction (#…
cranycrane Sep 4, 2026
f5f5861
feat(eth): bound input-data decoding to a max calldata size (#1752)
cranycrane Sep 8, 2026
91154aa
ci: bump dompurify from 3.4.12 to 3.4.13 in /tests/openapi (#1710)
dependabot[bot] Sep 10, 2026
4943c2c
fix(btc): estimate 2 blocks when legacy estimatefee is asked for 1 an…
cranycrane Sep 10, 2026
6b612e2
fix(explorer): regenerate minified assets so the tx-io collapse ships…
cranycrane Sep 10, 2026
9f29fac
ci: bump @faker-js/faker and @redocly/cli in /tests/openapi (#1758)
dependabot[bot] Sep 10, 2026
8c57502
fix(btc): accept array-form "warnings" from Bitcoin Core 25.0+ (#1633)
torkelrogstad Sep 10, 2026
4fad4fa
feat(eth): fetch alternative fee provider data on demand (#1770)
cranycrane Sep 10, 2026
a6f9a4d
Add CurveZMQ support for encrypted message queue binding (#1784)
jhawk28 Sep 14, 2026
3882527
feat(build): allow per-environment coin config values (#1769)
cranycrane Sep 15, 2026
1f763e0
perf(sync): drop the redundant header RPCs from the steady-state EVM …
cranycrane Sep 15, 2026
7c2e220
fix(api): page mempool and confirmed txs as one sequence (#1737)
cranycrane Sep 15, 2026
61f3266
fix(eth): retire mempool entries by mined nonce, not by a null lookup…
cranycrane Sep 21, 2026
29b8baa
fix(tron): count internal transaction inflows in balance history (#1682)
cranycrane Sep 21, 2026
2f51c4d
release: merge develop into master (#1808)
cranycrane Oct 1, 2026
786a271
ci: read provider RPC URLs from the BB_RPC_URLS secret (#1832)
cranycrane Oct 1, 2026
7f99d3d
test(e2e): add xpub coverage for Bitcoin-type coins (#1816)
cranycrane Oct 1, 2026
1057f73
chore(tron): update java-tron to 4.8.2.3 (mainnet) and 4.8.2.2-pq1-bu…
cranycrane Oct 1, 2026
5422457
chore(eth,sepolia): Erigon 3.5.5 -> 3.7.0, Prysm 7.1.8 -> 7.2.0 for G…
cranycrane Oct 1, 2026
a0d4195
chore(bchain): remove the unused GetMempoolEntry RPC path (#1792)
cranycrane Oct 1, 2026
99e1035
fix(fiat): keep current tickers updating when CoinGecko rejects token…
cranycrane Oct 2, 2026
1b3ac69
fix(tron): skip chain extra data for non-account address descriptors …
cranycrane Oct 5, 2026
5a4cd56
fix(api): cap entries skipped by filtered address history walks (#1838)
cranycrane Oct 5, 2026
4b7ce23
perf(eth): read only the header of the address-contracts record at de…
cranycrane Oct 9, 2026
b269695
perf: decode only the requested token in fiat rate lookups, memoize p…
cranycrane Oct 9, 2026
09cce79
chore(btc): bump Bitcoin Core 29.2 → 31.1 for mainnet and all testnet…
cranycrane Oct 9, 2026
c1dca71
feat(build): append private backend peers from BB_ADDNODE_<alias> (#1…
cranycrane Oct 12, 2026
a404d64
fix(e2e): stop the bsc/ethereum-classic OpenAPI e2e flakes (#1798) (#…
cranycrane Oct 12, 2026
c283f7e
perf(api): raise the default xpub cache cap to 5000 and expose cache …
cranycrane Oct 12, 2026
a33afe4
fix(grafana): name every legend by replica, never by coin (#1717) (#1…
cranycrane Oct 14, 2026
44242e0
build: link the Blockbook binary against jemalloc instead of glibc ma…
cranycrane Oct 14, 2026
8fce27e
fix(eth): use the node-reported block hash for headers (#1843)
cranycrane Oct 15, 2026
72f7947
ci: skip RPC-dependent tests for Dependabot PRs (#1835)
cranycrane Oct 15, 2026
1684a24
feat(metrics): export Go GC CPU share and live heap, add Grafana pane…
cranycrane Oct 15, 2026
b427738
fix(api): keep EVM token transfers whose contract info lookup fails (…
cranycrane Oct 15, 2026
c6d8d18
fix(eth): stop indexing protocol pseudo-token transfers (Polygon 0x…1…
cranycrane Oct 16, 2026
3e6a90a
fix(typescriptify): make blockbook-api.ts reproducible from the gener…
cranycrane Oct 19, 2026
689915f
Merge Trezor Blockbook upstream into Syscoin
sidhujag Oct 20, 2026
efd92ca
Preserve Syscoin API wire types in upstream schemas
sidhujag Oct 20, 2026
539c7e5
Report descriptor scan exhaustion instead of partial history
sidhujag Oct 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
56 changes: 46 additions & 10 deletions .github/actions/export-env-vars/action.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
name: Export Repository Variables
description: Export all repository/environment variables from a JSON map into GITHUB_ENV.
description: Export repository variables and the provider RPC URL and backend peer secrets into GITHUB_ENV.

inputs:
vars_json:
description: JSON object map of repository/environment variables.
required: true
rpc_urls:
description: KEY=VALUE lines of BB_DEV_RPC_URL_* / BB_PROD_RPC_URL_* (pass secrets.BB_RPC_URLS).
required: false
default: ""
backend_peers:
description: KEY=VALUE lines of BB_ADDNODE_* private backend peers (pass secrets.BB_BACKEND_PEERS).
required: false
default: ""

runs:
using: composite
Expand All @@ -13,6 +21,8 @@ runs:
shell: bash
env:
VARS_JSON: ${{ inputs.vars_json }}
RPC_URLS: ${{ inputs.rpc_urls }}
BACKEND_PEERS: ${{ inputs.backend_peers }}
run: |
python3 - <<'PY'
import json
Expand All @@ -30,20 +40,46 @@ runs:
for line in prefixes_file
if line.strip() and not line.strip().startswith("#")
)
# Provider URLs embed auth tokens and Actions variables are printed unmasked in public logs.
secret_prefixes = ("BB_DEV_RPC_URL_", "BB_PROD_RPC_URL_")
# Private peers must stay out of the public repo and its logs.
peer_prefix = "BB_ADDNODE_"

def write_env_var(env_file, key, value):
delimiter = f"__{uuid.uuid4().hex}__"
env_file.write(f"{key}<<{delimiter}\n{value}\n{delimiter}\n")

def normalize(key):
for prefix in alias_prefixes:
if key.startswith(prefix):
alias = key[len(prefix):]
# Blockbook env lookups use lowercase coin aliases from configs/coins.
return prefix + alias.lower().replace("-", "_")
return key

leaked = sorted(key for key in vars_map if key.startswith(secret_prefixes))
if leaked:
raise SystemExit(f"::error::move {', '.join(leaked)} from Actions variables to the BB_RPC_URLS secret")
leaked = sorted(key for key in vars_map if key.startswith(peer_prefix))
if leaked:
raise SystemExit(f"::error::move {', '.join(leaked)} from Actions variables to the BB_BACKEND_PEERS secret")

with open(env_path, "a", encoding="utf-8") as env_file:
for key, value in vars_map.items():
text = "" if value is None else str(value)
normalized = key
for prefix in alias_prefixes:
if key.startswith(prefix):
alias = key[len(prefix):]
# Blockbook env lookups use lowercase coin aliases from configs/coins.
normalized = prefix + alias.lower().replace("-", "_")
break
write_env_var(env_file, normalized, text)
write_env_var(env_file, normalize(key), "" if value is None else str(value))
for line in os.environ.get("RPC_URLS", "").splitlines():
key, sep, value = line.strip().partition("=")
if not sep or not value or not key.startswith(secret_prefixes):
continue
# The runner masks whole secret lines; the bare URL also shows up in later env headers and test errors.
print(f"::add-mask::{value}", flush=True)
write_env_var(env_file, normalize(key), value)
for line in os.environ.get("BACKEND_PEERS", "").splitlines():
key, sep, value = line.strip().partition("=")
if not sep or not value or not key.startswith(peer_prefix):
continue
# Mask each peer too, so a single host printed later stays hidden.
for peer in [value, *value.replace(",", " ").split()]:
print(f"::add-mask::{peer}", flush=True)
write_env_var(env_file, normalize(key), value)
PY
Loading
Loading