Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
390 commits
Select commit Hold shift + click to select a range
e464e16
Stop notifications of duplicate insertions into ethereum type mempool
martinboehm Dec 20, 2023
24e08ec
Add a custom node for Bitcoin
martinboehm Dec 26, 2023
ca41c4a
ethereum (+testnets) 2.55.1 → 2.56.0
Dehumanizer77 Jan 6, 2024
7d2a4ef
firo 0.14.13.0 -> 0.14.13.1
justanwar Dec 24, 2023
aa13c06
dash (+testnet) 20.0.2 → 20.0.3
Dehumanizer77 Jan 2, 2024
c1c44b1
PIVX: fix postinst_script_template (#1016)
XK4MiLX Jan 6, 2024
c2b2f10
Ethereum: fix ws.port after upgrade to Erigon 2.56.0
martinboehm Jan 7, 2024
12de050
zcash (+testnet) 5.7.0 → 5.8.0
Dehumanizer77 Jan 8, 2024
9ea7fb2
etc 1.12.17 → 1.12.18
Dehumanizer77 Jan 10, 2024
23314e5
Update typescriptify library and typescript types
martinboehm Jan 14, 2024
bfc3c71
dash (+testnet) 20.0.3 → 20.0.4
Dehumanizer77 Jan 16, 2024
536a470
ethereum (+testnets) 2.56.0 → 2.56.2
Dehumanizer77 Jan 17, 2024
a8fbfd2
prysm 4.1.1 → 4.2.0
Dehumanizer77 Jan 17, 2024
b10b790
eth (+testnets) 2.56.2 → 2.57.0
Dehumanizer77 Jan 22, 2024
c43bcb2
Get current fiat rates: disable reading from DB for tokens without cu…
martinboehm Jan 22, 2024
3e1f456
Bump Polygon Bor to v1.2.3
martinboehm Jan 28, 2024
c2cb648
Use Erigon for Goerli and Holesky non archive backends
martinboehm Jan 29, 2024
f03c625
eth (+testnets) 2.57.0 → 2.57.2
Dehumanizer77 Jan 29, 2024
ac46385
Add support of staking pools
martinboehm Jan 19, 2024
1d95413
Staking pools - remove unused pendingRestakedReward
martinboehm Jan 31, 2024
55860c0
prysm 4.2.0 → 4.2.1
Dehumanizer77 Feb 6, 2024
11ad814
Disable CI deploy of Goerli on config change
martinboehm Feb 11, 2024
0ed95dc
Upgrade go-ethereum dependency to v1.13.12
martinboehm Feb 10, 2024
5f47f3c
Add mempool.space alternative blockchain fees provider
martinboehm Feb 4, 2024
4e3ba20
eth (+testnets) 2.57.2 → 2.58.0
Dehumanizer77 Feb 19, 2024
a13feac
Update ethereum_testnet_goerli_consensus.json
AlexanderPavlenko Feb 19, 2024
8d78397
Update ethereum_testnet_holesky_consensus.json
martinboehm Feb 19, 2024
8780151
Update type for `gasPrice`
AdamSchinzel Feb 21, 2024
b4249ab
update daemon to v7.1.0
XK4MiLX Feb 6, 2024
8802a73
eth (+testnets) 2.58.0 → 2.58.1
Dehumanizer77 Feb 26, 2024
da34069
prysm 4.2.1 → 5.0.0
Dehumanizer77 Feb 26, 2024
ca3a023
Fix xpub addresses path for non standard descriptors
martinboehm Mar 5, 2024
f05159a
dogecoin (+testnet) 1.14.6 → 1.14.7
Dehumanizer77 Mar 7, 2024
4d60edc
dash (+testnet) 20.0.4 → 20.1.0
Dehumanizer77 Mar 7, 2024
913c0e5
Bump Polygon Bor to v1.2.7, Heimdall to v1.0.4
martinboehm Mar 10, 2024
2c84ed4
Handle Coingecko Throttled error
martinboehm Feb 21, 2024
d8cd7b4
Update histogram buckets for websocket metrics
martinboehm Feb 22, 2024
847c40a
Disable get balance history for contract addresses
martinboehm Feb 22, 2024
5256132
PIVX (+testnet) 5.5.0 → 5.6.1 (#1046)
miguilimzero Mar 11, 2024
60fb37d
prysm 5.0.0 → 5.0.1
Dehumanizer77 Mar 11, 2024
1df02d9
eth (+testnets) 2.58.1 → 2.58.2
Dehumanizer77 Mar 11, 2024
9a2fe4d
Increase file limit for backend services
martinboehm Mar 13, 2024
b5cfbdf
Adjust mempool.space fee mappings
martinboehm Mar 15, 2024
3c57a0c
Remove Goerli
Mar 22, 2024
e9a0858
eth (+testnets) 2.58.2 → 2.59.1
Dehumanizer77 Mar 28, 2024
0277c2a
litecoin (+testnet) 0.21.2.2 → 0.21.3
Dehumanizer77 Apr 1, 2024
ab5235b
prysm 5.0.1 → 5.0.2
Dehumanizer77 Apr 3, 2024
7541699
polygon-bor 1.2.7 → 1.2.8
Dehumanizer77 Apr 9, 2024
9b5c79c
polygon-heimdall 1.0.4 → 1.0.5
Dehumanizer77 Apr 9, 2024
1b47447
Workaround of InitializeMempool issue in Holesky
martinboehm Apr 7, 2024
87652aa
dash (+testnet) 20.1.0 → 20.1.1
Dehumanizer77 Apr 10, 2024
beaadf1
Update dash GPG signing key
Dehumanizer77 Apr 10, 2024
b5bbf8c
zec (+testnet) 5.8.0 → 5.9.0
Dehumanizer77 Apr 22, 2024
b0bec47
btc (+testnet) 26.0 → 27.0
Dehumanizer77 Apr 22, 2024
c16143f
Groestlcoin: Bump to 27.0
gruve-p Apr 23, 2024
067a2da
polygon-bor 1.2.8 → 1.3.1
Dehumanizer77 May 1, 2024
f5cb71d
bch (+testnet) 26.1.0 → 27.0.0
Dehumanizer77 May 6, 2024
0d418de
polygon-bor 1.3.1 → 1.3.2
Dehumanizer77 May 13, 2024
21780d4
Bump Ravencoin backend to 4.6.1.0
Scotty0448 May 7, 2024
c0dbeee
Update typescript API types
martinboehm May 13, 2024
eaf8f48
Decrease fiat rates download period to 60s for BTC
martinboehm May 7, 2024
2751a9b
zcash (+testnet) 5.9.0 → 5.9.1
Dehumanizer77 May 28, 2024
35ab7a3
Set unlimited size of ETH RPC message
martinboehm Jun 4, 2024
78b4ec1
Increase polygon bor maxpeers and add bootnodes
martinboehm Jun 8, 2024
d20379a
backend mandatory update 0.14.13.3
XK4MiLX Jun 19, 2024
6a7c4e9
btc (+testnet) 27.0 → 27.1
Dehumanizer77 Jun 18, 2024
8ac418b
Use coin specific coingecko api key
martinboehm Jun 25, 2024
8d22752
prysm 5.0.2 → 5.0.4
Dehumanizer77 Jul 1, 2024
6f170e0
Delay loading 5minute and hourly tickers to avoid unnecessary calls t…
martinboehm Jun 7, 2024
f0dd0e8
add optimism support
kaladinlight Mar 22, 2023
d814aba
use eth.OpenRPC
kaladinlight Jun 12, 2024
2e3ac06
update op-node config
kaladinlight Jun 12, 2024
80f0572
run op_node from backend for local file store
kaladinlight Jun 18, 2024
3ce286f
pull out exec command into script and add path flags
kaladinlight Jun 25, 2024
7e5be48
move go build into extract command
kaladinlight Jun 26, 2024
4b9a0a9
extract snapshot url from metadata html
kaladinlight Jul 1, 2024
0afcb3a
bch (+testnet) 27.0.0 → 27.1.0
Dehumanizer77 Jul 16, 2024
f6899a7
eth (+testnets) 2.59.3 → 2.60.5
Dehumanizer77 Jul 29, 2024
c1f2e62
Show Nonce for ethereum type transactions in explorer
martinboehm Jul 11, 2024
a0960c8
Add network parameter to getInfo ws request
martinboehm Aug 6, 2024
424055d
polygon-bor 1.3.2 → 1.3.7
Dehumanizer77 Aug 12, 2024
3cb815b
prysm 5.0.4 → 5.1.0
Dehumanizer77 Aug 27, 2024
345ea17
zcash 5.9.1 → 5.10.0
Dehumanizer77 Aug 30, 2024
a143497
polygon-bor 1.3.7 → 1.4.0
Dehumanizer77 Sep 24, 2024
3cf7e6a
Add ethCall websocket request
martinboehm Sep 6, 2024
996fa2d
polygon-bor 1.4.0 → 1.4.1
Dehumanizer77 Sep 25, 2024
a93a011
eth (+testnets) 2.60.5 → 2.60.8
Dehumanizer77 Sep 25, 2024
a2aa489
chore: add .editorconfig and style api.md
grdddj Sep 10, 2024
1c70a26
chore: update and enrich API docs
grdddj Sep 24, 2024
059086c
zec (+testnet) 5.10.0 → 6.0.0
Dehumanizer77 Oct 9, 2024
76664cd
Refactor ethCall method to rpcCall
martinboehm Oct 9, 2024
0cc953f
btc (+testnet) 27.1 -> 28.0
martinboehm Oct 11, 2024
d8c68f2
Add Bitcoin Testnet4
martinboehm Oct 9, 2024
c3cd444
polygon-heimdall 1.0.5 → 1.0.10
Dehumanizer77 Oct 15, 2024
572d7e5
Update Firo daemon 0.14.14.0 (mandatory)
XK4MiLX Sep 17, 2024
fe676b3
prysm 5.1.0 → 5.1.2
Dehumanizer77 Oct 21, 2024
f373a73
add tests for bitcoin testnet4
wakiyamap Sep 6, 2024
132bd77
ltc (+testnet) 0.21.3 → 0.21.4
Dehumanizer77 Nov 12, 2024
afe4749
eth (+testnets) 2.60.8 → 2.60.10
Dehumanizer77 Nov 12, 2024
d6aaa09
Add Arbitrum One and Arbitrum Nova Support (#1112)
kaladinlight Nov 25, 2024
04a5d8d
chore: add make style target for gofmt formatting
grdddj Oct 15, 2024
66b4ddb
chore: apply make style gofmt formatting
grdddj Oct 15, 2024
4ba04f1
Groestlcoin: Bump to 28.0 (#1139)
gruve-p Nov 25, 2024
6eb3ba2
bump Qtum 27.1
icodeface Nov 4, 2024
1fe4ee0
Migration from MATIC to POL
martinboehm Sep 4, 2024
19a9023
EthereumType: Remove fetching of contract details from sync
martinboehm Nov 25, 2024
a55c69a
EthereumType: admin interface to read and update contract info
martinboehm Nov 25, 2024
46156d2
Fix refetch internal data
martinboehm Dec 7, 2024
e283ac8
doge (+testnet) 1.14.7 → 1.14.9
Dehumanizer77 Dec 5, 2024
a4f1730
Show raw tx hex in UI (#1162)
grdddj Dec 9, 2024
c3cdf9b
Fix usage of Network configuration parameter
martinboehm Dec 9, 2024
f2cd67e
chore: fix some problematic function names
hishope Dec 1, 2024
144a369
Fix Ethereum SENSO contract decimals #1026
martinboehm Dec 9, 2024
6f4a6aa
Remove Coingecko URL from configs to enable support of API key
martinboehm Dec 9, 2024
22fe25b
Fix Arbitrum and Optimism fiat rates ids
martinboehm Dec 9, 2024
bdc4770
Fix Arbitrum and Optimism fiat rates ids
martinboehm Dec 10, 2024
d771291
dash (+testnet) 20.1.0 → 22.0.0
Dehumanizer77 Dec 13, 2024
4c5c0bd
Add option to disable sync of mempool transactions
martinboehm Sep 24, 2024
8b05dbc
polygon-bor 1.4.1 → 1.5.3
Dehumanizer77 Dec 11, 2024
fab4dd7
bch (+testnets) 27.1.0 → 28.0.1
Dehumanizer77 Dec 30, 2024
40be3e7
prysm 5.1.2 → 5.2.0
Dehumanizer77 Dec 17, 2024
1334a16
zcash (+testnet) 6.0.0 → 6.1.0
Dehumanizer77 Jan 6, 2025
b40948a
update flux daemon to v7.2.0 (#1178)
TheTrunk Jan 7, 2025
70f34ce
Use network specific ens suffix
martinboehm Jan 12, 2025
4a7fdb5
Avalanche Etna Upgrade
kaladinlight Jan 6, 2025
720b391
btc (+testnets) 28.0 → 28.1
Dehumanizer77 Jan 30, 2025
9d0be09
mona (+testnets) 0.20.3 → 0.20.4
wakiyamap Jan 24, 2025
91c3b50
chore: make testnet4 use mempool.space fees estimation
grdddj Feb 4, 2025
af3e98f
Fix slow removal of transactions from mempool
martinboehm Feb 6, 2025
783ab61
Add support for h suffix in addition to ' suffix is to denote hardene…
martinboehm Feb 6, 2025
a3b0a05
Add Ethereum type EIP1559 fee estimate
martinboehm Oct 24, 2024
a2ba8c4
Add Ethereum type EIP1559 fee estimate from infura
martinboehm Nov 17, 2024
9feda1a
chore(blockbook): rename type to standard
enjojoy Jan 13, 2025
cddbf72
chore(blockbook): rename type to standard
martinboehm Jan 17, 2025
2ee55f6
Update blockbook-api.ts
martinboehm Jan 20, 2025
cb17ffa
Add infura fees estimate to Arbitrum, Optimism and Polygon
martinboehm Feb 11, 2025
f665eba
polygon-heimdall 1.0.10 → 1.2.0
Dehumanizer77 Feb 11, 2025
0360c79
Set period of infura alternative fee provider for BSC
martinboehm Feb 17, 2025
4c8562a
polygon-bor 1.5.3 → 1.5.5
Dehumanizer77 Feb 17, 2025
49910d3
eth (+testnets) 2.60.10 → 2.61.1
Dehumanizer77 Feb 17, 2025
397789b
Remove Blockbook deb package dependency on backend
martinboehm Feb 17, 2025
7d4872e
Add Base Support (#1150)
kaladinlight Feb 20, 2025
95e965d
Return 503 ServiceUnavailable from public interface if not synced
martinboehm Feb 21, 2025
c1be450
Initialize block times asynchronously to speed up server startup
martinboehm Feb 21, 2025
da584eb
chore: fix some comments
beforetech Feb 23, 2025
a1ae09d
polygon-bor 1.5.5 -> 2.0.0
martinboehm Feb 25, 2025
f6d1718
polygon-bor: optionally use non archive PebbleDB
martinboehm Feb 25, 2025
756b814
prysm 5.2.0 → 5.3.0
Dehumanizer77 Feb 26, 2025
68efe9d
chore: remove redundant word for CONTRIBUTING.md
costcould Feb 24, 2025
5fba77f
upgrade go-ethereum to v1.15.5 and remove ava-labs coreth dependency
kaladinlight Mar 5, 2025
9793299
Disable warnings as errors for rocksdb build
martinboehm Mar 6, 2025
1d105b9
Improve error handling in sync block loop
martinboehm Mar 6, 2025
523724e
eth (+testnets) 2.61.1 → 2.61.3
Dehumanizer77 Mar 7, 2025
0562cab
update flux addnodes
TheTrunk Mar 16, 2025
304ddc2
chore: make function comment match function name
yudrywet Mar 12, 2025
4bb7744
Add UnmarshalJSON method to Amount
kedazo Mar 20, 2025
8c1ff88
eth (+testnets) 2.61.3 → 3.0.0-rc3
Dehumanizer77 Mar 18, 2025
175c2c3
Update flags for erigon 3.0.0
martinboehm Mar 18, 2025
714af6d
eth (+testnets) 3.0.0-rc3 → 3.0.0
Dehumanizer77 Mar 26, 2025
f98c643
polygon-heimdall 1.2.0 → 1.2.1
Dehumanizer77 Mar 27, 2025
ac7e287
polygon-bor 2.0.0 → 2.0.1
Dehumanizer77 Mar 27, 2025
2033169
refactor: use the built-in max/min to simplify the code
evenevent Mar 27, 2025
a6c6ef0
prysm 5.3.0 → 5.3.2
Dehumanizer77 Mar 27, 2025
74e38bb
Update ethereum fix contracts metadata json
martinboehm Apr 2, 2025
fbe602e
eth (+testnets) 3.0.0 → 3.0.1
Dehumanizer77 Apr 10, 2025
632864d
heimdall 1.2.1 -> 1.2.2
Dehumanizer77 Apr 2, 2025
bcc68b8
btc (+testnet): 28.1 → 29.0
Apr 15, 2025
6f9de0e
Synchronize connect block with reconnect internal data
martinboehm Feb 26, 2025
1448a11
Upgrade rocksdb to v9.10.0 and go to v1.23.7
martinboehm Mar 1, 2025
a9be4a0
Optimize slice handling of pack/unpack addressContracts
martinboehm Feb 27, 2025
d61a113
Unpack addressContracts partially during connect block to improve per…
martinboehm Mar 10, 2025
0790f88
Add parallel connect of blocks for EthereumType coins
martinboehm Mar 17, 2025
3bd93cd
Bump Blockbook to version to 0.5.0
martinboehm Mar 17, 2025
e8cda83
Support priority fees for mined transactions
martinboehm Mar 20, 2025
c5affa1
Set up infura eip1559 refresh periods
martinboehm Mar 24, 2025
4aeeccf
Stop returning stale alternative fee data
martinboehm Mar 24, 2025
98f0df1
avalanche 1.12.1 → 1.13.0
martinboehm Apr 20, 2025
657cbcf
Detect sync issues in EthereumType coins
martinboehm Apr 20, 2025
4bdfac1
zcash (+testnet) 6.1.0 → 6.2.0
Dehumanizer77 Apr 28, 2025
9dfbb10
prysm (+testnet): 5.3.2 -> 6.0.0
Apr 23, 2025
f18feda
prysm 6.0.0 → 6.0.1
Dehumanizer77 May 3, 2025
a2aab47
eth (+testnets) 3.0.1 → 3.0.2
AlexanderPavlenko May 1, 2025
4fafbd6
eth (+testnet) 3.0.2 -> 3.0.3
f7b May 5, 2025
386ccca
Groestlcoin: Bump to 29.0
gruve-p May 5, 2025
b14641d
feat: support new alternative_estimate_fee option - mempoolspacemedia…
grdddj May 7, 2025
dcdb2bd
Bump version GRS
gruve-p May 7, 2025
e481c2c
polygon-bor 2.0.1 -> 2.0.3
f7b May 12, 2025
147f903
prysm 6.0.1 → 6.0.2
f7b May 13, 2025
4516eeb
Use mempoolspaceblock fee estimation for BTC
martinboehm May 8, 2025
91bdb8c
feat: differentiate between Sending and Receiving unconfirmed balance…
grdddj Oct 15, 2024
d328ed9
docs: document public API structs
grdddj Feb 10, 2025
bb02eb5
Update blockbook-api.ts
martinboehm May 22, 2025
cbb179b
eth (+testnet) 3.0.3 -> 3.0.4
f7b May 27, 2025
c013242
EthereumType: Add alternative provider for send raw tx
martinboehm May 23, 2025
2b155a4
EthereumType: Fetch mempool transactions from alternative provider
martinboehm May 23, 2025
04bfd56
EthereumType: Fetch mempool transactions from alternative provider
martinboehm May 28, 2025
e98b435
Fix for windows support
cpuchainorg May 23, 2025
6cfc6fa
changed infura periods
Dehumanizer77 Jun 9, 2025
bc43907
prysm (+testnets) 6.0.3 -> 6.0.4
f7b Jun 6, 2025
8989ab7
eth (+testnets) 3.0.4 -> 3.0.5
f7b Jun 5, 2025
ae0172d
Add longTermFeeRate websocket endpoint (#1262)
grdddj Jun 9, 2025
41ac2d5
Fix ETH contract cmETH parameters
martinboehm Jun 13, 2025
0f90ea1
polygon-bor 2.0.3 -> 2.1.1
f7b Jun 17, 2025
27cf2ff
eth (+testnets) 3.0.5 -> 3.0.8
f7b Jun 24, 2025
24e3459
rocksdb v7.5.3 -> rocksdb v9.10.0
cranycrane Jun 16, 2025
d367147
Update Firo daemon 0.14.14.1 (mandatory)
justanwar Jun 21, 2025
ca17fc5
chore: fix some function names in comment
highcloudwind Apr 1, 2025
775cb4c
polygon-heimdall 1.2.2 → 1.6.0
f7b Jul 3, 2025
304d596
polygon-bor 2.1.1 -> 2.2.8
f7b Jul 11, 2025
50310a7
eth (+testnets) 3.0.8 -> 3.0.11
f7b Jul 2, 2025
17fa06f
avalanche 1.13.0 → 1.13.2
martinboehm Jun 27, 2025
ebc34c7
polygon-bor 2.2.8 -> 2.2.9
f7b Jul 17, 2025
4da97b8
Fix GetChainInfo for Avalanche
martinboehm Jul 25, 2025
2023481
Use Zebra as ZCash backend node
martinboehm Jun 24, 2025
aa445e6
Polygon heimdall v2
martinboehm Jul 30, 2025
c2ded90
Update Flux Daemon to v8.0.0 (#1306)
TheTrunk Aug 11, 2025
e1fb89c
feat: implemented eth_getTransactionCount with pending tag
etimofeeva Aug 14, 2025
54c1339
Fix initialization of ethereum rpc
martinboehm Aug 4, 2025
541e30d
2.4.2 zebra update
etimofeeva Jul 31, 2025
0e92dd1
feat: add alternative RPC provider support for sendTransaction
etimofeeva Aug 14, 2025
188d06e
feat: added alternative provider to eth_estimateGas, eth_call, eth_ge…
etimofeeva Aug 21, 2025
ecf8736
Fix initialization of ethereum rpc
martinboehm Sep 1, 2025
1e14f35
Merge pull request #1316 from trezor/alternative-provider-url-simulat…
etimofeeva Sep 1, 2025
a1f7bac
Add init alternative providers for EVM chains
martinboehm Sep 1, 2025
db2d8cd
Add AddrContractsCache to speed up indexing
martinboehm Sep 1, 2025
e6ecaff
added test to test-websocket.html
etimofeeva Aug 28, 2025
29b7d66
fix: improved error handling and added better logging for readability
etimofeeva Sep 2, 2025
d4e9f0f
Fix EthereumTypeGetNonce
martinboehm Sep 8, 2025
9939b92
Add support for Ethereum Testnet Hoodi
martinboehm Aug 17, 2025
b4fa97a
Stop using alternative provider for eth_call and eth_gasPrice
martinboehm Sep 9, 2025
ebe0b46
eth (+testnets) 3.0.11 -> 3.0.17
f7b Sep 17, 2025
6670f22
Resolve Arbitrum, Base, and Zcash build errors (#1325)
emersonian Sep 17, 2025
4b09cae
Zcash: Zebra 2.5.0
emersonian Sep 4, 2025
7bd643e
Rename ETH contract 0x6f40d4A6237C257fff2dB00FA0510DeEECd303eb to Fluid
martinboehm Sep 25, 2025
2569d6f
return for low even lower fees than 1 sat/vb
etimofeeva Sep 11, 2025
cba50bf
eth (+testnets) 3.0.17 -> 3.1.0
f7b Sep 22, 2025
9f18d57
added basic detail to stakingPools
etimofeeva Sep 26, 2025
8727e9c
refactor: use slices.Clone
careworry Apr 28, 2025
39daa17
refactor: use the built-in max/min to simplify the code
wmypku Aug 26, 2025
f2042e1
btc (+testnets) 29.0 → 29.2
Dehumanizer77 Oct 15, 2025
34a6f9b
eth (+testnets) 3.1.0 -> 3.2.0
f7b Oct 6, 2025
4ce39bc
Escape html in name and symbol shown in explorer
martinboehm Oct 16, 2025
9557fa2
fluxd v9.0.0
TheTrunk Oct 22, 2025
65334fb
Update Firo daemon 0.14.15.0 (mandatory)
justanwar Oct 20, 2025
b28f0ea
eth (+testnets) 3.2.0 -> 3.2.1
f7b Oct 20, 2025
c5fca2a
prysm (+testnets) 6.0.4 -> 6.1.0, holesky decommisioned
f7b Sep 29, 2025
674271f
prysm (+testnets) 6.1.0 -> 6.1.2
AlexanderPavlenko Oct 15, 2025
d6a15b6
Zcash: Upgrade to zebra v3.0.0
emersonian Nov 18, 2025
964662d
Upgrade golang to 1.25 and dependencies, fix Avalanche sync
martinboehm Nov 24, 2025
d76f7c5
fix: adjusted zebrarpc for new version of zebrad backend
etimofeeva Dec 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
root = true

[*.md]
indent_style = space
indent_size = 4
trim_trailing_whitespace = false
max_line_length = 80
insert_final_newline = true
charset = utf-8
end_of_line = lf
13 changes: 1 addition & 12 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -157,15 +157,4 @@ backend-deploy-and-test-zcash_testnet:
- configs/coins/zcash_testnet.json
tags:
- blockbook
script: ./contrib/scripts/backend-deploy-and-test.sh zcash_testnet zcash-testnet zcash=test testnet3/debug.log

backend-deploy-and-test-goerli-archive:
stage: backend-deploy-and-test
only:
refs:
- master
changes:
- configs/coins/ethereum_testnet_goerli_archive.json
tags:
- blockbook
script: ./contrib/scripts/backend-deploy-and-test.sh ethereum_testnet_goerli_archive ethereum-testnet-goerli-archive ethereum=test ethereum_testnet_goerli_archive.log
script: ./contrib/scripts/backend-deploy-and-test.sh zcash_testnet zcash-testnet zcash=test testnet3/debug.log
11 changes: 11 additions & 0 deletions .prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"printWidth": 100,
"arrowParens": "avoid",
"bracketSpacing": true,
"singleQuote": true,
"semi": true,
"trailingComma": "all",
"tabWidth": 4,
"useTabs": false,
"bracketSameLine": false
}
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ also in [build guide](/docs/build.md#on-naming-conventions-and-versioning). You
*mainnet* option.

In the section *blockbook* update information how to build and configure Blockbook service. Usually they are only
*package_name*, *system_user* and *explorer_url* options. Naming conventions are are described
*package_name*, *system_user* and *explorer_url* options. Naming conventions are described
[here](/docs/build.md#on-naming-conventions-and-versioning).

Update *package_maintainer* and *package_maintainer_email* options in the section *meta*.
Expand Down
12 changes: 8 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
BIN_IMAGE = blockbook-build
DEB_IMAGE = blockbook-build-deb
PACKAGER = $(shell id -u):$(shell id -g)
DOCKER_VERSION = $(shell docker version --format '{{.Client.Version}}')
BASE_IMAGE = $$(awk -F= '$$1=="ID" { print $$2 ;}' /etc/os-release):$$(awk -F= '$$1=="VERSION_ID" { print $$2 ;}' /etc/os-release | tr -d '"')
NO_CACHE = false
TCMALLOC =
TCMALLOC =
PORTABLE = 0
ARGS ?=

Expand All @@ -27,13 +28,13 @@ test-all: .bin-image
docker run -t --rm -e PACKAGER=$(PACKAGER) -v "$(CURDIR):/src" --network="host" $(BIN_IMAGE) make test-all ARGS="$(ARGS)"

deb-backend-%: .deb-image
docker run -t --rm -e PACKAGER=$(PACKAGER) -v "$(CURDIR):/src" -v "$(CURDIR)/build:/out" $(DEB_IMAGE) /build/build-deb.sh backend $* $(ARGS)
docker run -t --rm -e PACKAGER=$(PACKAGER) -v /var/run/docker.sock:/var/run/docker.sock -v "$(CURDIR):/src" -v "$(CURDIR)/build:/out" $(DEB_IMAGE) /build/build-deb.sh backend $* $(ARGS)

deb-blockbook-%: .deb-image
docker run -t --rm -e PACKAGER=$(PACKAGER) -v "$(CURDIR):/src" -v "$(CURDIR)/build:/out" $(DEB_IMAGE) /build/build-deb.sh blockbook $* $(ARGS)

deb-%: .deb-image
docker run -t --rm -e PACKAGER=$(PACKAGER) -v "$(CURDIR):/src" -v "$(CURDIR)/build:/out" $(DEB_IMAGE) /build/build-deb.sh all $* $(ARGS)
docker run -t --rm -e PACKAGER=$(PACKAGER) -v /var/run/docker.sock:/var/run/docker.sock -v "$(CURDIR):/src" -v "$(CURDIR)/build:/out" $(DEB_IMAGE) /build/build-deb.sh all $* $(ARGS)

deb-blockbook-all: clean-deb $(addprefix deb-blockbook-, $(TARGETS))

Expand All @@ -55,7 +56,7 @@ build-images: clean-images
.deb-image: .bin-image
@if [ $$(build/tools/image_status.sh $(DEB_IMAGE):latest build/docker) != "ok" ]; then \
echo "Building image $(DEB_IMAGE)..."; \
docker build --no-cache=$(NO_CACHE) -t $(DEB_IMAGE) build/docker/deb; \
docker build --no-cache=$(NO_CACHE) --build-arg DOCKER_VERSION=$(DOCKER_VERSION) -t $(DEB_IMAGE) build/docker/deb; \
else \
echo "Image $(DEB_IMAGE) is up to date"; \
fi
Expand All @@ -79,3 +80,6 @@ clean-bin-image:

clean-deb-image:
- docker rmi $(DEB_IMAGE)

style:
find . -name "*.go" -exec gofmt -w {} \;
39 changes: 22 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@

# Blockbook

**Blockbook** is back-end service for Trezor wallet. Main features of **Blockbook** are:
**Blockbook** is a back-end service for Trezor Suite. The main features of **Blockbook** are:

- index of addresses and address balances of the connected block chain
- fast index search
- simple blockchain explorer
- websocket, API and legacy Bitcore Insight compatible socket.io interfaces
- support of multiple coins (Bitcoin and Ethereum type) with easy extensibility to other coins
- scripts for easy creation of debian packages for backend and blockbook
- index of addresses and address balances of the connected block chain
- fast index search
- simple blockchain explorer
- websocket, API and legacy Bitcore Insight compatible socket.io interfaces
- support of multiple coins (Bitcoin and Ethereum type) with easy extensibility to other coins
- scripts for easy creation of debian packages for backend and blockbook

## Build and installation instructions

Expand All @@ -19,42 +19,43 @@ Memory and disk requirements for initial synchronization of **Bitcoin mainnet**
Other coins should have lower requirements, depending on the size of their block chain. Note that fast SSD disks are highly
recommended.

User installation guide is [here](https://wiki.trezor.io/User_manual:Running_a_local_instance_of_Trezor_Wallet_backend_(Blockbook)).
User installation guide is [here](<https://wiki.trezor.io/User_manual:Running_a_local_instance_of_Trezor_Wallet_backend_(Blockbook)>).

Developer build guide is [here](/docs/build.md).

Contribution guide is [here](CONTRIBUTING.md).

## Implemented coins

Blockbook currently supports over 30 coins. The Trezor team implemented
Blockbook currently supports over 30 coins. The Trezor team implemented

- Bitcoin, Bitcoin Cash, Zcash, Dash, Litecoin, Bitcoin Gold, Ethereum, Ethereum Classic, Dogecoin, Namecoin, Vertcoin, DigiByte, Liquid
- Bitcoin, Bitcoin Cash, Zcash, Dash, Litecoin, Bitcoin Gold, Ethereum, Ethereum Classic, Dogecoin, Namecoin, Vertcoin, DigiByte, Liquid

the rest of coins were implemented by the community.

Testnets for some coins are also supported, for example:
- Bitcoin Testnet, Bitcoin Cash Testnet, ZCash Testnet, Ethereum Testnet Ropsten

- Bitcoin Testnet, Bitcoin Cash Testnet, ZCash Testnet, Ethereum Testnets (Sepolia, Hoodi)

List of all implemented coins is in [the registry of ports](/docs/ports.md).

## Common issues when running Blockbook or implementing additional coins

#### Out of memory when doing initial synchronization

How to reduce memory footprint of the initial sync:
How to reduce memory footprint of the initial sync:

- disable rocksdb cache by parameter `-dbcache=0`, the default size is 500MB
- run blockbook with parameter `-workers=1`. This disables bulk import mode, which caches a lot of data in memory (not in rocksdb cache). It will run about twice as slowly but especially for smaller blockchains it is no problem at all.
- disable rocksdb cache by parameter `-dbcache=0`, the default size is 500MB
- run blockbook with parameter `-workers=1`. This disables bulk import mode, which caches a lot of data in memory (not in rocksdb cache). It will run about twice as slowly but especially for smaller blockchains it is no problem at all.

Please add your experience to this [issue](https://github.com/trezor/blockbook/issues/43).

#### Error `internalState: database is in inconsistent state and cannot be used`

Blockbook was killed during the initial import, most commonly by OOM killer.
By default, Blockbook performs the initial import in bulk import mode, which for performance reasons does not store all data immediately to the database. If Blockbook is killed during this phase, the database is left in an inconsistent state.
Blockbook was killed during the initial import, most commonly by OOM killer.
By default, Blockbook performs the initial import in bulk import mode, which for performance reasons does not store all data immediately to the database. If Blockbook is killed during this phase, the database is left in an inconsistent state.

See above how to reduce the memory footprint, delete the database files and run the import again.
See above how to reduce the memory footprint, delete the database files and run the import again.

Check [this](https://github.com/trezor/blockbook/issues/89) or [this](https://github.com/trezor/blockbook/issues/147) issue for more info.

Expand All @@ -73,3 +74,7 @@ Blockbook stores data the key-value store RocksDB. Database format is described
## API

Blockbook API is described [here](/docs/api.md).

## Environment variables

List of environment variables that affect Blockbook's behavior is [here](/docs/env.md).
92 changes: 92 additions & 0 deletions api/ethereumtype.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
package api

import (
"sync"

"github.com/golang/glog"
"github.com/linxGnu/grocksdb"
"github.com/trezor/blockbook/bchain"
"github.com/trezor/blockbook/db"
)

// refetch internal data
var refetchingInternalData = false
var refetchInternalDataMux sync.Mutex

func (w *Worker) IsRefetchingInternalData() bool {
refetchInternalDataMux.Lock()
defer refetchInternalDataMux.Unlock()
return refetchingInternalData
}

func (w *Worker) RefetchInternalData() error {
refetchInternalDataMux.Lock()
defer refetchInternalDataMux.Unlock()
if !refetchingInternalData {
refetchingInternalData = true
go w.RefetchInternalDataRoutine()
}
return nil
}

const maxNumberOfRetires = 25

func (w *Worker) incrementRefetchInternalDataRetryCount(ie *db.BlockInternalDataError) {
wb := grocksdb.NewWriteBatch()
defer wb.Destroy()
err := w.db.StoreBlockInternalDataErrorEthereumType(wb, &bchain.Block{
BlockHeader: bchain.BlockHeader{
Hash: ie.Hash,
Height: ie.Height,
},
}, ie.ErrorMessage, ie.Retries+1)
if err != nil {
glog.Errorf("StoreBlockInternalDataErrorEthereumType %d %s, error %v", ie.Height, ie.Hash, err)
} else {
w.db.WriteBatch(wb)
}
}

func (w *Worker) RefetchInternalDataRoutine() {
internalErrors, err := w.db.GetBlockInternalDataErrorsEthereumType()
if err == nil {
for i := range internalErrors {
ie := &internalErrors[i]
if ie.Retries >= maxNumberOfRetires {
glog.Infof("Refetching internal data for %d %s, retries exceeded", ie.Height, ie.Hash)
continue
}
glog.Infof("Refetching internal data for %d %s, retries %d", ie.Height, ie.Hash, ie.Retries)
block, err := w.chain.GetBlock(ie.Hash, ie.Height)
var blockSpecificData *bchain.EthereumBlockSpecificData
if block != nil {
blockSpecificData, _ = block.CoinSpecificData.(*bchain.EthereumBlockSpecificData)
}
if err != nil || block == nil || (blockSpecificData != nil && blockSpecificData.InternalDataError != "") {
glog.Errorf("Refetching internal data for %d %s, error %v, retrying", ie.Height, ie.Hash, err)
// try for second time to fetch the data - the 2nd attempt after the first unsuccessful has many times higher probability of success
// probably something to do with data preloaded to cache on the backend
block, err = w.chain.GetBlock(ie.Hash, ie.Height)
if err != nil || block == nil {
glog.Errorf("Refetching internal data for %d %s, error %v", ie.Height, ie.Hash, err)
continue
}
}
blockSpecificData, _ = block.CoinSpecificData.(*bchain.EthereumBlockSpecificData)
if blockSpecificData != nil && blockSpecificData.InternalDataError != "" {
glog.Errorf("Refetching internal data for %d %s, internal data error %v", ie.Height, ie.Hash, blockSpecificData.InternalDataError)
w.incrementRefetchInternalDataRetryCount(ie)
} else {
err = w.db.ReconnectInternalDataToBlockEthereumType(block)
if err != nil {
glog.Errorf("ReconnectInternalDataToBlockEthereumType %d %s, error %v", ie.Height, ie.Hash, err)
} else {
glog.Infof("Refetching internal data for %d %s, success", ie.Height, ie.Hash)
}
}
}
}
refetchInternalDataMux.Lock()
refetchingInternalData = false
refetchInternalDataMux.Unlock()
}
Loading