A feature release of the sBTC signer which provides the required functionality for altering the set of signers in the signing set, as well as a number of fixes and improvements addressing the security, performance, robustness of the signer.
Highlights • Images • Upgrade Instructions • What's Changed
✨ Highlights
- Reliance on Bitcoin Core's ZMQ functionality has been removed in favor of RPC-polling
- Support for signer rotation (growing/shrinking/altering the active signer set and/or re-keying)
- Additional prometheus metrics (P2P + Stacks contract reads)
🐳 Images:
Important
Always use immutable image tags - the image digests are provided below. Verify the attestation of these images using this guide.
We publish our images on GitHub Container Registry.
sBTC Signer
- 🏷️
stacks-sbtc/sbtc:signer-v1.1.0
- 🔒
sha256:8d1776001c57e8b6086239a111c96b490593a378d48525a8f2b27a859451d5e3
Blocklist Client
- 🏷️
stacks-sbtc/sbtc:blocklist-client-v1.1.0
- 🔒
sha256:5250cb8acd3b112d85b8ed10c848d61fdb4089104067dc1df8ad444da7e68b0f
📙 Database migrations
Important
If you run your signer using the --migrate-db
flag, database migrations will be applied automatically. If you do not use this flag, you must manually apply the migrations.
--migrate-db
is enabled by default in our official Docker images.
Database migrations may be found at signer/migrations
.
🛠️ Upgrade Instructions:
Note
- No configuration updates are required at this time.
- This release contains database migrations.
- Stop your sBTC signer
- Backup your database
- Database migrations:
- (recommended) If you run your signer with --migrate-db, database migrations will be automatically applied upon startup,
- (advanced) Otherwise, apply database migrations manually
- Update your sBTC images to those specified above
- Restart your sBTC signer and blocklist client
📝 What's Changed
Other Changes
Click to expand
- feat: drop stacks transactions and transactions tables by @djordon in #1601
- fix: add dependencies to build ecdsa on mac by @Jiloc in #1611
- fix: emily-cron hiro api usage by @Jiloc in #1608
- [chore]: use wrapper structs for heights by @MCJOHN974 in #1614
- fix: Adjust the Build Reference by @fabergat in #1621
- feat: write stacks block hash with key rotation events by @djordon in #1599
- [fix]: Emily don't return Error on limits/ if rolling window calculation failed by @MCJOHN974 in #1623
- [feat] add fund-btc command to signers.sh by @cylewitruk in #1624
- fix(tests): fixes for signer utxo tests by @djordon in #1600
- feat: fetch stacks block headers instead of the blocks by @djordon in #1604
- chore: clean-up logging in Emily v1 by @djordon in #1627
- chore: make bootstrap_signer_set containing self pubkey mandatory by @MCJOHN974 in #1618
- [feat] remove trusted api key from Emily by @MCJOHN974 in #1586
- fix: add compound primary key to
rotate_keys_transactions
table by @djordon in #1640 - chore: remove openssl by @MCJOHN974 in #1652
- [chore]: use cargo clippy in tests by @MCJOHN974 in #1607
- chore: add uv and python venvs installation by @Jiloc in #1650
- chore: integrate python tests by @Jiloc in #1651
- feat: sidecar RBF management by @Jiloc in #1506
- [chore]: remove bitcoin::fees module by @MCJOHN974 in #1663
- CI: Use Wrapped External Actions From
stacks-sbtc/actions
Repository by @BowTiedDevOps in #1606 - build: do not build emily with testing feature by @djordon in #1660
- feat: coordinator processes requests on DKG failure by @setzeus in #1612
- chore: use get_rng in should_process_withdrawals by @matteojug in #1655
- feat: make the
getblock
RPC return detailed transacation info by @djordon in #1642 - chore: add missing
drop_db
in tests by @matteojug in #1675 - [chore] use display implementations in Emily reply by @MCJOHN974 in #1665
- chore: bump rust to 1.87 and address new clippy lint warnings by @cylewitruk in #1679
- feat: read chain of sweep transactions as part of updating by @djordon in #1669
- chore: don't sort items in packaging by @MCJOHN974 in #1664
- feat: sidecar long pending deposits management by @Jiloc in #1507
- fix:
EMILY_API_KEY
name mismatch in docker by @Jiloc in #1687 - feat: add timestamp support for sqlx+postgres integration by @cylewitruk in #1682
- test: add devenv forking test for deposit by @matteojug in #1585
- [feat] trigger dkg on changed signer set by @MCJOHN974 in #1602
- fix: emily-cron local mempool by @Jiloc in #1692
- [feat]: restrict more then 16 signers by @MCJOHN974 in #1695
- feat: implement core storage transaction support + in-memory implementation by @cylewitruk in #1674
- feat: Emily process all update events. by @MCJOHN974 in #1653
- fix: Update docker compose to the last version by @fabergat in #1646
- fix: sign stacks tx once per tenure per request by @matteojug in #1691
- Update Actions Versions, Fix Outputs by @BowTiedDevOps in #1680
- fix: skip DKG if latest shares are unverified by @matteojug in #1705
- fix: clear sources in Dockerfile before the COPY by @djordon in #1704
- refactor: centralize more metric logic by @djordon in #1699
- Add Workflow to Deploy Emily by @BowTiedDevOps in #1681
- chore: update bitcoin testnet chainstate archive by @matteojug in #1710
- [feat]: Emily don't reorg for very old chaintips by @MCJOHN974 in #1667
- P2P Metric by @setzeus in #1702
- feat: store hashes of reclaim scripts in signer db by @MCJOHN974 in #1703
- feat: enhance signers script pubkey check by @djordon in #1722
- fix: use the correct signer set during DKG and signing rounds by @djordon in #1707
- fix: don't decrement nonce on mempool conflict by @matteojug in #1735
- feat: integral support for storage transactions + bitcoin transaction processing in transaction by @cylewitruk in #1673
- feat: skip coordinator tenure after a key rotation by @djordon in #1740
- feat: do not use aggregate key in stacks sign requests by @djordon in #1732
- fix: Fix the Git Commit Reference during image building by @fabergat in #1754
- feat: additional test helpers & utilities (part 1) by @cylewitruk in #1726
- [chore]: fix some markdown lint issues by @MCJOHN974 in #1758
- fix: specify the event name in the wait-list of wait-other-jobs by @djordon in #1762
- chore: use transactions in database migrations by @djordon in #1761
- [feat]: add RBF status to Emily by @MCJOHN974 in #1686
- fix: support brand new bootstrap signer set by @djordon in #1752
- chore: Split deposit and withdrawal status on Emily by @MCJOHN974 in #1745
- chore: remove reprocessing status from Emily by @MCJOHN974 in #1744
- feat: use stacks core for signer set data by @djordon in #1734
- [feat] allow one pre-sign request per block by @MCJOHN974 in #1757
- chore: introduce make fix command by @MCJOHN974 in #1748
- feat: return proper error in Emily batch requests by @MCJOHN974 in #1743
- feat: generate recoverable private shares during dkg by @djordon in #1746
- feat: remove verification if past verification window by @setzeus in #1768
- feat: forgo unnecessary db query when fetching pending deposits by @djordon in #1774
- feat: add metrics for smart contract read requests by @djordon in #1769
- feat: set the sign and dkg IDs in wsts coordinator state machines by @djordon in #1776
- fix: do not fetch bitcoin chain tip from db by @djordon in #1771
- feat: update action hash by @djordon in #1786
- [chore]: exclude codegen from clippy by @MCJOHN974 in #1784
- [chore]: bump rust & use Makefile in CI lints by @MCJOHN974 in #1783
- testing: skip importing already-loaded descriptors when initializing the local faucet by @cylewitruk in #1779
- chore: bump stacks to 3.2 by @matteojug in #1790
- chore: fix the
bitcoin-miner
's script indevenv
to not crash if bitcoin is unavailable by @cylewitruk in #1794 - feat: skip running DKG if config differs from registry but latest shares matches config by @matteojug in #1795
- feat: consistent waiting per observed bitcoin block by @djordon in #1793
- feat: log presign on send and validate by @matteojug in #1798
- chore: update wsts dependency by @xoloki in #1789
- feat: #1136 persist known, valid p2p peers & consider them during bootstrapping by @cylewitruk in #1689
- feat: remove bitcoin-core ZMQ in favor of RPC polling for new-block detection by @cylewitruk in #1780
- [feat]: add node info logger && enable debug logs in devenv by @MCJOHN974 in #1787
- Revert "chore: update wsts dependency" by @djordon in #1808
- fix: no more flaky
sign_bitcoin_transaction
integration test by @djordon in #1813 - feat: move coordinator checks for smart contract deployment to block observer by @djordon in #1812
Full Changelog: v1.0.2...v1.1.0