Releases: hemilabs/heminetwork
v2.0.0
Breaking Changes
-
Rework how PoP Miners and BFG work (#396).
For details on running a v2 PoP Miner, see thepopmdreadme.- Rewrite
bfgdto serve as an API layer for finality data. PoP miners no longer usebfgd. - Remove
bssd. PoP payouts are now handled byop-geth. - Add indexing for Hemi Keystones published to Bitcoin by PoP miners (#549).
- Rewrite
popmd. To runpopmd, the following data sources are now required:- A Hemi
op-gethnode (for keystone notifications). - A "Gozer" Bitcoin data source, such as TBC, to retrieve Bitcoin data and publish PoP transactions. Gozer can also be used to provide fee estimations.
- A Hemi
- PoP Miners can now use either a static fee or dynamic fee estimations from Gozer.
- Rewrite
-
Rename Go module to
github.com/hemilabs/heminetwork/v2(add/v2suffix) (#622).
Added
-
Add hproxyd, a simple and efficient RPC request proxy to replace
proxyd(#568, #574, #576). -
Add Prometheus metrics and health check endpoints to
bfgdandpopmd(#619). -
Add supply chain attestations for releases (#634).
bitcoin package
- Add
bitcoin/gozerpackage: Bitcoin data interface layer, with a basic implementation for Blockstream (Electrs) and a complete implementation supporting the TBC RPC API (#562). - Add
bitcoin/vinzclorthopackage: Bitcoin wallet interface that handles creation and derivation of Bitcoin addresses (#562). - Add
bitcoin/zuulpackage: Interface for handling the storage of secret material, such as Bitcoin wallet private keys (#562).
Tiny Bitcoin Client (TBC)
- Add support for Bitcoin testnet4 (#521).
- Add indexing for Hemi Keystones published to Bitcoin by PoP miners (#549).
- Add Bitcoin mempool support (#549).
- Add transaction fee estimation (#549). This can be used by
popmdwhen creating PoP transactions. - Add Hemi Keystone height hash index with V4 database upgrade, allowing keystones to be retrieved at a specified block height (#539). Used in
op-gethfor handling PoP payouts. - Add standalone TBC Docker image:
hemilabs/tbcd,ghcr.io/hemilabs/tbcd(#531).
localnode
Note
The localnode directory still uses an older version of the Hemi stack. After this release, all node-running
resources and documentation will move to a separate repository, maintained and versioned independently, with its own changelog.
- Add easy-to-follow quickstart section to the node running documentation (#656).
Changed
-
Update localnode config with new testnet P2P nodes (#650).
-
Move common test utilities into a new
testutilpackage to reduce duplication and simply testing (#530). -
Update Hemi keystone genesis block on Bitcoin testnet4 to
00000000a14c6e63123ba02d7e9fd173d4b04412c71a31b7a6ab8bb3106c9231(#654). The previous block was removed by a long re-org. -
Replace
time.Afterwithtime.Tickto avoid issues on sleeping dev machines (#580).
Removed
-
Remove WebAssembly support from the PoP Miner (#526).
-
Remove
extool, an unused Electrum/Electrs CLI utility (#625).
Fixed
- Fix duplicate
flag.Parsecall incmd/keygen(#565). - Fix typos across the codebase (#550, #564, #633, #658, #663).
Contributors
Thank you to everyone who contributed to this release!
v2.0.0-rc.1
This is a preview release, intended for those interested in testing 2.0.0 before its final stable release.
We welcome testers to help find as many bugs as possible before the final release.
Breaking Changes
-
Rework how PoP Miners and BFG work (#396).
For details on running a v2 PoP Miner, see thepopmdreadme.- Rewrite
bfgdto serve as an API layer for finality data. PoP miners no longer usebfgd. - Remove
bssd. PoP payouts are now handled byop-geth. - Add indexing for Hemi Keystones published to Bitcoin by PoP miners (#549).
- Rewrite
popmd. To runpopmd, the following data sources are now required:- A Hemi
op-gethnode (for keystone notifications). - A "Gozer" Bitcoin data source, such as TBC, to retrieve Bitcoin data and publish PoP transactions. Gozer can also be used to provide fee estimations.
- A Hemi
- PoP Miners can now use either a static fee or dynamic fee estimations from Gozer.
- Rewrite
-
Rename Go module to
github.com/hemilabs/heminetwork/v2(add/v2suffix) (#622).
Added
-
Add hproxyd, a simple and efficient RPC request proxy to replace
proxyd(#568, #574, #576). -
Add Prometheus metrics and health check endpoints to
bfgdandpopmd(#619). -
Add supply chain attestations for releases (#634).
bitcoin package
- Add
bitcoin/gozerpackage: Bitcoin data interface layer, with a basic implementation for Blockstream (Electrs) and a complete implementation supporting the TBC RPC API (#562). - Add
bitcoin/vinzclorthopackage: Bitcoin wallet interface that handles creation and derivation of Bitcoin addresses (#562). - Add
bitcoin/zuulpackage: Interface for handling the storage of secret material, such as Bitcoin wallet private keys (#562).
Tiny Bitcoin Client (TBC)
- Add support for Bitcoin testnet4 (#521).
- Add indexing for Hemi Keystones published to Bitcoin by PoP miners (#549).
- Add Bitcoin mempool support (#549).
- Add transaction fee estimation (#549). This can be used by
popmdwhen creating PoP transactions. - Add Hemi Keystone height hash index with V4 database upgrade, allowing keystones to be retrieved at a specified block height (#539). Used in
op-gethfor handling PoP payouts. - Add standalone TBC Docker image:
hemilabs/tbcd,ghcr.io/hemilabs/tbcd(#531).
localnode
Note
The localnode directory still uses an older version of the Hemi stack. After this release, all node-running
resources and documentation will move to a separate repository, maintained and versioned independently, with its own changelog.
- Add easy-to-follow quickstart section to the node running documentation (#656).
Changed
-
Update localnode config with new testnet P2P nodes (#650).
-
Move common test utilities into a new
testutilpackage to reduce duplication and simply testing (#530). -
Update Hemi keystone genesis block on Bitcoin testnet4 to
00000000a14c6e63123ba02d7e9fd173d4b04412c71a31b7a6ab8bb3106c9231(#654). The previous block was removed by a long re-org. -
Replace
time.Afterwithtime.Tickto avoid issues on sleeping dev machines (#580).
Removed
-
Remove WebAssembly support from the PoP Miner (#526).
-
Remove
extool, an unused Electrum/Electrs CLI utility (#625).
Fixed
- Fix duplicate
flag.Parsecall incmd/keygen(#565). - Fix typos across the codebase (#550, #564, #633, #658, #663).
Contributors
Thank you to everyone who contributed to this release!
v2.0.0-beta.1
What's Changed
⚠️ Breaking changes
- tbc: add mempool, fee estimation, keystones by @joshuasing in #549
- all: rewrite bfgd and popmd, remove bssd by @AL-CT in #396
✨ Additions
- tbc: add mempool, fee estimation, keystones by @joshuasing in #546
- tbc: add v4 keystone height hash index by @marcopeereboom in #539
- bitcoin: add gozer, vinzclortho and zuul by @joshuasing in #562
- hproxy: a much simpler proxyd replacement by @marcopeereboom in #568
- docker: add hproxy docker files by @AL-CT in #574
- goreleaser: add hproxyd by @joshuasing in #576
- tbcd: implement testnet4 by @marcopeereboom in #521
- bfg, popm: add health checks by @marcopeereboom in #619
🐛 Fixes
- cmd/keygen: remove duplicate flag.Parse call by @moshderte in #565
- leveldb: fix dataraces in db packages by @marcopeereboom in #577
- tbc: fix two test failures by @marcopeereboom in #595
- tbcgozer, mock: reader logic & add additional test by @AL-CT in #621
- rpc: fix TestNotFoundError by @AL-CT in #640
- tbcgozer: fix fragile tests by @AL-CT in #645
🔧 Improvements
- popm: use single privatekey in popminer by @marcopeereboom in #600
📖 Documentation
🧪 Test coverage
- all: fix several fragile tests by @marcopeereboom in #611
- e2e: fix main rebase issue by @marcopeereboom in #614
⚙️ Other
- make: install gofumpt in lint-deps by @marcopeereboom in #543
- revert "tbc: add mempool, fee estimation, keystones" by @joshuasing in #548
- tbc: fix miscellaneous typos by @leopardracer in #550
- add localnode flags and values for pectra upgrade on mainnet for op-geth and op-node by @ClaytonNorthey92 in #552
- revert op-node to stable in localnode mainnet, remove pectra flags by @ClaytonNorthey92 in #554
- re-add pectrablobschedule flag far in future by @ClaytonNorthey92 in #555
- level: re-enable db v3 upgrade warning by @AL-CT in #559
- re-add pectra flags with new timestamp in localnode by @ClaytonNorthey92 in #560
- Update for mainnet pectra blob fee handling by @max-sanchez in #561
- add a non-sequencing node to localnet and test it by @ClaytonNorthey92 in #507
- cmd/btctool: fix typo by @moshderte in #564
- all: replace time.After with time.Tick by @AL-CT in #572
- revert: "all: replace time.After with time.Tick" by @joshuasing in #579
- tbc: fix unused variable by @ClaytonNorthey92 in #585
- e2e: updated op-geth and optimism to latest hemi commits by @ClaytonNorthey92 in #582
- all: replace time.After with time.Tick by @joshuasing in #580
- popm, mock, hproxy, bfg: fix test failures by @AL-CT in #598
- popm, bfg: more test fixes by @AL-CT in #601
- ran go mod tidy in e2e/monitor by @ClaytonNorthey92 in #602
- updated localnode genesis creation to use correct --state.scheme compatible with gcmode=archive by @ClaytonNorthey92 in #604
- fix fragile test: TestKeystoneFinalityInheritance by @ClaytonNorthey92 in #609
- protocol: add NotFoundError by @AL-CT in #608
- popm: add static fee override by @AL-CT in #596
- e2e/monitor: fix typo in bindings readme by @lechpzn in #603
- localnode: update BFG_BASELINE_L2_BLOCK_TIMESTAMP to be in seconds by @ClaytonNorthey92 in #607
- localnet: update pop miner addresses by @AL-CT in #617
- popm: add exponential backoff reconnection logic to opgeth by @tosynthegeek in #612
- extool: remove extool by @marcopeereboom in #625
- localnode: re-added sql files needed to set up by @ClaytonNorthey92 in #629
- localnode: add small section for updating a node by @ClaytonNorthey92 in #624
- hemi: fix typo in comment by @kks-code in #633
- readme: rewrite and bring up-to-date by @joshuasing in #593
- tests: in mock op-geth, do not return an error if the websocket was closed by @ClaytonNorthey92 in #631
- version: update to v2.0.0 by @joshuasing in #641
- mock: limit number of new keystone notifications by @AL-CT in #635
- docker: rename hproxy to hproxyd by @joshuasing in #649
New Contributors
- @leopardracer made their first contribution in #550
- @moshderte made their first contribution in #565
- @lechpzn made their first contribution in #603
- @tosynthegeek made their first contribution in #612
- @kks-code made their first contribution in #633
Full Changelog: v1.6.3...v2.0.0-beta.1
v1.6.3
Full Changelog: v1.6.2...v1.6.3
v1.6.2
What's Changed
🔧 Improvements
- all: update go to 1.24 (toolchain 1.24.4) by @joshuasing in #529
⚙️ Other
- docker: add tbcd image by @joshuasing in #531
- all: add
testutilandtestutil/mockpackages by @AL-CT in #530 - bfg: handle tx and deadlock better when updating l2 keystone finality by @ClaytonNorthey92 in #534
Full Changelog: v1.6.1...v1.6.2
v1.6.1
What's Changed
⚠️ Breaking changes
- popm: remove support for WebAssembly by @joshuasing in #526
⚙️ Other
- docker: Add profile awareness to heminode tmux script by @jcvernaleo in #522
- update localnode testnet for pectra upgrade by @ClaytonNorthey92 in #525
- fix testnet pectra upgrade timestamps in localnode by @ClaytonNorthey92 in #527
- bfg, hemictl, tbc: fix miscellaneous typos by @maximevtush in #520
New Contributors
- @maximevtush made their first contribution in #520
Full Changelog: v1.6.0...v1.6.1
v1.6.0
What's Changed
⚙️ Other
- docker/bfgd: fix typo in goreleaser.Dockerfile by @fatwhorefrommd in #518
- fix typo Update Dockerfile by @fatwhorefrommd in #517
- chore: fix function name in comment by @pengqiseven in #505
- keep all data needed for btc finality in one table by @ClaytonNorthey92 in #519
New Contributors
- @pengqiseven made their first contribution in #505
Full Changelog: v1.5.1...v1.6.0
v1.5.1
What's Changed
⚙️ Other
- do not include invalid keystones in effectiveHeight by @ClaytonNorthey92 in #515
Full Changelog: v1.5.0...v1.5.1
v1.5.0
What's Changed
⚙️ Other
- upgrade dependency github.com/ebitengine/purego to avoid regression by @ClaytonNorthey92 in #514
Full Changelog: v1.4.0...v1.5.0
v1.1.0
What's Changed
✨ Additions
🐛 Fixes
- popm: don't instantly noop if bfg response channel is busy by @AL-CT in #450
- docker: add missing profile by @jcvernaleo in #475
- localnode: fix mainnet var for geth l1 by @ClaytonNorthey92 in #476
- popm: reduce dust threshold to 1000 sats by @Leonardiae in #482
🔧 Improvements
- localnode: fix yaml indentation issue by @jcvernaleo in #439
- fix: duplicated import chainhash by @healthyyyoung in #444
- fix some options in compose by @jcvernaleo in #446
- Remove network from compose names by @jcvernaleo in #447
- database/tbcd/level: fix printf-style function used with no args by @healthyyyoung in #445
- Localnet update by @ClaytonNorthey92 in #451
- Add script to simplify switching localnode modes by @jcvernaleo in #452
- Fix incorrection option by @jcvernaleo in #455
- BFG: save db records in processBitcoinBlock in a single tx by @ClaytonNorthey92 in #456
- update op-node image to be pectra by @ClaytonNorthey92 in #457
- tbc: add bound parallel outpoint fetch fixup strategy by @marcopeereboom in #461
- Specify platform linux/amd64 for images that are not multiarch by @jcvernaleo in #463
- btctool: add btctool network selection. by @Unisergius in #464
- bfgd: set btc_blocks updated_at to now() when re-orgs occur by @ClaytonNorthey92 in #377
- docker: add profiles to compose files by @jcvernaleo in #442
- tbc: speed up isCanonical check by @marcopeereboom in #465
- docker: update prysm and make option order consistant by @jcvernaleo in #474
- update localnode to connect to testnet peers by @ClaytonNorthey92 in #470
- localnode: remove bfgd as a dependency of bssd by @ClaytonNorthey92 in #477
- point mainnet docker compose to healthy p2p node only by @ClaytonNorthey92 in #480
📖 Documentation
- docker: update requirements by @jcvernaleo in #473
- localnode: update node running docs by @rmilrad in #478
- localnode: improve docs, add
hemi-minprofile, update images and configs by @max-sanchez in #479
🧪 Test coverage
- tbc: fix race condition in fork tests by @AL-CT in #435
- tbc: fix fork tests failing if tbc is slow to insert blocks by @AL-CT in #486
⚙️ Other
- ttl: fix typos in comments by @Pricstas in #434
- Update testnet rollup.json by @jcvernaleo in #460
- version: bump to 1.1.0 by @joshuasing in #483
New Contributors
- @healthyyyoung made their first contribution in #444
- @Pricstas made their first contribution in #434
- @Unisergius made their first contribution in #464
- @rmilrad made their first contribution in #478
Full Changelog: v1.0.0...v1.1.0